const _root = Object.create(null);
const dart = Object.create(_root);
const _debugger = Object.create(_root);
const _foreign_helper = Object.create(_root);
const _interceptors = Object.create(_root);
const _internal = Object.create(_root);
const _isolate_helper = Object.create(_root);
const _js_helper = Object.create(_root);
const _js_mirrors = Object.create(_root);
const _js_primitives = Object.create(_root);
const _metadata = Object.create(_root);
const _native_typed_data = Object.create(_root);
const async = Object.create(_root);
const collection = Object.create(_root);
const convert = Object.create(_root);
const core = Object.create(_root);
const developer = Object.create(_root);
const io = Object.create(_root);
const isolate = Object.create(_root);
const js = Object.create(_root);
const js_util = Object.create(_root);
const math = Object.create(_root);
const mirrors = Object.create(_root);
const typed_data = Object.create(_root);
const indexed_db = Object.create(_root);
const html$ = Object.create(_root);
const html_common = Object.create(_root);
const svg$ = Object.create(_root);
const web_audio = Object.create(_root);
const web_gl = Object.create(_root);
const web_sql = Object.create(_root);
const _http = Object.create(_root);
const dartx = Object.create(_root);
export { dart, _debugger, _foreign_helper, _interceptors, _internal, _isolate_helper, _js_helper, _js_mirrors, _js_primitives, _metadata, _native_typed_data, async, collection, convert, core, developer, io, isolate, js, js_util, math, mirrors, typed_data, indexed_db, html$ as html, html_common, svg$ as svg, web_audio, web_gl, web_sql, _http, dartx };
const $clear = dartx.clear = Symbol("dartx.clear");
const $hashCode = dartx.hashCode = Symbol("dartx.hashCode");
const $_equals = dartx._equals = Symbol("dartx._equals");
const $toString = dartx.toString = Symbol("dartx.toString");
const $noSuchMethod = dartx.noSuchMethod = Symbol("dartx.noSuchMethod");
const $runtimeType = dartx.runtimeType = Symbol("dartx.runtimeType");
const $length = dartx.length = Symbol("dartx.length");
const $_get = dartx._get = Symbol("dartx._get");
const $_set = dartx._set = Symbol("dartx._set");
const $containsKey = dartx.containsKey = Symbol("dartx.containsKey");
const $any = dartx.any = Symbol("dartx.any");
const $keys = dartx.keys = Symbol("dartx.keys");
const $remove = dartx.remove = Symbol("dartx.remove");
const $isNotEmpty = dartx.isNotEmpty = Symbol("dartx.isNotEmpty");
const $indexOf = dartx.indexOf = Symbol("dartx.indexOf");
const $toList = dartx.toList = Symbol("dartx.toList");
const $trim = dartx.trim = Symbol("dartx.trim");
const $map = dartx.map = Symbol("dartx.map");
const $split = dartx.split = Symbol("dartx.split");
const $substring = dartx.substring = Symbol("dartx.substring");
const $add = dartx.add = Symbol("dartx.add");
const $isEmpty = dartx.isEmpty = Symbol("dartx.isEmpty");
const $values = dartx.values = Symbol("dartx.values");
const $dartStack = dartx.dartStack = Symbol("dartx.dartStack");
const $startsWith = dartx.startsWith = Symbol("dartx.startsWith");
const $compareTo = dartx.compareTo = Symbol("dartx.compareTo");
const $sort = dartx.sort = Symbol("dartx.sort");
const $truncate = dartx.truncate = Symbol("dartx.truncate");
const $asMap = dartx.asMap = Symbol("dartx.asMap");
const $take = dartx.take = Symbol("dartx.take");
const $skip = dartx.skip = Symbol("dartx.skip");
const $forEach = dartx.forEach = Symbol("dartx.forEach");
const $elementAt = dartx.elementAt = Symbol("dartx.elementAt");
const $where = dartx.where = Symbol("dartx.where");
const $console = dartx.console = Symbol("dartx.console");
const $contains = dartx.contains = Symbol("dartx.contains");
const $last = dartx.last = Symbol("dartx.last");
const $join = dartx.join = Symbol("dartx.join");
const $firstWhere = dartx.firstWhere = Symbol("dartx.firstWhere");
const $replaceFirst = dartx.replaceFirst = Symbol("dartx.replaceFirst");
const $putIfAbsent = dartx.putIfAbsent = Symbol("dartx.putIfAbsent");
const $round = dartx.round = Symbol("dartx.round");
const $bitAnd = dartx['&'] = Symbol("dartx.&");
const $bitOr = dartx['|'] = Symbol("dartx.|");
const $bitXor = dartx['^'] = Symbol("dartx.^");
const $sublist = dartx.sublist = Symbol("dartx.sublist");
const $stackTrace = dartx.stackTrace = Symbol("dartx.stackTrace");
const $invalidValue = dartx.invalidValue = Symbol("dartx.invalidValue");
const $name = dartx.name = Symbol("dartx.name");
const $message = dartx.message = Symbol("dartx.message");
const $checkMutable = dartx.checkMutable = Symbol("dartx.checkMutable");
const $checkGrowable = dartx.checkGrowable = Symbol("dartx.checkGrowable");
const $cast = dartx.cast = Symbol("dartx.cast");
const $removeAt = dartx.removeAt = Symbol("dartx.removeAt");
const $insert = dartx.insert = Symbol("dartx.insert");
const $setRange = dartx.setRange = Symbol("dartx.setRange");
const $insertAll = dartx.insertAll = Symbol("dartx.insertAll");
const $setAll = dartx.setAll = Symbol("dartx.setAll");
const $removeLast = dartx.removeLast = Symbol("dartx.removeLast");
const $removeWhere = dartx.removeWhere = Symbol("dartx.removeWhere");
const $retainWhere = dartx.retainWhere = Symbol("dartx.retainWhere");
const $expand = dartx.expand = Symbol("dartx.expand");
const $addAll = dartx.addAll = Symbol("dartx.addAll");
const $takeWhile = dartx.takeWhile = Symbol("dartx.takeWhile");
const $skipWhile = dartx.skipWhile = Symbol("dartx.skipWhile");
const $reduce = dartx.reduce = Symbol("dartx.reduce");
const $fold = dartx.fold = Symbol("dartx.fold");
const $lastWhere = dartx.lastWhere = Symbol("dartx.lastWhere");
const $singleWhere = dartx.singleWhere = Symbol("dartx.singleWhere");
const $getRange = dartx.getRange = Symbol("dartx.getRange");
const $first = dartx.first = Symbol("dartx.first");
const $single = dartx.single = Symbol("dartx.single");
const $removeRange = dartx.removeRange = Symbol("dartx.removeRange");
const $fillRange = dartx.fillRange = Symbol("dartx.fillRange");
const $replaceRange = dartx.replaceRange = Symbol("dartx.replaceRange");
const $every = dartx.every = Symbol("dartx.every");
const $reversed = dartx.reversed = Symbol("dartx.reversed");
const $shuffle = dartx.shuffle = Symbol("dartx.shuffle");
const $lastIndexOf = dartx.lastIndexOf = Symbol("dartx.lastIndexOf");
const $toSet = dartx.toSet = Symbol("dartx.toSet");
const $iterator = dartx.iterator = Symbol("dartx.iterator");
const $followedBy = dartx.followedBy = Symbol("dartx.followedBy");
const $whereType = dartx.whereType = Symbol("dartx.whereType");
const $plus = dartx['+'] = Symbol("dartx.+");
const $indexWhere = dartx.indexWhere = Symbol("dartx.indexWhere");
const $lastIndexWhere = dartx.lastIndexWhere = Symbol("dartx.lastIndexWhere");
const $isNegative = dartx.isNegative = Symbol("dartx.isNegative");
const $isNaN = dartx.isNaN = Symbol("dartx.isNaN");
const $isInfinite = dartx.isInfinite = Symbol("dartx.isInfinite");
const $isFinite = dartx.isFinite = Symbol("dartx.isFinite");
const $remainder = dartx.remainder = Symbol("dartx.remainder");
const $abs = dartx.abs = Symbol("dartx.abs");
const $sign = dartx.sign = Symbol("dartx.sign");
const $truncateToDouble = dartx.truncateToDouble = Symbol("dartx.truncateToDouble");
const $toInt = dartx.toInt = Symbol("dartx.toInt");
const $ceilToDouble = dartx.ceilToDouble = Symbol("dartx.ceilToDouble");
const $ceil = dartx.ceil = Symbol("dartx.ceil");
const $floorToDouble = dartx.floorToDouble = Symbol("dartx.floorToDouble");
const $floor = dartx.floor = Symbol("dartx.floor");
const $roundToDouble = dartx.roundToDouble = Symbol("dartx.roundToDouble");
const $clamp = dartx.clamp = Symbol("dartx.clamp");
const $toDouble = dartx.toDouble = Symbol("dartx.toDouble");
const $toStringAsFixed = dartx.toStringAsFixed = Symbol("dartx.toStringAsFixed");
const $toStringAsExponential = dartx.toStringAsExponential = Symbol("dartx.toStringAsExponential");
const $toStringAsPrecision = dartx.toStringAsPrecision = Symbol("dartx.toStringAsPrecision");
const $codeUnitAt = dartx.codeUnitAt = Symbol("dartx.codeUnitAt");
const $toRadixString = dartx.toRadixString = Symbol("dartx.toRadixString");
const $times = dartx['*'] = Symbol("dartx.*");
const $_negate = dartx._negate = Symbol("dartx._negate");
const $minus = dartx['-'] = Symbol("dartx.-");
const $divide = dartx['/'] = Symbol("dartx./");
const $modulo = dartx['%'] = Symbol("dartx.%");
const $floorDivide = dartx['~/'] = Symbol("dartx.~/");
const $leftShift = dartx['<<'] = Symbol("dartx.<<");
const $rightShift = dartx['>>'] = Symbol("dartx.>>");
const $lessThan = dartx['<'] = Symbol("dartx.<");
const $greaterThan = dartx['>'] = Symbol("dartx.>");
const $lessOrEquals = dartx['<='] = Symbol("dartx.<=");
const $greaterOrEquals = dartx['>='] = Symbol("dartx.>=");
const $isEven = dartx.isEven = Symbol("dartx.isEven");
const $isOdd = dartx.isOdd = Symbol("dartx.isOdd");
const $toUnsigned = dartx.toUnsigned = Symbol("dartx.toUnsigned");
const $toSigned = dartx.toSigned = Symbol("dartx.toSigned");
const $bitLength = dartx.bitLength = Symbol("dartx.bitLength");
const $modPow = dartx.modPow = Symbol("dartx.modPow");
const $modInverse = dartx.modInverse = Symbol("dartx.modInverse");
const $gcd = dartx.gcd = Symbol("dartx.gcd");
const $bitNot = dartx['~'] = Symbol("dartx.~");
const $allMatches = dartx.allMatches = Symbol("dartx.allMatches");
const $matchAsPrefix = dartx.matchAsPrefix = Symbol("dartx.matchAsPrefix");
const $endsWith = dartx.endsWith = Symbol("dartx.endsWith");
const $replaceAll = dartx.replaceAll = Symbol("dartx.replaceAll");
const $splitMapJoin = dartx.splitMapJoin = Symbol("dartx.splitMapJoin");
const $replaceAllMapped = dartx.replaceAllMapped = Symbol("dartx.replaceAllMapped");
const $replaceFirstMapped = dartx.replaceFirstMapped = Symbol("dartx.replaceFirstMapped");
const $toLowerCase = dartx.toLowerCase = Symbol("dartx.toLowerCase");
const $toUpperCase = dartx.toUpperCase = Symbol("dartx.toUpperCase");
const $trimLeft = dartx.trimLeft = Symbol("dartx.trimLeft");
const $trimRight = dartx.trimRight = Symbol("dartx.trimRight");
const $padLeft = dartx.padLeft = Symbol("dartx.padLeft");
const $padRight = dartx.padRight = Symbol("dartx.padRight");
const $codeUnits = dartx.codeUnits = Symbol("dartx.codeUnits");
const $runes = dartx.runes = Symbol("dartx.runes");
const $containsValue = dartx.containsValue = Symbol("dartx.containsValue");
const $update = dartx.update = Symbol("dartx.update");
const $updateAll = dartx.updateAll = Symbol("dartx.updateAll");
const $entries = dartx.entries = Symbol("dartx.entries");
const $addEntries = dartx.addEntries = Symbol("dartx.addEntries");
const $lengthInBytes = dartx.lengthInBytes = Symbol("dartx.lengthInBytes");
const $asUint8List = dartx.asUint8List = Symbol("dartx.asUint8List");
const $asInt8List = dartx.asInt8List = Symbol("dartx.asInt8List");
const $asUint8ClampedList = dartx.asUint8ClampedList = Symbol("dartx.asUint8ClampedList");
const $asUint16List = dartx.asUint16List = Symbol("dartx.asUint16List");
const $asInt16List = dartx.asInt16List = Symbol("dartx.asInt16List");
const $asUint32List = dartx.asUint32List = Symbol("dartx.asUint32List");
const $asInt32List = dartx.asInt32List = Symbol("dartx.asInt32List");
const $asUint64List = dartx.asUint64List = Symbol("dartx.asUint64List");
const $asInt64List = dartx.asInt64List = Symbol("dartx.asInt64List");
const $asInt32x4List = dartx.asInt32x4List = Symbol("dartx.asInt32x4List");
const $asFloat32List = dartx.asFloat32List = Symbol("dartx.asFloat32List");
const $asFloat64List = dartx.asFloat64List = Symbol("dartx.asFloat64List");
const $asFloat32x4List = dartx.asFloat32x4List = Symbol("dartx.asFloat32x4List");
const $asFloat64x2List = dartx.asFloat64x2List = Symbol("dartx.asFloat64x2List");
const $asByteData = dartx.asByteData = Symbol("dartx.asByteData");
const $offsetInBytes = dartx.offsetInBytes = Symbol("dartx.offsetInBytes");
const $buffer = dartx.buffer = Symbol("dartx.buffer");
const $elementSizeInBytes = dartx.elementSizeInBytes = Symbol("dartx.elementSizeInBytes");
const $getFloat32 = dartx.getFloat32 = Symbol("dartx.getFloat32");
const $getFloat64 = dartx.getFloat64 = Symbol("dartx.getFloat64");
const $getInt16 = dartx.getInt16 = Symbol("dartx.getInt16");
const $getInt32 = dartx.getInt32 = Symbol("dartx.getInt32");
const $getInt64 = dartx.getInt64 = Symbol("dartx.getInt64");
const $getInt8 = dartx.getInt8 = Symbol("dartx.getInt8");
const $getUint16 = dartx.getUint16 = Symbol("dartx.getUint16");
const $getUint32 = dartx.getUint32 = Symbol("dartx.getUint32");
const $getUint64 = dartx.getUint64 = Symbol("dartx.getUint64");
const $getUint8 = dartx.getUint8 = Symbol("dartx.getUint8");
const $setFloat32 = dartx.setFloat32 = Symbol("dartx.setFloat32");
const $setFloat64 = dartx.setFloat64 = Symbol("dartx.setFloat64");
const $setInt16 = dartx.setInt16 = Symbol("dartx.setInt16");
const $setInt32 = dartx.setInt32 = Symbol("dartx.setInt32");
const $setInt64 = dartx.setInt64 = Symbol("dartx.setInt64");
const $setInt8 = dartx.setInt8 = Symbol("dartx.setInt8");
const $setUint16 = dartx.setUint16 = Symbol("dartx.setUint16");
const $setUint32 = dartx.setUint32 = Symbol("dartx.setUint32");
const $setUint64 = dartx.setUint64 = Symbol("dartx.setUint64");
const $setUint8 = dartx.setUint8 = Symbol("dartx.setUint8");
const $left = dartx.left = Symbol("dartx.left");
const $width = dartx.width = Symbol("dartx.width");
const $top = dartx.top = Symbol("dartx.top");
const $height = dartx.height = Symbol("dartx.height");
const $right = dartx.right = Symbol("dartx.right");
const $bottom = dartx.bottom = Symbol("dartx.bottom");
const $intersection = dartx.intersection = Symbol("dartx.intersection");
const $intersects = dartx.intersects = Symbol("dartx.intersects");
const $boundingBox = dartx.boundingBox = Symbol("dartx.boundingBox");
const $containsRectangle = dartx.containsRectangle = Symbol("dartx.containsRectangle");
const $containsPoint = dartx.containsPoint = Symbol("dartx.containsPoint");
const $topLeft = dartx.topLeft = Symbol("dartx.topLeft");
const $topRight = dartx.topRight = Symbol("dartx.topRight");
const $bottomRight = dartx.bottomRight = Symbol("dartx.bottomRight");
const $bottomLeft = dartx.bottomLeft = Symbol("dartx.bottomLeft");
const $delete = dartx.delete = Symbol("dartx.delete");
const $next = dartx.next = Symbol("dartx.next");
const $direction = dartx.direction = Symbol("dartx.direction");
const $key = dartx.key = Symbol("dartx.key");
const $primaryKey = dartx.primaryKey = Symbol("dartx.primaryKey");
const $source = dartx.source = Symbol("dartx.source");
const $advance = dartx.advance = Symbol("dartx.advance");
const $continuePrimaryKey = dartx.continuePrimaryKey = Symbol("dartx.continuePrimaryKey");
const $value = dartx.value = Symbol("dartx.value");
const $createObjectStore = dartx.createObjectStore = Symbol("dartx.createObjectStore");
const $transaction = dartx.transaction = Symbol("dartx.transaction");
const $transactionStore = dartx.transactionStore = Symbol("dartx.transactionStore");
const $transactionList = dartx.transactionList = Symbol("dartx.transactionList");
const $transactionStores = dartx.transactionStores = Symbol("dartx.transactionStores");
const $objectStoreNames = dartx.objectStoreNames = Symbol("dartx.objectStoreNames");
const $version = dartx.version = Symbol("dartx.version");
const $close = dartx.close = Symbol("dartx.close");
const $deleteObjectStore = dartx.deleteObjectStore = Symbol("dartx.deleteObjectStore");
const $onAbort = dartx.onAbort = Symbol("dartx.onAbort");
const $onClose = dartx.onClose = Symbol("dartx.onClose");
const $onError = dartx.onError = Symbol("dartx.onError");
const $onVersionChange = dartx.onVersionChange = Symbol("dartx.onVersionChange");
const $on = dartx.on = Symbol("dartx.on");
const $addEventListener = dartx.addEventListener = Symbol("dartx.addEventListener");
const $removeEventListener = dartx.removeEventListener = Symbol("dartx.removeEventListener");
const $dispatchEvent = dartx.dispatchEvent = Symbol("dartx.dispatchEvent");
const $open = dartx.open = Symbol("dartx.open");
const $onBlocked = dartx.onBlocked = Symbol("dartx.onBlocked");
const $onSuccess = dartx.onSuccess = Symbol("dartx.onSuccess");
const $deleteDatabase = dartx.deleteDatabase = Symbol("dartx.deleteDatabase");
const $supportsDatabaseNames = dartx.supportsDatabaseNames = Symbol("dartx.supportsDatabaseNames");
const $cmp = dartx.cmp = Symbol("dartx.cmp");
const $result = dartx.result = Symbol("dartx.result");
const $count = dartx.count = Symbol("dartx.count");
const $get = dartx.get = Symbol("dartx.get");
const $getKey = dartx.getKey = Symbol("dartx.getKey");
const $openCursor = dartx.openCursor = Symbol("dartx.openCursor");
const $openKeyCursor = dartx.openKeyCursor = Symbol("dartx.openKeyCursor");
const $keyPath = dartx.keyPath = Symbol("dartx.keyPath");
const $multiEntry = dartx.multiEntry = Symbol("dartx.multiEntry");
const $objectStore = dartx.objectStore = Symbol("dartx.objectStore");
const $unique = dartx.unique = Symbol("dartx.unique");
const $getAll = dartx.getAll = Symbol("dartx.getAll");
const $getAllKeys = dartx.getAllKeys = Symbol("dartx.getAllKeys");
const $lower = dartx.lower = Symbol("dartx.lower");
const $lowerOpen = dartx.lowerOpen = Symbol("dartx.lowerOpen");
const $upper = dartx.upper = Symbol("dartx.upper");
const $upperOpen = dartx.upperOpen = Symbol("dartx.upperOpen");
const $includes = dartx.includes = Symbol("dartx.includes");
const $put = dartx.put = Symbol("dartx.put");
const $getObject = dartx.getObject = Symbol("dartx.getObject");
const $createIndex = dartx.createIndex = Symbol("dartx.createIndex");
const $autoIncrement = dartx.autoIncrement = Symbol("dartx.autoIncrement");
const $indexNames = dartx.indexNames = Symbol("dartx.indexNames");
const $deleteIndex = dartx.deleteIndex = Symbol("dartx.deleteIndex");
const $index = dartx.index = Symbol("dartx.index");
const $type = dartx.type = Symbol("dartx.type");
const $observe = dartx.observe = Symbol("dartx.observe");
const $unobserve = dartx.unobserve = Symbol("dartx.unobserve");
const $database = dartx.database = Symbol("dartx.database");
const $records = dartx.records = Symbol("dartx.records");
const $onUpgradeNeeded = dartx.onUpgradeNeeded = Symbol("dartx.onUpgradeNeeded");
const $error = dartx.error = Symbol("dartx.error");
const $readyState = dartx.readyState = Symbol("dartx.readyState");
const $onComplete = dartx.onComplete = Symbol("dartx.onComplete");
const $completed = dartx.completed = Symbol("dartx.completed");
const $db = dartx.db = Symbol("dartx.db");
const $mode = dartx.mode = Symbol("dartx.mode");
const $abort = dartx.abort = Symbol("dartx.abort");
const $dataLoss = dartx.dataLoss = Symbol("dartx.dataLoss");
const $dataLossMessage = dartx.dataLossMessage = Symbol("dartx.dataLossMessage");
const $newVersion = dartx.newVersion = Symbol("dartx.newVersion");
const $oldVersion = dartx.oldVersion = Symbol("dartx.oldVersion");
const $target = dartx.target = Symbol("dartx.target");
const $currentTarget = dartx.currentTarget = Symbol("dartx.currentTarget");
const $matches = dartx.matches = Symbol("dartx.matches");
const $parent = dartx.parent = Symbol("dartx.parent");
const $matchingTarget = dartx.matchingTarget = Symbol("dartx.matchingTarget");
const $path = dartx.path = Symbol("dartx.path");
const $bubbles = dartx.bubbles = Symbol("dartx.bubbles");
const $cancelable = dartx.cancelable = Symbol("dartx.cancelable");
const $composed = dartx.composed = Symbol("dartx.composed");
const $defaultPrevented = dartx.defaultPrevented = Symbol("dartx.defaultPrevented");
const $eventPhase = dartx.eventPhase = Symbol("dartx.eventPhase");
const $isTrusted = dartx.isTrusted = Symbol("dartx.isTrusted");
const $timeStamp = dartx.timeStamp = Symbol("dartx.timeStamp");
const $composedPath = dartx.composedPath = Symbol("dartx.composedPath");
const $preventDefault = dartx.preventDefault = Symbol("dartx.preventDefault");
const $stopImmediatePropagation = dartx.stopImmediatePropagation = Symbol("dartx.stopImmediatePropagation");
const $stopPropagation = dartx.stopPropagation = Symbol("dartx.stopPropagation");
const $nonce = dartx.nonce = Symbol("dartx.nonce");
const $createFragment = dartx.createFragment = Symbol("dartx.createFragment");
const $nodes = dartx.nodes = Symbol("dartx.nodes");
const $attributes = dartx.attributes = Symbol("dartx.attributes");
const $getAttribute = dartx.getAttribute = Symbol("dartx.getAttribute");
const $getAttributeNS = dartx.getAttributeNS = Symbol("dartx.getAttributeNS");
const $hasAttribute = dartx.hasAttribute = Symbol("dartx.hasAttribute");
const $hasAttributeNS = dartx.hasAttributeNS = Symbol("dartx.hasAttributeNS");
const $removeAttribute = dartx.removeAttribute = Symbol("dartx.removeAttribute");
const $removeAttributeNS = dartx.removeAttributeNS = Symbol("dartx.removeAttributeNS");
const $setAttribute = dartx.setAttribute = Symbol("dartx.setAttribute");
const $setAttributeNS = dartx.setAttributeNS = Symbol("dartx.setAttributeNS");
const $children = dartx.children = Symbol("dartx.children");
const $querySelectorAll = dartx.querySelectorAll = Symbol("dartx.querySelectorAll");
const $setApplyScroll = dartx.setApplyScroll = Symbol("dartx.setApplyScroll");
const $setDistributeScroll = dartx.setDistributeScroll = Symbol("dartx.setDistributeScroll");
const $classes = dartx.classes = Symbol("dartx.classes");
const $dataset = dartx.dataset = Symbol("dartx.dataset");
const $getNamespacedAttributes = dartx.getNamespacedAttributes = Symbol("dartx.getNamespacedAttributes");
const $getComputedStyle = dartx.getComputedStyle = Symbol("dartx.getComputedStyle");
const $client = dartx.client = Symbol("dartx.client");
const $offsetLeft = dartx.offsetLeft = Symbol("dartx.offsetLeft");
const $offsetTop = dartx.offsetTop = Symbol("dartx.offsetTop");
const $offsetWidth = dartx.offsetWidth = Symbol("dartx.offsetWidth");
const $offsetHeight = dartx.offsetHeight = Symbol("dartx.offsetHeight");
const $offset = dartx.offset = Symbol("dartx.offset");
const $append = dartx.append = Symbol("dartx.append");
const $appendText = dartx.appendText = Symbol("dartx.appendText");
const $insertAdjacentHtml = dartx.insertAdjacentHtml = Symbol("dartx.insertAdjacentHtml");
const $appendHtml = dartx.appendHtml = Symbol("dartx.appendHtml");
const $enteredView = dartx.enteredView = Symbol("dartx.enteredView");
const $attached = dartx.attached = Symbol("dartx.attached");
const $leftView = dartx.leftView = Symbol("dartx.leftView");
const $detached = dartx.detached = Symbol("dartx.detached");
const $getClientRects = dartx.getClientRects = Symbol("dartx.getClientRects");
const $animate = dartx.animate = Symbol("dartx.animate");
const $attributeChanged = dartx.attributeChanged = Symbol("dartx.attributeChanged");
const $localName = dartx.localName = Symbol("dartx.localName");
const $namespaceUri = dartx.namespaceUri = Symbol("dartx.namespaceUri");
const $scrollIntoView = dartx.scrollIntoView = Symbol("dartx.scrollIntoView");
const $insertAdjacentText = dartx.insertAdjacentText = Symbol("dartx.insertAdjacentText");
const $insertAdjacentElement = dartx.insertAdjacentElement = Symbol("dartx.insertAdjacentElement");
const $nextNode = dartx.nextNode = Symbol("dartx.nextNode");
const $matchesWithAncestors = dartx.matchesWithAncestors = Symbol("dartx.matchesWithAncestors");
const $createShadowRoot = dartx.createShadowRoot = Symbol("dartx.createShadowRoot");
const $shadowRoot = dartx.shadowRoot = Symbol("dartx.shadowRoot");
const $contentEdge = dartx.contentEdge = Symbol("dartx.contentEdge");
const $paddingEdge = dartx.paddingEdge = Symbol("dartx.paddingEdge");
const $borderEdge = dartx.borderEdge = Symbol("dartx.borderEdge");
const $marginEdge = dartx.marginEdge = Symbol("dartx.marginEdge");
const $offsetTo = dartx.offsetTo = Symbol("dartx.offsetTo");
const $documentOffset = dartx.documentOffset = Symbol("dartx.documentOffset");
const $createHtmlDocument = dartx.createHtmlDocument = Symbol("dartx.createHtmlDocument");
const $createElement = dartx.createElement = Symbol("dartx.createElement");
const $baseUri = dartx.baseUri = Symbol("dartx.baseUri");
const $head = dartx.head = Symbol("dartx.head");
const $setInnerHtml = dartx.setInnerHtml = Symbol("dartx.setInnerHtml");
const $innerHtml = dartx.innerHtml = Symbol("dartx.innerHtml");
const $text = dartx.text = Symbol("dartx.text");
const $offsetParent = dartx.offsetParent = Symbol("dartx.offsetParent");
const $scrollHeight = dartx.scrollHeight = Symbol("dartx.scrollHeight");
const $scrollLeft = dartx.scrollLeft = Symbol("dartx.scrollLeft");
const $scrollTop = dartx.scrollTop = Symbol("dartx.scrollTop");
const $scrollWidth = dartx.scrollWidth = Symbol("dartx.scrollWidth");
const $contentEditable = dartx.contentEditable = Symbol("dartx.contentEditable");
const $dir = dartx.dir = Symbol("dartx.dir");
const $draggable = dartx.draggable = Symbol("dartx.draggable");
const $hidden = dartx.hidden = Symbol("dartx.hidden");
const $inert = dartx.inert = Symbol("dartx.inert");
const $inputMode = dartx.inputMode = Symbol("dartx.inputMode");
const $isContentEditable = dartx.isContentEditable = Symbol("dartx.isContentEditable");
const $lang = dartx.lang = Symbol("dartx.lang");
const $spellcheck = dartx.spellcheck = Symbol("dartx.spellcheck");
const $style = dartx.style = Symbol("dartx.style");
const $tabIndex = dartx.tabIndex = Symbol("dartx.tabIndex");
const $title = dartx.title = Symbol("dartx.title");
const $translate = dartx.translate = Symbol("dartx.translate");
const $blur = dartx.blur = Symbol("dartx.blur");
const $click = dartx.click = Symbol("dartx.click");
const $focus = dartx.focus = Symbol("dartx.focus");
const $accessibleNode = dartx.accessibleNode = Symbol("dartx.accessibleNode");
const $assignedSlot = dartx.assignedSlot = Symbol("dartx.assignedSlot");
const $className = dartx.className = Symbol("dartx.className");
const $clientHeight = dartx.clientHeight = Symbol("dartx.clientHeight");
const $clientLeft = dartx.clientLeft = Symbol("dartx.clientLeft");
const $clientTop = dartx.clientTop = Symbol("dartx.clientTop");
const $clientWidth = dartx.clientWidth = Symbol("dartx.clientWidth");
const $computedName = dartx.computedName = Symbol("dartx.computedName");
const $computedRole = dartx.computedRole = Symbol("dartx.computedRole");
const $id = dartx.id = Symbol("dartx.id");
const $outerHtml = dartx.outerHtml = Symbol("dartx.outerHtml");
const $slot = dartx.slot = Symbol("dartx.slot");
const $styleMap = dartx.styleMap = Symbol("dartx.styleMap");
const $tagName = dartx.tagName = Symbol("dartx.tagName");
const $attachShadow = dartx.attachShadow = Symbol("dartx.attachShadow");
const $closest = dartx.closest = Symbol("dartx.closest");
const $getAnimations = dartx.getAnimations = Symbol("dartx.getAnimations");
const $getAttributeNames = dartx.getAttributeNames = Symbol("dartx.getAttributeNames");
const $getBoundingClientRect = dartx.getBoundingClientRect = Symbol("dartx.getBoundingClientRect");
const $getDestinationInsertionPoints = dartx.getDestinationInsertionPoints = Symbol("dartx.getDestinationInsertionPoints");
const $getElementsByClassName = dartx.getElementsByClassName = Symbol("dartx.getElementsByClassName");
const $hasPointerCapture = dartx.hasPointerCapture = Symbol("dartx.hasPointerCapture");
const $releasePointerCapture = dartx.releasePointerCapture = Symbol("dartx.releasePointerCapture");
const $requestPointerLock = dartx.requestPointerLock = Symbol("dartx.requestPointerLock");
const $scroll = dartx.scroll = Symbol("dartx.scroll");
const $scrollBy = dartx.scrollBy = Symbol("dartx.scrollBy");
const $scrollTo = dartx.scrollTo = Symbol("dartx.scrollTo");
const $setPointerCapture = dartx.setPointerCapture = Symbol("dartx.setPointerCapture");
const $requestFullscreen = dartx.requestFullscreen = Symbol("dartx.requestFullscreen");
const $after = dartx.after = Symbol("dartx.after");
const $before = dartx.before = Symbol("dartx.before");
const $nextElementSibling = dartx.nextElementSibling = Symbol("dartx.nextElementSibling");
const $previousElementSibling = dartx.previousElementSibling = Symbol("dartx.previousElementSibling");
const $querySelector = dartx.querySelector = Symbol("dartx.querySelector");
const $onBeforeCopy = dartx.onBeforeCopy = Symbol("dartx.onBeforeCopy");
const $onBeforeCut = dartx.onBeforeCut = Symbol("dartx.onBeforeCut");
const $onBeforePaste = dartx.onBeforePaste = Symbol("dartx.onBeforePaste");
const $onBlur = dartx.onBlur = Symbol("dartx.onBlur");
const $onCanPlay = dartx.onCanPlay = Symbol("dartx.onCanPlay");
const $onCanPlayThrough = dartx.onCanPlayThrough = Symbol("dartx.onCanPlayThrough");
const $onChange = dartx.onChange = Symbol("dartx.onChange");
const $onClick = dartx.onClick = Symbol("dartx.onClick");
const $onContextMenu = dartx.onContextMenu = Symbol("dartx.onContextMenu");
const $onCopy = dartx.onCopy = Symbol("dartx.onCopy");
const $onCut = dartx.onCut = Symbol("dartx.onCut");
const $onDoubleClick = dartx.onDoubleClick = Symbol("dartx.onDoubleClick");
const $onDrag = dartx.onDrag = Symbol("dartx.onDrag");
const $onDragEnd = dartx.onDragEnd = Symbol("dartx.onDragEnd");
const $onDragEnter = dartx.onDragEnter = Symbol("dartx.onDragEnter");
const $onDragLeave = dartx.onDragLeave = Symbol("dartx.onDragLeave");
const $onDragOver = dartx.onDragOver = Symbol("dartx.onDragOver");
const $onDragStart = dartx.onDragStart = Symbol("dartx.onDragStart");
const $onDrop = dartx.onDrop = Symbol("dartx.onDrop");
const $onDurationChange = dartx.onDurationChange = Symbol("dartx.onDurationChange");
const $onEmptied = dartx.onEmptied = Symbol("dartx.onEmptied");
const $onEnded = dartx.onEnded = Symbol("dartx.onEnded");
const $onFocus = dartx.onFocus = Symbol("dartx.onFocus");
const $onInput = dartx.onInput = Symbol("dartx.onInput");
const $onInvalid = dartx.onInvalid = Symbol("dartx.onInvalid");
const $onKeyDown = dartx.onKeyDown = Symbol("dartx.onKeyDown");
const $onKeyPress = dartx.onKeyPress = Symbol("dartx.onKeyPress");
const $onKeyUp = dartx.onKeyUp = Symbol("dartx.onKeyUp");
const $onLoad = dartx.onLoad = Symbol("dartx.onLoad");
const $onLoadedData = dartx.onLoadedData = Symbol("dartx.onLoadedData");
const $onLoadedMetadata = dartx.onLoadedMetadata = Symbol("dartx.onLoadedMetadata");
const $onMouseDown = dartx.onMouseDown = Symbol("dartx.onMouseDown");
const $onMouseEnter = dartx.onMouseEnter = Symbol("dartx.onMouseEnter");
const $onMouseLeave = dartx.onMouseLeave = Symbol("dartx.onMouseLeave");
const $onMouseMove = dartx.onMouseMove = Symbol("dartx.onMouseMove");
const $onMouseOut = dartx.onMouseOut = Symbol("dartx.onMouseOut");
const $onMouseOver = dartx.onMouseOver = Symbol("dartx.onMouseOver");
const $onMouseUp = dartx.onMouseUp = Symbol("dartx.onMouseUp");
const $onMouseWheel = dartx.onMouseWheel = Symbol("dartx.onMouseWheel");
const $onPaste = dartx.onPaste = Symbol("dartx.onPaste");
const $onPause = dartx.onPause = Symbol("dartx.onPause");
const $onPlay = dartx.onPlay = Symbol("dartx.onPlay");
const $onPlaying = dartx.onPlaying = Symbol("dartx.onPlaying");
const $onRateChange = dartx.onRateChange = Symbol("dartx.onRateChange");
const $onReset = dartx.onReset = Symbol("dartx.onReset");
const $onResize = dartx.onResize = Symbol("dartx.onResize");
const $onScroll = dartx.onScroll = Symbol("dartx.onScroll");
const $onSearch = dartx.onSearch = Symbol("dartx.onSearch");
const $onSeeked = dartx.onSeeked = Symbol("dartx.onSeeked");
const $onSeeking = dartx.onSeeking = Symbol("dartx.onSeeking");
const $onSelect = dartx.onSelect = Symbol("dartx.onSelect");
const $onSelectStart = dartx.onSelectStart = Symbol("dartx.onSelectStart");
const $onStalled = dartx.onStalled = Symbol("dartx.onStalled");
const $onSubmit = dartx.onSubmit = Symbol("dartx.onSubmit");
const $onSuspend = dartx.onSuspend = Symbol("dartx.onSuspend");
const $onTimeUpdate = dartx.onTimeUpdate = Symbol("dartx.onTimeUpdate");
const $onTouchCancel = dartx.onTouchCancel = Symbol("dartx.onTouchCancel");
const $onTouchEnd = dartx.onTouchEnd = Symbol("dartx.onTouchEnd");
const $onTouchEnter = dartx.onTouchEnter = Symbol("dartx.onTouchEnter");
const $onTouchLeave = dartx.onTouchLeave = Symbol("dartx.onTouchLeave");
const $onTouchMove = dartx.onTouchMove = Symbol("dartx.onTouchMove");
const $onTouchStart = dartx.onTouchStart = Symbol("dartx.onTouchStart");
const $onTransitionEnd = dartx.onTransitionEnd = Symbol("dartx.onTransitionEnd");
const $onVolumeChange = dartx.onVolumeChange = Symbol("dartx.onVolumeChange");
const $onWaiting = dartx.onWaiting = Symbol("dartx.onWaiting");
const $onFullscreenChange = dartx.onFullscreenChange = Symbol("dartx.onFullscreenChange");
const $onFullscreenError = dartx.onFullscreenError = Symbol("dartx.onFullscreenError");
const $onWheel = dartx.onWheel = Symbol("dartx.onWheel");
const $replaceWith = dartx.replaceWith = Symbol("dartx.replaceWith");
const $insertAllBefore = dartx.insertAllBefore = Symbol("dartx.insertAllBefore");
const $childNodes = dartx.childNodes = Symbol("dartx.childNodes");
const $firstChild = dartx.firstChild = Symbol("dartx.firstChild");
const $isConnected = dartx.isConnected = Symbol("dartx.isConnected");
const $lastChild = dartx.lastChild = Symbol("dartx.lastChild");
const $nodeName = dartx.nodeName = Symbol("dartx.nodeName");
const $nodeType = dartx.nodeType = Symbol("dartx.nodeType");
const $nodeValue = dartx.nodeValue = Symbol("dartx.nodeValue");
const $ownerDocument = dartx.ownerDocument = Symbol("dartx.ownerDocument");
const $parentNode = dartx.parentNode = Symbol("dartx.parentNode");
const $previousNode = dartx.previousNode = Symbol("dartx.previousNode");
const $clone = dartx.clone = Symbol("dartx.clone");
const $getRootNode = dartx.getRootNode = Symbol("dartx.getRootNode");
const $hasChildNodes = dartx.hasChildNodes = Symbol("dartx.hasChildNodes");
const $insertBefore = dartx.insertBefore = Symbol("dartx.insertBefore");
const $respondWith = dartx.respondWith = Symbol("dartx.respondWith");
const $waitUntil = dartx.waitUntil = Symbol("dartx.waitUntil");
const $quaternion = dartx.quaternion = Symbol("dartx.quaternion");
const $populateMatrix = dartx.populateMatrix = Symbol("dartx.populateMatrix");
const $activated = dartx.activated = Symbol("dartx.activated");
const $hasReading = dartx.hasReading = Symbol("dartx.hasReading");
const $timestamp = dartx.timestamp = Symbol("dartx.timestamp");
const $start = dartx.start = Symbol("dartx.start");
const $stop = dartx.stop = Symbol("dartx.stop");
const $x = dartx.x = Symbol("dartx.x");
const $y = dartx.y = Symbol("dartx.y");
const $z = dartx.z = Symbol("dartx.z");
const $activeDescendant = dartx.activeDescendant = Symbol("dartx.activeDescendant");
const $atomic = dartx.atomic = Symbol("dartx.atomic");
const $autocomplete = dartx.autocomplete = Symbol("dartx.autocomplete");
const $busy = dartx.busy = Symbol("dartx.busy");
const $checked = dartx.checked = Symbol("dartx.checked");
const $colCount = dartx.colCount = Symbol("dartx.colCount");
const $colIndex = dartx.colIndex = Symbol("dartx.colIndex");
const $colSpan = dartx.colSpan = Symbol("dartx.colSpan");
const $controls = dartx.controls = Symbol("dartx.controls");
const $current = dartx.current = Symbol("dartx.current");
const $describedBy = dartx.describedBy = Symbol("dartx.describedBy");
const $details = dartx.details = Symbol("dartx.details");
const $disabled = dartx.disabled = Symbol("dartx.disabled");
const $errorMessage = dartx.errorMessage = Symbol("dartx.errorMessage");
const $expanded = dartx.expanded = Symbol("dartx.expanded");
const $flowTo = dartx.flowTo = Symbol("dartx.flowTo");
const $hasPopUp = dartx.hasPopUp = Symbol("dartx.hasPopUp");
const $invalid = dartx.invalid = Symbol("dartx.invalid");
const $keyShortcuts = dartx.keyShortcuts = Symbol("dartx.keyShortcuts");
const $label = dartx.label = Symbol("dartx.label");
const $labeledBy = dartx.labeledBy = Symbol("dartx.labeledBy");
const $level = dartx.level = Symbol("dartx.level");
const $live = dartx.live = Symbol("dartx.live");
const $modal = dartx.modal = Symbol("dartx.modal");
const $multiline = dartx.multiline = Symbol("dartx.multiline");
const $multiselectable = dartx.multiselectable = Symbol("dartx.multiselectable");
const $orientation = dartx.orientation = Symbol("dartx.orientation");
const $owns = dartx.owns = Symbol("dartx.owns");
const $placeholder = dartx.placeholder = Symbol("dartx.placeholder");
const $posInSet = dartx.posInSet = Symbol("dartx.posInSet");
const $pressed = dartx.pressed = Symbol("dartx.pressed");
const $readOnly = dartx.readOnly = Symbol("dartx.readOnly");
const $relevant = dartx.relevant = Symbol("dartx.relevant");
const $required = dartx.required = Symbol("dartx.required");
const $role = dartx.role = Symbol("dartx.role");
const $roleDescription = dartx.roleDescription = Symbol("dartx.roleDescription");
const $rowCount = dartx.rowCount = Symbol("dartx.rowCount");
const $rowIndex = dartx.rowIndex = Symbol("dartx.rowIndex");
const $rowSpan = dartx.rowSpan = Symbol("dartx.rowSpan");
const $selected = dartx.selected = Symbol("dartx.selected");
const $setSize = dartx.setSize = Symbol("dartx.setSize");
const $valueMax = dartx.valueMax = Symbol("dartx.valueMax");
const $valueMin = dartx.valueMin = Symbol("dartx.valueMin");
const $valueNow = dartx.valueNow = Symbol("dartx.valueNow");
const $valueText = dartx.valueText = Symbol("dartx.valueText");
const $appendChild = dartx.appendChild = Symbol("dartx.appendChild");
const $onAccessibleClick = dartx.onAccessibleClick = Symbol("dartx.onAccessibleClick");
const $onAccessibleContextMenu = dartx.onAccessibleContextMenu = Symbol("dartx.onAccessibleContextMenu");
const $onAccessibleDecrement = dartx.onAccessibleDecrement = Symbol("dartx.onAccessibleDecrement");
const $onAccessibleFocus = dartx.onAccessibleFocus = Symbol("dartx.onAccessibleFocus");
const $onAccessibleIncrement = dartx.onAccessibleIncrement = Symbol("dartx.onAccessibleIncrement");
const $onAccessibleScrollIntoView = dartx.onAccessibleScrollIntoView = Symbol("dartx.onAccessibleScrollIntoView");
const $item = dartx.item = Symbol("dartx.item");
const $illuminance = dartx.illuminance = Symbol("dartx.illuminance");
const $download = dartx.download = Symbol("dartx.download");
const $hreflang = dartx.hreflang = Symbol("dartx.hreflang");
const $referrerPolicy = dartx.referrerPolicy = Symbol("dartx.referrerPolicy");
const $rel = dartx.rel = Symbol("dartx.rel");
const $hash = dartx.hash = Symbol("dartx.hash");
const $host = dartx.host = Symbol("dartx.host");
const $hostname = dartx.hostname = Symbol("dartx.hostname");
const $href = dartx.href = Symbol("dartx.href");
const $origin = dartx.origin = Symbol("dartx.origin");
const $password = dartx.password = Symbol("dartx.password");
const $pathname = dartx.pathname = Symbol("dartx.pathname");
const $port = dartx.port = Symbol("dartx.port");
const $protocol = dartx.protocol = Symbol("dartx.protocol");
const $search = dartx.search = Symbol("dartx.search");
const $username = dartx.username = Symbol("dartx.username");
const $currentTime = dartx.currentTime = Symbol("dartx.currentTime");
const $effect = dartx.effect = Symbol("dartx.effect");
const $finished = dartx.finished = Symbol("dartx.finished");
const $playState = dartx.playState = Symbol("dartx.playState");
const $playbackRate = dartx.playbackRate = Symbol("dartx.playbackRate");
const $ready = dartx.ready = Symbol("dartx.ready");
const $startTime = dartx.startTime = Symbol("dartx.startTime");
const $timeline = dartx.timeline = Symbol("dartx.timeline");
const $cancel = dartx.cancel = Symbol("dartx.cancel");
const $finish = dartx.finish = Symbol("dartx.finish");
const $pause = dartx.pause = Symbol("dartx.pause");
const $play = dartx.play = Symbol("dartx.play");
const $reverse = dartx.reverse = Symbol("dartx.reverse");
const $onCancel = dartx.onCancel = Symbol("dartx.onCancel");
const $onFinish = dartx.onFinish = Symbol("dartx.onFinish");
const $timing = dartx.timing = Symbol("dartx.timing");
const $getComputedTiming = dartx.getComputedTiming = Symbol("dartx.getComputedTiming");
const $delay = dartx.delay = Symbol("dartx.delay");
const $duration = dartx.duration = Symbol("dartx.duration");
const $easing = dartx.easing = Symbol("dartx.easing");
const $endDelay = dartx.endDelay = Symbol("dartx.endDelay");
const $fill = dartx.fill = Symbol("dartx.fill");
const $iterationStart = dartx.iterationStart = Symbol("dartx.iterationStart");
const $iterations = dartx.iterations = Symbol("dartx.iterations");
const $animationName = dartx.animationName = Symbol("dartx.animationName");
const $elapsedTime = dartx.elapsedTime = Symbol("dartx.elapsedTime");
const $timelineTime = dartx.timelineTime = Symbol("dartx.timelineTime");
const $registerAnimator = dartx.registerAnimator = Symbol("dartx.registerAnimator");
const $status = dartx.status = Symbol("dartx.status");
const $swapCache = dartx.swapCache = Symbol("dartx.swapCache");
const $onCached = dartx.onCached = Symbol("dartx.onCached");
const $onChecking = dartx.onChecking = Symbol("dartx.onChecking");
const $onDownloading = dartx.onDownloading = Symbol("dartx.onDownloading");
const $onNoUpdate = dartx.onNoUpdate = Symbol("dartx.onNoUpdate");
const $onObsolete = dartx.onObsolete = Symbol("dartx.onObsolete");
const $onProgress = dartx.onProgress = Symbol("dartx.onProgress");
const $onUpdateReady = dartx.onUpdateReady = Symbol("dartx.onUpdateReady");
const $reason = dartx.reason = Symbol("dartx.reason");
const $url = dartx.url = Symbol("dartx.url");
const $alt = dartx.alt = Symbol("dartx.alt");
const $coords = dartx.coords = Symbol("dartx.coords");
const $shape = dartx.shape = Symbol("dartx.shape");
const $audioTracks = dartx.audioTracks = Symbol("dartx.audioTracks");
const $autoplay = dartx.autoplay = Symbol("dartx.autoplay");
const $buffered = dartx.buffered = Symbol("dartx.buffered");
const $controlsList = dartx.controlsList = Symbol("dartx.controlsList");
const $crossOrigin = dartx.crossOrigin = Symbol("dartx.crossOrigin");
const $currentSrc = dartx.currentSrc = Symbol("dartx.currentSrc");
const $defaultMuted = dartx.defaultMuted = Symbol("dartx.defaultMuted");
const $defaultPlaybackRate = dartx.defaultPlaybackRate = Symbol("dartx.defaultPlaybackRate");
const $disableRemotePlayback = dartx.disableRemotePlayback = Symbol("dartx.disableRemotePlayback");
const $ended = dartx.ended = Symbol("dartx.ended");
const $loop = dartx.loop = Symbol("dartx.loop");
const $mediaKeys = dartx.mediaKeys = Symbol("dartx.mediaKeys");
const $muted = dartx.muted = Symbol("dartx.muted");
const $networkState = dartx.networkState = Symbol("dartx.networkState");
const $paused = dartx.paused = Symbol("dartx.paused");
const $played = dartx.played = Symbol("dartx.played");
const $preload = dartx.preload = Symbol("dartx.preload");
const $remote = dartx.remote = Symbol("dartx.remote");
const $seekable = dartx.seekable = Symbol("dartx.seekable");
const $seeking = dartx.seeking = Symbol("dartx.seeking");
const $sinkId = dartx.sinkId = Symbol("dartx.sinkId");
const $src = dartx.src = Symbol("dartx.src");
const $srcObject = dartx.srcObject = Symbol("dartx.srcObject");
const $textTracks = dartx.textTracks = Symbol("dartx.textTracks");
const $videoTracks = dartx.videoTracks = Symbol("dartx.videoTracks");
const $volume = dartx.volume = Symbol("dartx.volume");
const $audioDecodedByteCount = dartx.audioDecodedByteCount = Symbol("dartx.audioDecodedByteCount");
const $videoDecodedByteCount = dartx.videoDecodedByteCount = Symbol("dartx.videoDecodedByteCount");
const $addTextTrack = dartx.addTextTrack = Symbol("dartx.addTextTrack");
const $canPlayType = dartx.canPlayType = Symbol("dartx.canPlayType");
const $captureStream = dartx.captureStream = Symbol("dartx.captureStream");
const $load = dartx.load = Symbol("dartx.load");
const $setMediaKeys = dartx.setMediaKeys = Symbol("dartx.setMediaKeys");
const $setSinkId = dartx.setSinkId = Symbol("dartx.setSinkId");
const $authenticatorData = dartx.authenticatorData = Symbol("dartx.authenticatorData");
const $signature = dartx.signature = Symbol("dartx.signature");
const $clientDataJson = dartx.clientDataJson = Symbol("dartx.clientDataJson");
const $attestationObject = dartx.attestationObject = Symbol("dartx.attestationObject");
const $state = dartx.state = Symbol("dartx.state");
const $fetches = dartx.fetches = Symbol("dartx.fetches");
const $request = dartx.request = Symbol("dartx.request");
const $fetch = dartx.fetch = Symbol("dartx.fetch");
const $getIds = dartx.getIds = Symbol("dartx.getIds");
const $downloadTotal = dartx.downloadTotal = Symbol("dartx.downloadTotal");
const $downloaded = dartx.downloaded = Symbol("dartx.downloaded");
const $totalDownloadSize = dartx.totalDownloadSize = Symbol("dartx.totalDownloadSize");
const $uploadTotal = dartx.uploadTotal = Symbol("dartx.uploadTotal");
const $uploaded = dartx.uploaded = Symbol("dartx.uploaded");
const $response = dartx.response = Symbol("dartx.response");
const $updateUI = dartx.updateUI = Symbol("dartx.updateUI");
const $visible = dartx.visible = Symbol("dartx.visible");
const $detect = dartx.detect = Symbol("dartx.detect");
const $charging = dartx.charging = Symbol("dartx.charging");
const $chargingTime = dartx.chargingTime = Symbol("dartx.chargingTime");
const $dischargingTime = dartx.dischargingTime = Symbol("dartx.dischargingTime");
const $platforms = dartx.platforms = Symbol("dartx.platforms");
const $userChoice = dartx.userChoice = Symbol("dartx.userChoice");
const $prompt = dartx.prompt = Symbol("dartx.prompt");
const $returnValue = dartx.returnValue = Symbol("dartx.returnValue");
const $size = dartx.size = Symbol("dartx.size");
const $slice = dartx.slice = Symbol("dartx.slice");
const $data = dartx.data = Symbol("dartx.data");
const $timecode = dartx.timecode = Symbol("dartx.timecode");
const $characteristic = dartx.characteristic = Symbol("dartx.characteristic");
const $uuid = dartx.uuid = Symbol("dartx.uuid");
const $readValue = dartx.readValue = Symbol("dartx.readValue");
const $writeValue = dartx.writeValue = Symbol("dartx.writeValue");
const $bodyUsed = dartx.bodyUsed = Symbol("dartx.bodyUsed");
const $arrayBuffer = dartx.arrayBuffer = Symbol("dartx.arrayBuffer");
const $blob = dartx.blob = Symbol("dartx.blob");
const $formData = dartx.formData = Symbol("dartx.formData");
const $json = dartx.json = Symbol("dartx.json");
const $onHashChange = dartx.onHashChange = Symbol("dartx.onHashChange");
const $onMessage = dartx.onMessage = Symbol("dartx.onMessage");
const $onOffline = dartx.onOffline = Symbol("dartx.onOffline");
const $onOnline = dartx.onOnline = Symbol("dartx.onOnline");
const $onPopState = dartx.onPopState = Symbol("dartx.onPopState");
const $onStorage = dartx.onStorage = Symbol("dartx.onStorage");
const $onUnload = dartx.onUnload = Symbol("dartx.onUnload");
const $postMessage = dartx.postMessage = Symbol("dartx.postMessage");
const $budgetAt = dartx.budgetAt = Symbol("dartx.budgetAt");
const $time = dartx.time = Symbol("dartx.time");
const $autofocus = dartx.autofocus = Symbol("dartx.autofocus");
const $form = dartx.form = Symbol("dartx.form");
const $formAction = dartx.formAction = Symbol("dartx.formAction");
const $formEnctype = dartx.formEnctype = Symbol("dartx.formEnctype");
const $formMethod = dartx.formMethod = Symbol("dartx.formMethod");
const $formNoValidate = dartx.formNoValidate = Symbol("dartx.formNoValidate");
const $formTarget = dartx.formTarget = Symbol("dartx.formTarget");
const $labels = dartx.labels = Symbol("dartx.labels");
const $validationMessage = dartx.validationMessage = Symbol("dartx.validationMessage");
const $validity = dartx.validity = Symbol("dartx.validity");
const $willValidate = dartx.willValidate = Symbol("dartx.willValidate");
const $checkValidity = dartx.checkValidity = Symbol("dartx.checkValidity");
const $reportValidity = dartx.reportValidity = Symbol("dartx.reportValidity");
const $setCustomValidity = dartx.setCustomValidity = Symbol("dartx.setCustomValidity");
const $wholeText = dartx.wholeText = Symbol("dartx.wholeText");
const $splitText = dartx.splitText = Symbol("dartx.splitText");
const $appendData = dartx.appendData = Symbol("dartx.appendData");
const $deleteData = dartx.deleteData = Symbol("dartx.deleteData");
const $insertData = dartx.insertData = Symbol("dartx.insertData");
const $replaceData = dartx.replaceData = Symbol("dartx.replaceData");
const $substringData = dartx.substringData = Symbol("dartx.substringData");
const $has = dartx.has = Symbol("dartx.has");
const $match = dartx.match = Symbol("dartx.match");
const $methodData = dartx.methodData = Symbol("dartx.methodData");
const $modifiers = dartx.modifiers = Symbol("dartx.modifiers");
const $paymentRequestOrigin = dartx.paymentRequestOrigin = Symbol("dartx.paymentRequestOrigin");
const $topLevelOrigin = dartx.topLevelOrigin = Symbol("dartx.topLevelOrigin");
const $canvas = dartx.canvas = Symbol("dartx.canvas");
const $requestFrame = dartx.requestFrame = Symbol("dartx.requestFrame");
const $contentHint = dartx.contentHint = Symbol("dartx.contentHint");
const $enabled = dartx.enabled = Symbol("dartx.enabled");
const $kind = dartx.kind = Symbol("dartx.kind");
const $applyConstraints = dartx.applyConstraints = Symbol("dartx.applyConstraints");
const $getCapabilities = dartx.getCapabilities = Symbol("dartx.getCapabilities");
const $getConstraints = dartx.getConstraints = Symbol("dartx.getConstraints");
const $getSettings = dartx.getSettings = Symbol("dartx.getSettings");
const $onMute = dartx.onMute = Symbol("dartx.onMute");
const $onUnmute = dartx.onUnmute = Symbol("dartx.onUnmute");
const $getContext = dartx.getContext = Symbol("dartx.getContext");
const $transferControlToOffscreen = dartx.transferControlToOffscreen = Symbol("dartx.transferControlToOffscreen");
const $onWebGlContextLost = dartx.onWebGlContextLost = Symbol("dartx.onWebGlContextLost");
const $onWebGlContextRestored = dartx.onWebGlContextRestored = Symbol("dartx.onWebGlContextRestored");
const $context2D = dartx.context2D = Symbol("dartx.context2D");
const $getContext3d = dartx.getContext3d = Symbol("dartx.getContext3d");
const $toDataUrl = dartx.toDataUrl = Symbol("dartx.toDataUrl");
const $toBlob = dartx.toBlob = Symbol("dartx.toBlob");
const $addColorStop = dartx.addColorStop = Symbol("dartx.addColorStop");
const $setTransform = dartx.setTransform = Symbol("dartx.setTransform");
const $currentTransform = dartx.currentTransform = Symbol("dartx.currentTransform");
const $fillStyle = dartx.fillStyle = Symbol("dartx.fillStyle");
const $filter = dartx.filter = Symbol("dartx.filter");
const $font = dartx.font = Symbol("dartx.font");
const $globalAlpha = dartx.globalAlpha = Symbol("dartx.globalAlpha");
const $globalCompositeOperation = dartx.globalCompositeOperation = Symbol("dartx.globalCompositeOperation");
const $imageSmoothingEnabled = dartx.imageSmoothingEnabled = Symbol("dartx.imageSmoothingEnabled");
const $imageSmoothingQuality = dartx.imageSmoothingQuality = Symbol("dartx.imageSmoothingQuality");
const $lineCap = dartx.lineCap = Symbol("dartx.lineCap");
const $lineJoin = dartx.lineJoin = Symbol("dartx.lineJoin");
const $lineWidth = dartx.lineWidth = Symbol("dartx.lineWidth");
const $miterLimit = dartx.miterLimit = Symbol("dartx.miterLimit");
const $shadowBlur = dartx.shadowBlur = Symbol("dartx.shadowBlur");
const $shadowColor = dartx.shadowColor = Symbol("dartx.shadowColor");
const $shadowOffsetX = dartx.shadowOffsetX = Symbol("dartx.shadowOffsetX");
const $shadowOffsetY = dartx.shadowOffsetY = Symbol("dartx.shadowOffsetY");
const $strokeStyle = dartx.strokeStyle = Symbol("dartx.strokeStyle");
const $textAlign = dartx.textAlign = Symbol("dartx.textAlign");
const $textBaseline = dartx.textBaseline = Symbol("dartx.textBaseline");
const $addHitRegion = dartx.addHitRegion = Symbol("dartx.addHitRegion");
const $beginPath = dartx.beginPath = Symbol("dartx.beginPath");
const $clearHitRegions = dartx.clearHitRegions = Symbol("dartx.clearHitRegions");
const $clearRect = dartx.clearRect = Symbol("dartx.clearRect");
const $clip = dartx.clip = Symbol("dartx.clip");
const $createImageData = dartx.createImageData = Symbol("dartx.createImageData");
const $createLinearGradient = dartx.createLinearGradient = Symbol("dartx.createLinearGradient");
const $createPattern = dartx.createPattern = Symbol("dartx.createPattern");
const $createRadialGradient = dartx.createRadialGradient = Symbol("dartx.createRadialGradient");
const $drawFocusIfNeeded = dartx.drawFocusIfNeeded = Symbol("dartx.drawFocusIfNeeded");
const $fillRect = dartx.fillRect = Symbol("dartx.fillRect");
const $getContextAttributes = dartx.getContextAttributes = Symbol("dartx.getContextAttributes");
const $getImageData = dartx.getImageData = Symbol("dartx.getImageData");
const $isContextLost = dartx.isContextLost = Symbol("dartx.isContextLost");
const $isPointInPath = dartx.isPointInPath = Symbol("dartx.isPointInPath");
const $isPointInStroke = dartx.isPointInStroke = Symbol("dartx.isPointInStroke");
const $measureText = dartx.measureText = Symbol("dartx.measureText");
const $putImageData = dartx.putImageData = Symbol("dartx.putImageData");
const $removeHitRegion = dartx.removeHitRegion = Symbol("dartx.removeHitRegion");
const $resetTransform = dartx.resetTransform = Symbol("dartx.resetTransform");
const $restore = dartx.restore = Symbol("dartx.restore");
const $rotate = dartx.rotate = Symbol("dartx.rotate");
const $save = dartx.save = Symbol("dartx.save");
const $scale = dartx.scale = Symbol("dartx.scale");
const $scrollPathIntoView = dartx.scrollPathIntoView = Symbol("dartx.scrollPathIntoView");
const $stroke = dartx.stroke = Symbol("dartx.stroke");
const $strokeRect = dartx.strokeRect = Symbol("dartx.strokeRect");
const $strokeText = dartx.strokeText = Symbol("dartx.strokeText");
const $transform = dartx.transform = Symbol("dartx.transform");
const $arcTo = dartx.arcTo = Symbol("dartx.arcTo");
const $bezierCurveTo = dartx.bezierCurveTo = Symbol("dartx.bezierCurveTo");
const $closePath = dartx.closePath = Symbol("dartx.closePath");
const $ellipse = dartx.ellipse = Symbol("dartx.ellipse");
const $lineTo = dartx.lineTo = Symbol("dartx.lineTo");
const $moveTo = dartx.moveTo = Symbol("dartx.moveTo");
const $quadraticCurveTo = dartx.quadraticCurveTo = Symbol("dartx.quadraticCurveTo");
const $rect = dartx.rect = Symbol("dartx.rect");
const $createImageDataFromImageData = dartx.createImageDataFromImageData = Symbol("dartx.createImageDataFromImageData");
const $setFillColorRgb = dartx.setFillColorRgb = Symbol("dartx.setFillColorRgb");
const $setFillColorHsl = dartx.setFillColorHsl = Symbol("dartx.setFillColorHsl");
const $setStrokeColorRgb = dartx.setStrokeColorRgb = Symbol("dartx.setStrokeColorRgb");
const $setStrokeColorHsl = dartx.setStrokeColorHsl = Symbol("dartx.setStrokeColorHsl");
const $arc = dartx.arc = Symbol("dartx.arc");
const $createPatternFromImage = dartx.createPatternFromImage = Symbol("dartx.createPatternFromImage");
const $drawImageScaled = dartx.drawImageScaled = Symbol("dartx.drawImageScaled");
const $drawImageScaledFromSource = dartx.drawImageScaledFromSource = Symbol("dartx.drawImageScaledFromSource");
const $drawImageToRect = dartx.drawImageToRect = Symbol("dartx.drawImageToRect");
const $drawImage = dartx.drawImage = Symbol("dartx.drawImage");
const $lineDashOffset = dartx.lineDashOffset = Symbol("dartx.lineDashOffset");
const $getLineDash = dartx.getLineDash = Symbol("dartx.getLineDash");
const $setLineDash = dartx.setLineDash = Symbol("dartx.setLineDash");
const $fillText = dartx.fillText = Symbol("dartx.fillText");
const $backingStorePixelRatio = dartx.backingStorePixelRatio = Symbol("dartx.backingStorePixelRatio");
const $frameType = dartx.frameType = Symbol("dartx.frameType");
const $claim = dartx.claim = Symbol("dartx.claim");
const $matchAll = dartx.matchAll = Symbol("dartx.matchAll");
const $openWindow = dartx.openWindow = Symbol("dartx.openWindow");
const $clipboardData = dartx.clipboardData = Symbol("dartx.clipboardData");
const $code = dartx.code = Symbol("dartx.code");
const $wasClean = dartx.wasClean = Symbol("dartx.wasClean");
const $detail = dartx.detail = Symbol("dartx.detail");
const $sourceCapabilities = dartx.sourceCapabilities = Symbol("dartx.sourceCapabilities");
const $view = dartx.view = Symbol("dartx.view");
const $select = dartx.select = Symbol("dartx.select");
const $getDistributedNodes = dartx.getDistributedNodes = Symbol("dartx.getDistributedNodes");
const $set = dartx.set = Symbol("dartx.set");
const $accuracy = dartx.accuracy = Symbol("dartx.accuracy");
const $altitude = dartx.altitude = Symbol("dartx.altitude");
const $altitudeAccuracy = dartx.altitudeAccuracy = Symbol("dartx.altitudeAccuracy");
const $heading = dartx.heading = Symbol("dartx.heading");
const $latitude = dartx.latitude = Symbol("dartx.latitude");
const $longitude = dartx.longitude = Symbol("dartx.longitude");
const $speed = dartx.speed = Symbol("dartx.speed");
const $iconUrl = dartx.iconUrl = Symbol("dartx.iconUrl");
const $create = dartx.create = Symbol("dartx.create");
const $preventSilentAccess = dartx.preventSilentAccess = Symbol("dartx.preventSilentAccess");
const $requireUserMediation = dartx.requireUserMediation = Symbol("dartx.requireUserMediation");
const $store = dartx.store = Symbol("dartx.store");
const $getRandomValues = dartx.getRandomValues = Symbol("dartx.getRandomValues");
const $subtle = dartx.subtle = Symbol("dartx.subtle");
const $algorithm = dartx.algorithm = Symbol("dartx.algorithm");
const $extractable = dartx.extractable = Symbol("dartx.extractable");
const $usages = dartx.usages = Symbol("dartx.usages");
const $encoding = dartx.encoding = Symbol("dartx.encoding");
const $cssText = dartx.cssText = Symbol("dartx.cssText");
const $parentRule = dartx.parentRule = Symbol("dartx.parentRule");
const $parentStyleSheet = dartx.parentStyleSheet = Symbol("dartx.parentStyleSheet");
const $conditionText = dartx.conditionText = Symbol("dartx.conditionText");
const $cssRules = dartx.cssRules = Symbol("dartx.cssRules");
const $deleteRule = dartx.deleteRule = Symbol("dartx.deleteRule");
const $insertRule = dartx.insertRule = Symbol("dartx.insertRule");
const $intrinsicHeight = dartx.intrinsicHeight = Symbol("dartx.intrinsicHeight");
const $intrinsicRatio = dartx.intrinsicRatio = Symbol("dartx.intrinsicRatio");
const $intrinsicWidth = dartx.intrinsicWidth = Symbol("dartx.intrinsicWidth");
const $media = dartx.media = Symbol("dartx.media");
const $styleSheet = dartx.styleSheet = Symbol("dartx.styleSheet");
const $keyText = dartx.keyText = Symbol("dartx.keyText");
const $appendRule = dartx.appendRule = Symbol("dartx.appendRule");
const $findRule = dartx.findRule = Symbol("dartx.findRule");
const $matrix = dartx.matrix = Symbol("dartx.matrix");
const $is2D = dartx.is2D = Symbol("dartx.is2D");
const $prefix = dartx.prefix = Symbol("dartx.prefix");
const $div = dartx.div = Symbol("dartx.div");
const $mul = dartx.mul = Symbol("dartx.mul");
const $sub = dartx.sub = Symbol("dartx.sub");
const $to = dartx.to = Symbol("dartx.to");
const $selectorText = dartx.selectorText = Symbol("dartx.selectorText");
const $angle = dartx.angle = Symbol("dartx.angle");
const $ax = dartx.ax = Symbol("dartx.ax");
const $ay = dartx.ay = Symbol("dartx.ay");
const $getPropertyValue = dartx.getPropertyValue = Symbol("dartx.getPropertyValue");
const $supportsProperty = dartx.supportsProperty = Symbol("dartx.supportsProperty");
const $setProperty = dartx.setProperty = Symbol("dartx.setProperty");
const $cssFloat = dartx.cssFloat = Symbol("dartx.cssFloat");
const $getPropertyPriority = dartx.getPropertyPriority = Symbol("dartx.getPropertyPriority");
const $removeProperty = dartx.removeProperty = Symbol("dartx.removeProperty");
const $background = dartx.background = Symbol("dartx.background");
const $backgroundAttachment = dartx.backgroundAttachment = Symbol("dartx.backgroundAttachment");
const $backgroundColor = dartx.backgroundColor = Symbol("dartx.backgroundColor");
const $backgroundImage = dartx.backgroundImage = Symbol("dartx.backgroundImage");
const $backgroundPosition = dartx.backgroundPosition = Symbol("dartx.backgroundPosition");
const $backgroundRepeat = dartx.backgroundRepeat = Symbol("dartx.backgroundRepeat");
const $border = dartx.border = Symbol("dartx.border");
const $borderBottom = dartx.borderBottom = Symbol("dartx.borderBottom");
const $borderBottomColor = dartx.borderBottomColor = Symbol("dartx.borderBottomColor");
const $borderBottomStyle = dartx.borderBottomStyle = Symbol("dartx.borderBottomStyle");
const $borderBottomWidth = dartx.borderBottomWidth = Symbol("dartx.borderBottomWidth");
const $borderCollapse = dartx.borderCollapse = Symbol("dartx.borderCollapse");
const $borderColor = dartx.borderColor = Symbol("dartx.borderColor");
const $borderLeft = dartx.borderLeft = Symbol("dartx.borderLeft");
const $borderLeftColor = dartx.borderLeftColor = Symbol("dartx.borderLeftColor");
const $borderLeftStyle = dartx.borderLeftStyle = Symbol("dartx.borderLeftStyle");
const $borderLeftWidth = dartx.borderLeftWidth = Symbol("dartx.borderLeftWidth");
const $borderRight = dartx.borderRight = Symbol("dartx.borderRight");
const $borderRightColor = dartx.borderRightColor = Symbol("dartx.borderRightColor");
const $borderRightStyle = dartx.borderRightStyle = Symbol("dartx.borderRightStyle");
const $borderRightWidth = dartx.borderRightWidth = Symbol("dartx.borderRightWidth");
const $borderSpacing = dartx.borderSpacing = Symbol("dartx.borderSpacing");
const $borderStyle = dartx.borderStyle = Symbol("dartx.borderStyle");
const $borderTop = dartx.borderTop = Symbol("dartx.borderTop");
const $borderTopColor = dartx.borderTopColor = Symbol("dartx.borderTopColor");
const $borderTopStyle = dartx.borderTopStyle = Symbol("dartx.borderTopStyle");
const $borderTopWidth = dartx.borderTopWidth = Symbol("dartx.borderTopWidth");
const $borderWidth = dartx.borderWidth = Symbol("dartx.borderWidth");
const $captionSide = dartx.captionSide = Symbol("dartx.captionSide");
const $color = dartx.color = Symbol("dartx.color");
const $content = dartx.content = Symbol("dartx.content");
const $cursor = dartx.cursor = Symbol("dartx.cursor");
const $display = dartx.display = Symbol("dartx.display");
const $emptyCells = dartx.emptyCells = Symbol("dartx.emptyCells");
const $fontFamily = dartx.fontFamily = Symbol("dartx.fontFamily");
const $fontSize = dartx.fontSize = Symbol("dartx.fontSize");
const $fontStyle = dartx.fontStyle = Symbol("dartx.fontStyle");
const $fontVariant = dartx.fontVariant = Symbol("dartx.fontVariant");
const $fontWeight = dartx.fontWeight = Symbol("dartx.fontWeight");
const $letterSpacing = dartx.letterSpacing = Symbol("dartx.letterSpacing");
const $lineHeight = dartx.lineHeight = Symbol("dartx.lineHeight");
const $listStyle = dartx.listStyle = Symbol("dartx.listStyle");
const $listStyleImage = dartx.listStyleImage = Symbol("dartx.listStyleImage");
const $listStylePosition = dartx.listStylePosition = Symbol("dartx.listStylePosition");
const $listStyleType = dartx.listStyleType = Symbol("dartx.listStyleType");
const $margin = dartx.margin = Symbol("dartx.margin");
const $marginBottom = dartx.marginBottom = Symbol("dartx.marginBottom");
const $marginLeft = dartx.marginLeft = Symbol("dartx.marginLeft");
const $marginRight = dartx.marginRight = Symbol("dartx.marginRight");
const $marginTop = dartx.marginTop = Symbol("dartx.marginTop");
const $maxHeight = dartx.maxHeight = Symbol("dartx.maxHeight");
const $maxWidth = dartx.maxWidth = Symbol("dartx.maxWidth");
const $minHeight = dartx.minHeight = Symbol("dartx.minHeight");
const $minWidth = dartx.minWidth = Symbol("dartx.minWidth");
const $outline = dartx.outline = Symbol("dartx.outline");
const $outlineColor = dartx.outlineColor = Symbol("dartx.outlineColor");
const $outlineStyle = dartx.outlineStyle = Symbol("dartx.outlineStyle");
const $outlineWidth = dartx.outlineWidth = Symbol("dartx.outlineWidth");
const $overflow = dartx.overflow = Symbol("dartx.overflow");
const $padding = dartx.padding = Symbol("dartx.padding");
const $paddingBottom = dartx.paddingBottom = Symbol("dartx.paddingBottom");
const $paddingLeft = dartx.paddingLeft = Symbol("dartx.paddingLeft");
const $paddingRight = dartx.paddingRight = Symbol("dartx.paddingRight");
const $paddingTop = dartx.paddingTop = Symbol("dartx.paddingTop");
const $pageBreakAfter = dartx.pageBreakAfter = Symbol("dartx.pageBreakAfter");
const $pageBreakBefore = dartx.pageBreakBefore = Symbol("dartx.pageBreakBefore");
const $pageBreakInside = dartx.pageBreakInside = Symbol("dartx.pageBreakInside");
const $position = dartx.position = Symbol("dartx.position");
const $quotes = dartx.quotes = Symbol("dartx.quotes");
const $tableLayout = dartx.tableLayout = Symbol("dartx.tableLayout");
const $textDecoration = dartx.textDecoration = Symbol("dartx.textDecoration");
const $textIndent = dartx.textIndent = Symbol("dartx.textIndent");
const $textTransform = dartx.textTransform = Symbol("dartx.textTransform");
const $unicodeBidi = dartx.unicodeBidi = Symbol("dartx.unicodeBidi");
const $verticalAlign = dartx.verticalAlign = Symbol("dartx.verticalAlign");
const $visibility = dartx.visibility = Symbol("dartx.visibility");
const $whiteSpace = dartx.whiteSpace = Symbol("dartx.whiteSpace");
const $wordSpacing = dartx.wordSpacing = Symbol("dartx.wordSpacing");
const $zIndex = dartx.zIndex = Symbol("dartx.zIndex");
const $alignContent = dartx.alignContent = Symbol("dartx.alignContent");
const $alignItems = dartx.alignItems = Symbol("dartx.alignItems");
const $alignSelf = dartx.alignSelf = Symbol("dartx.alignSelf");
const $animation = dartx.animation = Symbol("dartx.animation");
const $animationDelay = dartx.animationDelay = Symbol("dartx.animationDelay");
const $animationDirection = dartx.animationDirection = Symbol("dartx.animationDirection");
const $animationDuration = dartx.animationDuration = Symbol("dartx.animationDuration");
const $animationFillMode = dartx.animationFillMode = Symbol("dartx.animationFillMode");
const $animationIterationCount = dartx.animationIterationCount = Symbol("dartx.animationIterationCount");
const $animationPlayState = dartx.animationPlayState = Symbol("dartx.animationPlayState");
const $animationTimingFunction = dartx.animationTimingFunction = Symbol("dartx.animationTimingFunction");
const $appRegion = dartx.appRegion = Symbol("dartx.appRegion");
const $appearance = dartx.appearance = Symbol("dartx.appearance");
const $aspectRatio = dartx.aspectRatio = Symbol("dartx.aspectRatio");
const $backfaceVisibility = dartx.backfaceVisibility = Symbol("dartx.backfaceVisibility");
const $backgroundBlendMode = dartx.backgroundBlendMode = Symbol("dartx.backgroundBlendMode");
const $backgroundClip = dartx.backgroundClip = Symbol("dartx.backgroundClip");
const $backgroundComposite = dartx.backgroundComposite = Symbol("dartx.backgroundComposite");
const $backgroundOrigin = dartx.backgroundOrigin = Symbol("dartx.backgroundOrigin");
const $backgroundPositionX = dartx.backgroundPositionX = Symbol("dartx.backgroundPositionX");
const $backgroundPositionY = dartx.backgroundPositionY = Symbol("dartx.backgroundPositionY");
const $backgroundRepeatX = dartx.backgroundRepeatX = Symbol("dartx.backgroundRepeatX");
const $backgroundRepeatY = dartx.backgroundRepeatY = Symbol("dartx.backgroundRepeatY");
const $backgroundSize = dartx.backgroundSize = Symbol("dartx.backgroundSize");
const $borderAfter = dartx.borderAfter = Symbol("dartx.borderAfter");
const $borderAfterColor = dartx.borderAfterColor = Symbol("dartx.borderAfterColor");
const $borderAfterStyle = dartx.borderAfterStyle = Symbol("dartx.borderAfterStyle");
const $borderAfterWidth = dartx.borderAfterWidth = Symbol("dartx.borderAfterWidth");
const $borderBefore = dartx.borderBefore = Symbol("dartx.borderBefore");
const $borderBeforeColor = dartx.borderBeforeColor = Symbol("dartx.borderBeforeColor");
const $borderBeforeStyle = dartx.borderBeforeStyle = Symbol("dartx.borderBeforeStyle");
const $borderBeforeWidth = dartx.borderBeforeWidth = Symbol("dartx.borderBeforeWidth");
const $borderBottomLeftRadius = dartx.borderBottomLeftRadius = Symbol("dartx.borderBottomLeftRadius");
const $borderBottomRightRadius = dartx.borderBottomRightRadius = Symbol("dartx.borderBottomRightRadius");
const $borderEnd = dartx.borderEnd = Symbol("dartx.borderEnd");
const $borderEndColor = dartx.borderEndColor = Symbol("dartx.borderEndColor");
const $borderEndStyle = dartx.borderEndStyle = Symbol("dartx.borderEndStyle");
const $borderEndWidth = dartx.borderEndWidth = Symbol("dartx.borderEndWidth");
const $borderFit = dartx.borderFit = Symbol("dartx.borderFit");
const $borderHorizontalSpacing = dartx.borderHorizontalSpacing = Symbol("dartx.borderHorizontalSpacing");
const $borderImage = dartx.borderImage = Symbol("dartx.borderImage");
const $borderImageOutset = dartx.borderImageOutset = Symbol("dartx.borderImageOutset");
const $borderImageRepeat = dartx.borderImageRepeat = Symbol("dartx.borderImageRepeat");
const $borderImageSlice = dartx.borderImageSlice = Symbol("dartx.borderImageSlice");
const $borderImageSource = dartx.borderImageSource = Symbol("dartx.borderImageSource");
const $borderImageWidth = dartx.borderImageWidth = Symbol("dartx.borderImageWidth");
const $borderRadius = dartx.borderRadius = Symbol("dartx.borderRadius");
const $borderStart = dartx.borderStart = Symbol("dartx.borderStart");
const $borderStartColor = dartx.borderStartColor = Symbol("dartx.borderStartColor");
const $borderStartStyle = dartx.borderStartStyle = Symbol("dartx.borderStartStyle");
const $borderStartWidth = dartx.borderStartWidth = Symbol("dartx.borderStartWidth");
const $borderTopLeftRadius = dartx.borderTopLeftRadius = Symbol("dartx.borderTopLeftRadius");
const $borderTopRightRadius = dartx.borderTopRightRadius = Symbol("dartx.borderTopRightRadius");
const $borderVerticalSpacing = dartx.borderVerticalSpacing = Symbol("dartx.borderVerticalSpacing");
const $boxAlign = dartx.boxAlign = Symbol("dartx.boxAlign");
const $boxDecorationBreak = dartx.boxDecorationBreak = Symbol("dartx.boxDecorationBreak");
const $boxDirection = dartx.boxDirection = Symbol("dartx.boxDirection");
const $boxFlex = dartx.boxFlex = Symbol("dartx.boxFlex");
const $boxFlexGroup = dartx.boxFlexGroup = Symbol("dartx.boxFlexGroup");
const $boxLines = dartx.boxLines = Symbol("dartx.boxLines");
const $boxOrdinalGroup = dartx.boxOrdinalGroup = Symbol("dartx.boxOrdinalGroup");
const $boxOrient = dartx.boxOrient = Symbol("dartx.boxOrient");
const $boxPack = dartx.boxPack = Symbol("dartx.boxPack");
const $boxReflect = dartx.boxReflect = Symbol("dartx.boxReflect");
const $boxShadow = dartx.boxShadow = Symbol("dartx.boxShadow");
const $boxSizing = dartx.boxSizing = Symbol("dartx.boxSizing");
const $clipPath = dartx.clipPath = Symbol("dartx.clipPath");
const $columnBreakAfter = dartx.columnBreakAfter = Symbol("dartx.columnBreakAfter");
const $columnBreakBefore = dartx.columnBreakBefore = Symbol("dartx.columnBreakBefore");
const $columnBreakInside = dartx.columnBreakInside = Symbol("dartx.columnBreakInside");
const $columnCount = dartx.columnCount = Symbol("dartx.columnCount");
const $columnFill = dartx.columnFill = Symbol("dartx.columnFill");
const $columnGap = dartx.columnGap = Symbol("dartx.columnGap");
const $columnRule = dartx.columnRule = Symbol("dartx.columnRule");
const $columnRuleColor = dartx.columnRuleColor = Symbol("dartx.columnRuleColor");
const $columnRuleStyle = dartx.columnRuleStyle = Symbol("dartx.columnRuleStyle");
const $columnRuleWidth = dartx.columnRuleWidth = Symbol("dartx.columnRuleWidth");
const $columnSpan = dartx.columnSpan = Symbol("dartx.columnSpan");
const $columnWidth = dartx.columnWidth = Symbol("dartx.columnWidth");
const $columns = dartx.columns = Symbol("dartx.columns");
const $counterIncrement = dartx.counterIncrement = Symbol("dartx.counterIncrement");
const $counterReset = dartx.counterReset = Symbol("dartx.counterReset");
const $flex = dartx.flex = Symbol("dartx.flex");
const $flexBasis = dartx.flexBasis = Symbol("dartx.flexBasis");
const $flexDirection = dartx.flexDirection = Symbol("dartx.flexDirection");
const $flexFlow = dartx.flexFlow = Symbol("dartx.flexFlow");
const $flexGrow = dartx.flexGrow = Symbol("dartx.flexGrow");
const $flexShrink = dartx.flexShrink = Symbol("dartx.flexShrink");
const $flexWrap = dartx.flexWrap = Symbol("dartx.flexWrap");
const $float = dartx.float = Symbol("dartx.float");
const $fontFeatureSettings = dartx.fontFeatureSettings = Symbol("dartx.fontFeatureSettings");
const $fontKerning = dartx.fontKerning = Symbol("dartx.fontKerning");
const $fontSizeDelta = dartx.fontSizeDelta = Symbol("dartx.fontSizeDelta");
const $fontSmoothing = dartx.fontSmoothing = Symbol("dartx.fontSmoothing");
const $fontStretch = dartx.fontStretch = Symbol("dartx.fontStretch");
const $fontVariantLigatures = dartx.fontVariantLigatures = Symbol("dartx.fontVariantLigatures");
const $grid = dartx.grid = Symbol("dartx.grid");
const $gridArea = dartx.gridArea = Symbol("dartx.gridArea");
const $gridAutoColumns = dartx.gridAutoColumns = Symbol("dartx.gridAutoColumns");
const $gridAutoFlow = dartx.gridAutoFlow = Symbol("dartx.gridAutoFlow");
const $gridAutoRows = dartx.gridAutoRows = Symbol("dartx.gridAutoRows");
const $gridColumn = dartx.gridColumn = Symbol("dartx.gridColumn");
const $gridColumnEnd = dartx.gridColumnEnd = Symbol("dartx.gridColumnEnd");
const $gridColumnStart = dartx.gridColumnStart = Symbol("dartx.gridColumnStart");
const $gridRow = dartx.gridRow = Symbol("dartx.gridRow");
const $gridRowEnd = dartx.gridRowEnd = Symbol("dartx.gridRowEnd");
const $gridRowStart = dartx.gridRowStart = Symbol("dartx.gridRowStart");
const $gridTemplate = dartx.gridTemplate = Symbol("dartx.gridTemplate");
const $gridTemplateAreas = dartx.gridTemplateAreas = Symbol("dartx.gridTemplateAreas");
const $gridTemplateColumns = dartx.gridTemplateColumns = Symbol("dartx.gridTemplateColumns");
const $gridTemplateRows = dartx.gridTemplateRows = Symbol("dartx.gridTemplateRows");
const $highlight = dartx.highlight = Symbol("dartx.highlight");
const $hyphenateCharacter = dartx.hyphenateCharacter = Symbol("dartx.hyphenateCharacter");
const $imageRendering = dartx.imageRendering = Symbol("dartx.imageRendering");
const $isolation = dartx.isolation = Symbol("dartx.isolation");
const $justifyContent = dartx.justifyContent = Symbol("dartx.justifyContent");
const $justifySelf = dartx.justifySelf = Symbol("dartx.justifySelf");
const $lineBoxContain = dartx.lineBoxContain = Symbol("dartx.lineBoxContain");
const $lineBreak = dartx.lineBreak = Symbol("dartx.lineBreak");
const $lineClamp = dartx.lineClamp = Symbol("dartx.lineClamp");
const $locale = dartx.locale = Symbol("dartx.locale");
const $logicalHeight = dartx.logicalHeight = Symbol("dartx.logicalHeight");
const $logicalWidth = dartx.logicalWidth = Symbol("dartx.logicalWidth");
const $marginAfter = dartx.marginAfter = Symbol("dartx.marginAfter");
const $marginAfterCollapse = dartx.marginAfterCollapse = Symbol("dartx.marginAfterCollapse");
const $marginBefore = dartx.marginBefore = Symbol("dartx.marginBefore");
const $marginBeforeCollapse = dartx.marginBeforeCollapse = Symbol("dartx.marginBeforeCollapse");
const $marginBottomCollapse = dartx.marginBottomCollapse = Symbol("dartx.marginBottomCollapse");
const $marginCollapse = dartx.marginCollapse = Symbol("dartx.marginCollapse");
const $marginEnd = dartx.marginEnd = Symbol("dartx.marginEnd");
const $marginStart = dartx.marginStart = Symbol("dartx.marginStart");
const $marginTopCollapse = dartx.marginTopCollapse = Symbol("dartx.marginTopCollapse");
const $mask = dartx.mask = Symbol("dartx.mask");
const $maskBoxImage = dartx.maskBoxImage = Symbol("dartx.maskBoxImage");
const $maskBoxImageOutset = dartx.maskBoxImageOutset = Symbol("dartx.maskBoxImageOutset");
const $maskBoxImageRepeat = dartx.maskBoxImageRepeat = Symbol("dartx.maskBoxImageRepeat");
const $maskBoxImageSlice = dartx.maskBoxImageSlice = Symbol("dartx.maskBoxImageSlice");
const $maskBoxImageSource = dartx.maskBoxImageSource = Symbol("dartx.maskBoxImageSource");
const $maskBoxImageWidth = dartx.maskBoxImageWidth = Symbol("dartx.maskBoxImageWidth");
const $maskClip = dartx.maskClip = Symbol("dartx.maskClip");
const $maskComposite = dartx.maskComposite = Symbol("dartx.maskComposite");
const $maskImage = dartx.maskImage = Symbol("dartx.maskImage");
const $maskOrigin = dartx.maskOrigin = Symbol("dartx.maskOrigin");
const $maskPosition = dartx.maskPosition = Symbol("dartx.maskPosition");
const $maskPositionX = dartx.maskPositionX = Symbol("dartx.maskPositionX");
const $maskPositionY = dartx.maskPositionY = Symbol("dartx.maskPositionY");
const $maskRepeat = dartx.maskRepeat = Symbol("dartx.maskRepeat");
const $maskRepeatX = dartx.maskRepeatX = Symbol("dartx.maskRepeatX");
const $maskRepeatY = dartx.maskRepeatY = Symbol("dartx.maskRepeatY");
const $maskSize = dartx.maskSize = Symbol("dartx.maskSize");
const $maskSourceType = dartx.maskSourceType = Symbol("dartx.maskSourceType");
const $maxLogicalHeight = dartx.maxLogicalHeight = Symbol("dartx.maxLogicalHeight");
const $maxLogicalWidth = dartx.maxLogicalWidth = Symbol("dartx.maxLogicalWidth");
const $maxZoom = dartx.maxZoom = Symbol("dartx.maxZoom");
const $minLogicalHeight = dartx.minLogicalHeight = Symbol("dartx.minLogicalHeight");
const $minLogicalWidth = dartx.minLogicalWidth = Symbol("dartx.minLogicalWidth");
const $minZoom = dartx.minZoom = Symbol("dartx.minZoom");
const $mixBlendMode = dartx.mixBlendMode = Symbol("dartx.mixBlendMode");
const $objectFit = dartx.objectFit = Symbol("dartx.objectFit");
const $objectPosition = dartx.objectPosition = Symbol("dartx.objectPosition");
const $opacity = dartx.opacity = Symbol("dartx.opacity");
const $order = dartx.order = Symbol("dartx.order");
const $orphans = dartx.orphans = Symbol("dartx.orphans");
const $outlineOffset = dartx.outlineOffset = Symbol("dartx.outlineOffset");
const $overflowWrap = dartx.overflowWrap = Symbol("dartx.overflowWrap");
const $overflowX = dartx.overflowX = Symbol("dartx.overflowX");
const $overflowY = dartx.overflowY = Symbol("dartx.overflowY");
const $paddingAfter = dartx.paddingAfter = Symbol("dartx.paddingAfter");
const $paddingBefore = dartx.paddingBefore = Symbol("dartx.paddingBefore");
const $paddingEnd = dartx.paddingEnd = Symbol("dartx.paddingEnd");
const $paddingStart = dartx.paddingStart = Symbol("dartx.paddingStart");
const $page = dartx.page = Symbol("dartx.page");
const $perspective = dartx.perspective = Symbol("dartx.perspective");
const $perspectiveOrigin = dartx.perspectiveOrigin = Symbol("dartx.perspectiveOrigin");
const $perspectiveOriginX = dartx.perspectiveOriginX = Symbol("dartx.perspectiveOriginX");
const $perspectiveOriginY = dartx.perspectiveOriginY = Symbol("dartx.perspectiveOriginY");
const $pointerEvents = dartx.pointerEvents = Symbol("dartx.pointerEvents");
const $printColorAdjust = dartx.printColorAdjust = Symbol("dartx.printColorAdjust");
const $resize = dartx.resize = Symbol("dartx.resize");
const $rtlOrdering = dartx.rtlOrdering = Symbol("dartx.rtlOrdering");
const $rubyPosition = dartx.rubyPosition = Symbol("dartx.rubyPosition");
const $scrollBehavior = dartx.scrollBehavior = Symbol("dartx.scrollBehavior");
const $shapeImageThreshold = dartx.shapeImageThreshold = Symbol("dartx.shapeImageThreshold");
const $shapeMargin = dartx.shapeMargin = Symbol("dartx.shapeMargin");
const $shapeOutside = dartx.shapeOutside = Symbol("dartx.shapeOutside");
const $speak = dartx.speak = Symbol("dartx.speak");
const $tabSize = dartx.tabSize = Symbol("dartx.tabSize");
const $tapHighlightColor = dartx.tapHighlightColor = Symbol("dartx.tapHighlightColor");
const $textAlignLast = dartx.textAlignLast = Symbol("dartx.textAlignLast");
const $textCombine = dartx.textCombine = Symbol("dartx.textCombine");
const $textDecorationColor = dartx.textDecorationColor = Symbol("dartx.textDecorationColor");
const $textDecorationLine = dartx.textDecorationLine = Symbol("dartx.textDecorationLine");
const $textDecorationStyle = dartx.textDecorationStyle = Symbol("dartx.textDecorationStyle");
const $textDecorationsInEffect = dartx.textDecorationsInEffect = Symbol("dartx.textDecorationsInEffect");
const $textEmphasis = dartx.textEmphasis = Symbol("dartx.textEmphasis");
const $textEmphasisColor = dartx.textEmphasisColor = Symbol("dartx.textEmphasisColor");
const $textEmphasisPosition = dartx.textEmphasisPosition = Symbol("dartx.textEmphasisPosition");
const $textEmphasisStyle = dartx.textEmphasisStyle = Symbol("dartx.textEmphasisStyle");
const $textFillColor = dartx.textFillColor = Symbol("dartx.textFillColor");
const $textJustify = dartx.textJustify = Symbol("dartx.textJustify");
const $textLineThroughColor = dartx.textLineThroughColor = Symbol("dartx.textLineThroughColor");
const $textLineThroughMode = dartx.textLineThroughMode = Symbol("dartx.textLineThroughMode");
const $textLineThroughStyle = dartx.textLineThroughStyle = Symbol("dartx.textLineThroughStyle");
const $textLineThroughWidth = dartx.textLineThroughWidth = Symbol("dartx.textLineThroughWidth");
const $textOrientation = dartx.textOrientation = Symbol("dartx.textOrientation");
const $textOverflow = dartx.textOverflow = Symbol("dartx.textOverflow");
const $textOverlineColor = dartx.textOverlineColor = Symbol("dartx.textOverlineColor");
const $textOverlineMode = dartx.textOverlineMode = Symbol("dartx.textOverlineMode");
const $textOverlineStyle = dartx.textOverlineStyle = Symbol("dartx.textOverlineStyle");
const $textOverlineWidth = dartx.textOverlineWidth = Symbol("dartx.textOverlineWidth");
const $textRendering = dartx.textRendering = Symbol("dartx.textRendering");
const $textSecurity = dartx.textSecurity = Symbol("dartx.textSecurity");
const $textShadow = dartx.textShadow = Symbol("dartx.textShadow");
const $textStroke = dartx.textStroke = Symbol("dartx.textStroke");
const $textStrokeColor = dartx.textStrokeColor = Symbol("dartx.textStrokeColor");
const $textStrokeWidth = dartx.textStrokeWidth = Symbol("dartx.textStrokeWidth");
const $textUnderlineColor = dartx.textUnderlineColor = Symbol("dartx.textUnderlineColor");
const $textUnderlineMode = dartx.textUnderlineMode = Symbol("dartx.textUnderlineMode");
const $textUnderlinePosition = dartx.textUnderlinePosition = Symbol("dartx.textUnderlinePosition");
const $textUnderlineStyle = dartx.textUnderlineStyle = Symbol("dartx.textUnderlineStyle");
const $textUnderlineWidth = dartx.textUnderlineWidth = Symbol("dartx.textUnderlineWidth");
const $touchAction = dartx.touchAction = Symbol("dartx.touchAction");
const $touchActionDelay = dartx.touchActionDelay = Symbol("dartx.touchActionDelay");
const $transformOrigin = dartx.transformOrigin = Symbol("dartx.transformOrigin");
const $transformOriginX = dartx.transformOriginX = Symbol("dartx.transformOriginX");
const $transformOriginY = dartx.transformOriginY = Symbol("dartx.transformOriginY");
const $transformOriginZ = dartx.transformOriginZ = Symbol("dartx.transformOriginZ");
const $transformStyle = dartx.transformStyle = Symbol("dartx.transformStyle");
const $transition = dartx.transition = Symbol("dartx.transition");
const $transitionDelay = dartx.transitionDelay = Symbol("dartx.transitionDelay");
const $transitionDuration = dartx.transitionDuration = Symbol("dartx.transitionDuration");
const $transitionProperty = dartx.transitionProperty = Symbol("dartx.transitionProperty");
const $transitionTimingFunction = dartx.transitionTimingFunction = Symbol("dartx.transitionTimingFunction");
const $unicodeRange = dartx.unicodeRange = Symbol("dartx.unicodeRange");
const $userDrag = dartx.userDrag = Symbol("dartx.userDrag");
const $userModify = dartx.userModify = Symbol("dartx.userModify");
const $userSelect = dartx.userSelect = Symbol("dartx.userSelect");
const $userZoom = dartx.userZoom = Symbol("dartx.userZoom");
const $widows = dartx.widows = Symbol("dartx.widows");
const $willChange = dartx.willChange = Symbol("dartx.willChange");
const $wordBreak = dartx.wordBreak = Symbol("dartx.wordBreak");
const $wordWrap = dartx.wordWrap = Symbol("dartx.wordWrap");
const $wrapFlow = dartx.wrapFlow = Symbol("dartx.wrapFlow");
const $wrapThrough = dartx.wrapThrough = Symbol("dartx.wrapThrough");
const $writingMode = dartx.writingMode = Symbol("dartx.writingMode");
const $zoom = dartx.zoom = Symbol("dartx.zoom");
const $ownerRule = dartx.ownerRule = Symbol("dartx.ownerRule");
const $rules = dartx.rules = Symbol("dartx.rules");
const $addRule = dartx.addRule = Symbol("dartx.addRule");
const $removeRule = dartx.removeRule = Symbol("dartx.removeRule");
const $ownerNode = dartx.ownerNode = Symbol("dartx.ownerNode");
const $componentAtIndex = dartx.componentAtIndex = Symbol("dartx.componentAtIndex");
const $toMatrix = dartx.toMatrix = Symbol("dartx.toMatrix");
const $unit = dartx.unit = Symbol("dartx.unit");
const $fragmentAtIndex = dartx.fragmentAtIndex = Symbol("dartx.fragmentAtIndex");
const $fallback = dartx.fallback = Symbol("dartx.fallback");
const $variable = dartx.variable = Symbol("dartx.variable");
const $define = dartx.define = Symbol("dartx.define");
const $whenDefined = dartx.whenDefined = Symbol("dartx.whenDefined");
const $options = dartx.options = Symbol("dartx.options");
const $dropEffect = dartx.dropEffect = Symbol("dartx.dropEffect");
const $effectAllowed = dartx.effectAllowed = Symbol("dartx.effectAllowed");
const $files = dartx.files = Symbol("dartx.files");
const $items = dartx.items = Symbol("dartx.items");
const $types = dartx.types = Symbol("dartx.types");
const $clearData = dartx.clearData = Symbol("dartx.clearData");
const $getData = dartx.getData = Symbol("dartx.getData");
const $setData = dartx.setData = Symbol("dartx.setData");
const $setDragImage = dartx.setDragImage = Symbol("dartx.setDragImage");
const $getAsEntry = dartx.getAsEntry = Symbol("dartx.getAsEntry");
const $getAsFile = dartx.getAsFile = Symbol("dartx.getAsFile");
const $addData = dartx.addData = Symbol("dartx.addData");
const $addFile = dartx.addFile = Symbol("dartx.addFile");
const $requestFileSystemSync = dartx.requestFileSystemSync = Symbol("dartx.requestFileSystemSync");
const $resolveLocalFileSystemSyncUrl = dartx.resolveLocalFileSystemSyncUrl = Symbol("dartx.resolveLocalFileSystemSyncUrl");
const $addressSpace = dartx.addressSpace = Symbol("dartx.addressSpace");
const $caches = dartx.caches = Symbol("dartx.caches");
const $crypto = dartx.crypto = Symbol("dartx.crypto");
const $indexedDB = dartx.indexedDB = Symbol("dartx.indexedDB");
const $isSecureContext = dartx.isSecureContext = Symbol("dartx.isSecureContext");
const $location = dartx.location = Symbol("dartx.location");
const $navigator = dartx.navigator = Symbol("dartx.navigator");
const $performance = dartx.performance = Symbol("dartx.performance");
const $self = dartx.self = Symbol("dartx.self");
const $importScripts = dartx.importScripts = Symbol("dartx.importScripts");
const $atob = dartx.atob = Symbol("dartx.atob");
const $btoa = dartx.btoa = Symbol("dartx.btoa");
const $queryUsageAndQuota = dartx.queryUsageAndQuota = Symbol("dartx.queryUsageAndQuota");
const $requestQuota = dartx.requestQuota = Symbol("dartx.requestQuota");
const $lineNumber = dartx.lineNumber = Symbol("dartx.lineNumber");
const $sourceFile = dartx.sourceFile = Symbol("dartx.sourceFile");
const $cornerPoints = dartx.cornerPoints = Symbol("dartx.cornerPoints");
const $rawValue = dartx.rawValue = Symbol("dartx.rawValue");
const $landmarks = dartx.landmarks = Symbol("dartx.landmarks");
const $acceleration = dartx.acceleration = Symbol("dartx.acceleration");
const $accelerationIncludingGravity = dartx.accelerationIncludingGravity = Symbol("dartx.accelerationIncludingGravity");
const $interval = dartx.interval = Symbol("dartx.interval");
const $rotationRate = dartx.rotationRate = Symbol("dartx.rotationRate");
const $absolute = dartx.absolute = Symbol("dartx.absolute");
const $alpha = dartx.alpha = Symbol("dartx.alpha");
const $beta = dartx.beta = Symbol("dartx.beta");
const $gamma = dartx.gamma = Symbol("dartx.gamma");
const $show = dartx.show = Symbol("dartx.show");
const $showModal = dartx.showModal = Symbol("dartx.showModal");
const $createDirectory = dartx.createDirectory = Symbol("dartx.createDirectory");
const $createReader = dartx.createReader = Symbol("dartx.createReader");
const $getDirectory = dartx.getDirectory = Symbol("dartx.getDirectory");
const $createFile = dartx.createFile = Symbol("dartx.createFile");
const $getFile = dartx.getFile = Symbol("dartx.getFile");
const $removeRecursively = dartx.removeRecursively = Symbol("dartx.removeRecursively");
const $filesystem = dartx.filesystem = Symbol("dartx.filesystem");
const $fullPath = dartx.fullPath = Symbol("dartx.fullPath");
const $isDirectory = dartx.isDirectory = Symbol("dartx.isDirectory");
const $isFile = dartx.isFile = Symbol("dartx.isFile");
const $copyTo = dartx.copyTo = Symbol("dartx.copyTo");
const $getMetadata = dartx.getMetadata = Symbol("dartx.getMetadata");
const $getParent = dartx.getParent = Symbol("dartx.getParent");
const $toUrl = dartx.toUrl = Symbol("dartx.toUrl");
const $readEntries = dartx.readEntries = Symbol("dartx.readEntries");
const $contentType = dartx.contentType = Symbol("dartx.contentType");
const $cookie = dartx.cookie = Symbol("dartx.cookie");
const $currentScript = dartx.currentScript = Symbol("dartx.currentScript");
const $window = dartx.window = Symbol("dartx.window");
const $documentElement = dartx.documentElement = Symbol("dartx.documentElement");
const $domain = dartx.domain = Symbol("dartx.domain");
const $fullscreenEnabled = dartx.fullscreenEnabled = Symbol("dartx.fullscreenEnabled");
const $implementation = dartx.implementation = Symbol("dartx.implementation");
const $rootElement = dartx.rootElement = Symbol("dartx.rootElement");
const $rootScroller = dartx.rootScroller = Symbol("dartx.rootScroller");
const $scrollingElement = dartx.scrollingElement = Symbol("dartx.scrollingElement");
const $suborigin = dartx.suborigin = Symbol("dartx.suborigin");
const $adoptNode = dartx.adoptNode = Symbol("dartx.adoptNode");
const $createDocumentFragment = dartx.createDocumentFragment = Symbol("dartx.createDocumentFragment");
const $createRange = dartx.createRange = Symbol("dartx.createRange");
const $execCommand = dartx.execCommand = Symbol("dartx.execCommand");
const $exitFullscreen = dartx.exitFullscreen = Symbol("dartx.exitFullscreen");
const $exitPointerLock = dartx.exitPointerLock = Symbol("dartx.exitPointerLock");
const $getElementsByName = dartx.getElementsByName = Symbol("dartx.getElementsByName");
const $getElementsByTagName = dartx.getElementsByTagName = Symbol("dartx.getElementsByTagName");
const $importNode = dartx.importNode = Symbol("dartx.importNode");
const $queryCommandEnabled = dartx.queryCommandEnabled = Symbol("dartx.queryCommandEnabled");
const $queryCommandIndeterm = dartx.queryCommandIndeterm = Symbol("dartx.queryCommandIndeterm");
const $queryCommandState = dartx.queryCommandState = Symbol("dartx.queryCommandState");
const $queryCommandSupported = dartx.queryCommandSupported = Symbol("dartx.queryCommandSupported");
const $queryCommandValue = dartx.queryCommandValue = Symbol("dartx.queryCommandValue");
const $registerElement2 = dartx.registerElement2 = Symbol("dartx.registerElement2");
const $getElementById = dartx.getElementById = Symbol("dartx.getElementById");
const $activeElement = dartx.activeElement = Symbol("dartx.activeElement");
const $fullscreenElement = dartx.fullscreenElement = Symbol("dartx.fullscreenElement");
const $pointerLockElement = dartx.pointerLockElement = Symbol("dartx.pointerLockElement");
const $elementsFromPoint = dartx.elementsFromPoint = Symbol("dartx.elementsFromPoint");
const $fonts = dartx.fonts = Symbol("dartx.fonts");
const $onPointerLockChange = dartx.onPointerLockChange = Symbol("dartx.onPointerLockChange");
const $onPointerLockError = dartx.onPointerLockError = Symbol("dartx.onPointerLockError");
const $onReadyStateChange = dartx.onReadyStateChange = Symbol("dartx.onReadyStateChange");
const $onSecurityPolicyViolation = dartx.onSecurityPolicyViolation = Symbol("dartx.onSecurityPolicyViolation");
const $onSelectionChange = dartx.onSelectionChange = Symbol("dartx.onSelectionChange");
const $supportsRegisterElement = dartx.supportsRegisterElement = Symbol("dartx.supportsRegisterElement");
const $supportsRegister = dartx.supportsRegister = Symbol("dartx.supportsRegister");
const $registerElement = dartx.registerElement = Symbol("dartx.registerElement");
const $createElementNS = dartx.createElementNS = Symbol("dartx.createElementNS");
const $visibilityState = dartx.visibilityState = Symbol("dartx.visibilityState");
const $styleSheets = dartx.styleSheets = Symbol("dartx.styleSheets");
const $elementFromPoint = dartx.elementFromPoint = Symbol("dartx.elementFromPoint");
const $getSelection = dartx.getSelection = Symbol("dartx.getSelection");
const $createDocument = dartx.createDocument = Symbol("dartx.createDocument");
const $createDocumentType = dartx.createDocumentType = Symbol("dartx.createDocumentType");
const $hasFeature = dartx.hasFeature = Symbol("dartx.hasFeature");
const $a = dartx.a = Symbol("dartx.a");
const $b = dartx.b = Symbol("dartx.b");
const $c = dartx.c = Symbol("dartx.c");
const $d = dartx.d = Symbol("dartx.d");
const $e = dartx.e = Symbol("dartx.e");
const $f = dartx.f = Symbol("dartx.f");
const $m11 = dartx.m11 = Symbol("dartx.m11");
const $m12 = dartx.m12 = Symbol("dartx.m12");
const $m13 = dartx.m13 = Symbol("dartx.m13");
const $m14 = dartx.m14 = Symbol("dartx.m14");
const $m21 = dartx.m21 = Symbol("dartx.m21");
const $m22 = dartx.m22 = Symbol("dartx.m22");
const $m23 = dartx.m23 = Symbol("dartx.m23");
const $m24 = dartx.m24 = Symbol("dartx.m24");
const $m31 = dartx.m31 = Symbol("dartx.m31");
const $m32 = dartx.m32 = Symbol("dartx.m32");
const $m33 = dartx.m33 = Symbol("dartx.m33");
const $m34 = dartx.m34 = Symbol("dartx.m34");
const $m41 = dartx.m41 = Symbol("dartx.m41");
const $m42 = dartx.m42 = Symbol("dartx.m42");
const $m43 = dartx.m43 = Symbol("dartx.m43");
const $m44 = dartx.m44 = Symbol("dartx.m44");
const $invertSelf = dartx.invertSelf = Symbol("dartx.invertSelf");
const $multiplySelf = dartx.multiplySelf = Symbol("dartx.multiplySelf");
const $preMultiplySelf = dartx.preMultiplySelf = Symbol("dartx.preMultiplySelf");
const $rotateAxisAngleSelf = dartx.rotateAxisAngleSelf = Symbol("dartx.rotateAxisAngleSelf");
const $rotateFromVectorSelf = dartx.rotateFromVectorSelf = Symbol("dartx.rotateFromVectorSelf");
const $rotateSelf = dartx.rotateSelf = Symbol("dartx.rotateSelf");
const $scale3dSelf = dartx.scale3dSelf = Symbol("dartx.scale3dSelf");
const $scaleSelf = dartx.scaleSelf = Symbol("dartx.scaleSelf");
const $setMatrixValue = dartx.setMatrixValue = Symbol("dartx.setMatrixValue");
const $skewXSelf = dartx.skewXSelf = Symbol("dartx.skewXSelf");
const $skewYSelf = dartx.skewYSelf = Symbol("dartx.skewYSelf");
const $translateSelf = dartx.translateSelf = Symbol("dartx.translateSelf");
const $isIdentity = dartx.isIdentity = Symbol("dartx.isIdentity");
const $flipX = dartx.flipX = Symbol("dartx.flipX");
const $flipY = dartx.flipY = Symbol("dartx.flipY");
const $inverse = dartx.inverse = Symbol("dartx.inverse");
const $multiply = dartx.multiply = Symbol("dartx.multiply");
const $rotateAxisAngle = dartx.rotateAxisAngle = Symbol("dartx.rotateAxisAngle");
const $rotateFromVector = dartx.rotateFromVector = Symbol("dartx.rotateFromVector");
const $scale3d = dartx.scale3d = Symbol("dartx.scale3d");
const $skewX = dartx.skewX = Symbol("dartx.skewX");
const $skewY = dartx.skewY = Symbol("dartx.skewY");
const $toFloat32Array = dartx.toFloat32Array = Symbol("dartx.toFloat32Array");
const $toFloat64Array = dartx.toFloat64Array = Symbol("dartx.toFloat64Array");
const $transformPoint = dartx.transformPoint = Symbol("dartx.transformPoint");
const $parseFromString = dartx.parseFromString = Symbol("dartx.parseFromString");
const $w = dartx.w = Symbol("dartx.w");
const $matrixTransform = dartx.matrixTransform = Symbol("dartx.matrixTransform");
const $p1 = dartx.p1 = Symbol("dartx.p1");
const $p2 = dartx.p2 = Symbol("dartx.p2");
const $p3 = dartx.p3 = Symbol("dartx.p3");
const $p4 = dartx.p4 = Symbol("dartx.p4");
const $getBounds = dartx.getBounds = Symbol("dartx.getBounds");
const $replace = dartx.replace = Symbol("dartx.replace");
const $supports = dartx.supports = Symbol("dartx.supports");
const $toggle = dartx.toggle = Symbol("dartx.toggle");
const $colno = dartx.colno = Symbol("dartx.colno");
const $filename = dartx.filename = Symbol("dartx.filename");
const $lineno = dartx.lineno = Symbol("dartx.lineno");
const $withCredentials = dartx.withCredentials = Symbol("dartx.withCredentials");
const $onOpen = dartx.onOpen = Symbol("dartx.onOpen");
const $lastEventId = dartx.lastEventId = Symbol("dartx.lastEventId");
const $ports = dartx.ports = Symbol("dartx.ports");
const $AddSearchProvider = dartx.AddSearchProvider = Symbol("dartx.AddSearchProvider");
const $IsSearchProviderInstalled = dartx.IsSearchProviderInstalled = Symbol("dartx.IsSearchProviderInstalled");
const $provider = dartx.provider = Symbol("dartx.provider");
const $clientId = dartx.clientId = Symbol("dartx.clientId");
const $isReload = dartx.isReload = Symbol("dartx.isReload");
const $preloadResponse = dartx.preloadResponse = Symbol("dartx.preloadResponse");
const $elements = dartx.elements = Symbol("dartx.elements");
const $lastModified = dartx.lastModified = Symbol("dartx.lastModified");
const $lastModifiedDate = dartx.lastModifiedDate = Symbol("dartx.lastModifiedDate");
const $relativePath = dartx.relativePath = Symbol("dartx.relativePath");
const $createWriter = dartx.createWriter = Symbol("dartx.createWriter");
const $file = dartx.file = Symbol("dartx.file");
const $readAsArrayBuffer = dartx.readAsArrayBuffer = Symbol("dartx.readAsArrayBuffer");
const $readAsDataUrl = dartx.readAsDataUrl = Symbol("dartx.readAsDataUrl");
const $readAsText = dartx.readAsText = Symbol("dartx.readAsText");
const $onLoadEnd = dartx.onLoadEnd = Symbol("dartx.onLoadEnd");
const $onLoadStart = dartx.onLoadStart = Symbol("dartx.onLoadStart");
const $root = dartx.root = Symbol("dartx.root");
const $seek = dartx.seek = Symbol("dartx.seek");
const $write = dartx.write = Symbol("dartx.write");
const $onWrite = dartx.onWrite = Symbol("dartx.onWrite");
const $onWriteEnd = dartx.onWriteEnd = Symbol("dartx.onWriteEnd");
const $onWriteStart = dartx.onWriteStart = Symbol("dartx.onWriteStart");
const $relatedTarget = dartx.relatedTarget = Symbol("dartx.relatedTarget");
const $family = dartx.family = Symbol("dartx.family");
const $featureSettings = dartx.featureSettings = Symbol("dartx.featureSettings");
const $loaded = dartx.loaded = Symbol("dartx.loaded");
const $stretch = dartx.stretch = Symbol("dartx.stretch");
const $variant = dartx.variant = Symbol("dartx.variant");
const $weight = dartx.weight = Symbol("dartx.weight");
const $check = dartx.check = Symbol("dartx.check");
const $onLoading = dartx.onLoading = Symbol("dartx.onLoading");
const $onLoadingDone = dartx.onLoadingDone = Symbol("dartx.onLoadingDone");
const $onLoadingError = dartx.onLoadingError = Symbol("dartx.onLoadingError");
const $fontfaces = dartx.fontfaces = Symbol("dartx.fontfaces");
const $appendBlob = dartx.appendBlob = Symbol("dartx.appendBlob");
const $acceptCharset = dartx.acceptCharset = Symbol("dartx.acceptCharset");
const $action = dartx.action = Symbol("dartx.action");
const $enctype = dartx.enctype = Symbol("dartx.enctype");
const $method = dartx.method = Symbol("dartx.method");
const $noValidate = dartx.noValidate = Symbol("dartx.noValidate");
const $requestAutocomplete = dartx.requestAutocomplete = Symbol("dartx.requestAutocomplete");
const $reset = dartx.reset = Symbol("dartx.reset");
const $submit = dartx.submit = Symbol("dartx.submit");
const $axes = dartx.axes = Symbol("dartx.axes");
const $buttons = dartx.buttons = Symbol("dartx.buttons");
const $connected = dartx.connected = Symbol("dartx.connected");
const $displayId = dartx.displayId = Symbol("dartx.displayId");
const $hand = dartx.hand = Symbol("dartx.hand");
const $mapping = dartx.mapping = Symbol("dartx.mapping");
const $pose = dartx.pose = Symbol("dartx.pose");
const $touched = dartx.touched = Symbol("dartx.touched");
const $gamepad = dartx.gamepad = Symbol("dartx.gamepad");
const $angularAcceleration = dartx.angularAcceleration = Symbol("dartx.angularAcceleration");
const $angularVelocity = dartx.angularVelocity = Symbol("dartx.angularVelocity");
const $hasOrientation = dartx.hasOrientation = Symbol("dartx.hasOrientation");
const $hasPosition = dartx.hasPosition = Symbol("dartx.hasPosition");
const $linearAcceleration = dartx.linearAcceleration = Symbol("dartx.linearAcceleration");
const $linearVelocity = dartx.linearVelocity = Symbol("dartx.linearVelocity");
const $getCurrentPosition = dartx.getCurrentPosition = Symbol("dartx.getCurrentPosition");
const $watchPosition = dartx.watchPosition = Symbol("dartx.watchPosition");
const $newUrl = dartx.newUrl = Symbol("dartx.newUrl");
const $oldUrl = dartx.oldUrl = Symbol("dartx.oldUrl");
const $scrollRestoration = dartx.scrollRestoration = Symbol("dartx.scrollRestoration");
const $back = dartx.back = Symbol("dartx.back");
const $forward = dartx.forward = Symbol("dartx.forward");
const $go = dartx.go = Symbol("dartx.go");
const $pushState = dartx.pushState = Symbol("dartx.pushState");
const $replaceState = dartx.replaceState = Symbol("dartx.replaceState");
const $namedItem = dartx.namedItem = Symbol("dartx.namedItem");
const $body = dartx.body = Symbol("dartx.body");
const $caretRangeFromPoint = dartx.caretRangeFromPoint = Symbol("dartx.caretRangeFromPoint");
const $preferredStylesheetSet = dartx.preferredStylesheetSet = Symbol("dartx.preferredStylesheetSet");
const $referrer = dartx.referrer = Symbol("dartx.referrer");
const $selectedStylesheetSet = dartx.selectedStylesheetSet = Symbol("dartx.selectedStylesheetSet");
const $register = dartx.register = Symbol("dartx.register");
const $onVisibilityChange = dartx.onVisibilityChange = Symbol("dartx.onVisibilityChange");
const $createElementUpgrader = dartx.createElementUpgrader = Symbol("dartx.createElementUpgrader");
const $responseHeaders = dartx.responseHeaders = Symbol("dartx.responseHeaders");
const $responseText = dartx.responseText = Symbol("dartx.responseText");
const $responseType = dartx.responseType = Symbol("dartx.responseType");
const $responseUrl = dartx.responseUrl = Symbol("dartx.responseUrl");
const $responseXml = dartx.responseXml = Symbol("dartx.responseXml");
const $statusText = dartx.statusText = Symbol("dartx.statusText");
const $timeout = dartx.timeout = Symbol("dartx.timeout");
const $upload = dartx.upload = Symbol("dartx.upload");
const $getAllResponseHeaders = dartx.getAllResponseHeaders = Symbol("dartx.getAllResponseHeaders");
const $getResponseHeader = dartx.getResponseHeader = Symbol("dartx.getResponseHeader");
const $overrideMimeType = dartx.overrideMimeType = Symbol("dartx.overrideMimeType");
const $send = dartx.send = Symbol("dartx.send");
const $setRequestHeader = dartx.setRequestHeader = Symbol("dartx.setRequestHeader");
const $onTimeout = dartx.onTimeout = Symbol("dartx.onTimeout");
const $allow = dartx.allow = Symbol("dartx.allow");
const $allowFullscreen = dartx.allowFullscreen = Symbol("dartx.allowFullscreen");
const $allowPaymentRequest = dartx.allowPaymentRequest = Symbol("dartx.allowPaymentRequest");
const $contentWindow = dartx.contentWindow = Symbol("dartx.contentWindow");
const $csp = dartx.csp = Symbol("dartx.csp");
const $sandbox = dartx.sandbox = Symbol("dartx.sandbox");
const $srcdoc = dartx.srcdoc = Symbol("dartx.srcdoc");
const $didTimeout = dartx.didTimeout = Symbol("dartx.didTimeout");
const $timeRemaining = dartx.timeRemaining = Symbol("dartx.timeRemaining");
const $transferFromImageBitmap = dartx.transferFromImageBitmap = Symbol("dartx.transferFromImageBitmap");
const $track = dartx.track = Symbol("dartx.track");
const $getPhotoCapabilities = dartx.getPhotoCapabilities = Symbol("dartx.getPhotoCapabilities");
const $getPhotoSettings = dartx.getPhotoSettings = Symbol("dartx.getPhotoSettings");
const $grabFrame = dartx.grabFrame = Symbol("dartx.grabFrame");
const $setOptions = dartx.setOptions = Symbol("dartx.setOptions");
const $takePhoto = dartx.takePhoto = Symbol("dartx.takePhoto");
const $async = dartx.async = Symbol("dartx.async");
const $complete = dartx.complete = Symbol("dartx.complete");
const $isMap = dartx.isMap = Symbol("dartx.isMap");
const $naturalHeight = dartx.naturalHeight = Symbol("dartx.naturalHeight");
const $naturalWidth = dartx.naturalWidth = Symbol("dartx.naturalWidth");
const $sizes = dartx.sizes = Symbol("dartx.sizes");
const $srcset = dartx.srcset = Symbol("dartx.srcset");
const $useMap = dartx.useMap = Symbol("dartx.useMap");
const $decode = dartx.decode = Symbol("dartx.decode");
const $firesTouchEvents = dartx.firesTouchEvents = Symbol("dartx.firesTouchEvents");
const $accept = dartx.accept = Symbol("dartx.accept");
const $autocapitalize = dartx.autocapitalize = Symbol("dartx.autocapitalize");
const $capture = dartx.capture = Symbol("dartx.capture");
const $defaultChecked = dartx.defaultChecked = Symbol("dartx.defaultChecked");
const $defaultValue = dartx.defaultValue = Symbol("dartx.defaultValue");
const $dirName = dartx.dirName = Symbol("dartx.dirName");
const $incremental = dartx.incremental = Symbol("dartx.incremental");
const $indeterminate = dartx.indeterminate = Symbol("dartx.indeterminate");
const $list = dartx.list = Symbol("dartx.list");
const $max = dartx.max = Symbol("dartx.max");
const $maxLength = dartx.maxLength = Symbol("dartx.maxLength");
const $min = dartx.min = Symbol("dartx.min");
const $minLength = dartx.minLength = Symbol("dartx.minLength");
const $multiple = dartx.multiple = Symbol("dartx.multiple");
const $pattern = dartx.pattern = Symbol("dartx.pattern");
const $selectionDirection = dartx.selectionDirection = Symbol("dartx.selectionDirection");
const $selectionEnd = dartx.selectionEnd = Symbol("dartx.selectionEnd");
const $selectionStart = dartx.selectionStart = Symbol("dartx.selectionStart");
const $step = dartx.step = Symbol("dartx.step");
const $valueAsDate = dartx.valueAsDate = Symbol("dartx.valueAsDate");
const $valueAsNumber = dartx.valueAsNumber = Symbol("dartx.valueAsNumber");
const $directory = dartx.directory = Symbol("dartx.directory");
const $setRangeText = dartx.setRangeText = Symbol("dartx.setRangeText");
const $setSelectionRange = dartx.setSelectionRange = Symbol("dartx.setSelectionRange");
const $stepDown = dartx.stepDown = Symbol("dartx.stepDown");
const $stepUp = dartx.stepUp = Symbol("dartx.stepUp");
const $registerForeignFetch = dartx.registerForeignFetch = Symbol("dartx.registerForeignFetch");
const $rootMargin = dartx.rootMargin = Symbol("dartx.rootMargin");
const $thresholds = dartx.thresholds = Symbol("dartx.thresholds");
const $disconnect = dartx.disconnect = Symbol("dartx.disconnect");
const $takeRecords = dartx.takeRecords = Symbol("dartx.takeRecords");
const $boundingClientRect = dartx.boundingClientRect = Symbol("dartx.boundingClientRect");
const $intersectionRatio = dartx.intersectionRatio = Symbol("dartx.intersectionRatio");
const $intersectionRect = dartx.intersectionRect = Symbol("dartx.intersectionRect");
const $isIntersecting = dartx.isIntersecting = Symbol("dartx.isIntersecting");
const $rootBounds = dartx.rootBounds = Symbol("dartx.rootBounds");
const $keyCode = dartx.keyCode = Symbol("dartx.keyCode");
const $charCode = dartx.charCode = Symbol("dartx.charCode");
const $which = dartx.which = Symbol("dartx.which");
const $altKey = dartx.altKey = Symbol("dartx.altKey");
const $ctrlKey = dartx.ctrlKey = Symbol("dartx.ctrlKey");
const $isComposing = dartx.isComposing = Symbol("dartx.isComposing");
const $metaKey = dartx.metaKey = Symbol("dartx.metaKey");
const $repeat = dartx.repeat = Symbol("dartx.repeat");
const $shiftKey = dartx.shiftKey = Symbol("dartx.shiftKey");
const $getModifierState = dartx.getModifierState = Symbol("dartx.getModifierState");
const $control = dartx.control = Symbol("dartx.control");
const $htmlFor = dartx.htmlFor = Symbol("dartx.htmlFor");
const $as = dartx.as = Symbol("dartx.as");
const $import = dartx.import = Symbol("dartx.import");
const $integrity = dartx.integrity = Symbol("dartx.integrity");
const $relList = dartx.relList = Symbol("dartx.relList");
const $scope = dartx.scope = Symbol("dartx.scope");
const $sheet = dartx.sheet = Symbol("dartx.sheet");
const $supportsImport = dartx.supportsImport = Symbol("dartx.supportsImport");
const $ancestorOrigins = dartx.ancestorOrigins = Symbol("dartx.ancestorOrigins");
const $trustedHref = dartx.trustedHref = Symbol("dartx.trustedHref");
const $assign = dartx.assign = Symbol("dartx.assign");
const $reload = dartx.reload = Symbol("dartx.reload");
const $areas = dartx.areas = Symbol("dartx.areas");
const $decodingInfo = dartx.decodingInfo = Symbol("dartx.decodingInfo");
const $encodingInfo = dartx.encodingInfo = Symbol("dartx.encodingInfo");
const $powerEfficient = dartx.powerEfficient = Symbol("dartx.powerEfficient");
const $smooth = dartx.smooth = Symbol("dartx.smooth");
const $supported = dartx.supported = Symbol("dartx.supported");
const $deviceId = dartx.deviceId = Symbol("dartx.deviceId");
const $groupId = dartx.groupId = Symbol("dartx.groupId");
const $enumerateDevices = dartx.enumerateDevices = Symbol("dartx.enumerateDevices");
const $getSupportedConstraints = dartx.getSupportedConstraints = Symbol("dartx.getSupportedConstraints");
const $initData = dartx.initData = Symbol("dartx.initData");
const $initDataType = dartx.initDataType = Symbol("dartx.initDataType");
const $messageType = dartx.messageType = Symbol("dartx.messageType");
const $closed = dartx.closed = Symbol("dartx.closed");
const $expiration = dartx.expiration = Symbol("dartx.expiration");
const $keyStatuses = dartx.keyStatuses = Symbol("dartx.keyStatuses");
const $sessionId = dartx.sessionId = Symbol("dartx.sessionId");
const $generateRequest = dartx.generateRequest = Symbol("dartx.generateRequest");
const $keySystem = dartx.keySystem = Symbol("dartx.keySystem");
const $createMediaKeys = dartx.createMediaKeys = Symbol("dartx.createMediaKeys");
const $getConfiguration = dartx.getConfiguration = Symbol("dartx.getConfiguration");
const $getStatusForPolicy = dartx.getStatusForPolicy = Symbol("dartx.getStatusForPolicy");
const $setServerCertificate = dartx.setServerCertificate = Symbol("dartx.setServerCertificate");
const $minHdcpVersion = dartx.minHdcpVersion = Symbol("dartx.minHdcpVersion");
const $mediaText = dartx.mediaText = Symbol("dartx.mediaText");
const $appendMedium = dartx.appendMedium = Symbol("dartx.appendMedium");
const $deleteMedium = dartx.deleteMedium = Symbol("dartx.deleteMedium");
const $album = dartx.album = Symbol("dartx.album");
const $artist = dartx.artist = Symbol("dartx.artist");
const $artwork = dartx.artwork = Symbol("dartx.artwork");
const $addListener = dartx.addListener = Symbol("dartx.addListener");
const $removeListener = dartx.removeListener = Symbol("dartx.removeListener");
const $audioBitsPerSecond = dartx.audioBitsPerSecond = Symbol("dartx.audioBitsPerSecond");
const $mimeType = dartx.mimeType = Symbol("dartx.mimeType");
const $stream = dartx.stream = Symbol("dartx.stream");
const $videoBitsPerSecond = dartx.videoBitsPerSecond = Symbol("dartx.videoBitsPerSecond");
const $requestData = dartx.requestData = Symbol("dartx.requestData");
const $resume = dartx.resume = Symbol("dartx.resume");
const $metadata = dartx.metadata = Symbol("dartx.metadata");
const $playbackState = dartx.playbackState = Symbol("dartx.playbackState");
const $setActionHandler = dartx.setActionHandler = Symbol("dartx.setActionHandler");
const $activeSourceBuffers = dartx.activeSourceBuffers = Symbol("dartx.activeSourceBuffers");
const $sourceBuffers = dartx.sourceBuffers = Symbol("dartx.sourceBuffers");
const $addSourceBuffer = dartx.addSourceBuffer = Symbol("dartx.addSourceBuffer");
const $clearLiveSeekableRange = dartx.clearLiveSeekableRange = Symbol("dartx.clearLiveSeekableRange");
const $endOfStream = dartx.endOfStream = Symbol("dartx.endOfStream");
const $removeSourceBuffer = dartx.removeSourceBuffer = Symbol("dartx.removeSourceBuffer");
const $setLiveSeekableRange = dartx.setLiveSeekableRange = Symbol("dartx.setLiveSeekableRange");
const $active = dartx.active = Symbol("dartx.active");
const $addTrack = dartx.addTrack = Symbol("dartx.addTrack");
const $getAudioTracks = dartx.getAudioTracks = Symbol("dartx.getAudioTracks");
const $getTrackById = dartx.getTrackById = Symbol("dartx.getTrackById");
const $getTracks = dartx.getTracks = Symbol("dartx.getTracks");
const $getVideoTracks = dartx.getVideoTracks = Symbol("dartx.getVideoTracks");
const $removeTrack = dartx.removeTrack = Symbol("dartx.removeTrack");
const $onAddTrack = dartx.onAddTrack = Symbol("dartx.onAddTrack");
const $onRemoveTrack = dartx.onRemoveTrack = Symbol("dartx.onRemoveTrack");
const $jsHeapSizeLimit = dartx.jsHeapSizeLimit = Symbol("dartx.jsHeapSizeLimit");
const $totalJSHeapSize = dartx.totalJSHeapSize = Symbol("dartx.totalJSHeapSize");
const $usedJSHeapSize = dartx.usedJSHeapSize = Symbol("dartx.usedJSHeapSize");
const $port1 = dartx.port1 = Symbol("dartx.port1");
const $port2 = dartx.port2 = Symbol("dartx.port2");
const $httpEquiv = dartx.httpEquiv = Symbol("dartx.httpEquiv");
const $modificationTime = dartx.modificationTime = Symbol("dartx.modificationTime");
const $high = dartx.high = Symbol("dartx.high");
const $low = dartx.low = Symbol("dartx.low");
const $optimum = dartx.optimum = Symbol("dartx.optimum");
const $inputs = dartx.inputs = Symbol("dartx.inputs");
const $outputs = dartx.outputs = Symbol("dartx.outputs");
const $sysexEnabled = dartx.sysexEnabled = Symbol("dartx.sysexEnabled");
const $onMidiMessage = dartx.onMidiMessage = Symbol("dartx.onMidiMessage");
const $connection = dartx.connection = Symbol("dartx.connection");
const $manufacturer = dartx.manufacturer = Symbol("dartx.manufacturer");
const $description = dartx.description = Symbol("dartx.description");
const $enabledPlugin = dartx.enabledPlugin = Symbol("dartx.enabledPlugin");
const $suffixes = dartx.suffixes = Symbol("dartx.suffixes");
const $cite = dartx.cite = Symbol("dartx.cite");
const $dateTime = dartx.dateTime = Symbol("dartx.dateTime");
const $button = dartx.button = Symbol("dartx.button");
const $fromElement = dartx.fromElement = Symbol("dartx.fromElement");
const $region = dartx.region = Symbol("dartx.region");
const $toElement = dartx.toElement = Symbol("dartx.toElement");
const $movement = dartx.movement = Symbol("dartx.movement");
const $screen = dartx.screen = Symbol("dartx.screen");
const $layer = dartx.layer = Symbol("dartx.layer");
const $dataTransfer = dartx.dataTransfer = Symbol("dartx.dataTransfer");
const $attrChange = dartx.attrChange = Symbol("dartx.attrChange");
const $attrName = dartx.attrName = Symbol("dartx.attrName");
const $newValue = dartx.newValue = Symbol("dartx.newValue");
const $prevValue = dartx.prevValue = Symbol("dartx.prevValue");
const $relatedNode = dartx.relatedNode = Symbol("dartx.relatedNode");
const $initMutationEvent = dartx.initMutationEvent = Symbol("dartx.initMutationEvent");
const $addedNodes = dartx.addedNodes = Symbol("dartx.addedNodes");
const $attributeName = dartx.attributeName = Symbol("dartx.attributeName");
const $attributeNamespace = dartx.attributeNamespace = Symbol("dartx.attributeNamespace");
const $nextSibling = dartx.nextSibling = Symbol("dartx.nextSibling");
const $oldValue = dartx.oldValue = Symbol("dartx.oldValue");
const $previousSibling = dartx.previousSibling = Symbol("dartx.previousSibling");
const $removedNodes = dartx.removedNodes = Symbol("dartx.removedNodes");
const $disable = dartx.disable = Symbol("dartx.disable");
const $enable = dartx.enable = Symbol("dartx.enable");
const $getState = dartx.getState = Symbol("dartx.getState");
const $getGamepads = dartx.getGamepads = Symbol("dartx.getGamepads");
const $language = dartx.language = Symbol("dartx.language");
const $getUserMedia = dartx.getUserMedia = Symbol("dartx.getUserMedia");
const $budget = dartx.budget = Symbol("dartx.budget");
const $clipboard = dartx.clipboard = Symbol("dartx.clipboard");
const $credentials = dartx.credentials = Symbol("dartx.credentials");
const $deviceMemory = dartx.deviceMemory = Symbol("dartx.deviceMemory");
const $doNotTrack = dartx.doNotTrack = Symbol("dartx.doNotTrack");
const $geolocation = dartx.geolocation = Symbol("dartx.geolocation");
const $maxTouchPoints = dartx.maxTouchPoints = Symbol("dartx.maxTouchPoints");
const $mediaCapabilities = dartx.mediaCapabilities = Symbol("dartx.mediaCapabilities");
const $mediaDevices = dartx.mediaDevices = Symbol("dartx.mediaDevices");
const $mediaSession = dartx.mediaSession = Symbol("dartx.mediaSession");
const $mimeTypes = dartx.mimeTypes = Symbol("dartx.mimeTypes");
const $nfc = dartx.nfc = Symbol("dartx.nfc");
const $permissions = dartx.permissions = Symbol("dartx.permissions");
const $presentation = dartx.presentation = Symbol("dartx.presentation");
const $productSub = dartx.productSub = Symbol("dartx.productSub");
const $serviceWorker = dartx.serviceWorker = Symbol("dartx.serviceWorker");
const $storage = dartx.storage = Symbol("dartx.storage");
const $vendor = dartx.vendor = Symbol("dartx.vendor");
const $vendorSub = dartx.vendorSub = Symbol("dartx.vendorSub");
const $vr = dartx.vr = Symbol("dartx.vr");
const $persistentStorage = dartx.persistentStorage = Symbol("dartx.persistentStorage");
const $temporaryStorage = dartx.temporaryStorage = Symbol("dartx.temporaryStorage");
const $cancelKeyboardLock = dartx.cancelKeyboardLock = Symbol("dartx.cancelKeyboardLock");
const $getBattery = dartx.getBattery = Symbol("dartx.getBattery");
const $getInstalledRelatedApps = dartx.getInstalledRelatedApps = Symbol("dartx.getInstalledRelatedApps");
const $getVRDisplays = dartx.getVRDisplays = Symbol("dartx.getVRDisplays");
const $registerProtocolHandler = dartx.registerProtocolHandler = Symbol("dartx.registerProtocolHandler");
const $requestKeyboardLock = dartx.requestKeyboardLock = Symbol("dartx.requestKeyboardLock");
const $requestMidiAccess = dartx.requestMidiAccess = Symbol("dartx.requestMidiAccess");
const $requestMediaKeySystemAccess = dartx.requestMediaKeySystemAccess = Symbol("dartx.requestMediaKeySystemAccess");
const $sendBeacon = dartx.sendBeacon = Symbol("dartx.sendBeacon");
const $share = dartx.share = Symbol("dartx.share");
const $webdriver = dartx.webdriver = Symbol("dartx.webdriver");
const $cookieEnabled = dartx.cookieEnabled = Symbol("dartx.cookieEnabled");
const $appCodeName = dartx.appCodeName = Symbol("dartx.appCodeName");
const $appName = dartx.appName = Symbol("dartx.appName");
const $appVersion = dartx.appVersion = Symbol("dartx.appVersion");
const $dartEnabled = dartx.dartEnabled = Symbol("dartx.dartEnabled");
const $platform = dartx.platform = Symbol("dartx.platform");
const $product = dartx.product = Symbol("dartx.product");
const $userAgent = dartx.userAgent = Symbol("dartx.userAgent");
const $languages = dartx.languages = Symbol("dartx.languages");
const $onLine = dartx.onLine = Symbol("dartx.onLine");
const $hardwareConcurrency = dartx.hardwareConcurrency = Symbol("dartx.hardwareConcurrency");
const $constraintName = dartx.constraintName = Symbol("dartx.constraintName");
const $downlink = dartx.downlink = Symbol("dartx.downlink");
const $downlinkMax = dartx.downlinkMax = Symbol("dartx.downlinkMax");
const $effectiveType = dartx.effectiveType = Symbol("dartx.effectiveType");
const $rtt = dartx.rtt = Symbol("dartx.rtt");
const $pointerBeforeReferenceNode = dartx.pointerBeforeReferenceNode = Symbol("dartx.pointerBeforeReferenceNode");
const $referenceNode = dartx.referenceNode = Symbol("dartx.referenceNode");
const $whatToShow = dartx.whatToShow = Symbol("dartx.whatToShow");
const $detach = dartx.detach = Symbol("dartx.detach");
const $actions = dartx.actions = Symbol("dartx.actions");
const $badge = dartx.badge = Symbol("dartx.badge");
const $icon = dartx.icon = Symbol("dartx.icon");
const $image = dartx.image = Symbol("dartx.image");
const $renotify = dartx.renotify = Symbol("dartx.renotify");
const $requireInteraction = dartx.requireInteraction = Symbol("dartx.requireInteraction");
const $silent = dartx.silent = Symbol("dartx.silent");
const $tag = dartx.tag = Symbol("dartx.tag");
const $vibrate = dartx.vibrate = Symbol("dartx.vibrate");
const $onShow = dartx.onShow = Symbol("dartx.onShow");
const $notification = dartx.notification = Symbol("dartx.notification");
const $reply = dartx.reply = Symbol("dartx.reply");
const $convertToBlob = dartx.convertToBlob = Symbol("dartx.convertToBlob");
const $transferToImageBitmap = dartx.transferToImageBitmap = Symbol("dartx.transferToImageBitmap");
const $commit = dartx.commit = Symbol("dartx.commit");
const $defaultSelected = dartx.defaultSelected = Symbol("dartx.defaultSelected");
const $constraint = dartx.constraint = Symbol("dartx.constraint");
const $persisted = dartx.persisted = Symbol("dartx.persisted");
const $devicePixelRatio = dartx.devicePixelRatio = Symbol("dartx.devicePixelRatio");
const $registerPaint = dartx.registerPaint = Symbol("dartx.registerPaint");
const $additionalData = dartx.additionalData = Symbol("dartx.additionalData");
const $idName = dartx.idName = Symbol("dartx.idName");
const $passwordName = dartx.passwordName = Symbol("dartx.passwordName");
const $addPath = dartx.addPath = Symbol("dartx.addPath");
const $addressLine = dartx.addressLine = Symbol("dartx.addressLine");
const $city = dartx.city = Symbol("dartx.city");
const $country = dartx.country = Symbol("dartx.country");
const $dependentLocality = dartx.dependentLocality = Symbol("dartx.dependentLocality");
const $languageCode = dartx.languageCode = Symbol("dartx.languageCode");
const $organization = dartx.organization = Symbol("dartx.organization");
const $phone = dartx.phone = Symbol("dartx.phone");
const $postalCode = dartx.postalCode = Symbol("dartx.postalCode");
const $recipient = dartx.recipient = Symbol("dartx.recipient");
const $sortingCode = dartx.sortingCode = Symbol("dartx.sortingCode");
const $instruments = dartx.instruments = Symbol("dartx.instruments");
const $userHint = dartx.userHint = Symbol("dartx.userHint");
const $shippingAddress = dartx.shippingAddress = Symbol("dartx.shippingAddress");
const $shippingOption = dartx.shippingOption = Symbol("dartx.shippingOption");
const $shippingType = dartx.shippingType = Symbol("dartx.shippingType");
const $canMakePayment = dartx.canMakePayment = Symbol("dartx.canMakePayment");
const $instrumentKey = dartx.instrumentKey = Symbol("dartx.instrumentKey");
const $paymentRequestId = dartx.paymentRequestId = Symbol("dartx.paymentRequestId");
const $total = dartx.total = Symbol("dartx.total");
const $updateWith = dartx.updateWith = Symbol("dartx.updateWith");
const $methodName = dartx.methodName = Symbol("dartx.methodName");
const $payerEmail = dartx.payerEmail = Symbol("dartx.payerEmail");
const $payerName = dartx.payerName = Symbol("dartx.payerName");
const $payerPhone = dartx.payerPhone = Symbol("dartx.payerPhone");
const $requestId = dartx.requestId = Symbol("dartx.requestId");
const $memory = dartx.memory = Symbol("dartx.memory");
const $navigation = dartx.navigation = Symbol("dartx.navigation");
const $timeOrigin = dartx.timeOrigin = Symbol("dartx.timeOrigin");
const $clearMarks = dartx.clearMarks = Symbol("dartx.clearMarks");
const $clearMeasures = dartx.clearMeasures = Symbol("dartx.clearMeasures");
const $clearResourceTimings = dartx.clearResourceTimings = Symbol("dartx.clearResourceTimings");
const $getEntries = dartx.getEntries = Symbol("dartx.getEntries");
const $getEntriesByName = dartx.getEntriesByName = Symbol("dartx.getEntriesByName");
const $getEntriesByType = dartx.getEntriesByType = Symbol("dartx.getEntriesByType");
const $mark = dartx.mark = Symbol("dartx.mark");
const $measure = dartx.measure = Symbol("dartx.measure");
const $now = dartx.now = Symbol("dartx.now");
const $setResourceTimingBufferSize = dartx.setResourceTimingBufferSize = Symbol("dartx.setResourceTimingBufferSize");
const $entryType = dartx.entryType = Symbol("dartx.entryType");
const $attribution = dartx.attribution = Symbol("dartx.attribution");
const $redirectCount = dartx.redirectCount = Symbol("dartx.redirectCount");
const $domComplete = dartx.domComplete = Symbol("dartx.domComplete");
const $domContentLoadedEventEnd = dartx.domContentLoadedEventEnd = Symbol("dartx.domContentLoadedEventEnd");
const $domContentLoadedEventStart = dartx.domContentLoadedEventStart = Symbol("dartx.domContentLoadedEventStart");
const $domInteractive = dartx.domInteractive = Symbol("dartx.domInteractive");
const $loadEventEnd = dartx.loadEventEnd = Symbol("dartx.loadEventEnd");
const $loadEventStart = dartx.loadEventStart = Symbol("dartx.loadEventStart");
const $unloadEventEnd = dartx.unloadEventEnd = Symbol("dartx.unloadEventEnd");
const $unloadEventStart = dartx.unloadEventStart = Symbol("dartx.unloadEventStart");
const $connectEnd = dartx.connectEnd = Symbol("dartx.connectEnd");
const $connectStart = dartx.connectStart = Symbol("dartx.connectStart");
const $decodedBodySize = dartx.decodedBodySize = Symbol("dartx.decodedBodySize");
const $domainLookupEnd = dartx.domainLookupEnd = Symbol("dartx.domainLookupEnd");
const $domainLookupStart = dartx.domainLookupStart = Symbol("dartx.domainLookupStart");
const $encodedBodySize = dartx.encodedBodySize = Symbol("dartx.encodedBodySize");
const $fetchStart = dartx.fetchStart = Symbol("dartx.fetchStart");
const $initiatorType = dartx.initiatorType = Symbol("dartx.initiatorType");
const $nextHopProtocol = dartx.nextHopProtocol = Symbol("dartx.nextHopProtocol");
const $redirectEnd = dartx.redirectEnd = Symbol("dartx.redirectEnd");
const $redirectStart = dartx.redirectStart = Symbol("dartx.redirectStart");
const $requestStart = dartx.requestStart = Symbol("dartx.requestStart");
const $responseEnd = dartx.responseEnd = Symbol("dartx.responseEnd");
const $responseStart = dartx.responseStart = Symbol("dartx.responseStart");
const $secureConnectionStart = dartx.secureConnectionStart = Symbol("dartx.secureConnectionStart");
const $serverTiming = dartx.serverTiming = Symbol("dartx.serverTiming");
const $transferSize = dartx.transferSize = Symbol("dartx.transferSize");
const $workerStart = dartx.workerStart = Symbol("dartx.workerStart");
const $domLoading = dartx.domLoading = Symbol("dartx.domLoading");
const $navigationStart = dartx.navigationStart = Symbol("dartx.navigationStart");
const $query = dartx.query = Symbol("dartx.query");
const $requestAll = dartx.requestAll = Symbol("dartx.requestAll");
const $revoke = dartx.revoke = Symbol("dartx.revoke");
const $fillLightMode = dartx.fillLightMode = Symbol("dartx.fillLightMode");
const $imageHeight = dartx.imageHeight = Symbol("dartx.imageHeight");
const $imageWidth = dartx.imageWidth = Symbol("dartx.imageWidth");
const $redEyeReduction = dartx.redEyeReduction = Symbol("dartx.redEyeReduction");
const $refresh = dartx.refresh = Symbol("dartx.refresh");
const $isPrimary = dartx.isPrimary = Symbol("dartx.isPrimary");
const $pointerId = dartx.pointerId = Symbol("dartx.pointerId");
const $pointerType = dartx.pointerType = Symbol("dartx.pointerType");
const $pressure = dartx.pressure = Symbol("dartx.pressure");
const $tangentialPressure = dartx.tangentialPressure = Symbol("dartx.tangentialPressure");
const $tiltX = dartx.tiltX = Symbol("dartx.tiltX");
const $tiltY = dartx.tiltY = Symbol("dartx.tiltY");
const $twist = dartx.twist = Symbol("dartx.twist");
const $getCoalescedEvents = dartx.getCoalescedEvents = Symbol("dartx.getCoalescedEvents");
const $defaultRequest = dartx.defaultRequest = Symbol("dartx.defaultRequest");
const $receiver = dartx.receiver = Symbol("dartx.receiver");
const $binaryType = dartx.binaryType = Symbol("dartx.binaryType");
const $terminate = dartx.terminate = Symbol("dartx.terminate");
const $connections = dartx.connections = Symbol("dartx.connections");
const $connectionList = dartx.connectionList = Symbol("dartx.connectionList");
const $getAvailability = dartx.getAvailability = Symbol("dartx.getAvailability");
const $reconnect = dartx.reconnect = Symbol("dartx.reconnect");
const $lengthComputable = dartx.lengthComputable = Symbol("dartx.lengthComputable");
const $promise = dartx.promise = Symbol("dartx.promise");
const $rawId = dartx.rawId = Symbol("dartx.rawId");
const $getSubscription = dartx.getSubscription = Symbol("dartx.getSubscription");
const $permissionState = dartx.permissionState = Symbol("dartx.permissionState");
const $subscribe = dartx.subscribe = Symbol("dartx.subscribe");
const $endpoint = dartx.endpoint = Symbol("dartx.endpoint");
const $expirationTime = dartx.expirationTime = Symbol("dartx.expirationTime");
const $unsubscribe = dartx.unsubscribe = Symbol("dartx.unsubscribe");
const $applicationServerKey = dartx.applicationServerKey = Symbol("dartx.applicationServerKey");
const $userVisibleOnly = dartx.userVisibleOnly = Symbol("dartx.userVisibleOnly");
const $collapsed = dartx.collapsed = Symbol("dartx.collapsed");
const $commonAncestorContainer = dartx.commonAncestorContainer = Symbol("dartx.commonAncestorContainer");
const $endContainer = dartx.endContainer = Symbol("dartx.endContainer");
const $endOffset = dartx.endOffset = Symbol("dartx.endOffset");
const $startContainer = dartx.startContainer = Symbol("dartx.startContainer");
const $startOffset = dartx.startOffset = Symbol("dartx.startOffset");
const $cloneContents = dartx.cloneContents = Symbol("dartx.cloneContents");
const $cloneRange = dartx.cloneRange = Symbol("dartx.cloneRange");
const $collapse = dartx.collapse = Symbol("dartx.collapse");
const $compareBoundaryPoints = dartx.compareBoundaryPoints = Symbol("dartx.compareBoundaryPoints");
const $comparePoint = dartx.comparePoint = Symbol("dartx.comparePoint");
const $createContextualFragment = dartx.createContextualFragment = Symbol("dartx.createContextualFragment");
const $deleteContents = dartx.deleteContents = Symbol("dartx.deleteContents");
const $extractContents = dartx.extractContents = Symbol("dartx.extractContents");
const $insertNode = dartx.insertNode = Symbol("dartx.insertNode");
const $isPointInRange = dartx.isPointInRange = Symbol("dartx.isPointInRange");
const $selectNode = dartx.selectNode = Symbol("dartx.selectNode");
const $selectNodeContents = dartx.selectNodeContents = Symbol("dartx.selectNodeContents");
const $setEnd = dartx.setEnd = Symbol("dartx.setEnd");
const $setEndAfter = dartx.setEndAfter = Symbol("dartx.setEndAfter");
const $setEndBefore = dartx.setEndBefore = Symbol("dartx.setEndBefore");
const $setStart = dartx.setStart = Symbol("dartx.setStart");
const $setStartAfter = dartx.setStartAfter = Symbol("dartx.setStartAfter");
const $setStartBefore = dartx.setStartBefore = Symbol("dartx.setStartBefore");
const $surroundContents = dartx.surroundContents = Symbol("dartx.surroundContents");
const $cancelWatchAvailability = dartx.cancelWatchAvailability = Symbol("dartx.cancelWatchAvailability");
const $watchAvailability = dartx.watchAvailability = Symbol("dartx.watchAvailability");
const $contentRect = dartx.contentRect = Symbol("dartx.contentRect");
const $expires = dartx.expires = Symbol("dartx.expires");
const $getFingerprints = dartx.getFingerprints = Symbol("dartx.getFingerprints");
const $bufferedAmount = dartx.bufferedAmount = Symbol("dartx.bufferedAmount");
const $bufferedAmountLowThreshold = dartx.bufferedAmountLowThreshold = Symbol("dartx.bufferedAmountLowThreshold");
const $maxRetransmitTime = dartx.maxRetransmitTime = Symbol("dartx.maxRetransmitTime");
const $maxRetransmits = dartx.maxRetransmits = Symbol("dartx.maxRetransmits");
const $negotiated = dartx.negotiated = Symbol("dartx.negotiated");
const $ordered = dartx.ordered = Symbol("dartx.ordered");
const $reliable = dartx.reliable = Symbol("dartx.reliable");
const $sendBlob = dartx.sendBlob = Symbol("dartx.sendBlob");
const $sendByteBuffer = dartx.sendByteBuffer = Symbol("dartx.sendByteBuffer");
const $sendString = dartx.sendString = Symbol("dartx.sendString");
const $sendTypedData = dartx.sendTypedData = Symbol("dartx.sendTypedData");
const $channel = dartx.channel = Symbol("dartx.channel");
const $canInsertDtmf = dartx.canInsertDtmf = Symbol("dartx.canInsertDtmf");
const $interToneGap = dartx.interToneGap = Symbol("dartx.interToneGap");
const $toneBuffer = dartx.toneBuffer = Symbol("dartx.toneBuffer");
const $insertDtmf = dartx.insertDtmf = Symbol("dartx.insertDtmf");
const $onToneChange = dartx.onToneChange = Symbol("dartx.onToneChange");
const $tone = dartx.tone = Symbol("dartx.tone");
const $candidate = dartx.candidate = Symbol("dartx.candidate");
const $sdpMLineIndex = dartx.sdpMLineIndex = Symbol("dartx.sdpMLineIndex");
const $sdpMid = dartx.sdpMid = Symbol("dartx.sdpMid");
const $names = dartx.names = Symbol("dartx.names");
const $stat = dartx.stat = Symbol("dartx.stat");
const $getLegacyStats = dartx.getLegacyStats = Symbol("dartx.getLegacyStats");
const $iceConnectionState = dartx.iceConnectionState = Symbol("dartx.iceConnectionState");
const $iceGatheringState = dartx.iceGatheringState = Symbol("dartx.iceGatheringState");
const $localDescription = dartx.localDescription = Symbol("dartx.localDescription");
const $remoteDescription = dartx.remoteDescription = Symbol("dartx.remoteDescription");
const $signalingState = dartx.signalingState = Symbol("dartx.signalingState");
const $addIceCandidate = dartx.addIceCandidate = Symbol("dartx.addIceCandidate");
const $addStream = dartx.addStream = Symbol("dartx.addStream");
const $createAnswer = dartx.createAnswer = Symbol("dartx.createAnswer");
const $createDtmfSender = dartx.createDtmfSender = Symbol("dartx.createDtmfSender");
const $createDataChannel = dartx.createDataChannel = Symbol("dartx.createDataChannel");
const $createOffer = dartx.createOffer = Symbol("dartx.createOffer");
const $getLocalStreams = dartx.getLocalStreams = Symbol("dartx.getLocalStreams");
const $getReceivers = dartx.getReceivers = Symbol("dartx.getReceivers");
const $getRemoteStreams = dartx.getRemoteStreams = Symbol("dartx.getRemoteStreams");
const $getSenders = dartx.getSenders = Symbol("dartx.getSenders");
const $getStats = dartx.getStats = Symbol("dartx.getStats");
const $removeStream = dartx.removeStream = Symbol("dartx.removeStream");
const $setConfiguration = dartx.setConfiguration = Symbol("dartx.setConfiguration");
const $setLocalDescription = dartx.setLocalDescription = Symbol("dartx.setLocalDescription");
const $setRemoteDescription = dartx.setRemoteDescription = Symbol("dartx.setRemoteDescription");
const $onAddStream = dartx.onAddStream = Symbol("dartx.onAddStream");
const $onDataChannel = dartx.onDataChannel = Symbol("dartx.onDataChannel");
const $onIceCandidate = dartx.onIceCandidate = Symbol("dartx.onIceCandidate");
const $onIceConnectionStateChange = dartx.onIceConnectionStateChange = Symbol("dartx.onIceConnectionStateChange");
const $onNegotiationNeeded = dartx.onNegotiationNeeded = Symbol("dartx.onNegotiationNeeded");
const $onRemoveStream = dartx.onRemoveStream = Symbol("dartx.onRemoveStream");
const $onSignalingStateChange = dartx.onSignalingStateChange = Symbol("dartx.onSignalingStateChange");
const $getContributingSources = dartx.getContributingSources = Symbol("dartx.getContributingSources");
const $sdp = dartx.sdp = Symbol("dartx.sdp");
const $streams = dartx.streams = Symbol("dartx.streams");
const $available = dartx.available = Symbol("dartx.available");
const $colorDepth = dartx.colorDepth = Symbol("dartx.colorDepth");
const $keepAwake = dartx.keepAwake = Symbol("dartx.keepAwake");
const $pixelDepth = dartx.pixelDepth = Symbol("dartx.pixelDepth");
const $lock = dartx.lock = Symbol("dartx.lock");
const $unlock = dartx.unlock = Symbol("dartx.unlock");
const $charset = dartx.charset = Symbol("dartx.charset");
const $defer = dartx.defer = Symbol("dartx.defer");
const $noModule = dartx.noModule = Symbol("dartx.noModule");
const $deltaGranularity = dartx.deltaGranularity = Symbol("dartx.deltaGranularity");
const $deltaX = dartx.deltaX = Symbol("dartx.deltaX");
const $deltaY = dartx.deltaY = Symbol("dartx.deltaY");
const $fromUserInput = dartx.fromUserInput = Symbol("dartx.fromUserInput");
const $inInertialPhase = dartx.inInertialPhase = Symbol("dartx.inInertialPhase");
const $isBeginning = dartx.isBeginning = Symbol("dartx.isBeginning");
const $isDirectManipulation = dartx.isDirectManipulation = Symbol("dartx.isDirectManipulation");
const $isEnding = dartx.isEnding = Symbol("dartx.isEnding");
const $positionX = dartx.positionX = Symbol("dartx.positionX");
const $positionY = dartx.positionY = Symbol("dartx.positionY");
const $velocityX = dartx.velocityX = Symbol("dartx.velocityX");
const $velocityY = dartx.velocityY = Symbol("dartx.velocityY");
const $consumeDelta = dartx.consumeDelta = Symbol("dartx.consumeDelta");
const $distributeToScrollChainDescendant = dartx.distributeToScrollChainDescendant = Symbol("dartx.distributeToScrollChainDescendant");
const $scrollSource = dartx.scrollSource = Symbol("dartx.scrollSource");
const $timeRange = dartx.timeRange = Symbol("dartx.timeRange");
const $blockedUri = dartx.blockedUri = Symbol("dartx.blockedUri");
const $columnNumber = dartx.columnNumber = Symbol("dartx.columnNumber");
const $disposition = dartx.disposition = Symbol("dartx.disposition");
const $documentUri = dartx.documentUri = Symbol("dartx.documentUri");
const $effectiveDirective = dartx.effectiveDirective = Symbol("dartx.effectiveDirective");
const $originalPolicy = dartx.originalPolicy = Symbol("dartx.originalPolicy");
const $sample = dartx.sample = Symbol("dartx.sample");
const $statusCode = dartx.statusCode = Symbol("dartx.statusCode");
const $violatedDirective = dartx.violatedDirective = Symbol("dartx.violatedDirective");
const $selectedIndex = dartx.selectedIndex = Symbol("dartx.selectedIndex");
const $selectedOptions = dartx.selectedOptions = Symbol("dartx.selectedOptions");
const $anchorNode = dartx.anchorNode = Symbol("dartx.anchorNode");
const $anchorOffset = dartx.anchorOffset = Symbol("dartx.anchorOffset");
const $baseNode = dartx.baseNode = Symbol("dartx.baseNode");
const $baseOffset = dartx.baseOffset = Symbol("dartx.baseOffset");
const $extentNode = dartx.extentNode = Symbol("dartx.extentNode");
const $extentOffset = dartx.extentOffset = Symbol("dartx.extentOffset");
const $focusNode = dartx.focusNode = Symbol("dartx.focusNode");
const $focusOffset = dartx.focusOffset = Symbol("dartx.focusOffset");
const $isCollapsed = dartx.isCollapsed = Symbol("dartx.isCollapsed");
const $rangeCount = dartx.rangeCount = Symbol("dartx.rangeCount");
const $addRange = dartx.addRange = Symbol("dartx.addRange");
const $collapseToEnd = dartx.collapseToEnd = Symbol("dartx.collapseToEnd");
const $collapseToStart = dartx.collapseToStart = Symbol("dartx.collapseToStart");
const $containsNode = dartx.containsNode = Symbol("dartx.containsNode");
const $deleteFromDocument = dartx.deleteFromDocument = Symbol("dartx.deleteFromDocument");
const $empty = dartx.empty = Symbol("dartx.empty");
const $extend = dartx.extend = Symbol("dartx.extend");
const $getRangeAt = dartx.getRangeAt = Symbol("dartx.getRangeAt");
const $modify = dartx.modify = Symbol("dartx.modify");
const $removeAllRanges = dartx.removeAllRanges = Symbol("dartx.removeAllRanges");
const $selectAllChildren = dartx.selectAllChildren = Symbol("dartx.selectAllChildren");
const $setBaseAndExtent = dartx.setBaseAndExtent = Symbol("dartx.setBaseAndExtent");
const $setPosition = dartx.setPosition = Symbol("dartx.setPosition");
const $scriptUrl = dartx.scriptUrl = Symbol("dartx.scriptUrl");
const $controller = dartx.controller = Symbol("dartx.controller");
const $getRegistration = dartx.getRegistration = Symbol("dartx.getRegistration");
const $getRegistrations = dartx.getRegistrations = Symbol("dartx.getRegistrations");
const $clients = dartx.clients = Symbol("dartx.clients");
const $registration = dartx.registration = Symbol("dartx.registration");
const $skipWaiting = dartx.skipWaiting = Symbol("dartx.skipWaiting");
const $onActivate = dartx.onActivate = Symbol("dartx.onActivate");
const $onFetch = dartx.onFetch = Symbol("dartx.onFetch");
const $onForeignfetch = dartx.onForeignfetch = Symbol("dartx.onForeignfetch");
const $onInstall = dartx.onInstall = Symbol("dartx.onInstall");
const $backgroundFetch = dartx.backgroundFetch = Symbol("dartx.backgroundFetch");
const $installing = dartx.installing = Symbol("dartx.installing");
const $navigationPreload = dartx.navigationPreload = Symbol("dartx.navigationPreload");
const $paymentManager = dartx.paymentManager = Symbol("dartx.paymentManager");
const $pushManager = dartx.pushManager = Symbol("dartx.pushManager");
const $sync = dartx.sync = Symbol("dartx.sync");
const $waiting = dartx.waiting = Symbol("dartx.waiting");
const $getNotifications = dartx.getNotifications = Symbol("dartx.getNotifications");
const $showNotification = dartx.showNotification = Symbol("dartx.showNotification");
const $unregister = dartx.unregister = Symbol("dartx.unregister");
const $delegatesFocus = dartx.delegatesFocus = Symbol("dartx.delegatesFocus");
const $olderShadowRoot = dartx.olderShadowRoot = Symbol("dartx.olderShadowRoot");
const $resetStyleInheritance = dartx.resetStyleInheritance = Symbol("dartx.resetStyleInheritance");
const $applyAuthorStyles = dartx.applyAuthorStyles = Symbol("dartx.applyAuthorStyles");
const $byteLength = dartx.byteLength = Symbol("dartx.byteLength");
const $onConnect = dartx.onConnect = Symbol("dartx.onConnect");
const $assignedNodes = dartx.assignedNodes = Symbol("dartx.assignedNodes");
const $appendWindowEnd = dartx.appendWindowEnd = Symbol("dartx.appendWindowEnd");
const $appendWindowStart = dartx.appendWindowStart = Symbol("dartx.appendWindowStart");
const $timestampOffset = dartx.timestampOffset = Symbol("dartx.timestampOffset");
const $trackDefaults = dartx.trackDefaults = Symbol("dartx.trackDefaults");
const $updating = dartx.updating = Symbol("dartx.updating");
const $appendBuffer = dartx.appendBuffer = Symbol("dartx.appendBuffer");
const $appendTypedData = dartx.appendTypedData = Symbol("dartx.appendTypedData");
const $addFromString = dartx.addFromString = Symbol("dartx.addFromString");
const $addFromUri = dartx.addFromUri = Symbol("dartx.addFromUri");
const $audioTrack = dartx.audioTrack = Symbol("dartx.audioTrack");
const $continuous = dartx.continuous = Symbol("dartx.continuous");
const $grammars = dartx.grammars = Symbol("dartx.grammars");
const $interimResults = dartx.interimResults = Symbol("dartx.interimResults");
const $maxAlternatives = dartx.maxAlternatives = Symbol("dartx.maxAlternatives");
const $onAudioEnd = dartx.onAudioEnd = Symbol("dartx.onAudioEnd");
const $onAudioStart = dartx.onAudioStart = Symbol("dartx.onAudioStart");
const $onEnd = dartx.onEnd = Symbol("dartx.onEnd");
const $onNoMatch = dartx.onNoMatch = Symbol("dartx.onNoMatch");
const $onResult = dartx.onResult = Symbol("dartx.onResult");
const $onSoundEnd = dartx.onSoundEnd = Symbol("dartx.onSoundEnd");
const $onSoundStart = dartx.onSoundStart = Symbol("dartx.onSoundStart");
const $onSpeechEnd = dartx.onSpeechEnd = Symbol("dartx.onSpeechEnd");
const $onSpeechStart = dartx.onSpeechStart = Symbol("dartx.onSpeechStart");
const $onStart = dartx.onStart = Symbol("dartx.onStart");
const $confidence = dartx.confidence = Symbol("dartx.confidence");
const $transcript = dartx.transcript = Symbol("dartx.transcript");
const $emma = dartx.emma = Symbol("dartx.emma");
const $interpretation = dartx.interpretation = Symbol("dartx.interpretation");
const $resultIndex = dartx.resultIndex = Symbol("dartx.resultIndex");
const $results = dartx.results = Symbol("dartx.results");
const $isFinal = dartx.isFinal = Symbol("dartx.isFinal");
const $getVoices = dartx.getVoices = Symbol("dartx.getVoices");
const $pending = dartx.pending = Symbol("dartx.pending");
const $speaking = dartx.speaking = Symbol("dartx.speaking");
const $charIndex = dartx.charIndex = Symbol("dartx.charIndex");
const $utterance = dartx.utterance = Symbol("dartx.utterance");
const $pitch = dartx.pitch = Symbol("dartx.pitch");
const $rate = dartx.rate = Symbol("dartx.rate");
const $voice = dartx.voice = Symbol("dartx.voice");
const $onBoundary = dartx.onBoundary = Symbol("dartx.onBoundary");
const $onMark = dartx.onMark = Symbol("dartx.onMark");
const $onResume = dartx.onResume = Symbol("dartx.onResume");
const $localService = dartx.localService = Symbol("dartx.localService");
const $voiceUri = dartx.voiceUri = Symbol("dartx.voiceUri");
const $storageArea = dartx.storageArea = Symbol("dartx.storageArea");
const $estimate = dartx.estimate = Symbol("dartx.estimate");
const $persist = dartx.persist = Symbol("dartx.persist");
const $matchMedium = dartx.matchMedium = Symbol("dartx.matchMedium");
const $getProperties = dartx.getProperties = Symbol("dartx.getProperties");
const $lastChance = dartx.lastChance = Symbol("dartx.lastChance");
const $getTags = dartx.getTags = Symbol("dartx.getTags");
const $cellIndex = dartx.cellIndex = Symbol("dartx.cellIndex");
const $headers = dartx.headers = Symbol("dartx.headers");
const $span = dartx.span = Symbol("dartx.span");
const $tBodies = dartx.tBodies = Symbol("dartx.tBodies");
const $rows = dartx.rows = Symbol("dartx.rows");
const $insertRow = dartx.insertRow = Symbol("dartx.insertRow");
const $addRow = dartx.addRow = Symbol("dartx.addRow");
const $createCaption = dartx.createCaption = Symbol("dartx.createCaption");
const $createTBody = dartx.createTBody = Symbol("dartx.createTBody");
const $createTFoot = dartx.createTFoot = Symbol("dartx.createTFoot");
const $createTHead = dartx.createTHead = Symbol("dartx.createTHead");
const $caption = dartx.caption = Symbol("dartx.caption");
const $tFoot = dartx.tFoot = Symbol("dartx.tFoot");
const $tHead = dartx.tHead = Symbol("dartx.tHead");
const $deleteCaption = dartx.deleteCaption = Symbol("dartx.deleteCaption");
const $deleteRow = dartx.deleteRow = Symbol("dartx.deleteRow");
const $deleteTFoot = dartx.deleteTFoot = Symbol("dartx.deleteTFoot");
const $deleteTHead = dartx.deleteTHead = Symbol("dartx.deleteTHead");
const $cells = dartx.cells = Symbol("dartx.cells");
const $insertCell = dartx.insertCell = Symbol("dartx.insertCell");
const $addCell = dartx.addCell = Symbol("dartx.addCell");
const $sectionRowIndex = dartx.sectionRowIndex = Symbol("dartx.sectionRowIndex");
const $deleteCell = dartx.deleteCell = Symbol("dartx.deleteCell");
const $containerId = dartx.containerId = Symbol("dartx.containerId");
const $containerName = dartx.containerName = Symbol("dartx.containerName");
const $containerSrc = dartx.containerSrc = Symbol("dartx.containerSrc");
const $containerType = dartx.containerType = Symbol("dartx.containerType");
const $cols = dartx.cols = Symbol("dartx.cols");
const $textLength = dartx.textLength = Symbol("dartx.textLength");
const $wrap = dartx.wrap = Symbol("dartx.wrap");
const $actualBoundingBoxAscent = dartx.actualBoundingBoxAscent = Symbol("dartx.actualBoundingBoxAscent");
const $actualBoundingBoxDescent = dartx.actualBoundingBoxDescent = Symbol("dartx.actualBoundingBoxDescent");
const $actualBoundingBoxLeft = dartx.actualBoundingBoxLeft = Symbol("dartx.actualBoundingBoxLeft");
const $actualBoundingBoxRight = dartx.actualBoundingBoxRight = Symbol("dartx.actualBoundingBoxRight");
const $alphabeticBaseline = dartx.alphabeticBaseline = Symbol("dartx.alphabeticBaseline");
const $emHeightAscent = dartx.emHeightAscent = Symbol("dartx.emHeightAscent");
const $emHeightDescent = dartx.emHeightDescent = Symbol("dartx.emHeightDescent");
const $fontBoundingBoxAscent = dartx.fontBoundingBoxAscent = Symbol("dartx.fontBoundingBoxAscent");
const $fontBoundingBoxDescent = dartx.fontBoundingBoxDescent = Symbol("dartx.fontBoundingBoxDescent");
const $hangingBaseline = dartx.hangingBaseline = Symbol("dartx.hangingBaseline");
const $ideographicBaseline = dartx.ideographicBaseline = Symbol("dartx.ideographicBaseline");
const $activeCues = dartx.activeCues = Symbol("dartx.activeCues");
const $cues = dartx.cues = Symbol("dartx.cues");
const $addCue = dartx.addCue = Symbol("dartx.addCue");
const $removeCue = dartx.removeCue = Symbol("dartx.removeCue");
const $onCueChange = dartx.onCueChange = Symbol("dartx.onCueChange");
const $endTime = dartx.endTime = Symbol("dartx.endTime");
const $pauseOnExit = dartx.pauseOnExit = Symbol("dartx.pauseOnExit");
const $onEnter = dartx.onEnter = Symbol("dartx.onEnter");
const $onExit = dartx.onExit = Symbol("dartx.onExit");
const $getCueById = dartx.getCueById = Symbol("dartx.getCueById");
const $end = dartx.end = Symbol("dartx.end");
const $force = dartx.force = Symbol("dartx.force");
const $identifier = dartx.identifier = Symbol("dartx.identifier");
const $rotationAngle = dartx.rotationAngle = Symbol("dartx.rotationAngle");
const $radiusX = dartx.radiusX = Symbol("dartx.radiusX");
const $radiusY = dartx.radiusY = Symbol("dartx.radiusY");
const $changedTouches = dartx.changedTouches = Symbol("dartx.changedTouches");
const $targetTouches = dartx.targetTouches = Symbol("dartx.targetTouches");
const $touches = dartx.touches = Symbol("dartx.touches");
const $byteStreamTrackID = dartx.byteStreamTrackID = Symbol("dartx.byteStreamTrackID");
const $kinds = dartx.kinds = Symbol("dartx.kinds");
const $srclang = dartx.srclang = Symbol("dartx.srclang");
const $propertyName = dartx.propertyName = Symbol("dartx.propertyName");
const $pseudoElement = dartx.pseudoElement = Symbol("dartx.pseudoElement");
const $currentNode = dartx.currentNode = Symbol("dartx.currentNode");
const $notifyLockAcquired = dartx.notifyLockAcquired = Symbol("dartx.notifyLockAcquired");
const $notifyLockReleased = dartx.notifyLockReleased = Symbol("dartx.notifyLockReleased");
const $pull = dartx.pull = Symbol("dartx.pull");
const $searchParams = dartx.searchParams = Symbol("dartx.searchParams");
const $getDevices = dartx.getDevices = Symbol("dartx.getDevices");
const $getTransformTo = dartx.getTransformTo = Symbol("dartx.getTransformTo");
const $deviceName = dartx.deviceName = Symbol("dartx.deviceName");
const $isExternal = dartx.isExternal = Symbol("dartx.isExternal");
const $requestSession = dartx.requestSession = Symbol("dartx.requestSession");
const $supportsSession = dartx.supportsSession = Symbol("dartx.supportsSession");
const $device = dartx.device = Symbol("dartx.device");
const $capabilities = dartx.capabilities = Symbol("dartx.capabilities");
const $depthFar = dartx.depthFar = Symbol("dartx.depthFar");
const $depthNear = dartx.depthNear = Symbol("dartx.depthNear");
const $displayName = dartx.displayName = Symbol("dartx.displayName");
const $isPresenting = dartx.isPresenting = Symbol("dartx.isPresenting");
const $stageParameters = dartx.stageParameters = Symbol("dartx.stageParameters");
const $cancelAnimationFrame = dartx.cancelAnimationFrame = Symbol("dartx.cancelAnimationFrame");
const $exitPresent = dartx.exitPresent = Symbol("dartx.exitPresent");
const $getEyeParameters = dartx.getEyeParameters = Symbol("dartx.getEyeParameters");
const $getFrameData = dartx.getFrameData = Symbol("dartx.getFrameData");
const $getLayers = dartx.getLayers = Symbol("dartx.getLayers");
const $requestAnimationFrame = dartx.requestAnimationFrame = Symbol("dartx.requestAnimationFrame");
const $requestPresent = dartx.requestPresent = Symbol("dartx.requestPresent");
const $submitFrame = dartx.submitFrame = Symbol("dartx.submitFrame");
const $canPresent = dartx.canPresent = Symbol("dartx.canPresent");
const $hasExternalDisplay = dartx.hasExternalDisplay = Symbol("dartx.hasExternalDisplay");
const $maxLayers = dartx.maxLayers = Symbol("dartx.maxLayers");
const $renderHeight = dartx.renderHeight = Symbol("dartx.renderHeight");
const $renderWidth = dartx.renderWidth = Symbol("dartx.renderWidth");
const $leftProjectionMatrix = dartx.leftProjectionMatrix = Symbol("dartx.leftProjectionMatrix");
const $leftViewMatrix = dartx.leftViewMatrix = Symbol("dartx.leftViewMatrix");
const $rightProjectionMatrix = dartx.rightProjectionMatrix = Symbol("dartx.rightProjectionMatrix");
const $rightViewMatrix = dartx.rightViewMatrix = Symbol("dartx.rightViewMatrix");
const $bounds = dartx.bounds = Symbol("dartx.bounds");
const $emulatedHeight = dartx.emulatedHeight = Symbol("dartx.emulatedHeight");
const $exclusive = dartx.exclusive = Symbol("dartx.exclusive");
const $requestFrameOfReference = dartx.requestFrameOfReference = Symbol("dartx.requestFrameOfReference");
const $session = dartx.session = Symbol("dartx.session");
const $geometry = dartx.geometry = Symbol("dartx.geometry");
const $sittingToStandingTransform = dartx.sittingToStandingTransform = Symbol("dartx.sittingToStandingTransform");
const $sizeX = dartx.sizeX = Symbol("dartx.sizeX");
const $sizeZ = dartx.sizeZ = Symbol("dartx.sizeZ");
const $badInput = dartx.badInput = Symbol("dartx.badInput");
const $customError = dartx.customError = Symbol("dartx.customError");
const $patternMismatch = dartx.patternMismatch = Symbol("dartx.patternMismatch");
const $rangeOverflow = dartx.rangeOverflow = Symbol("dartx.rangeOverflow");
const $rangeUnderflow = dartx.rangeUnderflow = Symbol("dartx.rangeUnderflow");
const $stepMismatch = dartx.stepMismatch = Symbol("dartx.stepMismatch");
const $tooLong = dartx.tooLong = Symbol("dartx.tooLong");
const $tooShort = dartx.tooShort = Symbol("dartx.tooShort");
const $typeMismatch = dartx.typeMismatch = Symbol("dartx.typeMismatch");
const $valid = dartx.valid = Symbol("dartx.valid");
const $valueMissing = dartx.valueMissing = Symbol("dartx.valueMissing");
const $poster = dartx.poster = Symbol("dartx.poster");
const $videoHeight = dartx.videoHeight = Symbol("dartx.videoHeight");
const $videoWidth = dartx.videoWidth = Symbol("dartx.videoWidth");
const $decodedFrameCount = dartx.decodedFrameCount = Symbol("dartx.decodedFrameCount");
const $droppedFrameCount = dartx.droppedFrameCount = Symbol("dartx.droppedFrameCount");
const $getVideoPlaybackQuality = dartx.getVideoPlaybackQuality = Symbol("dartx.getVideoPlaybackQuality");
const $enterFullscreen = dartx.enterFullscreen = Symbol("dartx.enterFullscreen");
const $corruptedVideoFrames = dartx.corruptedVideoFrames = Symbol("dartx.corruptedVideoFrames");
const $creationTime = dartx.creationTime = Symbol("dartx.creationTime");
const $droppedVideoFrames = dartx.droppedVideoFrames = Symbol("dartx.droppedVideoFrames");
const $totalVideoFrames = dartx.totalVideoFrames = Symbol("dartx.totalVideoFrames");
const $sourceBuffer = dartx.sourceBuffer = Symbol("dartx.sourceBuffer");
const $pageLeft = dartx.pageLeft = Symbol("dartx.pageLeft");
const $pageTop = dartx.pageTop = Symbol("dartx.pageTop");
const $align = dartx.align = Symbol("dartx.align");
const $line = dartx.line = Symbol("dartx.line");
const $snapToLines = dartx.snapToLines = Symbol("dartx.snapToLines");
const $vertical = dartx.vertical = Symbol("dartx.vertical");
const $getCueAsHtml = dartx.getCueAsHtml = Symbol("dartx.getCueAsHtml");
const $lines = dartx.lines = Symbol("dartx.lines");
const $regionAnchorX = dartx.regionAnchorX = Symbol("dartx.regionAnchorX");
const $regionAnchorY = dartx.regionAnchorY = Symbol("dartx.regionAnchorY");
const $viewportAnchorX = dartx.viewportAnchorX = Symbol("dartx.viewportAnchorX");
const $viewportAnchorY = dartx.viewportAnchorY = Symbol("dartx.viewportAnchorY");
const $extensions = dartx.extensions = Symbol("dartx.extensions");
const $deltaZ = dartx.deltaZ = Symbol("dartx.deltaZ");
const $deltaMode = dartx.deltaMode = Symbol("dartx.deltaMode");
const $animationFrame = dartx.animationFrame = Symbol("dartx.animationFrame");
const $document = dartx.document = Symbol("dartx.document");
const $requestFileSystem = dartx.requestFileSystem = Symbol("dartx.requestFileSystem");
const $animationWorklet = dartx.animationWorklet = Symbol("dartx.animationWorklet");
const $applicationCache = dartx.applicationCache = Symbol("dartx.applicationCache");
const $audioWorklet = dartx.audioWorklet = Symbol("dartx.audioWorklet");
const $cookieStore = dartx.cookieStore = Symbol("dartx.cookieStore");
const $customElements = dartx.customElements = Symbol("dartx.customElements");
const $defaultStatus = dartx.defaultStatus = Symbol("dartx.defaultStatus");
const $defaultstatus = dartx.defaultstatus = Symbol("dartx.defaultstatus");
const $external = dartx.external = Symbol("dartx.external");
const $history = dartx.history = Symbol("dartx.history");
const $innerHeight = dartx.innerHeight = Symbol("dartx.innerHeight");
const $innerWidth = dartx.innerWidth = Symbol("dartx.innerWidth");
const $localStorage = dartx.localStorage = Symbol("dartx.localStorage");
const $locationbar = dartx.locationbar = Symbol("dartx.locationbar");
const $menubar = dartx.menubar = Symbol("dartx.menubar");
const $offscreenBuffering = dartx.offscreenBuffering = Symbol("dartx.offscreenBuffering");
const $opener = dartx.opener = Symbol("dartx.opener");
const $outerHeight = dartx.outerHeight = Symbol("dartx.outerHeight");
const $outerWidth = dartx.outerWidth = Symbol("dartx.outerWidth");
const $screenLeft = dartx.screenLeft = Symbol("dartx.screenLeft");
const $screenTop = dartx.screenTop = Symbol("dartx.screenTop");
const $screenX = dartx.screenX = Symbol("dartx.screenX");
const $screenY = dartx.screenY = Symbol("dartx.screenY");
const $scrollbars = dartx.scrollbars = Symbol("dartx.scrollbars");
const $sessionStorage = dartx.sessionStorage = Symbol("dartx.sessionStorage");
const $speechSynthesis = dartx.speechSynthesis = Symbol("dartx.speechSynthesis");
const $statusbar = dartx.statusbar = Symbol("dartx.statusbar");
const $styleMedia = dartx.styleMedia = Symbol("dartx.styleMedia");
const $toolbar = dartx.toolbar = Symbol("dartx.toolbar");
const $visualViewport = dartx.visualViewport = Symbol("dartx.visualViewport");
const $alert = dartx.alert = Symbol("dartx.alert");
const $cancelIdleCallback = dartx.cancelIdleCallback = Symbol("dartx.cancelIdleCallback");
const $confirm = dartx.confirm = Symbol("dartx.confirm");
const $find = dartx.find = Symbol("dartx.find");
const $getComputedStyleMap = dartx.getComputedStyleMap = Symbol("dartx.getComputedStyleMap");
const $getMatchedCssRules = dartx.getMatchedCssRules = Symbol("dartx.getMatchedCssRules");
const $matchMedia = dartx.matchMedia = Symbol("dartx.matchMedia");
const $moveBy = dartx.moveBy = Symbol("dartx.moveBy");
const $print = dartx.print = Symbol("dartx.print");
const $requestIdleCallback = dartx.requestIdleCallback = Symbol("dartx.requestIdleCallback");
const $resizeBy = dartx.resizeBy = Symbol("dartx.resizeBy");
const $resizeTo = dartx.resizeTo = Symbol("dartx.resizeTo");
const $resolveLocalFileSystemUrl = dartx.resolveLocalFileSystemUrl = Symbol("dartx.resolveLocalFileSystemUrl");
const $onContentLoaded = dartx.onContentLoaded = Symbol("dartx.onContentLoaded");
const $onDeviceMotion = dartx.onDeviceMotion = Symbol("dartx.onDeviceMotion");
const $onDeviceOrientation = dartx.onDeviceOrientation = Symbol("dartx.onDeviceOrientation");
const $onPageHide = dartx.onPageHide = Symbol("dartx.onPageHide");
const $onPageShow = dartx.onPageShow = Symbol("dartx.onPageShow");
const $onAnimationEnd = dartx.onAnimationEnd = Symbol("dartx.onAnimationEnd");
const $onAnimationIteration = dartx.onAnimationIteration = Symbol("dartx.onAnimationIteration");
const $onAnimationStart = dartx.onAnimationStart = Symbol("dartx.onAnimationStart");
const $onBeforeUnload = dartx.onBeforeUnload = Symbol("dartx.onBeforeUnload");
const $openDatabase = dartx.openDatabase = Symbol("dartx.openDatabase");
const $pageXOffset = dartx.pageXOffset = Symbol("dartx.pageXOffset");
const $pageYOffset = dartx.pageYOffset = Symbol("dartx.pageYOffset");
const $scrollX = dartx.scrollX = Symbol("dartx.scrollX");
const $scrollY = dartx.scrollY = Symbol("dartx.scrollY");
const $focused = dartx.focused = Symbol("dartx.focused");
const $navigate = dartx.navigate = Symbol("dartx.navigate");
const $createExpression = dartx.createExpression = Symbol("dartx.createExpression");
const $createNSResolver = dartx.createNSResolver = Symbol("dartx.createNSResolver");
const $evaluate = dartx.evaluate = Symbol("dartx.evaluate");
const $lookupNamespaceUri = dartx.lookupNamespaceUri = Symbol("dartx.lookupNamespaceUri");
const $booleanValue = dartx.booleanValue = Symbol("dartx.booleanValue");
const $invalidIteratorState = dartx.invalidIteratorState = Symbol("dartx.invalidIteratorState");
const $numberValue = dartx.numberValue = Symbol("dartx.numberValue");
const $resultType = dartx.resultType = Symbol("dartx.resultType");
const $singleNodeValue = dartx.singleNodeValue = Symbol("dartx.singleNodeValue");
const $snapshotLength = dartx.snapshotLength = Symbol("dartx.snapshotLength");
const $stringValue = dartx.stringValue = Symbol("dartx.stringValue");
const $iterateNext = dartx.iterateNext = Symbol("dartx.iterateNext");
const $snapshotItem = dartx.snapshotItem = Symbol("dartx.snapshotItem");
const $serializeToString = dartx.serializeToString = Symbol("dartx.serializeToString");
const $clearParameters = dartx.clearParameters = Symbol("dartx.clearParameters");
const $getParameter = dartx.getParameter = Symbol("dartx.getParameter");
const $importStylesheet = dartx.importStylesheet = Symbol("dartx.importStylesheet");
const $removeParameter = dartx.removeParameter = Symbol("dartx.removeParameter");
const $setParameter = dartx.setParameter = Symbol("dartx.setParameter");
const $transformToDocument = dartx.transformToDocument = Symbol("dartx.transformToDocument");
const $transformToFragment = dartx.transformToFragment = Symbol("dartx.transformToFragment");
const $getBudget = dartx.getBudget = Symbol("dartx.getBudget");
const $getCost = dartx.getCost = Symbol("dartx.getCost");
const $reserve = dartx.reserve = Symbol("dartx.reserve");
const $read = dartx.read = Symbol("dartx.read");
const $readText = dartx.readText = Symbol("dartx.readText");
const $writeText = dartx.writeText = Symbol("dartx.writeText");
const $getNamedItem = dartx.getNamedItem = Symbol("dartx.getNamedItem");
const $getNamedItemNS = dartx.getNamedItemNS = Symbol("dartx.getNamedItemNS");
const $removeNamedItem = dartx.removeNamedItem = Symbol("dartx.removeNamedItem");
const $removeNamedItemNS = dartx.removeNamedItemNS = Symbol("dartx.removeNamedItemNS");
const $setNamedItem = dartx.setNamedItem = Symbol("dartx.setNamedItem");
const $setNamedItemNS = dartx.setNamedItemNS = Symbol("dartx.setNamedItemNS");
const $cache = dartx.cache = Symbol("dartx.cache");
const $redirect = dartx.redirect = Symbol("dartx.redirect");
const $farthestViewportElement = dartx.farthestViewportElement = Symbol("dartx.farthestViewportElement");
const $nearestViewportElement = dartx.nearestViewportElement = Symbol("dartx.nearestViewportElement");
const $getBBox = dartx.getBBox = Symbol("dartx.getBBox");
const $getCtm = dartx.getCtm = Symbol("dartx.getCtm");
const $getScreenCtm = dartx.getScreenCtm = Symbol("dartx.getScreenCtm");
const $requiredExtensions = dartx.requiredExtensions = Symbol("dartx.requiredExtensions");
const $systemLanguage = dartx.systemLanguage = Symbol("dartx.systemLanguage");
const $ownerSvgElement = dartx.ownerSvgElement = Symbol("dartx.ownerSvgElement");
const $viewportElement = dartx.viewportElement = Symbol("dartx.viewportElement");
const $unitType = dartx.unitType = Symbol("dartx.unitType");
const $valueAsString = dartx.valueAsString = Symbol("dartx.valueAsString");
const $valueInSpecifiedUnits = dartx.valueInSpecifiedUnits = Symbol("dartx.valueInSpecifiedUnits");
const $convertToSpecifiedUnits = dartx.convertToSpecifiedUnits = Symbol("dartx.convertToSpecifiedUnits");
const $newValueSpecifiedUnits = dartx.newValueSpecifiedUnits = Symbol("dartx.newValueSpecifiedUnits");
const $targetElement = dartx.targetElement = Symbol("dartx.targetElement");
const $beginElement = dartx.beginElement = Symbol("dartx.beginElement");
const $beginElementAt = dartx.beginElementAt = Symbol("dartx.beginElementAt");
const $endElement = dartx.endElement = Symbol("dartx.endElement");
const $endElementAt = dartx.endElementAt = Symbol("dartx.endElementAt");
const $getCurrentTime = dartx.getCurrentTime = Symbol("dartx.getCurrentTime");
const $getSimpleDuration = dartx.getSimpleDuration = Symbol("dartx.getSimpleDuration");
const $getStartTime = dartx.getStartTime = Symbol("dartx.getStartTime");
const $animVal = dartx.animVal = Symbol("dartx.animVal");
const $baseVal = dartx.baseVal = Symbol("dartx.baseVal");
const $cx = dartx.cx = Symbol("dartx.cx");
const $cy = dartx.cy = Symbol("dartx.cy");
const $r = dartx.r = Symbol("dartx.r");
const $pathLength = dartx.pathLength = Symbol("dartx.pathLength");
const $getPointAtLength = dartx.getPointAtLength = Symbol("dartx.getPointAtLength");
const $getTotalLength = dartx.getTotalLength = Symbol("dartx.getTotalLength");
const $isPointInFill = dartx.isPointInFill = Symbol("dartx.isPointInFill");
const $clipPathUnits = dartx.clipPathUnits = Symbol("dartx.clipPathUnits");
const $rx = dartx.rx = Symbol("dartx.rx");
const $ry = dartx.ry = Symbol("dartx.ry");
const $in1 = dartx.in1 = Symbol("dartx.in1");
const $in2 = dartx.in2 = Symbol("dartx.in2");
const $k1 = dartx.k1 = Symbol("dartx.k1");
const $k2 = dartx.k2 = Symbol("dartx.k2");
const $k3 = dartx.k3 = Symbol("dartx.k3");
const $k4 = dartx.k4 = Symbol("dartx.k4");
const $operator = dartx.operator = Symbol("dartx.operator");
const $bias = dartx.bias = Symbol("dartx.bias");
const $divisor = dartx.divisor = Symbol("dartx.divisor");
const $edgeMode = dartx.edgeMode = Symbol("dartx.edgeMode");
const $kernelMatrix = dartx.kernelMatrix = Symbol("dartx.kernelMatrix");
const $kernelUnitLengthX = dartx.kernelUnitLengthX = Symbol("dartx.kernelUnitLengthX");
const $kernelUnitLengthY = dartx.kernelUnitLengthY = Symbol("dartx.kernelUnitLengthY");
const $orderX = dartx.orderX = Symbol("dartx.orderX");
const $orderY = dartx.orderY = Symbol("dartx.orderY");
const $preserveAlpha = dartx.preserveAlpha = Symbol("dartx.preserveAlpha");
const $targetX = dartx.targetX = Symbol("dartx.targetX");
const $targetY = dartx.targetY = Symbol("dartx.targetY");
const $diffuseConstant = dartx.diffuseConstant = Symbol("dartx.diffuseConstant");
const $surfaceScale = dartx.surfaceScale = Symbol("dartx.surfaceScale");
const $xChannelSelector = dartx.xChannelSelector = Symbol("dartx.xChannelSelector");
const $yChannelSelector = dartx.yChannelSelector = Symbol("dartx.yChannelSelector");
const $azimuth = dartx.azimuth = Symbol("dartx.azimuth");
const $elevation = dartx.elevation = Symbol("dartx.elevation");
const $stdDeviationX = dartx.stdDeviationX = Symbol("dartx.stdDeviationX");
const $stdDeviationY = dartx.stdDeviationY = Symbol("dartx.stdDeviationY");
const $setStdDeviation = dartx.setStdDeviation = Symbol("dartx.setStdDeviation");
const $preserveAspectRatio = dartx.preserveAspectRatio = Symbol("dartx.preserveAspectRatio");
const $dx = dartx.dx = Symbol("dartx.dx");
const $dy = dartx.dy = Symbol("dartx.dy");
const $specularConstant = dartx.specularConstant = Symbol("dartx.specularConstant");
const $specularExponent = dartx.specularExponent = Symbol("dartx.specularExponent");
const $limitingConeAngle = dartx.limitingConeAngle = Symbol("dartx.limitingConeAngle");
const $pointsAtX = dartx.pointsAtX = Symbol("dartx.pointsAtX");
const $pointsAtY = dartx.pointsAtY = Symbol("dartx.pointsAtY");
const $pointsAtZ = dartx.pointsAtZ = Symbol("dartx.pointsAtZ");
const $baseFrequencyX = dartx.baseFrequencyX = Symbol("dartx.baseFrequencyX");
const $baseFrequencyY = dartx.baseFrequencyY = Symbol("dartx.baseFrequencyY");
const $numOctaves = dartx.numOctaves = Symbol("dartx.numOctaves");
const $seed = dartx.seed = Symbol("dartx.seed");
const $stitchTiles = dartx.stitchTiles = Symbol("dartx.stitchTiles");
const $filterUnits = dartx.filterUnits = Symbol("dartx.filterUnits");
const $primitiveUnits = dartx.primitiveUnits = Symbol("dartx.primitiveUnits");
const $viewBox = dartx.viewBox = Symbol("dartx.viewBox");
const $numberOfItems = dartx.numberOfItems = Symbol("dartx.numberOfItems");
const $appendItem = dartx.appendItem = Symbol("dartx.appendItem");
const $getItem = dartx.getItem = Symbol("dartx.getItem");
const $initialize = dartx.initialize = Symbol("dartx.initialize");
const $insertItemBefore = dartx.insertItemBefore = Symbol("dartx.insertItemBefore");
const $removeItem = dartx.removeItem = Symbol("dartx.removeItem");
const $replaceItem = dartx.replaceItem = Symbol("dartx.replaceItem");
const $x1 = dartx.x1 = Symbol("dartx.x1");
const $x2 = dartx.x2 = Symbol("dartx.x2");
const $y1 = dartx.y1 = Symbol("dartx.y1");
const $y2 = dartx.y2 = Symbol("dartx.y2");
const $gradientTransform = dartx.gradientTransform = Symbol("dartx.gradientTransform");
const $gradientUnits = dartx.gradientUnits = Symbol("dartx.gradientUnits");
const $spreadMethod = dartx.spreadMethod = Symbol("dartx.spreadMethod");
const $markerHeight = dartx.markerHeight = Symbol("dartx.markerHeight");
const $markerUnits = dartx.markerUnits = Symbol("dartx.markerUnits");
const $markerWidth = dartx.markerWidth = Symbol("dartx.markerWidth");
const $orientAngle = dartx.orientAngle = Symbol("dartx.orientAngle");
const $orientType = dartx.orientType = Symbol("dartx.orientType");
const $refX = dartx.refX = Symbol("dartx.refX");
const $refY = dartx.refY = Symbol("dartx.refY");
const $setOrientToAngle = dartx.setOrientToAngle = Symbol("dartx.setOrientToAngle");
const $setOrientToAuto = dartx.setOrientToAuto = Symbol("dartx.setOrientToAuto");
const $maskContentUnits = dartx.maskContentUnits = Symbol("dartx.maskContentUnits");
const $maskUnits = dartx.maskUnits = Symbol("dartx.maskUnits");
const $scaleNonUniform = dartx.scaleNonUniform = Symbol("dartx.scaleNonUniform");
const $patternContentUnits = dartx.patternContentUnits = Symbol("dartx.patternContentUnits");
const $patternTransform = dartx.patternTransform = Symbol("dartx.patternTransform");
const $patternUnits = dartx.patternUnits = Symbol("dartx.patternUnits");
const $animatedPoints = dartx.animatedPoints = Symbol("dartx.animatedPoints");
const $points = dartx.points = Symbol("dartx.points");
const $meetOrSlice = dartx.meetOrSlice = Symbol("dartx.meetOrSlice");
const $fr = dartx.fr = Symbol("dartx.fr");
const $fx = dartx.fx = Symbol("dartx.fx");
const $fy = dartx.fy = Symbol("dartx.fy");
const $gradientOffset = dartx.gradientOffset = Symbol("dartx.gradientOffset");
const $currentScale = dartx.currentScale = Symbol("dartx.currentScale");
const $currentTranslate = dartx.currentTranslate = Symbol("dartx.currentTranslate");
const $animationsPaused = dartx.animationsPaused = Symbol("dartx.animationsPaused");
const $checkEnclosure = dartx.checkEnclosure = Symbol("dartx.checkEnclosure");
const $checkIntersection = dartx.checkIntersection = Symbol("dartx.checkIntersection");
const $createSvgAngle = dartx.createSvgAngle = Symbol("dartx.createSvgAngle");
const $createSvgLength = dartx.createSvgLength = Symbol("dartx.createSvgLength");
const $createSvgMatrix = dartx.createSvgMatrix = Symbol("dartx.createSvgMatrix");
const $createSvgNumber = dartx.createSvgNumber = Symbol("dartx.createSvgNumber");
const $createSvgPoint = dartx.createSvgPoint = Symbol("dartx.createSvgPoint");
const $createSvgRect = dartx.createSvgRect = Symbol("dartx.createSvgRect");
const $createSvgTransform = dartx.createSvgTransform = Symbol("dartx.createSvgTransform");
const $createSvgTransformFromMatrix = dartx.createSvgTransformFromMatrix = Symbol("dartx.createSvgTransformFromMatrix");
const $deselectAll = dartx.deselectAll = Symbol("dartx.deselectAll");
const $forceRedraw = dartx.forceRedraw = Symbol("dartx.forceRedraw");
const $getEnclosureList = dartx.getEnclosureList = Symbol("dartx.getEnclosureList");
const $getIntersectionList = dartx.getIntersectionList = Symbol("dartx.getIntersectionList");
const $pauseAnimations = dartx.pauseAnimations = Symbol("dartx.pauseAnimations");
const $setCurrentTime = dartx.setCurrentTime = Symbol("dartx.setCurrentTime");
const $suspendRedraw = dartx.suspendRedraw = Symbol("dartx.suspendRedraw");
const $unpauseAnimations = dartx.unpauseAnimations = Symbol("dartx.unpauseAnimations");
const $unsuspendRedraw = dartx.unsuspendRedraw = Symbol("dartx.unsuspendRedraw");
const $unsuspendRedrawAll = dartx.unsuspendRedrawAll = Symbol("dartx.unsuspendRedrawAll");
const $zoomAndPan = dartx.zoomAndPan = Symbol("dartx.zoomAndPan");
const $lengthAdjust = dartx.lengthAdjust = Symbol("dartx.lengthAdjust");
const $getCharNumAtPosition = dartx.getCharNumAtPosition = Symbol("dartx.getCharNumAtPosition");
const $getComputedTextLength = dartx.getComputedTextLength = Symbol("dartx.getComputedTextLength");
const $getEndPositionOfChar = dartx.getEndPositionOfChar = Symbol("dartx.getEndPositionOfChar");
const $getExtentOfChar = dartx.getExtentOfChar = Symbol("dartx.getExtentOfChar");
const $getNumberOfChars = dartx.getNumberOfChars = Symbol("dartx.getNumberOfChars");
const $getRotationOfChar = dartx.getRotationOfChar = Symbol("dartx.getRotationOfChar");
const $getStartPositionOfChar = dartx.getStartPositionOfChar = Symbol("dartx.getStartPositionOfChar");
const $getSubStringLength = dartx.getSubStringLength = Symbol("dartx.getSubStringLength");
const $selectSubString = dartx.selectSubString = Symbol("dartx.selectSubString");
const $spacing = dartx.spacing = Symbol("dartx.spacing");
const $setMatrix = dartx.setMatrix = Symbol("dartx.setMatrix");
const $setRotate = dartx.setRotate = Symbol("dartx.setRotate");
const $setScale = dartx.setScale = Symbol("dartx.setScale");
const $setSkewX = dartx.setSkewX = Symbol("dartx.setSkewX");
const $setSkewY = dartx.setSkewY = Symbol("dartx.setSkewY");
const $setTranslate = dartx.setTranslate = Symbol("dartx.setTranslate");
const $consolidate = dartx.consolidate = Symbol("dartx.consolidate");
const $fftSize = dartx.fftSize = Symbol("dartx.fftSize");
const $frequencyBinCount = dartx.frequencyBinCount = Symbol("dartx.frequencyBinCount");
const $maxDecibels = dartx.maxDecibels = Symbol("dartx.maxDecibels");
const $minDecibels = dartx.minDecibels = Symbol("dartx.minDecibels");
const $smoothingTimeConstant = dartx.smoothingTimeConstant = Symbol("dartx.smoothingTimeConstant");
const $getByteFrequencyData = dartx.getByteFrequencyData = Symbol("dartx.getByteFrequencyData");
const $getByteTimeDomainData = dartx.getByteTimeDomainData = Symbol("dartx.getByteTimeDomainData");
const $getFloatFrequencyData = dartx.getFloatFrequencyData = Symbol("dartx.getFloatFrequencyData");
const $getFloatTimeDomainData = dartx.getFloatTimeDomainData = Symbol("dartx.getFloatTimeDomainData");
const $channelCount = dartx.channelCount = Symbol("dartx.channelCount");
const $channelCountMode = dartx.channelCountMode = Symbol("dartx.channelCountMode");
const $channelInterpretation = dartx.channelInterpretation = Symbol("dartx.channelInterpretation");
const $context = dartx.context = Symbol("dartx.context");
const $numberOfInputs = dartx.numberOfInputs = Symbol("dartx.numberOfInputs");
const $numberOfOutputs = dartx.numberOfOutputs = Symbol("dartx.numberOfOutputs");
const $connectNode = dartx.connectNode = Symbol("dartx.connectNode");
const $connectParam = dartx.connectParam = Symbol("dartx.connectParam");
const $numberOfChannels = dartx.numberOfChannels = Symbol("dartx.numberOfChannels");
const $sampleRate = dartx.sampleRate = Symbol("dartx.sampleRate");
const $copyFromChannel = dartx.copyFromChannel = Symbol("dartx.copyFromChannel");
const $copyToChannel = dartx.copyToChannel = Symbol("dartx.copyToChannel");
const $getChannelData = dartx.getChannelData = Symbol("dartx.getChannelData");
const $detune = dartx.detune = Symbol("dartx.detune");
const $loopEnd = dartx.loopEnd = Symbol("dartx.loopEnd");
const $loopStart = dartx.loopStart = Symbol("dartx.loopStart");
const $start2 = dartx.start2 = Symbol("dartx.start2");
const $baseLatency = dartx.baseLatency = Symbol("dartx.baseLatency");
const $getOutputTimestamp = dartx.getOutputTimestamp = Symbol("dartx.getOutputTimestamp");
const $suspend = dartx.suspend = Symbol("dartx.suspend");
const $createGain = dartx.createGain = Symbol("dartx.createGain");
const $createScriptProcessor = dartx.createScriptProcessor = Symbol("dartx.createScriptProcessor");
const $decodeAudioData = dartx.decodeAudioData = Symbol("dartx.decodeAudioData");
const $destination = dartx.destination = Symbol("dartx.destination");
const $listener = dartx.listener = Symbol("dartx.listener");
const $createAnalyser = dartx.createAnalyser = Symbol("dartx.createAnalyser");
const $createBiquadFilter = dartx.createBiquadFilter = Symbol("dartx.createBiquadFilter");
const $createBuffer = dartx.createBuffer = Symbol("dartx.createBuffer");
const $createBufferSource = dartx.createBufferSource = Symbol("dartx.createBufferSource");
const $createChannelMerger = dartx.createChannelMerger = Symbol("dartx.createChannelMerger");
const $createChannelSplitter = dartx.createChannelSplitter = Symbol("dartx.createChannelSplitter");
const $createConstantSource = dartx.createConstantSource = Symbol("dartx.createConstantSource");
const $createConvolver = dartx.createConvolver = Symbol("dartx.createConvolver");
const $createDelay = dartx.createDelay = Symbol("dartx.createDelay");
const $createDynamicsCompressor = dartx.createDynamicsCompressor = Symbol("dartx.createDynamicsCompressor");
const $createIirFilter = dartx.createIirFilter = Symbol("dartx.createIirFilter");
const $createMediaElementSource = dartx.createMediaElementSource = Symbol("dartx.createMediaElementSource");
const $createMediaStreamDestination = dartx.createMediaStreamDestination = Symbol("dartx.createMediaStreamDestination");
const $createMediaStreamSource = dartx.createMediaStreamSource = Symbol("dartx.createMediaStreamSource");
const $createOscillator = dartx.createOscillator = Symbol("dartx.createOscillator");
const $createPanner = dartx.createPanner = Symbol("dartx.createPanner");
const $createPeriodicWave = dartx.createPeriodicWave = Symbol("dartx.createPeriodicWave");
const $createStereoPanner = dartx.createStereoPanner = Symbol("dartx.createStereoPanner");
const $createWaveShaper = dartx.createWaveShaper = Symbol("dartx.createWaveShaper");
const $maxChannelCount = dartx.maxChannelCount = Symbol("dartx.maxChannelCount");
const $forwardX = dartx.forwardX = Symbol("dartx.forwardX");
const $forwardY = dartx.forwardY = Symbol("dartx.forwardY");
const $forwardZ = dartx.forwardZ = Symbol("dartx.forwardZ");
const $positionZ = dartx.positionZ = Symbol("dartx.positionZ");
const $upX = dartx.upX = Symbol("dartx.upX");
const $upY = dartx.upY = Symbol("dartx.upY");
const $upZ = dartx.upZ = Symbol("dartx.upZ");
const $setOrientation = dartx.setOrientation = Symbol("dartx.setOrientation");
const $maxValue = dartx.maxValue = Symbol("dartx.maxValue");
const $minValue = dartx.minValue = Symbol("dartx.minValue");
const $cancelAndHoldAtTime = dartx.cancelAndHoldAtTime = Symbol("dartx.cancelAndHoldAtTime");
const $cancelScheduledValues = dartx.cancelScheduledValues = Symbol("dartx.cancelScheduledValues");
const $exponentialRampToValueAtTime = dartx.exponentialRampToValueAtTime = Symbol("dartx.exponentialRampToValueAtTime");
const $linearRampToValueAtTime = dartx.linearRampToValueAtTime = Symbol("dartx.linearRampToValueAtTime");
const $setTargetAtTime = dartx.setTargetAtTime = Symbol("dartx.setTargetAtTime");
const $setValueAtTime = dartx.setValueAtTime = Symbol("dartx.setValueAtTime");
const $setValueCurveAtTime = dartx.setValueCurveAtTime = Symbol("dartx.setValueCurveAtTime");
const $inputBuffer = dartx.inputBuffer = Symbol("dartx.inputBuffer");
const $outputBuffer = dartx.outputBuffer = Symbol("dartx.outputBuffer");
const $playbackTime = dartx.playbackTime = Symbol("dartx.playbackTime");
const $registerProcessor = dartx.registerProcessor = Symbol("dartx.registerProcessor");
const $parameters = dartx.parameters = Symbol("dartx.parameters");
const $Q = dartx.Q = Symbol("dartx.Q");
const $frequency = dartx.frequency = Symbol("dartx.frequency");
const $gain = dartx.gain = Symbol("dartx.gain");
const $getFrequencyResponse = dartx.getFrequencyResponse = Symbol("dartx.getFrequencyResponse");
const $normalize = dartx.normalize = Symbol("dartx.normalize");
const $delayTime = dartx.delayTime = Symbol("dartx.delayTime");
const $attack = dartx.attack = Symbol("dartx.attack");
const $knee = dartx.knee = Symbol("dartx.knee");
const $ratio = dartx.ratio = Symbol("dartx.ratio");
const $reduction = dartx.reduction = Symbol("dartx.reduction");
const $release = dartx.release = Symbol("dartx.release");
const $threshold = dartx.threshold = Symbol("dartx.threshold");
const $mediaElement = dartx.mediaElement = Symbol("dartx.mediaElement");
const $mediaStream = dartx.mediaStream = Symbol("dartx.mediaStream");
const $renderedBuffer = dartx.renderedBuffer = Symbol("dartx.renderedBuffer");
const $startRendering = dartx.startRendering = Symbol("dartx.startRendering");
const $suspendFor = dartx.suspendFor = Symbol("dartx.suspendFor");
const $setPeriodicWave = dartx.setPeriodicWave = Symbol("dartx.setPeriodicWave");
const $coneInnerAngle = dartx.coneInnerAngle = Symbol("dartx.coneInnerAngle");
const $coneOuterAngle = dartx.coneOuterAngle = Symbol("dartx.coneOuterAngle");
const $coneOuterGain = dartx.coneOuterGain = Symbol("dartx.coneOuterGain");
const $distanceModel = dartx.distanceModel = Symbol("dartx.distanceModel");
const $maxDistance = dartx.maxDistance = Symbol("dartx.maxDistance");
const $orientationX = dartx.orientationX = Symbol("dartx.orientationX");
const $orientationY = dartx.orientationY = Symbol("dartx.orientationY");
const $orientationZ = dartx.orientationZ = Symbol("dartx.orientationZ");
const $panningModel = dartx.panningModel = Symbol("dartx.panningModel");
const $refDistance = dartx.refDistance = Symbol("dartx.refDistance");
const $rolloffFactor = dartx.rolloffFactor = Symbol("dartx.rolloffFactor");
const $bufferSize = dartx.bufferSize = Symbol("dartx.bufferSize");
const $setEventListener = dartx.setEventListener = Symbol("dartx.setEventListener");
const $onAudioProcess = dartx.onAudioProcess = Symbol("dartx.onAudioProcess");
const $pan = dartx.pan = Symbol("dartx.pan");
const $curve = dartx.curve = Symbol("dartx.curve");
const $oversample = dartx.oversample = Symbol("dartx.oversample");
const $drawArraysInstancedAngle = dartx.drawArraysInstancedAngle = Symbol("dartx.drawArraysInstancedAngle");
const $drawElementsInstancedAngle = dartx.drawElementsInstancedAngle = Symbol("dartx.drawElementsInstancedAngle");
const $vertexAttribDivisorAngle = dartx.vertexAttribDivisorAngle = Symbol("dartx.vertexAttribDivisorAngle");
const $offscreenCanvas = dartx.offscreenCanvas = Symbol("dartx.offscreenCanvas");
const $statusMessage = dartx.statusMessage = Symbol("dartx.statusMessage");
const $getTranslatedShaderSource = dartx.getTranslatedShaderSource = Symbol("dartx.getTranslatedShaderSource");
const $drawBuffersWebgl = dartx.drawBuffersWebgl = Symbol("dartx.drawBuffersWebgl");
const $beginQueryExt = dartx.beginQueryExt = Symbol("dartx.beginQueryExt");
const $createQueryExt = dartx.createQueryExt = Symbol("dartx.createQueryExt");
const $deleteQueryExt = dartx.deleteQueryExt = Symbol("dartx.deleteQueryExt");
const $endQueryExt = dartx.endQueryExt = Symbol("dartx.endQueryExt");
const $getQueryExt = dartx.getQueryExt = Symbol("dartx.getQueryExt");
const $getQueryObjectExt = dartx.getQueryObjectExt = Symbol("dartx.getQueryObjectExt");
const $isQueryExt = dartx.isQueryExt = Symbol("dartx.isQueryExt");
const $queryCounterExt = dartx.queryCounterExt = Symbol("dartx.queryCounterExt");
const $getBufferSubDataAsync = dartx.getBufferSubDataAsync = Symbol("dartx.getBufferSubDataAsync");
const $loseContext = dartx.loseContext = Symbol("dartx.loseContext");
const $restoreContext = dartx.restoreContext = Symbol("dartx.restoreContext");
const $bindVertexArray = dartx.bindVertexArray = Symbol("dartx.bindVertexArray");
const $createVertexArray = dartx.createVertexArray = Symbol("dartx.createVertexArray");
const $deleteVertexArray = dartx.deleteVertexArray = Symbol("dartx.deleteVertexArray");
const $isVertexArray = dartx.isVertexArray = Symbol("dartx.isVertexArray");
const $drawingBufferHeight = dartx.drawingBufferHeight = Symbol("dartx.drawingBufferHeight");
const $drawingBufferWidth = dartx.drawingBufferWidth = Symbol("dartx.drawingBufferWidth");
const $activeTexture = dartx.activeTexture = Symbol("dartx.activeTexture");
const $attachShader = dartx.attachShader = Symbol("dartx.attachShader");
const $bindAttribLocation = dartx.bindAttribLocation = Symbol("dartx.bindAttribLocation");
const $bindBuffer = dartx.bindBuffer = Symbol("dartx.bindBuffer");
const $bindFramebuffer = dartx.bindFramebuffer = Symbol("dartx.bindFramebuffer");
const $bindRenderbuffer = dartx.bindRenderbuffer = Symbol("dartx.bindRenderbuffer");
const $bindTexture = dartx.bindTexture = Symbol("dartx.bindTexture");
const $blendColor = dartx.blendColor = Symbol("dartx.blendColor");
const $blendEquation = dartx.blendEquation = Symbol("dartx.blendEquation");
const $blendEquationSeparate = dartx.blendEquationSeparate = Symbol("dartx.blendEquationSeparate");
const $blendFunc = dartx.blendFunc = Symbol("dartx.blendFunc");
const $blendFuncSeparate = dartx.blendFuncSeparate = Symbol("dartx.blendFuncSeparate");
const $bufferData = dartx.bufferData = Symbol("dartx.bufferData");
const $bufferSubData = dartx.bufferSubData = Symbol("dartx.bufferSubData");
const $checkFramebufferStatus = dartx.checkFramebufferStatus = Symbol("dartx.checkFramebufferStatus");
const $clearColor = dartx.clearColor = Symbol("dartx.clearColor");
const $clearDepth = dartx.clearDepth = Symbol("dartx.clearDepth");
const $clearStencil = dartx.clearStencil = Symbol("dartx.clearStencil");
const $colorMask = dartx.colorMask = Symbol("dartx.colorMask");
const $compileShader = dartx.compileShader = Symbol("dartx.compileShader");
const $compressedTexImage2D = dartx.compressedTexImage2D = Symbol("dartx.compressedTexImage2D");
const $compressedTexSubImage2D = dartx.compressedTexSubImage2D = Symbol("dartx.compressedTexSubImage2D");
const $copyTexImage2D = dartx.copyTexImage2D = Symbol("dartx.copyTexImage2D");
const $copyTexSubImage2D = dartx.copyTexSubImage2D = Symbol("dartx.copyTexSubImage2D");
const $createFramebuffer = dartx.createFramebuffer = Symbol("dartx.createFramebuffer");
const $createProgram = dartx.createProgram = Symbol("dartx.createProgram");
const $createRenderbuffer = dartx.createRenderbuffer = Symbol("dartx.createRenderbuffer");
const $createShader = dartx.createShader = Symbol("dartx.createShader");
const $createTexture = dartx.createTexture = Symbol("dartx.createTexture");
const $cullFace = dartx.cullFace = Symbol("dartx.cullFace");
const $deleteBuffer = dartx.deleteBuffer = Symbol("dartx.deleteBuffer");
const $deleteFramebuffer = dartx.deleteFramebuffer = Symbol("dartx.deleteFramebuffer");
const $deleteProgram = dartx.deleteProgram = Symbol("dartx.deleteProgram");
const $deleteRenderbuffer = dartx.deleteRenderbuffer = Symbol("dartx.deleteRenderbuffer");
const $deleteShader = dartx.deleteShader = Symbol("dartx.deleteShader");
const $deleteTexture = dartx.deleteTexture = Symbol("dartx.deleteTexture");
const $depthFunc = dartx.depthFunc = Symbol("dartx.depthFunc");
const $depthMask = dartx.depthMask = Symbol("dartx.depthMask");
const $depthRange = dartx.depthRange = Symbol("dartx.depthRange");
const $detachShader = dartx.detachShader = Symbol("dartx.detachShader");
const $disableVertexAttribArray = dartx.disableVertexAttribArray = Symbol("dartx.disableVertexAttribArray");
const $drawArrays = dartx.drawArrays = Symbol("dartx.drawArrays");
const $drawElements = dartx.drawElements = Symbol("dartx.drawElements");
const $enableVertexAttribArray = dartx.enableVertexAttribArray = Symbol("dartx.enableVertexAttribArray");
const $flush = dartx.flush = Symbol("dartx.flush");
const $framebufferRenderbuffer = dartx.framebufferRenderbuffer = Symbol("dartx.framebufferRenderbuffer");
const $framebufferTexture2D = dartx.framebufferTexture2D = Symbol("dartx.framebufferTexture2D");
const $frontFace = dartx.frontFace = Symbol("dartx.frontFace");
const $generateMipmap = dartx.generateMipmap = Symbol("dartx.generateMipmap");
const $getActiveAttrib = dartx.getActiveAttrib = Symbol("dartx.getActiveAttrib");
const $getActiveUniform = dartx.getActiveUniform = Symbol("dartx.getActiveUniform");
const $getAttachedShaders = dartx.getAttachedShaders = Symbol("dartx.getAttachedShaders");
const $getAttribLocation = dartx.getAttribLocation = Symbol("dartx.getAttribLocation");
const $getBufferParameter = dartx.getBufferParameter = Symbol("dartx.getBufferParameter");
const $getError = dartx.getError = Symbol("dartx.getError");
const $getExtension = dartx.getExtension = Symbol("dartx.getExtension");
const $getFramebufferAttachmentParameter = dartx.getFramebufferAttachmentParameter = Symbol("dartx.getFramebufferAttachmentParameter");
const $getProgramInfoLog = dartx.getProgramInfoLog = Symbol("dartx.getProgramInfoLog");
const $getProgramParameter = dartx.getProgramParameter = Symbol("dartx.getProgramParameter");
const $getRenderbufferParameter = dartx.getRenderbufferParameter = Symbol("dartx.getRenderbufferParameter");
const $getShaderInfoLog = dartx.getShaderInfoLog = Symbol("dartx.getShaderInfoLog");
const $getShaderParameter = dartx.getShaderParameter = Symbol("dartx.getShaderParameter");
const $getShaderPrecisionFormat = dartx.getShaderPrecisionFormat = Symbol("dartx.getShaderPrecisionFormat");
const $getShaderSource = dartx.getShaderSource = Symbol("dartx.getShaderSource");
const $getSupportedExtensions = dartx.getSupportedExtensions = Symbol("dartx.getSupportedExtensions");
const $getTexParameter = dartx.getTexParameter = Symbol("dartx.getTexParameter");
const $getUniform = dartx.getUniform = Symbol("dartx.getUniform");
const $getUniformLocation = dartx.getUniformLocation = Symbol("dartx.getUniformLocation");
const $getVertexAttrib = dartx.getVertexAttrib = Symbol("dartx.getVertexAttrib");
const $getVertexAttribOffset = dartx.getVertexAttribOffset = Symbol("dartx.getVertexAttribOffset");
const $hint = dartx.hint = Symbol("dartx.hint");
const $isBuffer = dartx.isBuffer = Symbol("dartx.isBuffer");
const $isEnabled = dartx.isEnabled = Symbol("dartx.isEnabled");
const $isFramebuffer = dartx.isFramebuffer = Symbol("dartx.isFramebuffer");
const $isProgram = dartx.isProgram = Symbol("dartx.isProgram");
const $isRenderbuffer = dartx.isRenderbuffer = Symbol("dartx.isRenderbuffer");
const $isShader = dartx.isShader = Symbol("dartx.isShader");
const $isTexture = dartx.isTexture = Symbol("dartx.isTexture");
const $linkProgram = dartx.linkProgram = Symbol("dartx.linkProgram");
const $pixelStorei = dartx.pixelStorei = Symbol("dartx.pixelStorei");
const $polygonOffset = dartx.polygonOffset = Symbol("dartx.polygonOffset");
const $renderbufferStorage = dartx.renderbufferStorage = Symbol("dartx.renderbufferStorage");
const $sampleCoverage = dartx.sampleCoverage = Symbol("dartx.sampleCoverage");
const $scissor = dartx.scissor = Symbol("dartx.scissor");
const $shaderSource = dartx.shaderSource = Symbol("dartx.shaderSource");
const $stencilFunc = dartx.stencilFunc = Symbol("dartx.stencilFunc");
const $stencilFuncSeparate = dartx.stencilFuncSeparate = Symbol("dartx.stencilFuncSeparate");
const $stencilMask = dartx.stencilMask = Symbol("dartx.stencilMask");
const $stencilMaskSeparate = dartx.stencilMaskSeparate = Symbol("dartx.stencilMaskSeparate");
const $stencilOp = dartx.stencilOp = Symbol("dartx.stencilOp");
const $stencilOpSeparate = dartx.stencilOpSeparate = Symbol("dartx.stencilOpSeparate");
const $texImage2D = dartx.texImage2D = Symbol("dartx.texImage2D");
const $texParameterf = dartx.texParameterf = Symbol("dartx.texParameterf");
const $texParameteri = dartx.texParameteri = Symbol("dartx.texParameteri");
const $texSubImage2D = dartx.texSubImage2D = Symbol("dartx.texSubImage2D");
const $uniform1f = dartx.uniform1f = Symbol("dartx.uniform1f");
const $uniform1fv = dartx.uniform1fv = Symbol("dartx.uniform1fv");
const $uniform1i = dartx.uniform1i = Symbol("dartx.uniform1i");
const $uniform1iv = dartx.uniform1iv = Symbol("dartx.uniform1iv");
const $uniform2f = dartx.uniform2f = Symbol("dartx.uniform2f");
const $uniform2fv = dartx.uniform2fv = Symbol("dartx.uniform2fv");
const $uniform2i = dartx.uniform2i = Symbol("dartx.uniform2i");
const $uniform2iv = dartx.uniform2iv = Symbol("dartx.uniform2iv");
const $uniform3f = dartx.uniform3f = Symbol("dartx.uniform3f");
const $uniform3fv = dartx.uniform3fv = Symbol("dartx.uniform3fv");
const $uniform3i = dartx.uniform3i = Symbol("dartx.uniform3i");
const $uniform3iv = dartx.uniform3iv = Symbol("dartx.uniform3iv");
const $uniform4f = dartx.uniform4f = Symbol("dartx.uniform4f");
const $uniform4fv = dartx.uniform4fv = Symbol("dartx.uniform4fv");
const $uniform4i = dartx.uniform4i = Symbol("dartx.uniform4i");
const $uniform4iv = dartx.uniform4iv = Symbol("dartx.uniform4iv");
const $uniformMatrix2fv = dartx.uniformMatrix2fv = Symbol("dartx.uniformMatrix2fv");
const $uniformMatrix3fv = dartx.uniformMatrix3fv = Symbol("dartx.uniformMatrix3fv");
const $uniformMatrix4fv = dartx.uniformMatrix4fv = Symbol("dartx.uniformMatrix4fv");
const $useProgram = dartx.useProgram = Symbol("dartx.useProgram");
const $validateProgram = dartx.validateProgram = Symbol("dartx.validateProgram");
const $vertexAttrib1f = dartx.vertexAttrib1f = Symbol("dartx.vertexAttrib1f");
const $vertexAttrib1fv = dartx.vertexAttrib1fv = Symbol("dartx.vertexAttrib1fv");
const $vertexAttrib2f = dartx.vertexAttrib2f = Symbol("dartx.vertexAttrib2f");
const $vertexAttrib2fv = dartx.vertexAttrib2fv = Symbol("dartx.vertexAttrib2fv");
const $vertexAttrib3f = dartx.vertexAttrib3f = Symbol("dartx.vertexAttrib3f");
const $vertexAttrib3fv = dartx.vertexAttrib3fv = Symbol("dartx.vertexAttrib3fv");
const $vertexAttrib4f = dartx.vertexAttrib4f = Symbol("dartx.vertexAttrib4f");
const $vertexAttrib4fv = dartx.vertexAttrib4fv = Symbol("dartx.vertexAttrib4fv");
const $vertexAttribPointer = dartx.vertexAttribPointer = Symbol("dartx.vertexAttribPointer");
const $viewport = dartx.viewport = Symbol("dartx.viewport");
const $readPixels = dartx.readPixels = Symbol("dartx.readPixels");
const $texImage2DUntyped = dartx.texImage2DUntyped = Symbol("dartx.texImage2DUntyped");
const $texImage2DTyped = dartx.texImage2DTyped = Symbol("dartx.texImage2DTyped");
const $texSubImage2DUntyped = dartx.texSubImage2DUntyped = Symbol("dartx.texSubImage2DUntyped");
const $texSubImage2DTyped = dartx.texSubImage2DTyped = Symbol("dartx.texSubImage2DTyped");
const $bufferDataTyped = dartx.bufferDataTyped = Symbol("dartx.bufferDataTyped");
const $bufferSubDataTyped = dartx.bufferSubDataTyped = Symbol("dartx.bufferSubDataTyped");
const $beginQuery = dartx.beginQuery = Symbol("dartx.beginQuery");
const $beginTransformFeedback = dartx.beginTransformFeedback = Symbol("dartx.beginTransformFeedback");
const $bindBufferBase = dartx.bindBufferBase = Symbol("dartx.bindBufferBase");
const $bindBufferRange = dartx.bindBufferRange = Symbol("dartx.bindBufferRange");
const $bindSampler = dartx.bindSampler = Symbol("dartx.bindSampler");
const $bindTransformFeedback = dartx.bindTransformFeedback = Symbol("dartx.bindTransformFeedback");
const $blitFramebuffer = dartx.blitFramebuffer = Symbol("dartx.blitFramebuffer");
const $bufferData2 = dartx.bufferData2 = Symbol("dartx.bufferData2");
const $bufferSubData2 = dartx.bufferSubData2 = Symbol("dartx.bufferSubData2");
const $clearBufferfi = dartx.clearBufferfi = Symbol("dartx.clearBufferfi");
const $clearBufferfv = dartx.clearBufferfv = Symbol("dartx.clearBufferfv");
const $clearBufferiv = dartx.clearBufferiv = Symbol("dartx.clearBufferiv");
const $clearBufferuiv = dartx.clearBufferuiv = Symbol("dartx.clearBufferuiv");
const $clientWaitSync = dartx.clientWaitSync = Symbol("dartx.clientWaitSync");
const $compressedTexImage2D2 = dartx.compressedTexImage2D2 = Symbol("dartx.compressedTexImage2D2");
const $compressedTexImage2D3 = dartx.compressedTexImage2D3 = Symbol("dartx.compressedTexImage2D3");
const $compressedTexImage3D = dartx.compressedTexImage3D = Symbol("dartx.compressedTexImage3D");
const $compressedTexImage3D2 = dartx.compressedTexImage3D2 = Symbol("dartx.compressedTexImage3D2");
const $compressedTexSubImage2D2 = dartx.compressedTexSubImage2D2 = Symbol("dartx.compressedTexSubImage2D2");
const $compressedTexSubImage2D3 = dartx.compressedTexSubImage2D3 = Symbol("dartx.compressedTexSubImage2D3");
const $compressedTexSubImage3D = dartx.compressedTexSubImage3D = Symbol("dartx.compressedTexSubImage3D");
const $compressedTexSubImage3D2 = dartx.compressedTexSubImage3D2 = Symbol("dartx.compressedTexSubImage3D2");
const $copyBufferSubData = dartx.copyBufferSubData = Symbol("dartx.copyBufferSubData");
const $copyTexSubImage3D = dartx.copyTexSubImage3D = Symbol("dartx.copyTexSubImage3D");
const $createQuery = dartx.createQuery = Symbol("dartx.createQuery");
const $createSampler = dartx.createSampler = Symbol("dartx.createSampler");
const $createTransformFeedback = dartx.createTransformFeedback = Symbol("dartx.createTransformFeedback");
const $deleteQuery = dartx.deleteQuery = Symbol("dartx.deleteQuery");
const $deleteSampler = dartx.deleteSampler = Symbol("dartx.deleteSampler");
const $deleteSync = dartx.deleteSync = Symbol("dartx.deleteSync");
const $deleteTransformFeedback = dartx.deleteTransformFeedback = Symbol("dartx.deleteTransformFeedback");
const $drawArraysInstanced = dartx.drawArraysInstanced = Symbol("dartx.drawArraysInstanced");
const $drawBuffers = dartx.drawBuffers = Symbol("dartx.drawBuffers");
const $drawElementsInstanced = dartx.drawElementsInstanced = Symbol("dartx.drawElementsInstanced");
const $drawRangeElements = dartx.drawRangeElements = Symbol("dartx.drawRangeElements");
const $endQuery = dartx.endQuery = Symbol("dartx.endQuery");
const $endTransformFeedback = dartx.endTransformFeedback = Symbol("dartx.endTransformFeedback");
const $fenceSync = dartx.fenceSync = Symbol("dartx.fenceSync");
const $framebufferTextureLayer = dartx.framebufferTextureLayer = Symbol("dartx.framebufferTextureLayer");
const $getActiveUniformBlockName = dartx.getActiveUniformBlockName = Symbol("dartx.getActiveUniformBlockName");
const $getActiveUniformBlockParameter = dartx.getActiveUniformBlockParameter = Symbol("dartx.getActiveUniformBlockParameter");
const $getActiveUniforms = dartx.getActiveUniforms = Symbol("dartx.getActiveUniforms");
const $getBufferSubData = dartx.getBufferSubData = Symbol("dartx.getBufferSubData");
const $getFragDataLocation = dartx.getFragDataLocation = Symbol("dartx.getFragDataLocation");
const $getIndexedParameter = dartx.getIndexedParameter = Symbol("dartx.getIndexedParameter");
const $getInternalformatParameter = dartx.getInternalformatParameter = Symbol("dartx.getInternalformatParameter");
const $getQuery = dartx.getQuery = Symbol("dartx.getQuery");
const $getQueryParameter = dartx.getQueryParameter = Symbol("dartx.getQueryParameter");
const $getSamplerParameter = dartx.getSamplerParameter = Symbol("dartx.getSamplerParameter");
const $getSyncParameter = dartx.getSyncParameter = Symbol("dartx.getSyncParameter");
const $getTransformFeedbackVarying = dartx.getTransformFeedbackVarying = Symbol("dartx.getTransformFeedbackVarying");
const $getUniformBlockIndex = dartx.getUniformBlockIndex = Symbol("dartx.getUniformBlockIndex");
const $getUniformIndices = dartx.getUniformIndices = Symbol("dartx.getUniformIndices");
const $invalidateFramebuffer = dartx.invalidateFramebuffer = Symbol("dartx.invalidateFramebuffer");
const $invalidateSubFramebuffer = dartx.invalidateSubFramebuffer = Symbol("dartx.invalidateSubFramebuffer");
const $isQuery = dartx.isQuery = Symbol("dartx.isQuery");
const $isSampler = dartx.isSampler = Symbol("dartx.isSampler");
const $isSync = dartx.isSync = Symbol("dartx.isSync");
const $isTransformFeedback = dartx.isTransformFeedback = Symbol("dartx.isTransformFeedback");
const $pauseTransformFeedback = dartx.pauseTransformFeedback = Symbol("dartx.pauseTransformFeedback");
const $readBuffer = dartx.readBuffer = Symbol("dartx.readBuffer");
const $readPixels2 = dartx.readPixels2 = Symbol("dartx.readPixels2");
const $renderbufferStorageMultisample = dartx.renderbufferStorageMultisample = Symbol("dartx.renderbufferStorageMultisample");
const $resumeTransformFeedback = dartx.resumeTransformFeedback = Symbol("dartx.resumeTransformFeedback");
const $samplerParameterf = dartx.samplerParameterf = Symbol("dartx.samplerParameterf");
const $samplerParameteri = dartx.samplerParameteri = Symbol("dartx.samplerParameteri");
const $texImage2D2 = dartx.texImage2D2 = Symbol("dartx.texImage2D2");
const $texImage3D = dartx.texImage3D = Symbol("dartx.texImage3D");
const $texStorage2D = dartx.texStorage2D = Symbol("dartx.texStorage2D");
const $texStorage3D = dartx.texStorage3D = Symbol("dartx.texStorage3D");
const $texSubImage2D2 = dartx.texSubImage2D2 = Symbol("dartx.texSubImage2D2");
const $texSubImage3D = dartx.texSubImage3D = Symbol("dartx.texSubImage3D");
const $transformFeedbackVaryings = dartx.transformFeedbackVaryings = Symbol("dartx.transformFeedbackVaryings");
const $uniform1fv2 = dartx.uniform1fv2 = Symbol("dartx.uniform1fv2");
const $uniform1iv2 = dartx.uniform1iv2 = Symbol("dartx.uniform1iv2");
const $uniform1ui = dartx.uniform1ui = Symbol("dartx.uniform1ui");
const $uniform1uiv = dartx.uniform1uiv = Symbol("dartx.uniform1uiv");
const $uniform2fv2 = dartx.uniform2fv2 = Symbol("dartx.uniform2fv2");
const $uniform2iv2 = dartx.uniform2iv2 = Symbol("dartx.uniform2iv2");
const $uniform2ui = dartx.uniform2ui = Symbol("dartx.uniform2ui");
const $uniform2uiv = dartx.uniform2uiv = Symbol("dartx.uniform2uiv");
const $uniform3fv2 = dartx.uniform3fv2 = Symbol("dartx.uniform3fv2");
const $uniform3iv2 = dartx.uniform3iv2 = Symbol("dartx.uniform3iv2");
const $uniform3ui = dartx.uniform3ui = Symbol("dartx.uniform3ui");
const $uniform3uiv = dartx.uniform3uiv = Symbol("dartx.uniform3uiv");
const $uniform4fv2 = dartx.uniform4fv2 = Symbol("dartx.uniform4fv2");
const $uniform4iv2 = dartx.uniform4iv2 = Symbol("dartx.uniform4iv2");
const $uniform4ui = dartx.uniform4ui = Symbol("dartx.uniform4ui");
const $uniform4uiv = dartx.uniform4uiv = Symbol("dartx.uniform4uiv");
const $uniformBlockBinding = dartx.uniformBlockBinding = Symbol("dartx.uniformBlockBinding");
const $uniformMatrix2fv2 = dartx.uniformMatrix2fv2 = Symbol("dartx.uniformMatrix2fv2");
const $uniformMatrix2x3fv = dartx.uniformMatrix2x3fv = Symbol("dartx.uniformMatrix2x3fv");
const $uniformMatrix2x4fv = dartx.uniformMatrix2x4fv = Symbol("dartx.uniformMatrix2x4fv");
const $uniformMatrix3fv2 = dartx.uniformMatrix3fv2 = Symbol("dartx.uniformMatrix3fv2");
const $uniformMatrix3x2fv = dartx.uniformMatrix3x2fv = Symbol("dartx.uniformMatrix3x2fv");
const $uniformMatrix3x4fv = dartx.uniformMatrix3x4fv = Symbol("dartx.uniformMatrix3x4fv");
const $uniformMatrix4fv2 = dartx.uniformMatrix4fv2 = Symbol("dartx.uniformMatrix4fv2");
const $uniformMatrix4x2fv = dartx.uniformMatrix4x2fv = Symbol("dartx.uniformMatrix4x2fv");
const $uniformMatrix4x3fv = dartx.uniformMatrix4x3fv = Symbol("dartx.uniformMatrix4x3fv");
const $vertexAttribDivisor = dartx.vertexAttribDivisor = Symbol("dartx.vertexAttribDivisor");
const $vertexAttribI4i = dartx.vertexAttribI4i = Symbol("dartx.vertexAttribI4i");
const $vertexAttribI4iv = dartx.vertexAttribI4iv = Symbol("dartx.vertexAttribI4iv");
const $vertexAttribI4ui = dartx.vertexAttribI4ui = Symbol("dartx.vertexAttribI4ui");
const $vertexAttribI4uiv = dartx.vertexAttribI4uiv = Symbol("dartx.vertexAttribI4uiv");
const $vertexAttribIPointer = dartx.vertexAttribIPointer = Symbol("dartx.vertexAttribIPointer");
const $waitSync = dartx.waitSync = Symbol("dartx.waitSync");
const $precision = dartx.precision = Symbol("dartx.precision");
const $rangeMax = dartx.rangeMax = Symbol("dartx.rangeMax");
const $rangeMin = dartx.rangeMin = Symbol("dartx.rangeMin");
const $lastUploadedVideoFrameWasSkipped = dartx.lastUploadedVideoFrameWasSkipped = Symbol("dartx.lastUploadedVideoFrameWasSkipped");
const $lastUploadedVideoHeight = dartx.lastUploadedVideoHeight = Symbol("dartx.lastUploadedVideoHeight");
const $lastUploadedVideoTimestamp = dartx.lastUploadedVideoTimestamp = Symbol("dartx.lastUploadedVideoTimestamp");
const $lastUploadedVideoWidth = dartx.lastUploadedVideoWidth = Symbol("dartx.lastUploadedVideoWidth");
const $changeVersion = dartx.changeVersion = Symbol("dartx.changeVersion");
const $readTransaction = dartx.readTransaction = Symbol("dartx.readTransaction");
const $transaction_future = dartx.transaction_future = Symbol("dartx.transaction_future");
const $insertId = dartx.insertId = Symbol("dartx.insertId");
const $rowsAffected = dartx.rowsAffected = Symbol("dartx.rowsAffected");
const $executeSql = dartx.executeSql = Symbol("dartx.executeSql");
let JSArrayOfString = () => (JSArrayOfString = dart.constFn(_interceptors.JSArray$(core.String)))();
let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.fnType(dart.dynamic, [])))();
let IdentityMapOfString$Object = () => (IdentityMapOfString$Object = dart.constFn(_js_helper.IdentityMap$(core.String, core.Object)))();
let IdentityMapOfObject$int = () => (IdentityMapOfObject$int = dart.constFn(_js_helper.IdentityMap$(core.Object, core.int)))();
let ListOfObject = () => (ListOfObject = dart.constFn(core.List$(core.Object)))();
let IdentityMapOfTypeVariable$Object = () => (IdentityMapOfTypeVariable$Object = dart.constFn(_js_helper.IdentityMap$(dart.TypeVariable, core.Object)))();
let ListOfTypeVariable = () => (ListOfTypeVariable = dart.constFn(core.List$(dart.TypeVariable)))();
let IterableOfTypeVariable = () => (IterableOfTypeVariable = dart.constFn(core.Iterable$(dart.TypeVariable)))();
let JSArrayOfTypeVariable = () => (JSArrayOfTypeVariable = dart.constFn(_interceptors.JSArray$(dart.TypeVariable)))();
let ListOfType = () => (ListOfType = dart.constFn(core.List$(core.Type)))();
let IterableOfTypeConstraint = () => (IterableOfTypeConstraint = dart.constFn(core.Iterable$(dart.TypeConstraint)))();
let MapOfTypeVariable$TypeConstraint = () => (MapOfTypeVariable$TypeConstraint = dart.constFn(core.Map$(dart.TypeVariable, dart.TypeConstraint)))();
let JSArrayOfObject = () => (JSArrayOfObject = dart.constFn(_interceptors.JSArray$(core.Object)))();
let MapOfSymbol$dynamic = () => (MapOfSymbol$dynamic = dart.constFn(core.Map$(core.Symbol, dart.dynamic)))();
let NameValuePairAndNameValuePairToint = () => (NameValuePairAndNameValuePairToint = dart.constFn(dart.fnType(core.int, [_debugger.NameValuePair, _debugger.NameValuePair])))();
let JSArrayOfNameValuePair = () => (JSArrayOfNameValuePair = dart.constFn(_interceptors.JSArray$(_debugger.NameValuePair)))();
let intAnddynamicToNull = () => (intAnddynamicToNull = dart.constFn(dart.fnType(core.Null, [core.int, dart.dynamic])))();
let StringTobool = () => (StringTobool = dart.constFn(dart.fnType(core.bool, [core.String])))();
let dynamicTodynamic = () => (dynamicTodynamic = dart.constFn(dart.fnType(dart.dynamic, [dart.dynamic])))();
let dynamicToObject = () => (dynamicToObject = dart.constFn(dart.fnType(core.Object, [dart.dynamic])))();
let MapOfdynamic$Object = () => (MapOfdynamic$Object = dart.constFn(core.Map$(dart.dynamic, core.Object)))();
let JSArrayOfFormatter = () => (JSArrayOfFormatter = dart.constFn(_interceptors.JSArray$(_debugger.Formatter)))();
let ListOfFormatter = () => (ListOfFormatter = dart.constFn(core.List$(_debugger.Formatter)))();
let _HashSetOfNameValuePair = () => (_HashSetOfNameValuePair = dart.constFn(collection._HashSet$(_debugger.NameValuePair)))();
let IdentityMapOfString$String = () => (IdentityMapOfString$String = dart.constFn(_js_helper.IdentityMap$(core.String, core.String)))();
let dynamicAnddynamicToNull = () => (dynamicAnddynamicToNull = dart.constFn(dart.fnType(core.Null, [dart.dynamic, dart.dynamic])))();
let HashMapOfString$String = () => (HashMapOfString$String = dart.constFn(collection.HashMap$(core.String, core.String)))();
let dynamicToString = () => (dynamicToString = dart.constFn(dart.fnType(core.String, [dart.dynamic])))();
let IterableOfString = () => (IterableOfString = dart.constFn(core.Iterable$(core.String)))();
let ListOfNameValuePair = () => (ListOfNameValuePair = dart.constFn(core.List$(_debugger.NameValuePair)))();
let VoidToNull = () => (VoidToNull = dart.constFn(dart.fnType(core.Null, [])))();
let StringToNameValuePair = () => (StringToNameValuePair = dart.constFn(dart.fnType(_debugger.NameValuePair, [core.String])))();
let IterableOfNameValuePair = () => (IterableOfNameValuePair = dart.constFn(core.Iterable$(_debugger.NameValuePair)))();
let JSArrayOf_CallMethodRecord = () => (JSArrayOf_CallMethodRecord = dart.constFn(_interceptors.JSArray$(_debugger._CallMethodRecord)))();
let IdentityMapOfString$_MethodStats = () => (IdentityMapOfString$_MethodStats = dart.constFn(_js_helper.IdentityMap$(core.String, _debugger._MethodStats)))();
let VoidToString = () => (VoidToString = dart.constFn(dart.fnType(core.String, [])))();
let StringToString = () => (StringToString = dart.constFn(dart.fnType(core.String, [core.String])))();
let VoidTo_MethodStats = () => (VoidTo_MethodStats = dart.constFn(dart.fnType(_debugger._MethodStats, [])))();
let StringAndStringToint = () => (StringAndStringToint = dart.constFn(dart.fnType(core.int, [core.String, core.String])))();
let JSArrayOfListOfObject = () => (JSArrayOfListOfObject = dart.constFn(_interceptors.JSArray$(ListOfObject())))();
let dynamicAnddynamicToint = () => (dynamicAnddynamicToint = dart.constFn(dart.fnType(core.int, [dart.dynamic, dart.dynamic])))();
let JSIndexableOfString = () => (JSIndexableOfString = dart.constFn(_interceptors.JSIndexable$(core.String)))();
let dynamicToNull = () => (dynamicToNull = dart.constFn(dart.fnType(core.Null, [dart.dynamic])))();
let ComparableOfnum = () => (ComparableOfnum = dart.constFn(core.Comparable$(core.num)))();
let FutureOfNull = () => (FutureOfNull = dart.constFn(async.Future$(core.Null)))();
let dynamicAndStackTraceToNull = () => (dynamicAndStackTraceToNull = dart.constFn(dart.fnType(core.Null, [dart.dynamic, core.StackTrace])))();
let VoidTovoid = () => (VoidTovoid = dart.constFn(dart.fnType(dart.void, [])))();
let TimerToNull = () => (TimerToNull = dart.constFn(dart.fnType(core.Null, [async.Timer])))();
let _FutureOfNull = () => (_FutureOfNull = dart.constFn(async._Future$(core.Null)))();
let VoidTo_FutureOfNull = () => (VoidTo_FutureOfNull = dart.constFn(dart.fnType(_FutureOfNull(), [])))();
let VoidToFuture = () => (VoidToFuture = dart.constFn(dart.fnType(async.Future, [])))();
let dynamicToFuture = () => (dynamicToFuture = dart.constFn(dart.fnType(async.Future, [dart.dynamic])))();
let _FutureOfString = () => (_FutureOfString = dart.constFn(async._Future$(core.String)))();
let _FutureOfbool = () => (_FutureOfbool = dart.constFn(async._Future$(core.bool)))();
let VoidTobool = () => (VoidTobool = dart.constFn(dart.fnType(core.bool, [])))();
let boolToNull = () => (boolToNull = dart.constFn(dart.fnType(core.Null, [core.bool])))();
let _FutureOfint = () => (_FutureOfint = dart.constFn(async._Future$(core.int)))();
let dynamicAndStackTraceTovoid = () => (dynamicAndStackTraceTovoid = dart.constFn(dart.fnType(dart.void, [dart.dynamic, core.StackTrace])))();
let NullAndNullTodynamic = () => (NullAndNullTodynamic = dart.constFn(dart.fnType(dart.dynamic, [core.Null, core.Null])))();
let ObjectAndStackTraceTodynamic = () => (ObjectAndStackTraceTodynamic = dart.constFn(dart.fnType(dart.dynamic, [core.Object, core.StackTrace])))();
let ObjectTodynamic = () => (ObjectTodynamic = dart.constFn(dart.fnType(dart.dynamic, [core.Object])))();
let dynamicTovoid = () => (dynamicTovoid = dart.constFn(dart.fnType(dart.void, [dart.dynamic])))();
let EventSinkTo_ConverterStreamEventSink = () => (EventSinkTo_ConverterStreamEventSink = dart.constFn(dart.fnType(convert._ConverterStreamEventSink, [async.EventSink])))();
let VoidToSetOfR = () => (VoidToSetOfR = dart.constFn(dart.gFnType(R => [core.Set$(R), []])))();
let IterableOfObject = () => (IterableOfObject = dart.constFn(core.Iterable$(core.Object)))();
let IteratorOfObject = () => (IteratorOfObject = dart.constFn(core.Iterator$(core.Object)))();
let ListOfString = () => (ListOfString = dart.constFn(core.List$(core.String)))();
let VoidToint = () => (VoidToint = dart.constFn(dart.fnType(core.int, [])))();
let JSArrayOfint = () => (JSArrayOfint = dart.constFn(_interceptors.JSArray$(core.int)))();
let ObjectTobool = () => (ObjectTobool = dart.constFn(dart.fnType(core.bool, [core.Object])))();
let IteratorOfMatch = () => (IteratorOfMatch = dart.constFn(core.Iterator$(core.Match)))();
let MatchToString = () => (MatchToString = dart.constFn(dart.fnType(core.String, [core.Match])))();
let LinkedMapOfSymbol$dynamic = () => (LinkedMapOfSymbol$dynamic = dart.constFn(_js_helper.LinkedMap$(core.Symbol, dart.dynamic)))();
let SymbolAnddynamicToNull = () => (SymbolAnddynamicToNull = dart.constFn(dart.fnType(core.Null, [core.Symbol, dart.dynamic])))();
let ListOfSymbol = () => (ListOfSymbol = dart.constFn(core.List$(core.Symbol)))();
let ListOfInstanceMirror = () => (ListOfInstanceMirror = dart.constFn(core.List$(mirrors.InstanceMirror)))();
let FutureOfLibraryMirror = () => (FutureOfLibraryMirror = dart.constFn(async.Future$(mirrors.LibraryMirror)))();
let ListOfCombinatorMirror = () => (ListOfCombinatorMirror = dart.constFn(core.List$(mirrors.CombinatorMirror)))();
let dynamicToTypeMirror = () => (dynamicToTypeMirror = dart.constFn(dart.fnType(mirrors.TypeMirror, [dart.dynamic])))();
let ListOfTypeMirror = () => (ListOfTypeMirror = dart.constFn(core.List$(mirrors.TypeMirror)))();
let dynamicToInstanceMirror = () => (dynamicToInstanceMirror = dart.constFn(dart.fnType(mirrors.InstanceMirror, [dart.dynamic])))();
let LinkedMapOfSymbol$DeclarationMirror = () => (LinkedMapOfSymbol$DeclarationMirror = dart.constFn(_js_helper.LinkedMap$(core.Symbol, mirrors.DeclarationMirror)))();
let MapOfSymbol$DeclarationMirror = () => (MapOfSymbol$DeclarationMirror = dart.constFn(core.Map$(core.Symbol, mirrors.DeclarationMirror)))();
let JSArrayOfClassMirror = () => (JSArrayOfClassMirror = dart.constFn(_interceptors.JSArray$(mirrors.ClassMirror)))();
let TypeToTypeMirror = () => (TypeToTypeMirror = dart.constFn(dart.fnType(mirrors.TypeMirror, [core.Type])))();
let IterableOfTypeMirror = () => (IterableOfTypeMirror = dart.constFn(core.Iterable$(mirrors.TypeMirror)))();
let ListOfClassMirror = () => (ListOfClassMirror = dart.constFn(core.List$(mirrors.ClassMirror)))();
let ListOfTypeVariableMirror = () => (ListOfTypeVariableMirror = dart.constFn(core.List$(mirrors.TypeVariableMirror)))();
let MapOfSymbol$MethodMirror = () => (MapOfSymbol$MethodMirror = dart.constFn(core.Map$(core.Symbol, mirrors.MethodMirror)))();
let ListOfParameterMirror = () => (ListOfParameterMirror = dart.constFn(core.List$(mirrors.ParameterMirror)))();
let IterableOfdouble = () => (IterableOfdouble = dart.constFn(core.Iterable$(core.double)))();
let IterableOfint = () => (IterableOfint = dart.constFn(core.Iterable$(core.int)))();
let ListOfint = () => (ListOfint = dart.constFn(core.List$(core.int)))();
let ObjectAndStackTraceToNull = () => (ObjectAndStackTraceToNull = dart.constFn(dart.fnType(core.Null, [core.Object, core.StackTrace])))();
let __Tovoid = () => (__Tovoid = dart.constFn(dart.fnType(dart.void, [], [core.Object])))();
let ObjectTovoid = () => (ObjectTovoid = dart.constFn(dart.fnType(dart.void, [core.Object])))();
let Object__Tovoid = () => (Object__Tovoid = dart.constFn(dart.fnType(dart.void, [core.Object], [core.StackTrace])))();
let ObjectAndStackTraceTovoid = () => (ObjectAndStackTraceTovoid = dart.constFn(dart.fnType(dart.void, [core.Object, core.StackTrace])))();
let dynamicTobool = () => (dynamicTobool = dart.constFn(dart.fnType(core.bool, [dart.dynamic])))();
let FutureOfbool = () => (FutureOfbool = dart.constFn(async.Future$(core.bool)))();
let FutureOrOfbool = () => (FutureOrOfbool = dart.constFn(async.FutureOr$(core.bool)))();
let VoidToFutureOrOfbool = () => (VoidToFutureOrOfbool = dart.constFn(dart.fnType(FutureOrOfbool(), [])))();
let dynamic__ToNull = () => (dynamic__ToNull = dart.constFn(dart.fnType(core.Null, [dart.dynamic], [core.StackTrace])))();
let dynamicTo_Future = () => (dynamicTo_Future = dart.constFn(dart.fnType(async._Future, [dart.dynamic])))();
let FnTovoid = () => (FnTovoid = dart.constFn(dart.fnType(dart.void, [VoidTovoid()])))();
let FnToNull = () => (FnToNull = dart.constFn(dart.fnType(core.Null, [VoidTovoid()])))();
let EmptyIteratorOfNull = () => (EmptyIteratorOfNull = dart.constFn(_internal.EmptyIterator$(core.Null)))();
let ZoneAndZoneDelegateAndZone__Tovoid = () => (ZoneAndZoneDelegateAndZone__Tovoid = dart.constFn(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])))();
let ZoneAndZoneDelegateAndZone__ToR = () => (ZoneAndZoneDelegateAndZone__ToR = dart.constFn(dart.gFnType(R => [R, [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [])]])))();
let ZoneAndZoneDelegateAndZone__ToR$ = () => (ZoneAndZoneDelegateAndZone__ToR$ = dart.constFn(dart.gFnType((R, T) => [R, [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [T]), T]])))();
let ZoneAndZoneDelegateAndZone__ToR$0 = () => (ZoneAndZoneDelegateAndZone__ToR$0 = dart.constFn(dart.gFnType((R, T1, T2) => [R, [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [T1, T2]), T1, T2]])))();
let ZoneAndZoneDelegateAndZone__ToFn = () => (ZoneAndZoneDelegateAndZone__ToFn = dart.constFn(dart.gFnType(R => [dart.fnType(R, []), [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [])]])))();
let ZoneAndZoneDelegateAndZone__ToFn$ = () => (ZoneAndZoneDelegateAndZone__ToFn$ = dart.constFn(dart.gFnType((R, T) => [dart.fnType(R, [T]), [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [T])]])))();
let ZoneAndZoneDelegateAndZone__ToFn$0 = () => (ZoneAndZoneDelegateAndZone__ToFn$0 = dart.constFn(dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(R, [T1, T2])]])))();
let ZoneAndZoneDelegateAndZone__ToAsyncError = () => (ZoneAndZoneDelegateAndZone__ToAsyncError = dart.constFn(dart.fnType(async.AsyncError, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])))();
let ZoneAndZoneDelegateAndZone__Tovoid$ = () => (ZoneAndZoneDelegateAndZone__Tovoid$ = dart.constFn(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, VoidTovoid()])))();
let ZoneAndZoneDelegateAndZone__ToTimer = () => (ZoneAndZoneDelegateAndZone__ToTimer = dart.constFn(dart.fnType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, VoidTovoid()])))();
let TimerTovoid = () => (TimerTovoid = dart.constFn(dart.fnType(dart.void, [async.Timer])))();
let ZoneAndZoneDelegateAndZone__ToTimer$ = () => (ZoneAndZoneDelegateAndZone__ToTimer$ = dart.constFn(dart.fnType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, TimerTovoid()])))();
let ZoneAndZoneDelegateAndZone__Tovoid$0 = () => (ZoneAndZoneDelegateAndZone__Tovoid$0 = dart.constFn(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, core.String])))();
let ZoneAndZoneDelegateAndZone__ToZone = () => (ZoneAndZoneDelegateAndZone__ToZone = dart.constFn(dart.fnType(async.Zone, [async.Zone, async.ZoneDelegate, async.Zone, async.ZoneSpecification, core.Map])))();
let _ZoneFunctionOfFunction = () => (_ZoneFunctionOfFunction = dart.constFn(async._ZoneFunction$(core.Function)))();
let _ZoneFunctionOfZoneAndZoneDelegateAndZone__ToAsyncError = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToAsyncError = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__ToAsyncError())))();
let _ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__Tovoid$())))();
let _ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__ToTimer())))();
let _ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer$ = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer$ = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__ToTimer$())))();
let _ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$ = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$ = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__Tovoid$0())))();
let _ZoneFunctionOfZoneAndZoneDelegateAndZone__ToZone = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToZone = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__ToZone())))();
let _ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$0 = () => (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$0 = dart.constFn(async._ZoneFunction$(ZoneAndZoneDelegateAndZone__Tovoid())))();
let StringTovoid = () => (StringTovoid = dart.constFn(dart.fnType(dart.void, [core.String])))();
let ZoneAndZoneDelegateAndZone__Tovoid$1 = () => (ZoneAndZoneDelegateAndZone__Tovoid$1 = dart.constFn(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, dart.dynamic, core.StackTrace])))();
let ZoneAndZoneDelegateAndZone__ToNull = () => (ZoneAndZoneDelegateAndZone__ToNull = dart.constFn(dart.fnType(core.Null, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])))();
let ObjectToint = () => (ObjectToint = dart.constFn(dart.fnType(core.int, [core.Object])))();
let ObjectAndObjectTobool = () => (ObjectAndObjectTobool = dart.constFn(dart.fnType(core.bool, [core.Object, core.Object])))();
let ComparableAndComparableToint = () => (ComparableAndComparableToint = dart.constFn(dart.fnType(core.int, [core.Comparable, core.Comparable])))();
let _SplayTreeMapNodeTobool = () => (_SplayTreeMapNodeTobool = dart.constFn(dart.fnType(core.bool, [collection._SplayTreeMapNode])))();
let MappedIterableOfString$dynamic = () => (MappedIterableOfString$dynamic = dart.constFn(_internal.MappedIterable$(core.String, dart.dynamic)))();
let MapOfString$dynamic = () => (MapOfString$dynamic = dart.constFn(core.Map$(core.String, dart.dynamic)))();
let StringAnddynamicToNull = () => (StringAnddynamicToNull = dart.constFn(dart.fnType(core.Null, [core.String, dart.dynamic])))();
let IdentityMapOfString$dynamic = () => (IdentityMapOfString$dynamic = dart.constFn(_js_helper.IdentityMap$(core.String, dart.dynamic)))();
let ComparableOfString = () => (ComparableOfString = dart.constFn(core.Comparable$(core.String)))();
let ObjectAndObjectTodynamic = () => (ObjectAndObjectTodynamic = dart.constFn(dart.fnType(dart.dynamic, [core.Object, core.Object])))();
let SinkOfObject = () => (SinkOfObject = dart.constFn(core.Sink$(core.Object)))();
let StringBufferToString = () => (StringBufferToString = dart.constFn(dart.fnType(core.String, [core.StringBuffer])))();
let StringBufferAndStringToStringBuffer = () => (StringBufferAndStringToStringBuffer = dart.constFn(dart.fnType(core.StringBuffer, [core.StringBuffer, core.String])))();
let StreamOfString = () => (StreamOfString = dart.constFn(async.Stream$(core.String)))();
let FutureOfStringBuffer = () => (FutureOfStringBuffer = dart.constFn(async.Future$(core.StringBuffer)))();
let FutureOfString = () => (FutureOfString = dart.constFn(async.Future$(core.String)))();
let IdentityMapOfString$Encoding = () => (IdentityMapOfString$Encoding = dart.constFn(_js_helper.IdentityMap$(core.String, convert.Encoding)))();
let SinkOfListOfint = () => (SinkOfListOfint = dart.constFn(core.Sink$(ListOfint())))();
let StreamOfListOfint = () => (StreamOfListOfint = dart.constFn(async.Stream$(ListOfint())))();
let SinkOfString = () => (SinkOfString = dart.constFn(core.Sink$(core.String)))();
let ListOfintTovoid = () => (ListOfintTovoid = dart.constFn(dart.fnType(dart.void, [ListOfint()])))();
let JSArrayOfListOfint = () => (JSArrayOfListOfint = dart.constFn(_interceptors.JSArray$(ListOfint())))();
let Uint8ListAndintAndintTovoid = () => (Uint8ListAndintAndintTovoid = dart.constFn(dart.fnType(dart.void, [typed_data.Uint8List, core.int, core.int])))();
let SyncIterableOfString = () => (SyncIterableOfString = dart.constFn(_js_helper.SyncIterable$(core.String)))();
let EventSinkOfString = () => (EventSinkOfString = dart.constFn(async.EventSink$(core.String)))();
let EventSinkOfStringTo_LineSplitterEventSink = () => (EventSinkOfStringTo_LineSplitterEventSink = dart.constFn(dart.fnType(convert._LineSplitterEventSink, [EventSinkOfString()])))();
let _StringSinkConversionSinkOfStringSink = () => (_StringSinkConversionSinkOfStringSink = dart.constFn(convert._StringSinkConversionSink$(core.StringSink)))();
let intAndintTovoid = () => (intAndintTovoid = dart.constFn(dart.fnType(dart.void, [core.int, core.int])))();
let intAndintToint = () => (intAndintToint = dart.constFn(dart.fnType(core.int, [core.int, core.int])))();
let intToint = () => (intToint = dart.constFn(dart.fnType(core.int, [core.int])))();
let ComparableOfBigInt = () => (ComparableOfBigInt = dart.constFn(core.Comparable$(core.BigInt)))();
let StringToint = () => (StringToint = dart.constFn(dart.fnType(core.int, [core.String])))();
let ComparableOfDateTime = () => (ComparableOfDateTime = dart.constFn(core.Comparable$(core.DateTime)))();
let intToString = () => (intToString = dart.constFn(dart.fnType(core.String, [core.int])))();
let ComparableOfDuration = () => (ComparableOfDuration = dart.constFn(core.Comparable$(core.Duration)))();
let MapOfSymbol$Object = () => (MapOfSymbol$Object = dart.constFn(core.Map$(core.Symbol, core.Object)))();
let BidirectionalIteratorOfint = () => (BidirectionalIteratorOfint = dart.constFn(core.BidirectionalIterator$(core.int)))();
let MapOfString$String = () => (MapOfString$String = dart.constFn(core.Map$(core.String, core.String)))();
let MapOfString$StringAndStringToMapOfString$String = () => (MapOfString$StringAndStringToMapOfString$String = dart.constFn(dart.fnType(MapOfString$String(), [MapOfString$String(), core.String])))();
let StringAndintTovoid = () => (StringAndintTovoid = dart.constFn(dart.fnType(dart.void, [core.String, core.int])))();
let String__Tovoid = () => (String__Tovoid = dart.constFn(dart.fnType(dart.void, [core.String], [dart.dynamic])))();
let StringToNull = () => (StringToNull = dart.constFn(dart.fnType(core.Null, [core.String])))();
let UnmodifiableMapViewOfString$String = () => (UnmodifiableMapViewOfString$String = dart.constFn(collection.UnmodifiableMapView$(core.String, core.String)))();
let MapOfString$ListOfString = () => (MapOfString$ListOfString = dart.constFn(core.Map$(core.String, ListOfString())))();
let StringAndStringTovoid = () => (StringAndStringTovoid = dart.constFn(dart.fnType(dart.void, [core.String, core.String])))();
let IdentityMapOfString$ListOfString = () => (IdentityMapOfString$ListOfString = dart.constFn(_js_helper.IdentityMap$(core.String, ListOfString())))();
let VoidToListOfString = () => (VoidToListOfString = dart.constFn(dart.fnType(ListOfString(), [])))();
let intAndintAndintTovoid = () => (intAndintAndintTovoid = dart.constFn(dart.fnType(dart.void, [core.int, core.int, core.int])))();
let StringAndStringToNull = () => (StringAndStringToNull = dart.constFn(dart.fnType(core.Null, [core.String, core.String])))();
let intToUint8List = () => (intToUint8List = dart.constFn(dart.fnType(typed_data.Uint8List, [core.int])))();
let ListOfUint8List = () => (ListOfUint8List = dart.constFn(core.List$(typed_data.Uint8List)))();
let dynamicAnddynamicToUint8List = () => (dynamicAnddynamicToUint8List = dart.constFn(dart.fnType(typed_data.Uint8List, [dart.dynamic, dart.dynamic])))();
let Uint8ListAndStringAndintTovoid = () => (Uint8ListAndStringAndintTovoid = dart.constFn(dart.fnType(dart.void, [typed_data.Uint8List, core.String, core.int])))();
let FutureOfServiceExtensionResponse = () => (FutureOfServiceExtensionResponse = dart.constFn(async.Future$(developer.ServiceExtensionResponse)))();
let StringAndMapOfString$StringToFutureOfServiceExtensionResponse = () => (StringAndMapOfString$StringToFutureOfServiceExtensionResponse = dart.constFn(dart.fnType(FutureOfServiceExtensionResponse(), [core.String, MapOfString$String()])))();
let IdentityMapOfString$StringAndMapOfString$StringToFutureOfServiceExtensionResponse = () => (IdentityMapOfString$StringAndMapOfString$StringToFutureOfServiceExtensionResponse = dart.constFn(_js_helper.IdentityMap$(core.String, StringAndMapOfString$StringToFutureOfServiceExtensionResponse())))();
let IdentityMapOfString$Metric = () => (IdentityMapOfString$Metric = dart.constFn(_js_helper.IdentityMap$(core.String, developer.Metric)))();
let CompleterOfUri = () => (CompleterOfUri = dart.constFn(async.Completer$(core.Uri)))();
let UriTovoid = () => (UriTovoid = dart.constFn(dart.fnType(dart.void, [core.Uri])))();
let JSArrayOf_SyncBlock = () => (JSArrayOf_SyncBlock = dart.constFn(_interceptors.JSArray$(developer._SyncBlock)))();
let JSArrayOf_AsyncBlock = () => (JSArrayOf_AsyncBlock = dart.constFn(_interceptors.JSArray$(developer._AsyncBlock)))();
let ListOf_AsyncBlock = () => (ListOf_AsyncBlock = dart.constFn(core.List$(developer._AsyncBlock)))();
let JSArrayOfUint8List = () => (JSArrayOfUint8List = dart.constFn(_interceptors.JSArray$(typed_data.Uint8List)))();
let FutureOfDirectory = () => (FutureOfDirectory = dart.constFn(async.Future$(io.Directory)))();
let DirectoryToFutureOfDirectory = () => (DirectoryToFutureOfDirectory = dart.constFn(dart.fnType(FutureOfDirectory(), [io.Directory])))();
let FutureOrOfDirectory = () => (FutureOrOfDirectory = dart.constFn(async.FutureOr$(io.Directory)))();
let boolToFutureOrOfDirectory = () => (boolToFutureOrOfDirectory = dart.constFn(dart.fnType(FutureOrOfDirectory(), [core.bool])))();
let dynamicTo_Directory = () => (dynamicTo_Directory = dart.constFn(dart.fnType(io._Directory, [dart.dynamic])))();
let dynamicToDirectory = () => (dynamicToDirectory = dart.constFn(dart.fnType(io.Directory, [dart.dynamic])))();
let JSArrayOfFileSystemEntity = () => (JSArrayOfFileSystemEntity = dart.constFn(_interceptors.JSArray$(io.FileSystemEntity)))();
let FutureOrOfString = () => (FutureOrOfString = dart.constFn(async.FutureOr$(core.String)))();
let dynamicToFutureOrOfString = () => (dynamicToFutureOrOfString = dart.constFn(dart.fnType(FutureOrOfString(), [dart.dynamic])))();
let dynamicToFutureOrOfbool = () => (dynamicToFutureOrOfbool = dart.constFn(dart.fnType(FutureOrOfbool(), [dart.dynamic])))();
let FileSystemEntityTypeTobool = () => (FileSystemEntityTypeTobool = dart.constFn(dart.fnType(core.bool, [io.FileSystemEntityType])))();
let dynamicToFileSystemEntityType = () => (dynamicToFileSystemEntityType = dart.constFn(dart.fnType(io.FileSystemEntityType, [dart.dynamic])))();
let FutureOfFileSystemEntityType = () => (FutureOfFileSystemEntityType = dart.constFn(async.Future$(io.FileSystemEntityType)))();
let StreamControllerOfFileSystemEntity = () => (StreamControllerOfFileSystemEntity = dart.constFn(async.StreamController$(io.FileSystemEntity)))();
let StreamControllerOfListOfint = () => (StreamControllerOfListOfint = dart.constFn(async.StreamController$(ListOfint())))();
let ListOfintToNull = () => (ListOfintToNull = dart.constFn(dart.fnType(core.Null, [ListOfint()])))();
let RandomAccessFileTovoid = () => (RandomAccessFileTovoid = dart.constFn(dart.fnType(dart.void, [io.RandomAccessFile])))();
let dynamicAnddynamicTovoid = () => (dynamicAnddynamicTovoid = dart.constFn(dart.fnType(dart.void, [dart.dynamic, dart.dynamic])))();
let FutureOfRandomAccessFile = () => (FutureOfRandomAccessFile = dart.constFn(async.Future$(io.RandomAccessFile)))();
let CompleterOfFile = () => (CompleterOfFile = dart.constFn(async.Completer$(io.File)))();
let dynamic__Tovoid = () => (dynamic__Tovoid = dart.constFn(dart.fnType(dart.void, [dart.dynamic], [core.StackTrace])))();
let RandomAccessFileTodynamic = () => (RandomAccessFileTodynamic = dart.constFn(dart.fnType(dart.dynamic, [io.RandomAccessFile])))();
let RandomAccessFileToNull = () => (RandomAccessFileToNull = dart.constFn(dart.fnType(core.Null, [io.RandomAccessFile])))();
let voidToFile = () => (voidToFile = dart.constFn(dart.fnType(io.File, [dart.void])))();
let FutureOfvoid = () => (FutureOfvoid = dart.constFn(async.Future$(dart.void)))();
let RandomAccessFileToFutureOfvoid = () => (RandomAccessFileToFutureOfvoid = dart.constFn(dart.fnType(FutureOfvoid(), [io.RandomAccessFile])))();
let FutureOfFile = () => (FutureOfFile = dart.constFn(async.Future$(io.File)))();
let dynamicTo_File = () => (dynamicTo_File = dart.constFn(dart.fnType(io._File, [dart.dynamic])))();
let DirectoryToFuture = () => (DirectoryToFuture = dart.constFn(dart.fnType(async.Future, [io.Directory])))();
let FileSystemEntityTo_File = () => (FileSystemEntityTo_File = dart.constFn(dart.fnType(io._File, [io.FileSystemEntity])))();
let dynamicToFile = () => (dynamicToFile = dart.constFn(dart.fnType(io.File, [dart.dynamic])))();
let dynamicTo_RandomAccessFile = () => (dynamicTo_RandomAccessFile = dart.constFn(dart.fnType(io._RandomAccessFile, [dart.dynamic])))();
let FutureOrOfint = () => (FutureOrOfint = dart.constFn(async.FutureOr$(core.int)))();
let dynamicToFutureOrOfint = () => (dynamicToFutureOrOfint = dart.constFn(dart.fnType(FutureOrOfint(), [dart.dynamic])))();
let FutureOfint = () => (FutureOfint = dart.constFn(async.Future$(core.int)))();
let dynamicToDateTime = () => (dynamicToDateTime = dart.constFn(dart.fnType(core.DateTime, [dart.dynamic])))();
let FutureOfDateTime = () => (FutureOfDateTime = dart.constFn(async.Future$(core.DateTime)))();
let CompleterOfListOfint = () => (CompleterOfListOfint = dart.constFn(async.Completer$(ListOfint())))();
let FutureOfListOfint = () => (FutureOfListOfint = dart.constFn(async.Future$(ListOfint())))();
let RandomAccessFileToFutureOfListOfint = () => (RandomAccessFileToFutureOfListOfint = dart.constFn(dart.fnType(FutureOfListOfint(), [io.RandomAccessFile])))();
let intToFutureOfListOfint = () => (intToFutureOfListOfint = dart.constFn(dart.fnType(FutureOfListOfint(), [core.int])))();
let ListOfintToFutureOrOfString = () => (ListOfintToFutureOrOfString = dart.constFn(dart.fnType(FutureOrOfString(), [ListOfint()])))();
let FutureOfListOfString = () => (FutureOfListOfString = dart.constFn(async.Future$(ListOfString())))();
let RandomAccessFileTo_File = () => (RandomAccessFileTo_File = dart.constFn(dart.fnType(io._File, [io.RandomAccessFile])))();
let FutureOrOfFile = () => (FutureOrOfFile = dart.constFn(async.FutureOr$(io.File)))();
let RandomAccessFileToFutureOrOfFile = () => (RandomAccessFileToFutureOrOfFile = dart.constFn(dart.fnType(FutureOrOfFile(), [io.RandomAccessFile])))();
let RandomAccessFileToFutureOfFile = () => (RandomAccessFileToFutureOfFile = dart.constFn(dart.fnType(FutureOfFile(), [io.RandomAccessFile])))();
let dynamicAnddynamicToFutureOfServiceExtensionResponse = () => (dynamicAnddynamicToFutureOfServiceExtensionResponse = dart.constFn(dart.fnType(FutureOfServiceExtensionResponse(), [dart.dynamic, dart.dynamic])))();
let dynamicToListOfint = () => (dynamicToListOfint = dart.constFn(dart.fnType(ListOfint(), [dart.dynamic])))();
let dynamicToint = () => (dynamicToint = dart.constFn(dart.fnType(core.int, [dart.dynamic])))();
let dynamicToFileStat = () => (dynamicToFileStat = dart.constFn(dart.fnType(io.FileStat, [dart.dynamic])))();
let FutureOfFileStat = () => (FutureOfFileStat = dart.constFn(async.Future$(io.FileStat)))();
let _FileResourceInfoToMapOfString$dynamic = () => (_FileResourceInfoToMapOfString$dynamic = dart.constFn(dart.fnType(MapOfString$dynamic(), [io._FileResourceInfo])))();
let ListOfMapOfString$dynamic = () => (ListOfMapOfString$dynamic = dart.constFn(core.List$(MapOfString$dynamic())))();
let IdentityMapOfint$_FileResourceInfo = () => (IdentityMapOfint$_FileResourceInfo = dart.constFn(_js_helper.IdentityMap$(core.int, io._FileResourceInfo)))();
let _ProcessResourceInfoToMapOfString$dynamic = () => (_ProcessResourceInfoToMapOfString$dynamic = dart.constFn(dart.fnType(MapOfString$dynamic(), [io._ProcessResourceInfo])))();
let IdentityMapOfint$_ProcessResourceInfo = () => (IdentityMapOfint$_ProcessResourceInfo = dart.constFn(_js_helper.IdentityMap$(core.int, io._ProcessResourceInfo)))();
let _SocketResourceInfoToMapOfString$dynamic = () => (_SocketResourceInfoToMapOfString$dynamic = dart.constFn(dart.fnType(MapOfString$dynamic(), [io._SocketResourceInfo])))();
let IdentityMapOfint$_SocketResourceInfo = () => (IdentityMapOfint$_SocketResourceInfo = dart.constFn(_js_helper.IdentityMap$(core.int, io._SocketResourceInfo)))();
let StreamSinkOfListOfint = () => (StreamSinkOfListOfint = dart.constFn(async.StreamSink$(ListOfint())))();
let dynamicTo_Link = () => (dynamicTo_Link = dart.constFn(dart.fnType(io._Link, [dart.dynamic])))();
let FutureOfLink = () => (FutureOfLink = dart.constFn(async.Future$(io.Link)))();
let FileSystemEntityToFutureOfLink = () => (FileSystemEntityToFutureOfLink = dart.constFn(dart.fnType(FutureOfLink(), [io.FileSystemEntity])))();
let FileSystemEntityTo_Link = () => (FileSystemEntityTo_Link = dart.constFn(dart.fnType(io._Link, [io.FileSystemEntity])))();
let dynamicToLink = () => (dynamicToLink = dart.constFn(dart.fnType(io.Link, [dart.dynamic])))();
let Fn__ToR = () => (Fn__ToR = dart.constFn(dart.gFnType(R => [R, [dart.fnType(R, [])], {zoneValues: core.Map, zoneSpecification: async.ZoneSpecification, onError: core.Function}])))();
let StringToDirectory = () => (StringToDirectory = dart.constFn(dart.fnType(io.Directory, [core.String])))();
let VoidToDirectory = () => (VoidToDirectory = dart.constFn(dart.fnType(io.Directory, [])))();
let StringToFile = () => (StringToFile = dart.constFn(dart.fnType(io.File, [core.String])))();
let StringToFutureOfFileStat = () => (StringToFutureOfFileStat = dart.constFn(dart.fnType(FutureOfFileStat(), [core.String])))();
let StringToFileStat = () => (StringToFileStat = dart.constFn(dart.fnType(io.FileStat, [core.String])))();
let StringAndStringToFutureOfbool = () => (StringAndStringToFutureOfbool = dart.constFn(dart.fnType(FutureOfbool(), [core.String, core.String])))();
let StringAndStringTobool = () => (StringAndStringTobool = dart.constFn(dart.fnType(core.bool, [core.String, core.String])))();
let StringAndboolToFutureOfFileSystemEntityType = () => (StringAndboolToFutureOfFileSystemEntityType = dart.constFn(dart.fnType(FutureOfFileSystemEntityType(), [core.String, core.bool])))();
let StringAndboolToFileSystemEntityType = () => (StringAndboolToFileSystemEntityType = dart.constFn(dart.fnType(io.FileSystemEntityType, [core.String, core.bool])))();
let StreamOfFileSystemEvent = () => (StreamOfFileSystemEvent = dart.constFn(async.Stream$(io.FileSystemEvent)))();
let StringAndintAndboolToStreamOfFileSystemEvent = () => (StringAndintAndboolToStreamOfFileSystemEvent = dart.constFn(dart.fnType(StreamOfFileSystemEvent(), [core.String, core.int, core.bool])))();
let StringToLink = () => (StringToLink = dart.constFn(dart.fnType(io.Link, [core.String])))();
let FutureOfSocket = () => (FutureOfSocket = dart.constFn(async.Future$(io.Socket)))();
let dynamicAndint__ToFutureOfSocket = () => (dynamicAndint__ToFutureOfSocket = dart.constFn(dart.fnType(FutureOfSocket(), [dart.dynamic, core.int], {sourceAddress: dart.dynamic, timeout: core.Duration})))();
let ConnectionTaskOfSocket = () => (ConnectionTaskOfSocket = dart.constFn(io.ConnectionTask$(io.Socket)))();
let FutureOfConnectionTaskOfSocket = () => (FutureOfConnectionTaskOfSocket = dart.constFn(async.Future$(ConnectionTaskOfSocket())))();
let dynamicAndint__ToFutureOfConnectionTaskOfSocket = () => (dynamicAndint__ToFutureOfConnectionTaskOfSocket = dart.constFn(dart.fnType(FutureOfConnectionTaskOfSocket(), [dart.dynamic, core.int], {sourceAddress: dart.dynamic})))();
let _CaseInsensitiveStringMapOfString = () => (_CaseInsensitiveStringMapOfString = dart.constFn(io._CaseInsensitiveStringMap$(core.String)))();
let RawSecureServerSocketToSecureServerSocket = () => (RawSecureServerSocketToSecureServerSocket = dart.constFn(dart.fnType(io.SecureServerSocket, [io.RawSecureServerSocket])))();
let FutureOfSecureServerSocket = () => (FutureOfSecureServerSocket = dart.constFn(async.Future$(io.SecureServerSocket)))();
let RawSecureSocketToSecureSocket = () => (RawSecureSocketToSecureSocket = dart.constFn(dart.fnType(io.SecureSocket, [io.RawSecureSocket])))();
let FutureOfSecureSocket = () => (FutureOfSecureSocket = dart.constFn(async.Future$(io.SecureSocket)))();
let ConnectionTaskOfSecureSocket = () => (ConnectionTaskOfSecureSocket = dart.constFn(io.ConnectionTask$(io.SecureSocket)))();
let ConnectionTaskOfRawSecureSocket = () => (ConnectionTaskOfRawSecureSocket = dart.constFn(io.ConnectionTask$(io.RawSecureSocket)))();
let ConnectionTaskOfRawSecureSocketToConnectionTaskOfSecureSocket = () => (ConnectionTaskOfRawSecureSocketToConnectionTaskOfSecureSocket = dart.constFn(dart.fnType(ConnectionTaskOfSecureSocket(), [ConnectionTaskOfRawSecureSocket()])))();
let FutureOfConnectionTaskOfSecureSocket = () => (FutureOfConnectionTaskOfSecureSocket = dart.constFn(async.Future$(ConnectionTaskOfSecureSocket())))();
let StreamSubscriptionOfRawSocketEvent = () => (StreamSubscriptionOfRawSocketEvent = dart.constFn(async.StreamSubscription$(io.RawSocketEvent)))();
let FutureOfRawSecureSocket = () => (FutureOfRawSecureSocket = dart.constFn(async.Future$(io.RawSecureSocket)))();
let dynamicToFutureOfRawSecureSocket = () => (dynamicToFutureOfRawSecureSocket = dart.constFn(dart.fnType(FutureOfRawSecureSocket(), [dart.dynamic])))();
let StreamControllerOfRawSecureSocket = () => (StreamControllerOfRawSecureSocket = dart.constFn(async.StreamController$(io.RawSecureSocket)))();
let RawServerSocketToRawSecureServerSocket = () => (RawServerSocketToRawSecureServerSocket = dart.constFn(dart.fnType(io.RawSecureServerSocket, [io.RawServerSocket])))();
let FutureOfRawSecureServerSocket = () => (FutureOfRawSecureServerSocket = dart.constFn(async.Future$(io.RawSecureServerSocket)))();
let RawSecureSocketToNull = () => (RawSecureSocketToNull = dart.constFn(dart.fnType(core.Null, [io.RawSecureSocket])))();
let RawSocketToFutureOfRawSecureSocket = () => (RawSocketToFutureOfRawSecureSocket = dart.constFn(dart.fnType(FutureOfRawSecureSocket(), [io.RawSocket])))();
let ConnectionTaskOfRawSocket = () => (ConnectionTaskOfRawSocket = dart.constFn(io.ConnectionTask$(io.RawSocket)))();
let ConnectionTaskOfRawSocketToConnectionTaskOfRawSecureSocket = () => (ConnectionTaskOfRawSocketToConnectionTaskOfRawSecureSocket = dart.constFn(dart.fnType(ConnectionTaskOfRawSecureSocket(), [ConnectionTaskOfRawSocket()])))();
let FutureOfConnectionTaskOfRawSecureSocket = () => (FutureOfConnectionTaskOfRawSecureSocket = dart.constFn(async.Future$(ConnectionTaskOfRawSecureSocket())))();
let StreamSubscriptionOfRawSocket = () => (StreamSubscriptionOfRawSocket = dart.constFn(async.StreamSubscription$(io.RawSocket)))();
let CompleterOf_RawSecureSocket = () => (CompleterOf_RawSecureSocket = dart.constFn(async.Completer$(io._RawSecureSocket)))();
let CompleterOfRawSecureSocket = () => (CompleterOfRawSecureSocket = dart.constFn(async.Completer$(io.RawSecureSocket)))();
let StreamControllerOfRawSocketEvent = () => (StreamControllerOfRawSocketEvent = dart.constFn(async.StreamController$(io.RawSocketEvent)))();
let _FilterStatusToNull = () => (_FilterStatusToNull = dart.constFn(dart.fnType(core.Null, [io._FilterStatus])))();
let dynamicTo_FilterStatus = () => (dynamicTo_FilterStatus = dart.constFn(dart.fnType(io._FilterStatus, [dart.dynamic])))();
let FutureOf_FilterStatus = () => (FutureOf_FilterStatus = dart.constFn(async.Future$(io._FilterStatus)))();
let StreamOfRawSocketEvent = () => (StreamOfRawSocketEvent = dart.constFn(async.Stream$(io.RawSocketEvent)))();
let ListOfintAndStringTovoid = () => (ListOfintAndStringTovoid = dart.constFn(dart.fnType(dart.void, [ListOfint(), core.String])))();
let StreamOfRawSocket = () => (StreamOfRawSocket = dart.constFn(async.Stream$(io.RawSocket)))();
let StreamOfSocket = () => (StreamOfSocket = dart.constFn(async.Stream$(io.Socket)))();
let StreamConsumerOfListOfint = () => (StreamConsumerOfListOfint = dart.constFn(async.StreamConsumer$(ListOfint())))();
let dynamicTo_DartObject = () => (dynamicTo_DartObject = dart.constFn(dart.fnType(js._DartObject, [dart.dynamic])))();
let ExpandoOfFunction = () => (ExpandoOfFunction = dart.constFn(core.Expando$(core.Function)))();
let PointOfnum = () => (PointOfnum = dart.constFn(math.Point$(core.num)))();
let RectangleOfnum = () => (RectangleOfnum = dart.constFn(math.Rectangle$(core.num)))();
let LibraryMirrorTobool = () => (LibraryMirrorTobool = dart.constFn(dart.fnType(core.bool, [mirrors.LibraryMirror])))();
let ListOfdouble = () => (ListOfdouble = dart.constFn(core.List$(core.double)))();
let ListOfFloat32x4 = () => (ListOfFloat32x4 = dart.constFn(core.List$(typed_data.Float32x4)))();
let ListOfInt32x4 = () => (ListOfInt32x4 = dart.constFn(core.List$(typed_data.Int32x4)))();
let ListOfFloat64x2 = () => (ListOfFloat64x2 = dart.constFn(core.List$(typed_data.Float64x2)))();
let EventStreamProviderOfEvent = () => (EventStreamProviderOfEvent = dart.constFn(html$.EventStreamProvider$(html$.Event)))();
let EventStreamProviderOfVersionChangeEvent = () => (EventStreamProviderOfVersionChangeEvent = dart.constFn(html$.EventStreamProvider$(indexed_db.VersionChangeEvent)))();
let FutureOfDatabase = () => (FutureOfDatabase = dart.constFn(async.Future$(indexed_db.Database)))();
let CompleterOfIdbFactory = () => (CompleterOfIdbFactory = dart.constFn(async.Completer$(indexed_db.IdbFactory)))();
let EventToNull = () => (EventToNull = dart.constFn(dart.fnType(core.Null, [html$.Event])))();
let FutureOfIdbFactory = () => (FutureOfIdbFactory = dart.constFn(async.Future$(indexed_db.IdbFactory)))();
let ObserverChangesTovoid = () => (ObserverChangesTovoid = dart.constFn(dart.fnType(dart.void, [indexed_db.ObserverChanges])))();
let CompleterOfDatabase = () => (CompleterOfDatabase = dart.constFn(async.Completer$(indexed_db.Database)))();
let JSArrayOfEventTarget = () => (JSArrayOfEventTarget = dart.constFn(_interceptors.JSArray$(html$.EventTarget)))();
let CompleterOfMapOfString$dynamic = () => (CompleterOfMapOfString$dynamic = dart.constFn(async.Completer$(MapOfString$dynamic())))();
let NodeTobool = () => (NodeTobool = dart.constFn(dart.fnType(core.bool, [html$.Node])))();
let CompleterOfScrollState = () => (CompleterOfScrollState = dart.constFn(async.Completer$(html$.ScrollState)))();
let ScrollStateToNull = () => (ScrollStateToNull = dart.constFn(dart.fnType(core.Null, [html$.ScrollState])))();
let MapOfString$dynamicTobool = () => (MapOfString$dynamicTobool = dart.constFn(dart.fnType(core.bool, [MapOfString$dynamic()])))();
let Map__Todynamic = () => (Map__Todynamic = dart.constFn(dart.fnType(dart.dynamic, [core.Map], [ObjectTovoid()])))();
let ListOfNode = () => (ListOfNode = dart.constFn(core.List$(html$.Node)))();
let EventTargetToString = () => (EventTargetToString = dart.constFn(dart.fnType(core.String, [html$.EventTarget])))();
let _CustomEventStreamProviderOfWheelEvent = () => (_CustomEventStreamProviderOfWheelEvent = dart.constFn(html$._CustomEventStreamProvider$(html$.WheelEvent)))();
let _CustomEventStreamProviderOfTransitionEvent = () => (_CustomEventStreamProviderOfTransitionEvent = dart.constFn(html$._CustomEventStreamProvider$(html$.TransitionEvent)))();
let EventStreamProviderOfMouseEvent = () => (EventStreamProviderOfMouseEvent = dart.constFn(html$.EventStreamProvider$(html$.MouseEvent)))();
let EventStreamProviderOfClipboardEvent = () => (EventStreamProviderOfClipboardEvent = dart.constFn(html$.EventStreamProvider$(html$.ClipboardEvent)))();
let EventStreamProviderOfKeyboardEvent = () => (EventStreamProviderOfKeyboardEvent = dart.constFn(html$.EventStreamProvider$(html$.KeyboardEvent)))();
let EventStreamProviderOfTouchEvent = () => (EventStreamProviderOfTouchEvent = dart.constFn(html$.EventStreamProvider$(html$.TouchEvent)))();
let EventStreamProviderOfWheelEvent = () => (EventStreamProviderOfWheelEvent = dart.constFn(html$.EventStreamProvider$(html$.WheelEvent)))();
let ListOfnum = () => (ListOfnum = dart.constFn(core.List$(core.num)))();
let EventStreamProviderOfProgressEvent = () => (EventStreamProviderOfProgressEvent = dart.constFn(html$.EventStreamProvider$(html$.ProgressEvent)))();
let ListOfBackgroundFetchSettledFetch = () => (ListOfBackgroundFetchSettledFetch = dart.constFn(core.List$(html$.BackgroundFetchSettledFetch)))();
let ListOfDetectedBarcode = () => (ListOfDetectedBarcode = dart.constFn(core.List$(html$.DetectedBarcode)))();
let EventStreamProviderOfMessageEvent = () => (EventStreamProviderOfMessageEvent = dart.constFn(html$.EventStreamProvider$(html$.MessageEvent)))();
let EventStreamProviderOfPopStateEvent = () => (EventStreamProviderOfPopStateEvent = dart.constFn(html$.EventStreamProvider$(html$.PopStateEvent)))();
let EventStreamProviderOfStorageEvent = () => (EventStreamProviderOfStorageEvent = dart.constFn(html$.EventStreamProvider$(html$.StorageEvent)))();
let CompleterOfBlob = () => (CompleterOfBlob = dart.constFn(async.Completer$(html$.Blob)))();
let BlobToNull = () => (BlobToNull = dart.constFn(dart.fnType(core.Null, [html$.Blob])))();
let EventStreamProviderOfContextEvent = () => (EventStreamProviderOfContextEvent = dart.constFn(html$.EventStreamProvider$(web_gl.ContextEvent)))();
let ListOfClient = () => (ListOfClient = dart.constFn(core.List$(html$.Client)))();
let ListOfCssRule = () => (ListOfCssRule = dart.constFn(core.List$(html$.CssRule)))();
let dynamicToCssStyleDeclaration = () => (dynamicToCssStyleDeclaration = dart.constFn(dart.fnType(html$.CssStyleDeclaration, [dart.dynamic])))();
let IterableOfCssStyleDeclaration = () => (IterableOfCssStyleDeclaration = dart.constFn(core.Iterable$(html$.CssStyleDeclaration)))();
let CssStyleDeclarationTovoid = () => (CssStyleDeclarationTovoid = dart.constFn(dart.fnType(dart.void, [html$.CssStyleDeclaration])))();
let IterableOfElement = () => (IterableOfElement = dart.constFn(core.Iterable$(html$.Element)))();
let ListOfCssTransformComponent = () => (ListOfCssTransformComponent = dart.constFn(core.List$(html$.CssTransformComponent)))();
let ListOfFile = () => (ListOfFile = dart.constFn(core.List$(html$.File)))();
let CompleterOfEntry = () => (CompleterOfEntry = dart.constFn(async.Completer$(html$.Entry)))();
let EntryToNull = () => (EntryToNull = dart.constFn(dart.fnType(core.Null, [html$.Entry])))();
let DomExceptionToNull = () => (DomExceptionToNull = dart.constFn(dart.fnType(core.Null, [html$.DomException])))();
let CompleterOfMetadata = () => (CompleterOfMetadata = dart.constFn(async.Completer$(html$.Metadata)))();
let MetadataToNull = () => (MetadataToNull = dart.constFn(dart.fnType(core.Null, [html$.Metadata])))();
let ListOfEntry = () => (ListOfEntry = dart.constFn(core.List$(html$.Entry)))();
let CompleterOfListOfEntry = () => (CompleterOfListOfEntry = dart.constFn(async.Completer$(ListOfEntry())))();
let ListToNull = () => (ListToNull = dart.constFn(dart.fnType(core.Null, [core.List])))();
let ListOfStyleSheet = () => (ListOfStyleSheet = dart.constFn(core.List$(html$.StyleSheet)))();
let EventStreamProviderOfSecurityPolicyViolationEvent = () => (EventStreamProviderOfSecurityPolicyViolationEvent = dart.constFn(html$.EventStreamProvider$(html$.SecurityPolicyViolationEvent)))();
let ListOfElement = () => (ListOfElement = dart.constFn(core.List$(html$.Element)))();
let ListOfRectangleOfnum = () => (ListOfRectangleOfnum = dart.constFn(core.List$(RectangleOfnum())))();
let JavaScriptIndexingBehaviorOfRectangleOfnum = () => (JavaScriptIndexingBehaviorOfRectangleOfnum = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(RectangleOfnum())))();
let JavaScriptIndexingBehaviorOfString = () => (JavaScriptIndexingBehaviorOfString = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(core.String)))();
let ElementTobool = () => (ElementTobool = dart.constFn(dart.fnType(core.bool, [html$.Element])))();
let _EventStreamOfEvent = () => (_EventStreamOfEvent = dart.constFn(html$._EventStream$(html$.Event)))();
let _ElementEventStreamImplOfEvent = () => (_ElementEventStreamImplOfEvent = dart.constFn(html$._ElementEventStreamImpl$(html$.Event)))();
let ListOfMessagePort = () => (ListOfMessagePort = dart.constFn(core.List$(html$.MessagePort)))();
let ListOfDetectedFace = () => (ListOfDetectedFace = dart.constFn(core.List$(html$.DetectedFace)))();
let CompleterOfFileWriter = () => (CompleterOfFileWriter = dart.constFn(async.Completer$(html$.FileWriter)))();
let FileWriterToNull = () => (FileWriterToNull = dart.constFn(dart.fnType(core.Null, [html$.FileWriter])))();
let CompleterOfFile$ = () => (CompleterOfFile$ = dart.constFn(async.Completer$(html$.File)))();
let FileToNull = () => (FileToNull = dart.constFn(dart.fnType(core.Null, [html$.File])))();
let JavaScriptIndexingBehaviorOfFile = () => (JavaScriptIndexingBehaviorOfFile = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.File)))();
let EventStreamProviderOfFontFaceSetLoadEvent = () => (EventStreamProviderOfFontFaceSetLoadEvent = dart.constFn(html$.EventStreamProvider$(html$.FontFaceSetLoadEvent)))();
let ListOfFontFace = () => (ListOfFontFace = dart.constFn(core.List$(html$.FontFace)))();
let ListOfGamepadButton = () => (ListOfGamepadButton = dart.constFn(core.List$(html$.GamepadButton)))();
let CompleterOfGeoposition = () => (CompleterOfGeoposition = dart.constFn(async.Completer$(html$.Geoposition)))();
let GeopositionToNull = () => (GeopositionToNull = dart.constFn(dart.fnType(core.Null, [html$.Geoposition])))();
let PositionErrorToNull = () => (PositionErrorToNull = dart.constFn(dart.fnType(core.Null, [html$.PositionError])))();
let StreamControllerOfGeoposition = () => (StreamControllerOfGeoposition = dart.constFn(async.StreamController$(html$.Geoposition)))();
let GeopositionTovoid = () => (GeopositionTovoid = dart.constFn(dart.fnType(dart.void, [html$.Geoposition])))();
let JavaScriptIndexingBehaviorOfNode = () => (JavaScriptIndexingBehaviorOfNode = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.Node)))();
let _CustomEventStreamProviderOfEvent = () => (_CustomEventStreamProviderOfEvent = dart.constFn(html$._CustomEventStreamProvider$(html$.Event)))();
let HttpRequestToString = () => (HttpRequestToString = dart.constFn(dart.fnType(core.String, [html$.HttpRequest])))();
let CompleterOfHttpRequest = () => (CompleterOfHttpRequest = dart.constFn(async.Completer$(html$.HttpRequest)))();
let ProgressEventToNull = () => (ProgressEventToNull = dart.constFn(dart.fnType(core.Null, [html$.ProgressEvent])))();
let CompleterOfString = () => (CompleterOfString = dart.constFn(async.Completer$(core.String)))();
let ListAndIntersectionObserverTovoid = () => (ListAndIntersectionObserverTovoid = dart.constFn(dart.fnType(dart.void, [core.List, html$.IntersectionObserver])))();
let ListOfMediaDeviceInfo = () => (ListOfMediaDeviceInfo = dart.constFn(core.List$(html$.MediaDeviceInfo)))();
let ListOfMediaStreamTrack = () => (ListOfMediaStreamTrack = dart.constFn(core.List$(html$.MediaStreamTrack)))();
let EventStreamProviderOfMidiMessageEvent = () => (EventStreamProviderOfMidiMessageEvent = dart.constFn(html$.EventStreamProvider$(html$.MidiMessageEvent)))();
let MapTobool = () => (MapTobool = dart.constFn(dart.fnType(core.bool, [core.Map])))();
let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.fnType(dart.void, [core.String, dart.dynamic])))();
let JSArrayOfMap = () => (JSArrayOfMap = dart.constFn(_interceptors.JSArray$(core.Map)))();
let ListOfMimeType = () => (ListOfMimeType = dart.constFn(core.List$(html$.MimeType)))();
let JavaScriptIndexingBehaviorOfMimeType = () => (JavaScriptIndexingBehaviorOfMimeType = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.MimeType)))();
let ListAndMutationObserverTovoid = () => (ListAndMutationObserverTovoid = dart.constFn(dart.fnType(dart.void, [core.List, html$.MutationObserver])))();
let CompleterOfMediaStream = () => (CompleterOfMediaStream = dart.constFn(async.Completer$(html$.MediaStream)))();
let MediaStreamToNull = () => (MediaStreamToNull = dart.constFn(dart.fnType(core.Null, [html$.MediaStream])))();
let NavigatorUserMediaErrorToNull = () => (NavigatorUserMediaErrorToNull = dart.constFn(dart.fnType(core.Null, [html$.NavigatorUserMediaError])))();
let IterableOfNode = () => (IterableOfNode = dart.constFn(core.Iterable$(html$.Node)))();
let ListOfTaskAttributionTiming = () => (ListOfTaskAttributionTiming = dart.constFn(core.List$(html$.TaskAttributionTiming)))();
let ListOfPerformanceServerTiming = () => (ListOfPerformanceServerTiming = dart.constFn(core.List$(html$.PerformanceServerTiming)))();
let PerformanceObserverEntryListAndPerformanceObserverTovoid = () => (PerformanceObserverEntryListAndPerformanceObserverTovoid = dart.constFn(dart.fnType(dart.void, [html$.PerformanceObserverEntryList, html$.PerformanceObserver])))();
let JavaScriptIndexingBehaviorOfPlugin = () => (JavaScriptIndexingBehaviorOfPlugin = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.Plugin)))();
let ListOfPlugin = () => (ListOfPlugin = dart.constFn(core.List$(html$.Plugin)))();
let ListOfPresentationConnection = () => (ListOfPresentationConnection = dart.constFn(core.List$(html$.PresentationConnection)))();
let ListAndReportingObserverTovoid = () => (ListAndReportingObserverTovoid = dart.constFn(dart.fnType(dart.void, [core.List, html$.ReportingObserver])))();
let ListOfResizeObserverEntry = () => (ListOfResizeObserverEntry = dart.constFn(core.List$(html$.ResizeObserverEntry)))();
let ListOfResizeObserverEntryAndResizeObserverTovoid = () => (ListOfResizeObserverEntryAndResizeObserverTovoid = dart.constFn(dart.fnType(dart.void, [ListOfResizeObserverEntry(), html$.ResizeObserver])))();
let EventStreamProviderOfRtcDtmfToneChangeEvent = () => (EventStreamProviderOfRtcDtmfToneChangeEvent = dart.constFn(html$.EventStreamProvider$(html$.RtcDtmfToneChangeEvent)))();
let JSArrayOfMapOfString$String = () => (JSArrayOfMapOfString$String = dart.constFn(_interceptors.JSArray$(MapOfString$String())))();
let CompleterOfRtcStatsResponse = () => (CompleterOfRtcStatsResponse = dart.constFn(async.Completer$(html$.RtcStatsResponse)))();
let RtcStatsResponseToNull = () => (RtcStatsResponseToNull = dart.constFn(dart.fnType(core.Null, [html$.RtcStatsResponse])))();
let EventStreamProviderOfMediaStreamEvent = () => (EventStreamProviderOfMediaStreamEvent = dart.constFn(html$.EventStreamProvider$(html$.MediaStreamEvent)))();
let EventStreamProviderOfRtcDataChannelEvent = () => (EventStreamProviderOfRtcDataChannelEvent = dart.constFn(html$.EventStreamProvider$(html$.RtcDataChannelEvent)))();
let EventStreamProviderOfRtcPeerConnectionIceEvent = () => (EventStreamProviderOfRtcPeerConnectionIceEvent = dart.constFn(html$.EventStreamProvider$(html$.RtcPeerConnectionIceEvent)))();
let ListOfMediaStream = () => (ListOfMediaStream = dart.constFn(core.List$(html$.MediaStream)))();
let IterableOfOptionElement = () => (IterableOfOptionElement = dart.constFn(core.Iterable$(html$.OptionElement)))();
let UnmodifiableListViewOfOptionElement = () => (UnmodifiableListViewOfOptionElement = dart.constFn(collection.UnmodifiableListView$(html$.OptionElement)))();
let OptionElementTobool = () => (OptionElementTobool = dart.constFn(dart.fnType(core.bool, [html$.OptionElement])))();
let JSArrayOfOptionElement = () => (JSArrayOfOptionElement = dart.constFn(_interceptors.JSArray$(html$.OptionElement)))();
let ListOfServiceWorkerRegistration = () => (ListOfServiceWorkerRegistration = dart.constFn(core.List$(html$.ServiceWorkerRegistration)))();
let EventStreamProviderOfForeignFetchEvent = () => (EventStreamProviderOfForeignFetchEvent = dart.constFn(html$.EventStreamProvider$(html$.ForeignFetchEvent)))();
let ListOfNotification = () => (ListOfNotification = dart.constFn(core.List$(html$.Notification)))();
let JavaScriptIndexingBehaviorOfSourceBuffer = () => (JavaScriptIndexingBehaviorOfSourceBuffer = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.SourceBuffer)))();
let ListOfSourceBuffer = () => (ListOfSourceBuffer = dart.constFn(core.List$(html$.SourceBuffer)))();
let JavaScriptIndexingBehaviorOfSpeechGrammar = () => (JavaScriptIndexingBehaviorOfSpeechGrammar = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.SpeechGrammar)))();
let ListOfSpeechGrammar = () => (ListOfSpeechGrammar = dart.constFn(core.List$(html$.SpeechGrammar)))();
let EventStreamProviderOfSpeechRecognitionError = () => (EventStreamProviderOfSpeechRecognitionError = dart.constFn(html$.EventStreamProvider$(html$.SpeechRecognitionError)))();
let EventStreamProviderOfSpeechRecognitionEvent = () => (EventStreamProviderOfSpeechRecognitionEvent = dart.constFn(html$.EventStreamProvider$(html$.SpeechRecognitionEvent)))();
let ListOfSpeechRecognitionResult = () => (ListOfSpeechRecognitionResult = dart.constFn(core.List$(html$.SpeechRecognitionResult)))();
let EventStreamProviderOfSpeechSynthesisEvent = () => (EventStreamProviderOfSpeechSynthesisEvent = dart.constFn(html$.EventStreamProvider$(html$.SpeechSynthesisEvent)))();
let _WrappedListOfTableSectionElement = () => (_WrappedListOfTableSectionElement = dart.constFn(html$._WrappedList$(html$.TableSectionElement)))();
let _WrappedListOfTableRowElement = () => (_WrappedListOfTableRowElement = dart.constFn(html$._WrappedList$(html$.TableRowElement)))();
let _WrappedListOfTableCellElement = () => (_WrappedListOfTableCellElement = dart.constFn(html$._WrappedList$(html$.TableCellElement)))();
let ListOfDetectedText = () => (ListOfDetectedText = dart.constFn(core.List$(html$.DetectedText)))();
let ListOfTextTrackCue = () => (ListOfTextTrackCue = dart.constFn(core.List$(html$.TextTrackCue)))();
let JavaScriptIndexingBehaviorOfTextTrackCue = () => (JavaScriptIndexingBehaviorOfTextTrackCue = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.TextTrackCue)))();
let ListOfTextTrack = () => (ListOfTextTrack = dart.constFn(core.List$(html$.TextTrack)))();
let JavaScriptIndexingBehaviorOfTextTrack = () => (JavaScriptIndexingBehaviorOfTextTrack = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.TextTrack)))();
let EventStreamProviderOfTrackEvent = () => (EventStreamProviderOfTrackEvent = dart.constFn(html$.EventStreamProvider$(html$.TrackEvent)))();
let JavaScriptIndexingBehaviorOfTouch = () => (JavaScriptIndexingBehaviorOfTouch = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.Touch)))();
let ListOfTouch = () => (ListOfTouch = dart.constFn(core.List$(html$.Touch)))();
let ListOfVRStageBoundsPoint = () => (ListOfVRStageBoundsPoint = dart.constFn(core.List$(html$.VRStageBoundsPoint)))();
let EventStreamProviderOfCloseEvent = () => (EventStreamProviderOfCloseEvent = dart.constFn(html$.EventStreamProvider$(html$.CloseEvent)))();
let CompleterOfnum = () => (CompleterOfnum = dart.constFn(async.Completer$(core.num)))();
let numToNull = () => (numToNull = dart.constFn(dart.fnType(core.Null, [core.num])))();
let IdleDeadlineTovoid = () => (IdleDeadlineTovoid = dart.constFn(dart.fnType(dart.void, [html$.IdleDeadline])))();
let CompleterOfFileSystem = () => (CompleterOfFileSystem = dart.constFn(async.Completer$(html$.FileSystem)))();
let FileSystemToNull = () => (FileSystemToNull = dart.constFn(dart.fnType(core.Null, [html$.FileSystem])))();
let EventStreamProviderOfDeviceMotionEvent = () => (EventStreamProviderOfDeviceMotionEvent = dart.constFn(html$.EventStreamProvider$(html$.DeviceMotionEvent)))();
let EventStreamProviderOfDeviceOrientationEvent = () => (EventStreamProviderOfDeviceOrientationEvent = dart.constFn(html$.EventStreamProvider$(html$.DeviceOrientationEvent)))();
let EventStreamProviderOfAnimationEvent = () => (EventStreamProviderOfAnimationEvent = dart.constFn(html$.EventStreamProvider$(html$.AnimationEvent)))();
let _EventStreamOfBeforeUnloadEvent = () => (_EventStreamOfBeforeUnloadEvent = dart.constFn(html$._EventStream$(html$.BeforeUnloadEvent)))();
let StreamControllerOfBeforeUnloadEvent = () => (StreamControllerOfBeforeUnloadEvent = dart.constFn(async.StreamController$(html$.BeforeUnloadEvent)))();
let BeforeUnloadEventToNull = () => (BeforeUnloadEventToNull = dart.constFn(dart.fnType(core.Null, [html$.BeforeUnloadEvent])))();
let _ElementEventStreamImplOfBeforeUnloadEvent = () => (_ElementEventStreamImplOfBeforeUnloadEvent = dart.constFn(html$._ElementEventStreamImpl$(html$.BeforeUnloadEvent)))();
let _ElementListEventStreamImplOfBeforeUnloadEvent = () => (_ElementListEventStreamImplOfBeforeUnloadEvent = dart.constFn(html$._ElementListEventStreamImpl$(html$.BeforeUnloadEvent)))();
let EventStreamProviderOfBeforeUnloadEvent = () => (EventStreamProviderOfBeforeUnloadEvent = dart.constFn(html$.EventStreamProvider$(html$.BeforeUnloadEvent)))();
let JavaScriptIndexingBehaviorOfCssRule = () => (JavaScriptIndexingBehaviorOfCssRule = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.CssRule)))();
let ListOfGamepad = () => (ListOfGamepad = dart.constFn(core.List$(html$.Gamepad)))();
let JavaScriptIndexingBehaviorOfGamepad = () => (JavaScriptIndexingBehaviorOfGamepad = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.Gamepad)))();
let JavaScriptIndexingBehaviorOfSpeechRecognitionResult = () => (JavaScriptIndexingBehaviorOfSpeechRecognitionResult = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.SpeechRecognitionResult)))();
let JavaScriptIndexingBehaviorOfStyleSheet = () => (JavaScriptIndexingBehaviorOfStyleSheet = dart.constFn(_js_helper.JavaScriptIndexingBehavior$(html$.StyleSheet)))();
let SetOfString = () => (SetOfString = dart.constFn(core.Set$(core.String)))();
let ElementTodynamic = () => (ElementTodynamic = dart.constFn(dart.fnType(dart.dynamic, [html$.Element])))();
let ElementToCssClassSet = () => (ElementToCssClassSet = dart.constFn(dart.fnType(html$.CssClassSet, [html$.Element])))();
let ListOfCssClassSetImpl = () => (ListOfCssClassSetImpl = dart.constFn(core.List$(html_common.CssClassSetImpl)))();
let _IdentityHashSetOfString = () => (_IdentityHashSetOfString = dart.constFn(collection._IdentityHashSet$(core.String)))();
let CssClassSetImplTovoid = () => (CssClassSetImplTovoid = dart.constFn(dart.fnType(dart.void, [html_common.CssClassSetImpl])))();
let CssClassSetImplTodynamic = () => (CssClassSetImplTodynamic = dart.constFn(dart.fnType(dart.dynamic, [html_common.CssClassSetImpl])))();
let boolAndCssClassSetImplTobool = () => (boolAndCssClassSetImplTobool = dart.constFn(dart.fnType(core.bool, [core.bool, html_common.CssClassSetImpl])))();
let StringAndStringToString = () => (StringAndStringToString = dart.constFn(dart.fnType(core.String, [core.String, core.String])))();
let SetOfStringTobool = () => (SetOfStringTobool = dart.constFn(dart.fnType(core.bool, [SetOfString()])))();
let SetOfStringTovoid = () => (SetOfStringTovoid = dart.constFn(dart.fnType(dart.void, [SetOfString()])))();
let EventTodynamic = () => (EventTodynamic = dart.constFn(dart.fnType(dart.dynamic, [html$.Event])))();
let EventTovoid = () => (EventTovoid = dart.constFn(dart.fnType(dart.void, [html$.Event])))();
let CustomStreamOfKeyEvent = () => (CustomStreamOfKeyEvent = dart.constFn(html$.CustomStream$(html$.KeyEvent)))();
let ElementAndStringAndString__Tobool = () => (ElementAndStringAndString__Tobool = dart.constFn(dart.fnType(core.bool, [html$.Element, core.String, core.String, html$._Html5NodeValidator])))();
let IdentityMapOfString$Function = () => (IdentityMapOfString$Function = dart.constFn(_js_helper.IdentityMap$(core.String, core.Function)))();
let JSArrayOfKeyEvent = () => (JSArrayOfKeyEvent = dart.constFn(_interceptors.JSArray$(html$.KeyEvent)))();
let KeyEventTobool = () => (KeyEventTobool = dart.constFn(dart.fnType(core.bool, [html$.KeyEvent])))();
let ListOfKeyEvent = () => (ListOfKeyEvent = dart.constFn(core.List$(html$.KeyEvent)))();
let JSArrayOfNodeValidator = () => (JSArrayOfNodeValidator = dart.constFn(_interceptors.JSArray$(html$.NodeValidator)))();
let NodeValidatorTobool = () => (NodeValidatorTobool = dart.constFn(dart.fnType(core.bool, [html$.NodeValidator])))();
let ListOfNodeValidator = () => (ListOfNodeValidator = dart.constFn(core.List$(html$.NodeValidator)))();
let NodeAndNodeToint = () => (NodeAndNodeToint = dart.constFn(dart.fnType(core.int, [html$.Node, html$.Node])))();
let IteratorOfNode = () => (IteratorOfNode = dart.constFn(core.Iterator$(html$.Node)))();
let NodeAndNodeTovoid = () => (NodeAndNodeTovoid = dart.constFn(dart.fnType(dart.void, [html$.Node, html$.Node])))();
let dynamicAnddynamicTodynamic = () => (dynamicAnddynamicTodynamic = dart.constFn(dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic])))();
let NodeToElement = () => (NodeToElement = dart.constFn(dart.fnType(html$.Element, [html$.Node])))();
let ListOfLength = () => (ListOfLength = dart.constFn(core.List$(svg$.Length)))();
let ListOfNumber = () => (ListOfNumber = dart.constFn(core.List$(svg$.Number)))();
let ListOfTransform = () => (ListOfTransform = dart.constFn(core.List$(svg$.Transform)))();
let FutureOfAudioBuffer = () => (FutureOfAudioBuffer = dart.constFn(async.Future$(web_audio.AudioBuffer)))();
let CompleterOfAudioBuffer = () => (CompleterOfAudioBuffer = dart.constFn(async.Completer$(web_audio.AudioBuffer)))();
let AudioBufferToNull = () => (AudioBufferToNull = dart.constFn(dart.fnType(core.Null, [web_audio.AudioBuffer])))();
let EventStreamProviderOfAudioProcessingEvent = () => (EventStreamProviderOfAudioProcessingEvent = dart.constFn(html$.EventStreamProvider$(web_audio.AudioProcessingEvent)))();
let CompleterOfSqlTransaction = () => (CompleterOfSqlTransaction = dart.constFn(async.Completer$(web_sql.SqlTransaction)))();
let SqlTransactionToNull = () => (SqlTransactionToNull = dart.constFn(dart.fnType(core.Null, [web_sql.SqlTransaction])))();
let SqlErrorToNull = () => (SqlErrorToNull = dart.constFn(dart.fnType(core.Null, [web_sql.SqlError])))();
let ListOfMap = () => (ListOfMap = dart.constFn(core.List$(core.Map)))();
let CompleterOfSqlResultSet = () => (CompleterOfSqlResultSet = dart.constFn(async.Completer$(web_sql.SqlResultSet)))();
let SqlTransactionAndSqlResultSetToNull = () => (SqlTransactionAndSqlResultSetToNull = dart.constFn(dart.fnType(core.Null, [web_sql.SqlTransaction, web_sql.SqlResultSet])))();
let SqlTransactionAndSqlErrorToNull = () => (SqlTransactionAndSqlErrorToNull = dart.constFn(dart.fnType(core.Null, [web_sql.SqlTransaction, web_sql.SqlError])))();
let StreamOfHttpRequest = () => (StreamOfHttpRequest = dart.constFn(async.Stream$(_http.HttpRequest)))();
let ListOfRedirectInfo = () => (ListOfRedirectInfo = dart.constFn(core.List$(_http.RedirectInfo)))();
let StringAndListOfStringToListOfString = () => (StringAndListOfStringToListOfString = dart.constFn(dart.fnType(ListOfString(), [core.String, ListOfString()])))();
let StringAndListOfStringToNull = () => (StringAndListOfStringToNull = dart.constFn(dart.fnType(core.Null, [core.String, ListOfString()])))();
let JSArrayOfCookie = () => (JSArrayOfCookie = dart.constFn(_interceptors.JSArray$(_http.Cookie)))();
let ListOfCookie = () => (ListOfCookie = dart.constFn(core.List$(_http.Cookie)))();
let CookieToString = () => (CookieToString = dart.constFn(dart.fnType(core.String, [_http.Cookie])))();
let CookieTobool = () => (CookieTobool = dart.constFn(dart.fnType(core.bool, [_http.Cookie])))();
let FutureOfHttpClientResponse = () => (FutureOfHttpClientResponse = dart.constFn(async.Future$(_http.HttpClientResponse)))();
let _HttpClientRequestToFutureOfHttpClientResponse = () => (_HttpClientRequestToFutureOfHttpClientResponse = dart.constFn(dart.fnType(FutureOfHttpClientResponse(), [_http._HttpClientRequest])))();
let dynamicToFutureOfHttpClientResponse = () => (dynamicToFutureOfHttpClientResponse = dart.constFn(dart.fnType(FutureOfHttpClientResponse(), [dart.dynamic])))();
let VoidToFutureOfHttpClientResponse = () => (VoidToFutureOfHttpClientResponse = dart.constFn(dart.fnType(FutureOfHttpClientResponse(), [])))();
let _AuthenticationSchemeTo_Credentials = () => (_AuthenticationSchemeTo_Credentials = dart.constFn(dart.fnType(_http._Credentials, [_http._AuthenticationScheme])))();
let _CredentialsTovoid = () => (_CredentialsTovoid = dart.constFn(dart.fnType(dart.void, [_http._Credentials])))();
let _AuthenticationSchemeAndStringToFuture = () => (_AuthenticationSchemeAndStringToFuture = dart.constFn(dart.fnType(async.Future, [_http._AuthenticationScheme, core.String])))();
let FutureOrOfHttpClientResponse = () => (FutureOrOfHttpClientResponse = dart.constFn(async.FutureOr$(_http.HttpClientResponse)))();
let dynamicToFutureOrOfHttpClientResponse = () => (dynamicToFutureOrOfHttpClientResponse = dart.constFn(dart.fnType(FutureOrOfHttpClientResponse(), [dart.dynamic])))();
let CookieToNull = () => (CookieToNull = dart.constFn(dart.fnType(core.Null, [_http.Cookie])))();
let CompleterOfHttpClientResponse = () => (CompleterOfHttpClientResponse = dart.constFn(async.Completer$(_http.HttpClientResponse)))();
let JSArrayOfRedirectInfo = () => (JSArrayOfRedirectInfo = dart.constFn(_interceptors.JSArray$(_http.RedirectInfo)))();
let ListToFutureOrOfHttpClientResponse = () => (ListToFutureOrOfHttpClientResponse = dart.constFn(dart.fnType(FutureOrOfHttpClientResponse(), [core.List])))();
let JSArrayOfFuture = () => (JSArrayOfFuture = dart.constFn(_interceptors.JSArray$(async.Future)))();
let HttpClientResponseTovoid = () => (HttpClientResponseTovoid = dart.constFn(dart.fnType(dart.void, [_http.HttpClientResponse])))();
let CompleterOfSocket = () => (CompleterOfSocket = dart.constFn(async.Completer$(io.Socket)))();
let dynamicToIterable = () => (dynamicToIterable = dart.constFn(dart.fnType(core.Iterable, [dart.dynamic])))();
let dynamicTo_HttpOutboundMessage = () => (dynamicTo_HttpOutboundMessage = dart.constFn(dart.fnType(_http._HttpOutboundMessage, [dart.dynamic])))();
let dynamicAnddynamicTo_HttpOutboundMessage = () => (dynamicAnddynamicTo_HttpOutboundMessage = dart.constFn(dart.fnType(_http._HttpOutboundMessage, [dart.dynamic, dart.dynamic])))();
let _HttpIncomingToNull = () => (_HttpIncomingToNull = dart.constFn(dart.fnType(core.Null, [_http._HttpIncoming])))();
let CompleterOf_HttpIncoming = () => (CompleterOf_HttpIncoming = dart.constFn(async.Completer$(_http._HttpIncoming)))();
let SocketToSocket = () => (SocketToSocket = dart.constFn(dart.fnType(io.Socket, [io.Socket])))();
let SocketTo_DetachedSocket = () => (SocketTo_DetachedSocket = dart.constFn(dart.fnType(_http._DetachedSocket, [io.Socket])))();
let SocketTovoid = () => (SocketTovoid = dart.constFn(dart.fnType(dart.void, [io.Socket])))();
let SecureSocketTo_HttpClientConnection = () => (SecureSocketTo_HttpClientConnection = dart.constFn(dart.fnType(_http._HttpClientConnection, [io.SecureSocket])))();
let HttpClientResponseToFutureOfSecureSocket = () => (HttpClientResponseToFutureOfSecureSocket = dart.constFn(dart.fnType(FutureOfSecureSocket(), [_http.HttpClientResponse])))();
let FutureOf_HttpClientConnection = () => (FutureOf_HttpClientConnection = dart.constFn(async.Future$(_http._HttpClientConnection)))();
let _HashSetOf_HttpClientConnection = () => (_HashSetOf_HttpClientConnection = dart.constFn(collection._HashSet$(_http._HttpClientConnection)))();
let _HashSetOfConnectionTask = () => (_HashSetOfConnectionTask = dart.constFn(collection._HashSet$(io.ConnectionTask)))();
let FutureOf_ConnectionInfo = () => (FutureOf_ConnectionInfo = dart.constFn(async.Future$(_http._ConnectionInfo)))();
let CompleterOf_ConnectionInfo = () => (CompleterOf_ConnectionInfo = dart.constFn(async.Completer$(_http._ConnectionInfo)))();
let X509CertificateTobool = () => (X509CertificateTobool = dart.constFn(dart.fnType(core.bool, [io.X509Certificate])))();
let _HttpClientConnectionTo_ConnectionInfo = () => (_HttpClientConnectionTo_ConnectionInfo = dart.constFn(dart.fnType(_http._ConnectionInfo, [_http._HttpClientConnection])))();
let FutureOrOf_ConnectionInfo = () => (FutureOrOf_ConnectionInfo = dart.constFn(async.FutureOr$(_http._ConnectionInfo)))();
let dynamicToFutureOrOf_ConnectionInfo = () => (dynamicToFutureOrOf_ConnectionInfo = dart.constFn(dart.fnType(FutureOrOf_ConnectionInfo(), [dart.dynamic])))();
let ConnectionTaskToFutureOf_ConnectionInfo = () => (ConnectionTaskToFutureOf_ConnectionInfo = dart.constFn(dart.fnType(FutureOf_ConnectionInfo(), [io.ConnectionTask])))();
let SetOf_HttpClientConnection = () => (SetOf_HttpClientConnection = dart.constFn(core.Set$(_http._HttpClientConnection)))();
let SetOfConnectionTask = () => (SetOfConnectionTask = dart.constFn(core.Set$(io.ConnectionTask)))();
let IdentityMapOfString$_ConnectionTarget = () => (IdentityMapOfString$_ConnectionTarget = dart.constFn(_js_helper.IdentityMap$(core.String, _http._ConnectionTarget)))();
let JSArrayOf_Credentials = () => (JSArrayOf_Credentials = dart.constFn(_interceptors.JSArray$(_http._Credentials)))();
let JSArrayOf_ProxyCredentials = () => (JSArrayOf_ProxyCredentials = dart.constFn(_interceptors.JSArray$(_http._ProxyCredentials)))();
let Uri__ToString = () => (Uri__ToString = dart.constFn(dart.fnType(core.String, [core.Uri], {environment: MapOfString$String()})))();
let _ConnectionTargetTobool = () => (_ConnectionTargetTobool = dart.constFn(dart.fnType(core.bool, [_http._ConnectionTarget])))();
let FutureOf_HttpClientRequest = () => (FutureOf_HttpClientRequest = dart.constFn(async.Future$(_http._HttpClientRequest)))();
let _ConnectionInfoTo_HttpClientRequest = () => (_ConnectionInfoTo_HttpClientRequest = dart.constFn(dart.fnType(_http._HttpClientRequest, [_http._ConnectionInfo])))();
let FutureOrOf_HttpClientRequest = () => (FutureOrOf_HttpClientRequest = dart.constFn(async.FutureOr$(_http._HttpClientRequest)))();
let _ConnectionInfoToFutureOrOf_HttpClientRequest = () => (_ConnectionInfoToFutureOrOf_HttpClientRequest = dart.constFn(dart.fnType(FutureOrOf_HttpClientRequest(), [_http._ConnectionInfo])))();
let _HttpClientRequestTo_HttpClientRequest = () => (_HttpClientRequestTo_HttpClientRequest = dart.constFn(dart.fnType(_http._HttpClientRequest, [_http._HttpClientRequest])))();
let VoidTo_ConnectionTarget = () => (VoidTo_ConnectionTarget = dart.constFn(dart.fnType(_http._ConnectionTarget, [])))();
let dynamicToFutureOf_ConnectionInfo = () => (dynamicToFutureOf_ConnectionInfo = dart.constFn(dart.fnType(FutureOf_ConnectionInfo(), [dart.dynamic])))();
let _SiteCredentialsAnd_CredentialsTo_SiteCredentials = () => (_SiteCredentialsAnd_CredentialsTo_SiteCredentials = dart.constFn(dart.fnType(_http._SiteCredentials, [_http._SiteCredentials, _http._Credentials])))();
let MapOfString$_ConnectionTarget = () => (MapOfString$_ConnectionTarget = dart.constFn(core.Map$(core.String, _http._ConnectionTarget)))();
let ListOf_Credentials = () => (ListOf_Credentials = dart.constFn(core.List$(_http._Credentials)))();
let ListOf_ProxyCredentials = () => (ListOf_ProxyCredentials = dart.constFn(core.List$(_http._ProxyCredentials)))();
let X509CertificateAndStringAndintTobool = () => (X509CertificateAndStringAndintTobool = dart.constFn(dart.fnType(core.bool, [io.X509Certificate, core.String, core.int])))();
let SocketToNull = () => (SocketToNull = dart.constFn(dart.fnType(core.Null, [io.Socket])))();
let dynamicTo_DetachedSocket = () => (dynamicTo_DetachedSocket = dart.constFn(dart.fnType(_http._DetachedSocket, [dart.dynamic])))();
let IdentityMapOfint$_HttpConnection = () => (IdentityMapOfint$_HttpConnection = dart.constFn(_js_helper.IdentityMap$(core.int, _http._HttpConnection)))();
let LinkedListOf_HttpConnection = () => (LinkedListOf_HttpConnection = dart.constFn(collection.LinkedList$(_http._HttpConnection)))();
let StreamControllerOfHttpRequest = () => (StreamControllerOfHttpRequest = dart.constFn(async.StreamController$(_http.HttpRequest)))();
let ServerSocketTo_HttpServer = () => (ServerSocketTo_HttpServer = dart.constFn(dart.fnType(_http._HttpServer, [io.ServerSocket])))();
let FutureOfHttpServer = () => (FutureOfHttpServer = dart.constFn(async.Future$(_http.HttpServer)))();
let SecureServerSocketTo_HttpServer = () => (SecureServerSocketTo_HttpServer = dart.constFn(dart.fnType(_http._HttpServer, [io.SecureServerSocket])))();
let _HttpConnectionToNull = () => (_HttpConnectionToNull = dart.constFn(dart.fnType(core.Null, [_http._HttpConnection])))();
let _HttpConnectionToMap = () => (_HttpConnectionToMap = dart.constFn(dart.fnType(core.Map, [_http._HttpConnection])))();
let IterableOfMap = () => (IterableOfMap = dart.constFn(core.Iterable$(core.Map)))();
let IdentityMapOfint$_HttpServer = () => (IdentityMapOfint$_HttpServer = dart.constFn(_js_helper.IdentityMap$(core.int, _http._HttpServer)))();
let JSArrayOf_Proxy = () => (JSArrayOf_Proxy = dart.constFn(_interceptors.JSArray$(_http._Proxy)))();
let ListOf_Proxy = () => (ListOf_Proxy = dart.constFn(core.List$(_http._Proxy)))();
let StreamSubscriptionOfListOfint = () => (StreamSubscriptionOfListOfint = dart.constFn(async.StreamSubscription$(ListOfint())))();
let StreamControllerOf_HttpIncoming = () => (StreamControllerOf_HttpIncoming = dart.constFn(async.StreamController$(_http._HttpIncoming)))();
let IdentityMapOfString$_HttpSession = () => (IdentityMapOfString$_HttpSession = dart.constFn(_js_helper.IdentityMap$(core.String, _http._HttpSession)))();
let MapOfString$_HttpSession = () => (MapOfString$_HttpSession = dart.constFn(core.Map$(core.String, _http._HttpSession)))();
let SecurityContextToHttpClient = () => (SecurityContextToHttpClient = dart.constFn(dart.fnType(_http.HttpClient, [io.SecurityContext])))();
let UriAndMapOfString$StringToString = () => (UriAndMapOfString$StringToString = dart.constFn(dart.fnType(core.String, [core.Uri, MapOfString$String()])))();
let StreamTransformerOfHttpRequest$WebSocket = () => (StreamTransformerOfHttpRequest$WebSocket = dart.constFn(async.StreamTransformer$(_http.HttpRequest, _http.WebSocket)))();
let EventSinkTo_WebSocketProtocolTransformer = () => (EventSinkTo_WebSocketProtocolTransformer = dart.constFn(dart.fnType(_http._WebSocketProtocolTransformer, [async.EventSink])))();
let EventSinkOfListOfint = () => (EventSinkOfListOfint = dart.constFn(async.EventSink$(ListOfint())))();
let StreamControllerOfWebSocket = () => (StreamControllerOfWebSocket = dart.constFn(async.StreamController$(_http.WebSocket)))();
let WebSocketTovoid = () => (WebSocketTovoid = dart.constFn(dart.fnType(dart.void, [_http.WebSocket])))();
let HttpRequestToNull = () => (HttpRequestToNull = dart.constFn(dart.fnType(core.Null, [_http.HttpRequest])))();
let FutureOfWebSocket = () => (FutureOfWebSocket = dart.constFn(async.Future$(_http.WebSocket)))();
let SocketTo_WebSocketImpl = () => (SocketTo_WebSocketImpl = dart.constFn(dart.fnType(_http._WebSocketImpl, [io.Socket])))();
let StringToFutureOfWebSocket = () => (StringToFutureOfWebSocket = dart.constFn(dart.fnType(FutureOfWebSocket(), [core.String])))();
let VoidToFutureOrOfString = () => (VoidToFutureOrOfString = dart.constFn(dart.fnType(FutureOrOfString(), [])))();
let ListOfStringTodynamic = () => (ListOfStringTodynamic = dart.constFn(dart.fnType(dart.dynamic, [ListOfString()])))();
let EventSinkOfListOfintTo_WebSocketOutgoingTransformer = () => (EventSinkOfListOfintTo_WebSocketOutgoingTransformer = dart.constFn(dart.fnType(_http._WebSocketOutgoingTransformer, [EventSinkOfListOfint()])))();
let CompleterOfWebSocket = () => (CompleterOfWebSocket = dart.constFn(async.Completer$(_http.WebSocket)))();
let dynamicTo_WebSocketImpl = () => (dynamicTo_WebSocketImpl = dart.constFn(dart.fnType(_http._WebSocketImpl, [dart.dynamic])))();
let HttpClientResponseToFutureOfWebSocket = () => (HttpClientResponseToFutureOfWebSocket = dart.constFn(dart.fnType(FutureOfWebSocket(), [_http.HttpClientResponse])))();
let HttpClientRequestToFutureOfHttpClientResponse = () => (HttpClientRequestToFutureOfHttpClientResponse = dart.constFn(dart.fnType(FutureOfHttpClientResponse(), [_http.HttpClientRequest])))();
let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.fnType(core.Map, [dart.dynamic])))();
let IdentityMapOfint$_WebSocketImpl = () => (IdentityMapOfint$_WebSocketImpl = dart.constFn(_js_helper.IdentityMap$(core.int, _http._WebSocketImpl)))();
dart.polyfill = function(window) {
  if (window[dart._polyfilled]) return false;
  window[dart._polyfilled] = true;
  if (typeof window.NodeList !== "undefined") {
    window.NodeList.prototype.get = function(i) {
      return this[i];
    };
    window.NamedNodeMap.prototype.get = function(i) {
      return this[i];
    };
    window.DOMTokenList.prototype.get = function(i) {
      return this[i];
    };
    window.HTMLCollection.prototype.get = function(i) {
      return this[i];
    };
    if (typeof window.PannerNode == "undefined") {
      let audioContext;
      if (typeof window.AudioContext == "undefined" && typeof window.webkitAudioContext != "undefined") {
        audioContext = new window.webkitAudioContext();
      } else {
        audioContext = new window.AudioContext();
        window.StereoPannerNode = audioContext.createStereoPanner().constructor;
      }
      window.PannerNode = audioContext.createPanner().constructor;
    }
    if (typeof window.AudioSourceNode == "undefined") {
      window.AudioSourceNode = MediaElementAudioSourceNode.__proto__;
    }
    if (typeof window.FontFaceSet == "undefined") {
      if (typeof window.document.fonts != "undefined") {
        window.FontFaceSet = window.document.fonts.__proto__.constructor;
      }
    }
    if (typeof window.MemoryInfo == "undefined") {
      if (typeof window.performance.memory != "undefined") {
        window.MemoryInfo = window.performance.memory.constructor;
      }
    }
    if (typeof window.Geolocation == "undefined") {
      window.Geolocation == window.navigator.geolocation.constructor;
    }
    if (typeof window.Animation == "undefined") {
      let d = window.document.createElement('div');
      if (typeof d.animate != "undefined") {
        window.Animation = d.animate(d).constructor;
      }
    }
    if (typeof window.SourceBufferList == "undefined") {
      window.SourceBufferList = new window.MediaSource().sourceBuffers.constructor;
    }
    if (typeof window.SpeechRecognition == "undefined") {
      window.SpeechRecognition = window.webkitSpeechRecognition;
      window.SpeechRecognitionError = window.webkitSpeechRecognitionError;
      window.SpeechRecognitionEvent = window.webkitSpeechRecognitionEvent;
    }
  }
  return true;
};
dart.trackProfile = function(flag) {
  dart.__trackProfile = flag;
};
dart.setStartAsyncSynchronously = function(value) {
  if (value === void 0) value = true;
  dart.startAsyncSynchronously = value;
};
dart.hotRestart = function() {
  for (let f of dart._resetFields)
    f();
  dart._resetFields[$clear]();
  for (let m of dart._cacheMaps)
    m.clear();
  dart._cacheMaps[$clear]();
  dart.constantMaps.clear();
  dart._ignoreSubtypeCache.clear();
};
dart.defineValue = function(obj, name, value) {
  dart.defineAccessor(obj, name, {value: value, configurable: true, writable: true});
  return value;
};
dart.throwTypeError = function(message) {
  if (dart.__trapRuntimeErrors) debugger;
  dart.throw(new _js_helper.TypeErrorImpl.new(message));
};
dart.throwInternalError = function(message) {
  if (dart.__trapRuntimeErrors) debugger;
  throw Error(message);
};
dart.getOwnNamesAndSymbols = function(obj) {
  let names = dart.getOwnPropertyNames(obj);
  let symbols = dart.getOwnPropertySymbols(obj);
  return names.concat(symbols);
};
dart.safeGetOwnProperty = function(obj, name) {
  let desc = dart.getOwnPropertyDescriptor(obj, name);
  if (desc != null) return desc.value;
};
dart.defineLazyField = function(to, name, desc) {
  const initializer = desc.get;
  let init = initializer;
  let value = null;
  desc.get = function() {
    if (init == null) return value;
    let f = init;
    init = dart.throwCyclicInitializationError;
    if (f === init) f(name);
    try {
      value = f();
      init = null;
      return value;
    } catch (e) {
      init = null;
      value = null;
      throw e;
    }
  };
  desc.configurable = true;
  if (desc.set != null) {
    desc.set = function(x) {
      init = null;
      value = x;
    };
  }
  dart._resetFields.push(() => {
    init = initializer;
    value = null;
  });
  return dart.defineProperty(to, name, desc);
};
dart.copyTheseProperties = function(to, from, names) {
  for (let i = 0, n = names.length; i < n; ++i) {
    let name = names[i];
    if (dart.equals(name, "constructor")) continue;
    dart.copyProperty(to, from, name);
  }
  return to;
};
dart.copyProperty = function(to, from, name) {
  let desc = dart.getOwnPropertyDescriptor(from, name);
  if (name == Symbol.iterator) {
    let existing = dart.getOwnPropertyDescriptor(to, name);
    if (existing != null) {
      if (existing.writable) {
        to[name] = desc.value;
      }
      return;
    }
  }
  dart.defineProperty(to, name, desc);
};
dart.export = function(to, from, name) {
  return dart.copyProperty(to, from, name);
};
dart.copyProperties = function(to, from) {
  return dart.copyTheseProperties(to, from, dart.getOwnNamesAndSymbols(from));
};
dart.applyMixin = function(to, from) {
  to[dart._mixin] = from;
  let toProto = to.prototype;
  let fromProto = from.prototype;
  dart._copyMembers(toProto, fromProto);
  dart._mixinSignature(to, from, dart._methodSig);
  dart._mixinSignature(to, from, dart._fieldSig);
  dart._mixinSignature(to, from, dart._getterSig);
  dart._mixinSignature(to, from, dart._setterSig);
  let mixinOnFn = from[dart.mixinOn];
  if (mixinOnFn != null) {
    let proto = mixinOnFn(to.__proto__).prototype;
    dart._copyMembers(toProto, proto);
  }
};
dart._copyMembers = function(to, from) {
  let names = dart.getOwnNamesAndSymbols(from);
  for (let i = 0, n = names.length; i < n; ++i) {
    let name = names[i];
    if (name === "constructor") continue;
    dart._copyMember(to, from, name);
  }
  return to;
};
dart._copyMember = function(to, from, name) {
  let desc = dart.getOwnPropertyDescriptor(from, name);
  if (name == Symbol.iterator) {
    let existing = dart.getOwnPropertyDescriptor(to, name);
    if (existing != null) {
      if (existing.writable) {
        to[name] = desc.value;
      }
      return;
    }
  }
  let getter = desc.get;
  let setter = desc.set;
  if (getter != null) {
    if (setter == null) {
      let obj = desc.set = {
        __proto__: to.__proto__,
        set [name](x) {
          return super[name] = x;
        }
      };
      desc.set = dart.getOwnPropertyDescriptor(obj, name).set;
    }
  } else if (setter != null) {
    if (getter == null) {
      let obj = desc.get = {
        __proto__: to.__proto__,
        get [name]() {
          return super[name];
        }
      };
      desc.get = dart.getOwnPropertyDescriptor(obj, name).get;
    }
  }
  dart.defineProperty(to, name, desc);
};
dart._mixinSignature = function(to, from, kind) {
  to[kind] = () => {
    let baseMembers = dart._getMembers(to.__proto__, kind);
    let fromMembers = dart._getMembers(from, kind);
    if (fromMembers == null) return baseMembers;
    let toSignature = {__proto__: baseMembers};
    dart.copyProperties(toSignature, fromMembers);
    return toSignature;
  };
};
dart.getMixin = function(clazz) {
  return Object.hasOwnProperty.call(clazz, dart._mixin) ? clazz[dart._mixin] : null;
};
dart.getImplements = function(clazz) {
  return Object.hasOwnProperty.call(clazz, dart.implements) ? clazz[dart.implements] : null;
};
dart.generic = function(typeConstructor, setBaseClass) {
  let length = typeConstructor.length;
  if (length < 1) {
    dart.throwInternalError('must have at least one generic type argument');
  }
  let resultMap = new Map();
  dart._cacheMaps.push(resultMap);
  function makeGenericType(...args) {
    if (args.length != length && args.length != 0) {
      dart.throwInternalError('requires ' + length + ' or 0 type arguments');
    }
    while (args.length < length)
      args.push(dart.dynamic);
    let value = resultMap;
    for (let i = 0; i < length; i++) {
      let arg = args[i];
      if (arg == null) {
        dart.throwInternalError('type arguments should not be null: ' + typeConstructor);
      }
      let map = value;
      value = map.get(arg);
      if (value === void 0) {
        if (i + 1 == length) {
          value = typeConstructor.apply(null, args);
          if (value) {
            value[dart._typeArguments] = args;
            value[dart._originalDeclaration] = makeGenericType;
          }
          map.set(arg, value);
          if (setBaseClass != null) setBaseClass.apply(null, args);
        } else {
          value = new Map();
          map.set(arg, value);
        }
      }
    }
    return value;
  }
  makeGenericType[dart._genericTypeCtor] = typeConstructor;
  return makeGenericType;
};
dart.getGenericClass = function(type) {
  return dart.safeGetOwnProperty(type, dart._originalDeclaration);
};
dart.getGenericArgs = function(type) {
  return dart.safeGetOwnProperty(type, dart._typeArguments);
};
dart.getGenericTypeFormals = function(genericClass) {
  return dart._typeFormalsFromFunction(dart.getGenericTypeCtor(genericClass));
};
dart.instantiateClass = function(genericClass, typeArgs) {
  return genericClass.apply(null, typeArgs);
};
dart.getConstructors = function(value) {
  return dart._getMembers(value, dart._constructorSig);
};
dart.getMethods = function(value) {
  return dart._getMembers(value, dart._methodSig);
};
dart.getFields = function(value) {
  return dart._getMembers(value, dart._fieldSig);
};
dart.getGetters = function(value) {
  return dart._getMembers(value, dart._getterSig);
};
dart.getSetters = function(value) {
  return dart._getMembers(value, dart._setterSig);
};
dart.getStaticMethods = function(value) {
  return dart._getMembers(value, dart._staticMethodSig);
};
dart.getStaticFields = function(value) {
  return dart._getMembers(value, dart._staticFieldSig);
};
dart.getStaticGetters = function(value) {
  return dart._getMembers(value, dart._staticGetterSig);
};
dart.getStaticSetters = function(value) {
  return dart._getMembers(value, dart._staticSetterSig);
};
dart.getGenericTypeCtor = function(value) {
  return value[dart._genericTypeCtor];
};
dart.getType = function(obj) {
  return obj == null ? core.Object : obj.__proto__.constructor;
};
dart.isJsInterop = function(obj) {
  if (obj == null) return false;
  if (typeof obj === "function") {
    return obj[dart._runtimeType] == null;
  }
  if (typeof obj !== "object") return false;
  if (obj[dart._extensionType] != null) return false;
  return !(obj instanceof core.Object);
};
dart.getMethodType = function(type, name) {
  let m = dart.getMethods(type);
  return m != null ? m[name] : null;
};
dart.getSetterType = function(type, name) {
  let setters = dart.getSetters(type);
  if (setters != null) {
    let type = setters[name];
    if (type != null) {
      if (type instanceof Array) {
        return type[0];
      }
      return type;
    }
  }
  let fields = dart.getFields(type);
  if (fields != null) {
    let fieldInfo = fields[name];
    if (fieldInfo != null && !fieldInfo.isFinal) {
      return fieldInfo.type;
    }
  }
  return null;
};
dart.finalFieldType = function(type, metadata) {
  return {type: type, isFinal: true, metadata: metadata};
};
dart.fieldType = function(type, metadata) {
  return {type: type, isFinal: false, metadata: metadata};
};
dart.classGetConstructorType = function(cls, name) {
  if (cls == null) return null;
  if (name == null) name = "new";
  let ctors = dart.getConstructors(cls);
  return ctors != null ? ctors[name] : null;
};
dart.setMethodSignature = function(f, sigF) {
  return f[dart._methodSig] = sigF;
};
dart.setFieldSignature = function(f, sigF) {
  return f[dart._fieldSig] = sigF;
};
dart.setGetterSignature = function(f, sigF) {
  return f[dart._getterSig] = sigF;
};
dart.setSetterSignature = function(f, sigF) {
  return f[dart._setterSig] = sigF;
};
dart.setConstructorSignature = function(f, sigF) {
  return f[dart._constructorSig] = sigF;
};
dart.setStaticMethodSignature = function(f, sigF) {
  return f[dart._staticMethodSig] = sigF;
};
dart.setStaticFieldSignature = function(f, sigF) {
  return f[dart._staticFieldSig] = sigF;
};
dart.setStaticGetterSignature = function(f, sigF) {
  return f[dart._staticGetterSig] = sigF;
};
dart.setStaticSetterSignature = function(f, sigF) {
  return f[dart._staticSetterSig] = sigF;
};
dart._getMembers = function(type, kind) {
  let sig = type[kind];
  return typeof sig == "function" ? type[kind] = sig() : sig;
};
dart._hasMember = function(type, kind, name) {
  let sig = dart._getMembers(type, kind);
  return sig != null && name in sig;
};
dart.hasMethod = function(type, name) {
  return dart._hasMember(type, dart._methodSig, name);
};
dart.hasGetter = function(type, name) {
  return dart._hasMember(type, dart._getterSig, name);
};
dart.hasSetter = function(type, name) {
  return dart._hasMember(type, dart._setterSig, name);
};
dart.hasField = function(type, name) {
  return dart._hasMember(type, dart._fieldSig, name);
};
dart._installProperties = function(jsProto, dartType, installedParent) {
  if (dartType === core.Object) {
    dart._installPropertiesForObject(jsProto);
    return;
  }
  let dartSupertype = dartType.__proto__;
  if (dartSupertype !== installedParent) {
    dart._installProperties(jsProto, dartSupertype, installedParent);
  }
  let dartProto = dartType.prototype;
  dart.copyTheseProperties(jsProto, dartProto, dart.getOwnPropertySymbols(dartProto));
};
dart._installPropertiesForObject = function(jsProto) {
  let coreObjProto = core.Object.prototype;
  let names = dart.getOwnPropertyNames(coreObjProto);
  for (let i = 0, n = names.length; i < n; ++i) {
    let name = names[i];
    if (name === "constructor") continue;
    let desc = dart.getOwnPropertyDescriptor(coreObjProto, name);
    dart.defineProperty(jsProto, dart.dartx[name], desc);
  }
};
dart._installPropertiesForGlobalObject = function(jsProto) {
  dart._installPropertiesForObject(jsProto);
  jsProto[dartx.toString] = function() {
    return this.toString();
  };
  let t = dart.identityEquals;
  t == null ? dart.identityEquals = jsProto[dartx._equals] : t;
};
dart._applyExtension = function(jsType, dartExtType) {
  if (jsType == null) return;
  let jsProto = jsType.prototype;
  if (jsProto == null) return;
  if (dartExtType === core.Object) {
    dart._installPropertiesForGlobalObject(jsProto);
    return;
  }
  dart._installProperties(jsProto, dartExtType, jsProto[dart._extensionType]);
  if (dartExtType !== _interceptors.JSFunction) {
    jsProto[dart._extensionType] = dartExtType;
  }
  jsType[dart._methodSig] = dartExtType[dart._methodSig];
  jsType[dart._fieldSig] = dartExtType[dart._fieldSig];
  jsType[dart._getterSig] = dartExtType[dart._getterSig];
  jsType[dart._setterSig] = dartExtType[dart._setterSig];
};
dart.applyExtension = function(name, nativeObject) {
  let dartExtType = dart._extensionMap.get(name);
  let jsType = nativeObject.constructor;
  dart._applyExtension(jsType, dartExtType);
};
dart.applyAllExtensions = function(global) {
  dart._extensionMap.forEach((dartExtType, name) => dart._applyExtension(global[name], dartExtType));
};
dart.registerExtension = function(name, dartExtType) {
  dart._extensionMap.set(name, dartExtType);
  let jsType = dart.global[name];
  dart._applyExtension(jsType, dartExtType);
};
dart.defineExtensionMethods = function(type, memberNames) {
  let proto = type.prototype;
  for (let name of memberNames) {
    proto[dartx[name]] = proto[name];
  }
};
dart.defineExtensionAccessors = function(type, memberNames) {
  let proto = type.prototype;
  for (let name of memberNames) {
    let member = null;
    let p = proto;
    for (;; p = p.__proto__) {
      member = dart.getOwnPropertyDescriptor(p, name);
      if (member != null) break;
    }
    dart.defineProperty(proto, dartx[name], member);
  }
};
dart.definePrimitiveHashCode = function(proto) {
  dart.defineProperty(proto, dart.identityHashCode_, dart.getOwnPropertyDescriptor(proto, $hashCode));
};
dart.setBaseClass = function(derived, base) {
  derived.prototype.__proto__ = base.prototype;
  derived.__proto__ = base;
};
dart.setExtensionBaseClass = function(dartType, jsType) {
  let dartProto = dartType.prototype;
  dartProto[dart._extensionType] = dartType;
  dartProto.__proto__ = jsType.prototype;
};
dart.addTypeTests = function(ctor, isClass) {
  if (isClass == null) isClass = Symbol("_is_" + ctor.name);
  ctor.prototype[isClass] = true;
  ctor.is = function is_C(obj) {
    return obj != null && (obj[isClass] || dart.is(obj, this));
  };
  ctor.as = function as_C(obj) {
    if (obj == null || obj[isClass]) return obj;
    return dart.as(obj, this, false);
  };
  ctor._check = function check_C(obj) {
    if (obj == null || obj[isClass]) return obj;
    return dart.as(obj, this, true);
  };
};
dart.fn = function(closure, type) {
  closure[dart._runtimeType] = type;
  return closure;
};
dart.lazyFn = function(closure, computeType) {
  dart.defineAccessor(closure, dart._runtimeType, {
    get: () => dart.defineValue(closure, dart._runtimeType, computeType()),
    set: value => dart.defineValue(closure, dart._runtimeType, value),
    configurable: true
  });
  return closure;
};
dart.getFunctionType = function(obj) {
  let args = Array(obj.length).fill(dart.dynamic);
  return dart.fnType(dart.bottom, args, void 0);
};
dart.getReifiedType = function(obj) {
  switch (typeof obj) {
    case "object":
    {
      if (obj == null) return core.Null;
      if (obj instanceof core.Object) {
        return obj.constructor;
      }
      let result = obj[dart._extensionType];
      if (result == null) return dart.jsobject;
      return result;
    }
    case "function":
    {
      let result = obj[dart._runtimeType];
      if (result != null) return result;
      return dart.jsobject;
    }
    case "undefined":
    {
      return core.Null;
    }
    case "number":
    {
      return Math.floor(obj) == obj ? core.int : core.double;
    }
    case "boolean":
    {
      return core.bool;
    }
    case "string":
    {
      return core.String;
    }
    case "symbol":
    default:
    {
      return dart.jsobject;
    }
  }
};
dart.getModuleName = function(module) {
  return module[dart._moduleName];
};
dart.getModuleNames = function() {
  return JSArrayOfString().of(Array.from(dart._loadedModules.keys()));
};
dart.getSourceMap = function(moduleName) {
  return dart._loadedSourceMaps.get(moduleName);
};
dart.getModuleLibraries = function(name) {
  let module = dart._loadedModules.get(name);
  if (module == null) return null;
  module[dart._moduleName] = name;
  return module;
};
dart.trackLibraries = function(moduleName, libraries, sourceMap) {
  dart._loadedSourceMaps.set(moduleName, sourceMap);
  dart._loadedModules.set(moduleName, libraries);
};
dart._isJsObject = function(obj) {
  return dart.getReifiedType(obj) === dart.jsobject;
};
dart._warn = function(arg) {
  console.warn(arg);
};
dart.lazyJSType = function(getJSTypeCallback, name) {
  let ret = dart._lazyJSTypes.get(name);
  if (ret == null) {
    ret = new dart.LazyJSType.new(getJSTypeCallback, name);
    dart._lazyJSTypes.set(name, ret);
  }
  return ret;
};
dart.anonymousJSType = function(name) {
  let ret = dart._anonymousJSTypes.get(name);
  if (ret == null) {
    ret = new dart.AnonymousJSType.new(name);
    dart._anonymousJSTypes.set(name, ret);
  }
  return ret;
};
dart.wrapType = function(type) {
  if (type.hasOwnProperty(dart._typeObject)) {
    return type[dart._typeObject];
  }
  let result = new dart._Type.new(type);
  type[dart._typeObject] = result;
  return result;
};
dart.unwrapType = function(obj) {
  return obj[_type];
};
dart._memoizeArray = function(map, arr, create) {
  let len = arr.length;
  map = dart._lookupNonTerminal(map, len);
  for (var i = 0; i < len - 1; ++i) {
    map = dart._lookupNonTerminal(map, arr[i]);
  }
  let result = map.get(arr[len - 1]);
  if (result !== void 0) return result;
  map.set(arr[len - 1], result = create());
  return result;
};
dart._canonicalizeArray = function(array, map) {
  return dart._memoizeArray(map, array, () => array);
};
dart._canonicalizeNamed = function(named, map) {
  let key = [];
  let names = dart.getOwnPropertyNames(named);
  for (var i = 0; i < names.length; ++i) {
    let name = names[i];
    let type = named[name];
    key.push(name);
    key.push(type);
  }
  return dart._memoizeArray(map, key, () => named);
};
dart._createSmall = function(returnType, required) {
  let count = required.length;
  let map = dart._fnTypeSmallMap[count];
  for (var i = 0; i < count; ++i) {
    map = dart._lookupNonTerminal(map, required[i]);
  }
  let result = map.get(returnType);
  if (result !== void 0) return result;
  result = new dart.FunctionType.new(returnType, required, [], {});
  map.set(returnType, result);
  return result;
};
dart._typeFormalsFromFunction = function(typeConstructor) {
  let str = typeConstructor.toString();
  let hasParens = str[$_get](0) === "(";
  let end = str[$indexOf](hasParens ? ")" : "=>");
  if (hasParens) {
    return IterableOfTypeVariable()._check(str[$substring](1, end)[$split](",")[$map](dart.TypeVariable, n => new dart.TypeVariable.new(n[$trim]())))[$toList]();
  } else {
    return JSArrayOfTypeVariable().of([new dart.TypeVariable.new(str[$substring](0, end)[$trim]())]);
  }
};
dart.fnType = function(returnType, args, extra) {
  return dart.FunctionType.create(returnType, args, extra);
};
dart.gFnType = function(instantiateFn, typeBounds) {
  return new dart.GenericFunctionType.new(instantiateFn, typeBounds);
};
dart.getFunctionTypeMirror = function(type) {
  if (dart.GenericFunctionType.is(type)) {
    let typeArgs = ListOfType().filled(type.formalCount, dart.wrapType(dart.dynamic));
    return type.instantiate(typeArgs);
  }
  return type;
};
dart.isType = function(obj) {
  return obj[dart._runtimeType] === core.Type;
};
dart.checkTypeBound = function(type, bound, name) {
  if (!dart.isSubtypeOf(type, bound)) {
    dart.throwTypeError("type `" + dart.str(type) + "` does not extend `" + dart.str(bound) + "` of `" + name + "`.");
  }
};
dart.typeName = function(type) {
  if (type === void 0) return "undefined type";
  if (type === null) return "null type";
  if (type instanceof dart.DartType) {
    return type.toString();
  }
  let tag = type[dart._runtimeType];
  if (tag === core.Type) {
    let name = type.name;
    let args = dart.getGenericArgs(type);
    if (args == null) return name;
    if (dart.getGenericClass(type) == _interceptors.JSArray$) name = 'List';
    let result = name;
    result += '<';
    for (let i = 0; i < args.length; ++i) {
      if (i > 0) result += ', ';
      result += dart.typeName(args[i]);
    }
    result += '>';
    return result;
  }
  if (tag) return "Not a type: " + tag.name;
  return "JSObject<" + type.name + ">";
};
dart._isFunctionSubtype = function(ft1, ft2, isCovariant) {
  let ret1 = ft1.returnType;
  let ret2 = ft2.returnType;
  let args1 = ft1.args;
  let args2 = ft2.args;
  if (args1.length > args2.length) {
    return isCovariant ? false : null;
  }
  for (let i = 0; i < args1.length; ++i) {
    if (!dart._isSubtype(args2[i], args1[i], !isCovariant)) {
      return null;
    }
  }
  let optionals1 = ft1.optionals;
  let optionals2 = ft2.optionals;
  if (args1.length + optionals1.length < args2.length + optionals2.length) {
    return isCovariant ? false : null;
  }
  let j = 0;
  for (let i = args1.length; i < args2.length; ++i, ++j) {
    if (!dart._isSubtype(args2[i], optionals1[j], !isCovariant)) {
      return null;
    }
  }
  for (let i = 0; i < optionals2.length; ++i, ++j) {
    if (!dart._isSubtype(optionals2[i], optionals1[j], !isCovariant)) {
      return null;
    }
  }
  let named1 = ft1.named;
  let named2 = ft2.named;
  let names = dart.getOwnPropertyNames(named2);
  for (let i = 0; i < names.length; ++i) {
    let name = names[i];
    let n1 = named1[name];
    let n2 = named2[name];
    if (n1 === void 0) {
      return isCovariant ? false : null;
    }
    if (!dart._isSubtype(n2, n1, !isCovariant)) {
      return null;
    }
  }
  if (ret1 === dart.void) return dart._isTop(ret2);
  if (!dart._isSubtype(ret1, ret2, isCovariant)) return null;
  return true;
};
dart.isSubtypeOf = function(t1, t2) {
  return !!dart._isSubtypeOrLegacySubtype(t1, t2);
};
dart._isSubtypeOrLegacySubtype = function(t1, t2) {
  let map = null;
  if (!t1.hasOwnProperty(dart._subtypeCache)) {
    t1[dart._subtypeCache] = map = new Map();
    dart._cacheMaps[$add](map);
  } else {
    map = t1[dart._subtypeCache];
    let result = map.get(t2);
    if (result !== void 0) return result;
  }
  let result = dart._isSubtype(t1, t2, true);
  map.set(t2, result);
  return result;
};
dart._isBottom = function(type) {
  return type == dart.bottom || type == core.Null;
};
dart._isTop = function(type) {
  if (dart._isFutureOr(type)) {
    return dart._isTop(dart.getGenericArgs(type)[0]);
  }
  return type == core.Object || type == dart.dynamic || type == dart.void;
};
dart._isFutureOr = function(type) {
  return core.identical(dart.getGenericClass(type), async.FutureOr$);
};
dart._isSubtype = function(t1, t2, isCovariant) {
  if (t1 === t2) return true;
  if (dart._isTop(t2) || dart._isBottom(t1)) {
    return true;
  }
  if (dart._isBottom(t2)) return null;
  if (dart._isTop(t1)) {
    if (t1 === dart.dynamic) return null;
    return false;
  }
  if (dart._isFutureOr(t1)) {
    let t1TypeArg = dart.getGenericArgs(t1)[0];
    if (dart._isFutureOr(t2)) {
      let t2TypeArg = dart.getGenericArgs(t2)[0];
      return dart._isSubtype(t1TypeArg, t2TypeArg, isCovariant);
    }
    let t1Future = async.Future$(t1TypeArg);
    return dart._isSubtype(t1Future, t2, isCovariant) && dart._isSubtype(t1TypeArg, t2, isCovariant);
  }
  if (dart._isFutureOr(t2)) {
    let t2TypeArg = dart.getGenericArgs(t2)[0];
    let t2Future = async.Future$(t2TypeArg);
    let s1 = dart._isSubtype(t1, t2Future, isCovariant);
    let s2 = dart._isSubtype(t1, t2TypeArg, isCovariant);
    if (s1 === true || s2 === true) return true;
    if (s1 === null || s2 === null) return null;
    return false;
  }
  if (!(t2 instanceof dart.AbstractFunctionType)) {
    if (t1 instanceof dart.AbstractFunctionType) {
      return t2 === core.Function;
    }
    if (t1 === dart.jsobject && t2 instanceof dart.AnonymousJSType) return true;
    return dart._isInterfaceSubtype(t1, t2, isCovariant);
  }
  if (!(t1 instanceof dart.AbstractFunctionType)) return false;
  if (t1 instanceof dart.GenericFunctionType) {
    if (!(t2 instanceof dart.GenericFunctionType)) return false;
    let formalCount = t1.formalCount;
    if (formalCount !== t2.formalCount) return false;
    let fresh = t2.typeFormals;
    let t1Bounds = t1.instantiateTypeBounds(fresh);
    let t2Bounds = t2.instantiateTypeBounds(fresh);
    for (let i = 0; i < formalCount; i++) {
      if (!dart._isSubtype(t2Bounds[i], t1Bounds[i], !isCovariant)) {
        return false;
      }
    }
    t1 = t1.instantiate(fresh);
    t2 = t2.instantiate(fresh);
  } else if (t2 instanceof dart.GenericFunctionType) {
    return false;
  }
  return dart._isFunctionSubtype(t1, t2, isCovariant);
};
dart._isInterfaceSubtype = function(t1, t2, isCovariant) {
  if (t1 instanceof dart.LazyJSType) t1 = t1.rawJSTypeForCheck();
  if (t2 instanceof dart.LazyJSType) t2 = t2.rawJSTypeForCheck();
  if (t1 === t2) return true;
  if (t1 === core.Object) return false;
  if (t1 === core.Function || t2 === core.Function) return false;
  if (t1 == null) return t2 == core.Object || t2 == dart.dynamic;
  let raw1 = dart.getGenericClass(t1);
  let raw2 = dart.getGenericClass(t2);
  if (raw1 != null && raw1 == raw2) {
    let typeArguments1 = dart.getGenericArgs(t1);
    let typeArguments2 = dart.getGenericArgs(t2);
    let length = typeArguments1.length;
    if (typeArguments2.length == 0) {
      return true;
    } else if (length == 0) {
      if (typeArguments2.every(dart._isTop)) return true;
      return null;
    }
    if (length != typeArguments2.length) dart.assertFailed();
    for (let i = 0; i < length; ++i) {
      let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], isCovariant);
      if (!result) {
        return result;
      }
    }
    return true;
  }
  let indefinite = false;
  function definitive(t1, t2) {
    let result = dart._isInterfaceSubtype(t1, t2, isCovariant);
    if (result == null) {
      indefinite = true;
      return false;
    }
    return result;
  }
  if (definitive(t1.__proto__, t2)) return true;
  let m1 = dart.getMixin(t1);
  if (m1 != null) {
    if (definitive(m1, t2)) return true;
  }
  let getInterfaces = dart.getImplements(t1);
  if (getInterfaces) {
    for (let i1 of getInterfaces()) {
      if (definitive(i1, t2)) return true;
    }
  }
  if (indefinite) return null;
  return false;
};
dart.extractTypeArguments = function(T, instance, f) {
  if (instance == null) {
    dart.throw(new core.ArgumentError.new("Cannot extract type of null instance."));
  }
  let type = T;
  if (dart.AbstractFunctionType.is(type) || dart._isFutureOr(type)) {
    dart.throw(new core.ArgumentError.new("Cannot extract from non-class type (" + dart.str(type) + ")."));
  }
  let typeArguments = dart.getGenericArgs(type);
  if (dart.test(typeArguments[$isEmpty])) {
    dart.throw(new core.ArgumentError.new("Cannot extract from non-generic type (" + dart.str(type) + ")."));
  }
  let supertype = dart._getMatchingSupertype(dart.getReifiedType(instance), type);
  if (!(supertype != null)) dart.assertFailed();
  let typeArgs = dart.getGenericArgs(supertype);
  if (!(typeArgs != null && dart.test(typeArgs[$isNotEmpty]))) dart.assertFailed();
  return dart.dgcall(f, typeArgs, []);
};
dart._getMatchingSupertype = function(subtype, supertype) {
  if (core.identical(subtype, supertype)) return supertype;
  if (subtype == null || dart.equals(subtype, core.Object)) return null;
  let subclass = dart.getGenericClass(subtype);
  let superclass = dart.getGenericClass(supertype);
  if (subclass != null && core.identical(subclass, superclass)) {
    return subtype;
  }
  let result = dart._getMatchingSupertype(subtype.__proto__, supertype);
  if (result != null) return result;
  let mixin = dart.getMixin(subtype);
  if (mixin != null) {
    result = dart._getMatchingSupertype(mixin, supertype);
    if (result != null) return result;
  }
  let getInterfaces = dart.getImplements(subtype);
  if (getInterfaces != null) {
    for (let iface of getInterfaces()) {
      result = dart._getMatchingSupertype(iface, supertype);
      if (result != null) return result;
    }
  }
  return null;
};
dart.trapRuntimeErrors = function(flag) {
  dart.__trapRuntimeErrors = flag;
};
dart.ignoreWhitelistedErrors = function(flag) {
  dart.__ignoreWhitelistedErrors = flag;
};
dart.ignoreAllErrors = function(flag) {
  dart.__ignoreAllErrors = flag;
};
dart.argumentError = function(value) {
  if (dart.__trapRuntimeErrors) debugger;
  dart.throw(new core.ArgumentError.value(value));
};
dart.throwUnimplementedError = function(message) {
  if (dart.__trapRuntimeErrors) debugger;
  dart.throw(new core.UnimplementedError.new(message));
};
dart.assertFailed = function(message) {
  if (dart.__trapRuntimeErrors) debugger;
  dart.throw(new _js_helper.AssertionErrorImpl.new(message));
};
dart.throwCyclicInitializationError = function(field) {
  if (field === void 0) field = null;
  if (dart.__trapRuntimeErrors) debugger;
  dart.throw(new core.CyclicInitializationError.new(core.String._check(field)));
};
dart.throwNullValueError = function() {
  if (dart.__trapRuntimeErrors) debugger;
  dart.throw(new core.NoSuchMethodError.new(null, core.Symbol.new("<Unexpected Null Value>"), null, null, null));
};
dart.castError = function(obj, expectedType, isImplicit) {
  if (isImplicit === void 0) isImplicit = false;
  let actualType = dart.getReifiedType(obj);
  let message = dart._castErrorMessage(actualType, expectedType);
  if (dart.__ignoreAllErrors) {
    console.error(message);
    return obj;
  }
  if (dart.__trapRuntimeErrors) debugger;
  let error = isImplicit ? new _js_helper.TypeErrorImpl.new(message) : new _js_helper.CastErrorImpl.new(message);
  dart.throw(error);
};
dart._castErrorMessage = function(from, to) {
  let fromClass = dart.getGenericClass(from);
  if (fromClass != null) {
    let fromTypeFormals = dart.getGenericTypeFormals(fromClass);
    let fromType = dart.instantiateClass(fromClass, fromTypeFormals);
    let inferrer = new dart._TypeInferrer.new(fromTypeFormals);
    if (dart.test(inferrer.trySubtypeMatch(fromType, to))) {
      let inferredTypes = inferrer.getInferredTypes();
      if (inferredTypes != null) {
        let inferred = dart.instantiateClass(fromClass, inferredTypes);
        return "Type '" + dart.typeName(from) + "' should be '" + dart.typeName(inferred) + "' " + ("to implement expected type '" + dart.typeName(to) + "'.");
      }
    }
  }
  return "Expected a value of type '" + dart.typeName(to) + "', " + ("but got one of type '" + dart.typeName(from) + "'");
};
dart.getThrown = function(error) {
  if (error != null) {
    let value = error[dart._thrownValue];
    if (value != null) return value;
  }
  return error;
};
dart.stackTrace = function(error) {
  if (!(error instanceof Error)) {
    return new dart._StackTrace.missing(error);
  }
  let trace = error[dart._stackTrace];
  if (trace != null) return trace;
  return error[dart._stackTrace] = new dart._StackTrace.new(error);
};
dart.stackTraceForError = function(error) {
  return dart.stackTrace(error[dart._jsError]);
};
dart.rethrow = function(error) {
  throw error;
};
dart.throw = function(exception) {
  throw new dart.DartError(exception);
};
dart.createErrorWithStack = function(exception, trace) {
  if (trace == null) {
    let error = exception[dart._jsError];
    return error != null ? error : new dart.DartError(exception);
  }
  if (dart._StackTrace.is(trace)) {
    let originalError = trace[_jsError];
    if (core.identical(exception, dart.getThrown(originalError))) {
      return originalError;
    }
  }
  return new dart.RethrownDartError(exception, trace);
};
dart.stackPrint = function(error) {
  console.log(error.stack ? error.stack : "No stack trace for: " + error);
};
dart.bind = function(obj, name, method) {
  if (obj == null) obj = _interceptors.jsNull;
  if (method == null) method = obj[name];
  let f = method.bind(obj);
  f._boundObject = obj;
  f._boundMethod = method;
  f[dart._runtimeType] = dart.getMethodType(dart.getType(obj), name);
  return f;
};
dart.bindCall = function(obj, name) {
  if (obj == null) return null;
  let ftype = dart.getMethodType(dart.getType(obj), name);
  if (ftype == null) return null;
  let method = obj[name];
  let f = method.bind(obj);
  f._boundObject = obj;
  f._boundMethod = method;
  f[dart._runtimeType] = ftype;
  return f;
};
dart.gbind = function(f, ...typeArgs) {
  let type = f[dart._runtimeType];
  type.checkBounds(typeArgs);
  let result = (...args) => f.apply(null, typeArgs.concat(args));
  return dart.fn(result, type.instantiate(typeArgs));
};
dart.dloadRepl = function(obj, field) {
  return dart.dload(obj, dart.replNameLookup(obj, field), false);
};
dart.dload = function(obj, field, mirrors) {
  if (typeof obj == "function" && field == "call") {
    return obj;
  }
  let f = dart._canonicalMember(obj, field);
  _debugger.trackCall(obj);
  if (f != null) {
    let type = dart.getType(obj);
    if (dart.test(dart.hasField(type, f)) || dart.test(dart.hasGetter(type, f))) return obj[f];
    if (dart.test(dart.hasMethod(type, f))) return dart.bind(obj, f, null);
    if (!mirrors && dart.test(dart.isJsInterop(obj))) {
      return obj[f];
    }
  }
  return dart.noSuchMethod(obj, new dart.InvocationImpl.new(field, [], {isGetter: true}));
};
dart.dloadMirror = function(obj, field) {
  return dart.dload(obj, field, true);
};
dart._stripGenericArguments = function(type) {
  let genericClass = dart.getGenericClass(type);
  if (genericClass != null) return genericClass();
  return type;
};
dart.dputMirror = function(obj, field, value) {
  return dart.dput(obj, field, value, true);
};
dart.dputRepl = function(obj, field, value) {
  return dart.dput(obj, dart.replNameLookup(obj, field), value, false);
};
dart.dput = function(obj, field, value, mirrors) {
  let f = dart._canonicalMember(obj, field);
  _debugger.trackCall(obj);
  if (f != null) {
    let setterType = dart.getSetterType(dart.getType(obj), f);
    if (setterType != null) {
      if (mirrors) setterType = dart._stripGenericArguments(setterType);
      return obj[f] = setterType._check(value);
    }
    if (!mirrors && dart.test(dart.isJsInterop(obj))) {
      return obj[f] = value;
    }
  }
  dart.noSuchMethod(obj, new dart.InvocationImpl.new(field, [value], {isSetter: true}));
  return value;
};
dart._checkApply = function(type, actuals, namedActuals) {
  let actualsCount = actuals.length;
  let required = type.args;
  let requiredCount = required.length;
  if (actualsCount < requiredCount) return false;
  let extras = actualsCount - requiredCount;
  let optionals = type.optionals;
  if (extras > optionals.length) return false;
  let names = null;
  let named = type.named;
  if (namedActuals != null) {
    names = dart.getOwnPropertyNames(namedActuals);
    for (let name of names) {
      if (!named.hasOwnProperty(name)) return false;
    }
  }
  for (let i = 0; i < requiredCount; ++i) {
    required[i]._check(actuals[i]);
  }
  for (let i = 0; i < extras; ++i) {
    optionals[i]._check(actuals[i + requiredCount]);
  }
  if (names != null) {
    for (let name of names) {
      named[name]._check(namedActuals[name]);
    }
  }
  return true;
};
dart._toSymbolName = function(symbol) {
  let str = symbol.toString();
  return str.substring(7, str.length - 1);
};
dart._toDisplayName = function(name) {
  if (name[0] === '_') {
    switch (name) {
      case '_get':
      {
        return '[]';
      }
      case '_set':
      {
        return '[]=';
      }
      case '_negate':
      {
        return 'unary-';
      }
      case '_constructor':
      case '_prototype':
      {
        return name.substring(1);
      }
    }
  }
  return name;
};
dart._dartSymbol = function(name) {
  return typeof name === "symbol" ? dart.const(new _js_helper.PrivateSymbol.new(dart._toSymbolName(name), name)) : dart.const(new _internal.Symbol.new(dart._toDisplayName(name)));
};
dart._setterSymbol = function(name) {
  return typeof name === "symbol" ? dart.const(new _js_helper.PrivateSymbol.new(dart._toSymbolName(name) + "=", name)) : dart.const(new _internal.Symbol.new(dart._toDisplayName(name) + "="));
};
dart._checkAndCall = function(f, ftype, obj, typeArgs, args, named, displayName) {
  _debugger.trackCall(obj);
  let originalTarget = obj === void 0 ? f : obj;
  function callNSM() {
    return dart.noSuchMethod(originalTarget, new dart.InvocationImpl.new(displayName, args, {namedArguments: named, typeArguments: typeArgs, isMethod: true}));
  }
  if (!(f instanceof Function)) {
    if (f != null) {
      f = dart.bindCall(f, dart._canonicalMember(f, "call"));
      ftype = null;
    }
    if (f == null) return callNSM();
  }
  if (ftype == null) ftype = f[dart._runtimeType];
  if (ftype == null) {
    if (typeArgs != null) {
      dart.throwTypeError('call to JS object `' + obj + '` with type arguments <' + typeArgs + '> is not supported.');
    }
    if (named != null) args.push(named);
    return f.apply(obj, args);
  }
  if (ftype instanceof Array) ftype = ftype[0];
  if (ftype instanceof dart.GenericFunctionType) {
    let formalCount = ftype.formalCount;
    if (typeArgs == null) {
      typeArgs = ftype.instantiateDefaultBounds();
    } else if (typeArgs.length != formalCount) {
      return callNSM();
    } else {
      ftype.checkBounds(typeArgs);
    }
    ftype = ftype.instantiate(typeArgs);
  } else if (typeArgs != null) {
    return callNSM();
  }
  if (dart._checkApply(ftype, args, named)) {
    if (typeArgs != null) args = typeArgs.concat(args);
    if (named != null) args.push(named);
    return f.apply(obj, args);
  }
  return callNSM();
};
dart.dcall = function(f, args, named) {
  return dart._checkAndCall(f, null, void 0, null, args, named, "call");
};
dart.dgcall = function(f, typeArgs, args, named) {
  return dart._checkAndCall(f, null, void 0, typeArgs, args, named, "call");
};
dart.replNameLookup = function(object, field) {
  let rawField = field;
  if (typeof field == 'symbol') {
    if (field in object) return field;
    field = field.toString();
    field = field.substring('Symbol('.length, field.length - 1);
  } else if (field.charAt(0) != '_') {
    return field;
  }
  if (field in object) return field;
  let proto = object;
  while (proto !== null) {
    let symbols = Object.getOwnPropertySymbols(proto);
    let target = 'Symbol(' + field + ')';
    for (let s = 0; s < symbols.length; s++) {
      let sym = symbols[s];
      if (target == sym.toString()) return sym;
    }
    proto = proto.__proto__;
  }
  return rawField;
};
dart._dhelperRepl = function(obj, field, callback) {
  return callback(dart.replNameLookup(obj, field));
};
dart.callMethod = function(obj, name, typeArgs, args, named, displayName) {
  if (typeof obj == "function" && name == "call") {
    return dart.dgcall(obj, typeArgs, args, named);
  }
  let symbol = dart._canonicalMember(obj, name);
  if (symbol == null) {
    return dart.noSuchMethod(obj, new dart.InvocationImpl.new(displayName, ListOfObject()._check(args), {isMethod: true}));
  }
  let f = obj != null ? obj[symbol] : null;
  let type = dart.getType(obj);
  let ftype = dart.getMethodType(type, symbol);
  return dart._checkAndCall(f, ftype, obj, typeArgs, args, named, displayName);
};
dart.dsend = function(obj, method, args, named) {
  return dart.callMethod(obj, method, null, args, named, method);
};
dart.dgsend = function(obj, typeArgs, method, args, named) {
  return dart.callMethod(obj, method, typeArgs, args, named, method);
};
dart.dsendRepl = function(obj, method, args, named) {
  return dart.callMethod(obj, dart.replNameLookup(obj, method), null, args, named, method);
};
dart.dgsendRepl = function(obj, typeArgs, method, args, named) {
  return dart.callMethod(obj, dart.replNameLookup(obj, method), typeArgs, args, named, method);
};
dart.dindex = function(obj, index) {
  return dart.callMethod(obj, "_get", null, [index], null, "[]");
};
dart.dsetindex = function(obj, index, value) {
  return dart.callMethod(obj, "_set", null, [index, value], null, "[]=");
};
dart._isSubtypeOrIgnorableCastFailure = function(t1, t2, isImplicit) {
  let result = dart._isSubtypeOrLegacySubtype(t1, t2);
  return result === true || result == null && isImplicit && dart.__ignoreWhitelistedErrors && dart._ignoreTypeFailure(t1, t2);
};
dart._ignoreTypeFailure = function(t1, t2) {
  let map = dart._ignoreSubtypeCache.get(t1);
  if (map != null) {
    let result = map.get(t2);
    if (result !== void 0) return result;
  } else {
    map = new Map();
    dart._ignoreSubtypeCache.set(t1, map);
  }
  let result = null;
  if (dart._isFutureOr(t2)) {
    let typeArg = dart.getGenericArgs(t2)[$_get](0);
    let typeFuture = async.Future$(typeArg);
    result = dart._ignoreTypeFailure(t1, typeFuture) || dart._ignoreTypeFailure(t1, typeArg);
  } else {
    result = dart.FunctionType.is(t1) && dart.FunctionType.is(t2) || dart.isSubtypeOf(t2, core.Iterable) && dart.isSubtypeOf(t1, core.Iterable);
    if (result) {
      dart._warn("Ignoring cast fail from " + dart.typeName(t1) + " to " + dart.typeName(t2));
    }
  }
  map.set(t2, result);
  return result;
};
dart.is = function(obj, type) {
  if (obj == null) {
    return core.identical(type, core.Null) || dart._isTop(type);
  }
  return dart.isSubtypeOf(dart.getReifiedType(obj), type);
};
dart.as = function(obj, type, isImplicit) {
  if (obj == null) return obj;
  let actual = dart.getReifiedType(obj);
  if (dart._isSubtypeOrIgnorableCastFailure(actual, type, isImplicit)) {
    return obj;
  }
  return dart.castError(obj, type, isImplicit);
};
dart.test = function(obj) {
  if (obj == null) dart._throwBooleanConversionError();
  return obj;
};
dart.dtest = function(obj) {
  if (!(typeof obj == 'boolean')) dart.booleanConversionFailed(obj);
  return core.bool._check(obj);
};
dart._throwBooleanConversionError = function() {
  return dart.throw(new _js_helper.BooleanConversionAssertionError.new());
};
dart.booleanConversionFailed = function(obj) {
  let actual = dart.typeName(dart.getReifiedType(dart.test(core.bool._check(obj))));
  dart.throw(new _js_helper.TypeErrorImpl.new("type '" + actual + "' is not a 'bool' in boolean expression"));
};
dart.asInt = function(obj) {
  if (obj == null) return null;
  if (Math.floor(obj) != obj) {
    dart.castError(obj, core.int, false);
  }
  return obj;
};
dart.notNull = function(x) {
  if (x == null) dart.throwNullValueError();
  return x;
};
dart._lookupNonTerminal = function(map, key) {
  let result = map.get(key);
  if (result != null) return result;
  map.set(key, result = new Map());
  return result;
};
dart.constMap = function(K, V, elements) {
  let count = elements[$length];
  let map = dart._lookupNonTerminal(dart.constantMaps, count);
  for (let i = 0; i < count; i++) {
    map = dart._lookupNonTerminal(map, elements[i]);
  }
  map = dart._lookupNonTerminal(map, dart.wrapType(K));
  let result = map.get(V);
  if (result != null) return core.Map$(K, V)._check(result);
  result = new (_js_helper.ImmutableMap$(K, V)).from(elements);
  map.set(V, result);
  return core.Map$(K, V)._check(result);
};
dart.constSet = function(E, elements) {
  let count = elements[$length];
  let map = dart._lookupNonTerminal(dart.constantSets, count);
  for (let i = 0; i < count; i++) {
    map = dart._lookupNonTerminal(map, elements[i]);
  }
  let result = map.get(E);
  if (result != null) return core.Set$(E)._check(result);
  result = new (collection.ImmutableSet$(E)).from(elements);
  map.set(E, result);
  return core.Set$(E)._check(result);
};
dart.dassert = function(value) {
  if (value != null && value[dart._runtimeType] instanceof dart.AbstractFunctionType) {
    value = dart.dcall(value, []);
  }
  return dart.dtest(value);
};
dart.multiKeyPutIfAbsent = function(map, keys, valueFn) {
  for (let k of keys) {
    let value = map.get(k);
    if (!value) {
      map.set(k, value = new Map());
    }
    map = value;
  }
  if (map.has(dart._value)) return map.get(dart._value);
  let value = valueFn();
  map.set(dart._value, value);
  return value;
};
dart.const = function(obj) {
  let names = dart.getOwnNamesAndSymbols(obj);
  let count = names.length;
  let map = dart._lookupNonTerminal(dart.constants, count);
  for (let i = 0; i < count; i++) {
    let name = names[i];
    map = dart._lookupNonTerminal(map, name);
    map = dart._lookupNonTerminal(map, obj[name]);
  }
  let type = dart.getReifiedType(obj);
  let value = map.get(type);
  if (value) return value;
  map.set(type, obj);
  return obj;
};
dart.constList = function(elements, elementType) {
  let count = elements.length;
  let map = dart._lookupNonTerminal(dart.constantLists, count);
  for (let i = 0; i < count; i++) {
    map = dart._lookupNonTerminal(map, elements[i]);
  }
  let value = map.get(elementType);
  if (value) return value;
  _interceptors.JSArray$(elementType).unmodifiable(elements);
  map.set(elementType, elements);
  return elements;
};
dart.constFn = function(x) {
  return () => x;
};
dart.extensionSymbol = function(name) {
  return dartx[name];
};
dart.equals = function(x, y) {
  return x == null ? y == null : x[$_equals](y);
};
dart.hashCode = function(obj) {
  return obj == null ? 0 : obj[$hashCode];
};
dart.toString = function(obj) {
  if (obj == null) return "null";
  if (typeof obj == 'string') return obj;
  return obj[$toString]();
};
dart.str = function(obj) {
  if (obj == null) return "null";
  if (typeof obj == 'string') return obj;
  return core.String._check(dart.notNull(obj[$toString]()));
};
dart.noSuchMethod = function(obj, invocation) {
  if (obj == null) dart.defaultNoSuchMethod(obj, invocation);
  return obj[$noSuchMethod](invocation);
};
dart.defaultNoSuchMethod = function(obj, i) {
  if (dart.__trapRuntimeErrors) debugger;
  dart.throw(new core.NoSuchMethodError.withInvocation(obj, i));
};
dart.runtimeType = function(obj) {
  return obj == null ? dart.wrapType(core.Null) : obj[dartx.runtimeType];
};
dart._canonicalMember = function(obj, name) {
  if (typeof name === "symbol") return name;
  if (obj != null && obj[dart._extensionType] != null) {
    return dartx[name];
  }
  if (name == "constructor" || name == "prototype") {
    name = "+" + name;
  }
  return name;
};
dart.loadLibrary = function() {
  return async.Future.value();
};
dart.defineLazy = function(to, from) {
  for (let name of dart.getOwnNamesAndSymbols(from)) {
    dart.defineLazyField(to, name, dart.getOwnPropertyDescriptor(from, name));
  }
};
dart._polyfilled = Symbol("_polyfilled");
dart.global = (function() {
  var globalState = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : null;
  if (!globalState) {
    globalState = new Function('return this;')();
  }
  dart.polyfill(globalState);
  if (globalState.Error) {
    globalState.Error.stackTraceLimit = Infinity;
  }
  let settings = 'ddcSettings' in globalState ? globalState.ddcSettings : {};
  dart.trapRuntimeErrors('trapRuntimeErrors' in settings ? settings.trapRuntimeErrors : false);
  dart.ignoreWhitelistedErrors('ignoreWhitelistedErrors' in settings ? settings.ignoreWhitelistedErrors : false);
  dart.ignoreAllErrors('ignoreAllErrors' in settings ? settings.ignoreAllErrors : false);
  dart.trackProfile('trackProfile' in settings ? settings.trackProfile : false);
  return globalState;
})();
dart.JsSymbol = Symbol;
dart.startAsyncSynchronously = true;
dart._cacheMaps = [];
dart._resetFields = [];
dart.addAsyncCallback = function() {
};
dart.removeAsyncCallback = function() {
};
dart.defineProperty = Object.defineProperty;
dart.defineAccessor = Object.defineProperty;
dart.getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
dart.getOwnPropertyNames = Object.getOwnPropertyNames;
dart.getOwnPropertySymbols = Object.getOwnPropertySymbols;
dart.getPrototypeOf = Object.getPrototypeOf;
dart._mixin = Symbol("mixin");
dart.mixinOn = Symbol("mixinOn");
dart.implements = Symbol("implements");
dart._typeArguments = Symbol("typeArguments");
dart._originalDeclaration = Symbol("originalDeclaration");
dart.mixinNew = Symbol("dart.mixinNew");
dart._constructorSig = Symbol("sigCtor");
dart._methodSig = Symbol("sigMethod");
dart._fieldSig = Symbol("sigField");
dart._getterSig = Symbol("sigGetter");
dart._setterSig = Symbol("sigSetter");
dart._staticMethodSig = Symbol("sigStaticMethod");
dart._staticFieldSig = Symbol("sigStaticField");
dart._staticGetterSig = Symbol("sigStaticGetter");
dart._staticSetterSig = Symbol("sigStaticSetter");
dart._genericTypeCtor = Symbol("genericType");
dart._extensionType = Symbol("extensionType");
dart.dartx = dartx;
dart._extensionMap = new Map();
dart.isFuture = Symbol("_is_Future");
dart.isIterable = Symbol("_is_Iterable");
dart.isList = Symbol("_is_List");
dart.isMap = Symbol("_is_Map");
dart.isStream = Symbol("_is_Stream");
dart.isStreamSubscription = Symbol("_is_StreamSubscription");
dart.identityEquals = null;
dart._runtimeType = Symbol("_runtimeType");
dart._moduleName = Symbol("_moduleName");
dart._loadedModules = new Map();
dart._loadedSourceMaps = new Map();
dart.metadata = Symbol("metadata");
core.Object = class Object {
  constructor() {
    throw Error("use `new " + dart.typeName(dart.getReifiedType(this)) + ".new(...)` to create a Dart object");
  }
  _equals(other) {
    return this === other;
  }
  get hashCode() {
    return core.identityHashCode(this);
  }
  toString() {
    return "Instance of '" + dart.typeName(dart.getReifiedType(this)) + "'";
  }
  noSuchMethod(invocation) {
    return dart.defaultNoSuchMethod(this, invocation);
  }
  get runtimeType() {
    return dart.wrapType(dart.getReifiedType(this));
  }
};
(core.Object.new = function() {
}).prototype = core.Object.prototype;
core.Object.is = function is_Object(o) {
  return true;
};
core.Object.as = function as_Object(o) {
  return o;
};
core.Object._check = function check_Object(o) {
  return o;
};
dart.setMethodSignature(core.Object, () => ({
  __proto__: Object.create(null),
  _equals: dart.fnType(core.bool, [dart.dynamic]),
  [$_equals]: dart.fnType(core.bool, [dart.dynamic]),
  toString: dart.fnType(core.String, []),
  [$toString]: dart.fnType(core.String, []),
  noSuchMethod: dart.fnType(dart.dynamic, [core.Invocation]),
  [$noSuchMethod]: dart.fnType(dart.dynamic, [core.Invocation])
}));
dart.setGetterSignature(core.Object, () => ({
  __proto__: Object.create(null),
  hashCode: core.int,
  [$hashCode]: core.int,
  runtimeType: core.Type,
  [$runtimeType]: core.Type
}));
dart.lazyFn(core.Object, () => core.Type);
dart.defineExtensionMethods(core.Object, ['_equals', 'toString', 'noSuchMethod']);
dart.defineExtensionAccessors(core.Object, ['hashCode', 'runtimeType']);
dart.registerExtension("Object", core.Object);
dart.DartType = class DartType extends core.Object {
  get name() {
    return this.toString();
  }
  is(object) {
    return dart.is(object, this);
  }
  as(object) {
    return dart.as(object, this, false);
  }
  _check(object) {
    return dart.as(object, this, true);
  }
};
(dart.DartType.new = function() {
}).prototype = dart.DartType.prototype;
dart.addTypeTests(dart.DartType);
dart.DartType[dart.implements] = () => [core.Type];
dart.setMethodSignature(dart.DartType, () => ({
  __proto__: dart.getMethods(dart.DartType.__proto__),
  is: dart.fnType(core.bool, [dart.dynamic]),
  as: dart.fnType(dart.dynamic, [dart.dynamic]),
  _check: dart.fnType(dart.dynamic, [dart.dynamic])
}));
dart.setGetterSignature(dart.DartType, () => ({
  __proto__: dart.getGetters(dart.DartType.__proto__),
  name: core.String
}));
dart.DynamicType = class DynamicType extends dart.DartType {
  toString() {
    return "dynamic";
  }
  is(object) {
    return true;
  }
  as(object) {
    return object;
  }
  _check(object) {
    return object;
  }
};
(dart.DynamicType.new = function() {
}).prototype = dart.DynamicType.prototype;
dart.addTypeTests(dart.DynamicType);
dart.defineExtensionMethods(dart.DynamicType, ['toString']);
const _getRawJSTypeFn = Symbol('_getRawJSTypeFn');
const _dartName = Symbol('_dartName');
const _rawJSType = Symbol('_rawJSType');
const _getRawJSType = Symbol('_getRawJSType');
dart.LazyJSType = class LazyJSType extends dart.DartType {
  toString() {
    let raw = this[_getRawJSType]();
    return raw != null ? dart.typeName(raw) : "JSObject<" + this[_dartName] + ">";
  }
  [_getRawJSType]() {
    let raw = this[_rawJSType];
    if (raw != null) return raw;
    try {
      raw = this[_getRawJSTypeFn]();
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
    if (raw == null) {
      dart._warn("Cannot find native JavaScript type (" + this[_dartName] + ") for type check");
    } else {
      this[_rawJSType] = raw;
      this[_getRawJSTypeFn] = null;
    }
    return raw;
  }
  rawJSTypeForCheck() {
    let l = this[_getRawJSType]();
    return l != null ? l : dart.jsobject;
  }
  isRawJSType(obj) {
    let raw = this[_getRawJSType]();
    if (raw != null) return obj instanceof raw;
    return dart._isJsObject(obj);
  }
  is(obj) {
    return this.isRawJSType(obj) || dart.is(obj, this);
  }
  as(obj) {
    return obj == null || this.is(obj) ? obj : dart.castError(obj, this, false);
  }
  _check(obj) {
    return obj == null || this.is(obj) ? obj : dart.castError(obj, this, true);
  }
};
(dart.LazyJSType.new = function(getRawJSTypeFn, dartName) {
  this[_rawJSType] = null;
  this[_getRawJSTypeFn] = getRawJSTypeFn;
  this[_dartName] = dartName;
}).prototype = dart.LazyJSType.prototype;
dart.addTypeTests(dart.LazyJSType);
dart.setMethodSignature(dart.LazyJSType, () => ({
  __proto__: dart.getMethods(dart.LazyJSType.__proto__),
  [_getRawJSType]: dart.fnType(core.Object, []),
  rawJSTypeForCheck: dart.fnType(core.Object, []),
  isRawJSType: dart.fnType(core.bool, [dart.dynamic])
}));
dart.setFieldSignature(dart.LazyJSType, () => ({
  __proto__: dart.getFields(dart.LazyJSType.__proto__),
  [_getRawJSTypeFn]: dart.fieldType(VoidTodynamic()),
  [_dartName]: dart.finalFieldType(core.String),
  [_rawJSType]: dart.fieldType(core.Object)
}));
dart.defineExtensionMethods(dart.LazyJSType, ['toString']);
dart.AnonymousJSType = class AnonymousJSType extends dart.DartType {
  toString() {
    return this[_dartName];
  }
  is(obj) {
    return dart._isJsObject(obj) || dart.is(obj, this);
  }
  as(obj) {
    return obj == null || dart._isJsObject(obj) ? obj : dart.as(obj, this, false);
  }
  _check(obj) {
    return obj == null || dart._isJsObject(obj) ? obj : dart.as(obj, this, true);
  }
};
(dart.AnonymousJSType.new = function(dartName) {
  this[_dartName] = dartName;
}).prototype = dart.AnonymousJSType.prototype;
dart.addTypeTests(dart.AnonymousJSType);
dart.setFieldSignature(dart.AnonymousJSType, () => ({
  __proto__: dart.getFields(dart.AnonymousJSType.__proto__),
  [_dartName]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(dart.AnonymousJSType, ['toString']);
dart._lazyJSTypes = new Map();
dart._anonymousJSTypes = new Map();
dart.dynamic = new dart.DynamicType.new();
dart.VoidType = class VoidType extends dart.DartType {
  toString() {
    return "void";
  }
};
(dart.VoidType.new = function() {
}).prototype = dart.VoidType.prototype;
dart.addTypeTests(dart.VoidType);
dart.defineExtensionMethods(dart.VoidType, ['toString']);
dart.void = new dart.VoidType.new();
dart.BottomType = class BottomType extends dart.DartType {
  toString() {
    return "bottom";
  }
};
(dart.BottomType.new = function() {
}).prototype = dart.BottomType.prototype;
dart.addTypeTests(dart.BottomType);
dart.defineExtensionMethods(dart.BottomType, ['toString']);
dart.bottom = new dart.BottomType.new();
dart.JSObjectType = class JSObjectType extends dart.DartType {
  toString() {
    return "NativeJavaScriptObject";
  }
};
(dart.JSObjectType.new = function() {
}).prototype = dart.JSObjectType.prototype;
dart.addTypeTests(dart.JSObjectType);
dart.defineExtensionMethods(dart.JSObjectType, ['toString']);
dart.jsobject = new dart.JSObjectType.new();
const _type = Symbol('_type');
core.Type = class Type extends core.Object {};
(core.Type.new = function() {
}).prototype = core.Type.prototype;
dart.addTypeTests(core.Type);
dart._Type = class _Type extends core.Type {
  toString() {
    return dart.typeName(this[_type]);
  }
  get runtimeType() {
    return dart.wrapType(core.Type);
  }
};
(dart._Type.new = function(type) {
  this[_type] = type;
}).prototype = dart._Type.prototype;
dart.addTypeTests(dart._Type);
dart.setFieldSignature(dart._Type, () => ({
  __proto__: dart.getFields(dart._Type.__proto__),
  [_type]: dart.finalFieldType(core.Object)
}));
dart.defineExtensionMethods(dart._Type, ['toString']);
dart.defineExtensionAccessors(dart._Type, ['runtimeType']);
dart._typeObject = Symbol("typeObject");
dart.AbstractFunctionType = class AbstractFunctionType extends dart.DartType {};
(dart.AbstractFunctionType.new = function() {
}).prototype = dart.AbstractFunctionType.prototype;
dart.addTypeTests(dart.AbstractFunctionType);
dart._fnTypeNamedArgMap = new Map();
dart._fnTypeArrayArgMap = new Map();
dart._fnTypeTypeMap = new Map();
dart._fnTypeSmallMap = [new Map(), new Map(), new Map()];
const _stringValue = Symbol('_stringValue');
const _process = Symbol('_process');
dart.FunctionType = class FunctionType extends dart.AbstractFunctionType {
  static create(returnType, args, extra) {
    if (extra == null && args.length < 3) {
      return dart._createSmall(returnType, args);
    }
    args = dart._canonicalizeArray(args, dart._fnTypeArrayArgMap);
    let keys = null;
    let create = null;
    if (extra == null) {
      keys = [returnType, args];
      create = () => new dart.FunctionType.new(returnType, args, [], {});
    } else if (extra instanceof Array) {
      let optionals = dart._canonicalizeArray(extra, dart._fnTypeArrayArgMap);
      keys = [returnType, args, optionals];
      create = () => new dart.FunctionType.new(returnType, args, optionals, {});
    } else {
      let named = dart._canonicalizeNamed(extra, dart._fnTypeNamedArgMap);
      keys = [returnType, args, named];
      create = () => new dart.FunctionType.new(returnType, args, [], named);
    }
    return dart._memoizeArray(dart._fnTypeTypeMap, keys, create);
  }
  [_process](array) {
    let result = [];
    for (let i = 0; i < array.length; ++i) {
      let arg = array[i];
      if (arg instanceof Array) {
        this.metadata.push(arg.slice(1));
        result.push(arg[0]);
      } else {
        this.metadata.push([]);
        result.push(arg);
      }
    }
    return result;
  }
  toString() {
    return this.name;
  }
  get requiredParameterCount() {
    return this.args[$length];
  }
  get positionalParameterCount() {
    return dart.notNull(this.args[$length]) + dart.notNull(this.optionals[$length]);
  }
  getPositionalParameter(i) {
    let n = this.args[$length];
    return dart.notNull(i) < dart.notNull(n) ? this.args[$_get](i) : this.optionals[$_get](dart.notNull(i) + dart.notNull(n));
  }
  getNamedParameters() {
    let result = new (IdentityMapOfString$Object()).new();
    let names = dart.getOwnPropertyNames(this.named);
    names.sort();
    for (let i = 0; i < names.length; ++i) {
      let name = names[i];
      result[$_set](name, this.named[name]);
    }
    return result;
  }
  get name() {
    if (this[_stringValue] != null) return this[_stringValue];
    let buffer = "(";
    for (let i = 0; i < this.args.length; ++i) {
      if (i > 0) {
        buffer = buffer + ", ";
      }
      buffer = buffer + dart.typeName(this.args[i]);
    }
    if (this.optionals.length > 0) {
      if (this.args.length > 0) {
        buffer = buffer + ", ";
      }
      buffer = buffer + "[";
      for (let i = 0; i < this.optionals.length; ++i) {
        if (i > 0) {
          buffer = buffer + ", ";
        }
        buffer = buffer + dart.typeName(this.optionals[i]);
      }
      buffer = buffer + "]";
    } else if (Object.keys(this.named).length > 0) {
      if (this.args.length > 0) {
        buffer = buffer + ", ";
      }
      buffer = buffer + "{";
      let names = dart.getOwnPropertyNames(this.named);
      names.sort();
      for (let i = 0; i < names.length; ++i) {
        if (i > 0) {
          buffer = buffer + ", ";
        }
        let typeNameString = dart.typeName(this.named[names[i]]);
        buffer = buffer + (typeNameString + " " + dart.str(names[i]));
      }
      buffer = buffer + "}";
    }
    let returnTypeName = dart.typeName(this.returnType);
    buffer = buffer + (") => " + returnTypeName);
    this[_stringValue] = buffer;
    return buffer;
  }
  is(obj) {
    if (typeof obj == "function") {
      let actual = obj[dart._runtimeType];
      return actual == null || dart.isSubtypeOf(actual, this);
    }
    return false;
  }
  as(obj, isImplicit) {
    if (isImplicit === void 0) isImplicit = false;
    if (obj == null) return obj;
    if (typeof obj == "function") {
      let actual = obj[dart._runtimeType];
      if (actual == null || dart._isSubtypeOrIgnorableCastFailure(actual, this, isImplicit)) {
        return obj;
      }
    }
    return dart.castError(obj, this, isImplicit);
  }
  _check(obj) {
    return this.as(obj, true);
  }
};
(dart.FunctionType.new = function(returnType, args, optionals, named) {
  this.metadata = [];
  this[_stringValue] = null;
  this.returnType = returnType;
  this.args = args;
  this.optionals = optionals;
  this.named = named;
  this.args = this[_process](this.args);
  this.optionals = this[_process](this.optionals);
}).prototype = dart.FunctionType.prototype;
dart.addTypeTests(dart.FunctionType);
dart.setMethodSignature(dart.FunctionType, () => ({
  __proto__: dart.getMethods(dart.FunctionType.__proto__),
  [_process]: dart.fnType(core.List, [core.List]),
  getPositionalParameter: dart.fnType(dart.dynamic, [core.int]),
  getNamedParameters: dart.fnType(core.Map$(core.String, core.Object), []),
  as: dart.fnType(dart.dynamic, [dart.dynamic], [core.bool])
}));
dart.setGetterSignature(dart.FunctionType, () => ({
  __proto__: dart.getGetters(dart.FunctionType.__proto__),
  requiredParameterCount: core.int,
  positionalParameterCount: core.int
}));
dart.setFieldSignature(dart.FunctionType, () => ({
  __proto__: dart.getFields(dart.FunctionType.__proto__),
  returnType: dart.finalFieldType(dart.dynamic),
  args: dart.fieldType(core.List),
  optionals: dart.fieldType(core.List),
  named: dart.finalFieldType(dart.dynamic),
  metadata: dart.fieldType(core.List),
  [_stringValue]: dart.fieldType(core.String)
}));
dart.defineExtensionMethods(dart.FunctionType, ['toString']);
dart.TypeVariable = class TypeVariable extends dart.DartType {
  get name() {
    return this[name$];
  }
  set name(value) {
    super.name = value;
  }
  toString() {
    return this.name;
  }
};
(dart.TypeVariable.new = function(name) {
  this[name$] = name;
}).prototype = dart.TypeVariable.prototype;
dart.addTypeTests(dart.TypeVariable);
const name$ = Symbol("TypeVariable.name");
dart.setFieldSignature(dart.TypeVariable, () => ({
  __proto__: dart.getFields(dart.TypeVariable.__proto__),
  name: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(dart.TypeVariable, ['toString']);
const _instantiateTypeBounds = Symbol('_instantiateTypeBounds');
const _instantiateTypeParts = Symbol('_instantiateTypeParts');
const _typeFormals = Symbol('_typeFormals');
dart.GenericFunctionType = class GenericFunctionType extends dart.AbstractFunctionType {
  get typeFormals() {
    if (this[_typeFormals] != null) return this[_typeFormals];
    return this[_typeFormals] = dart._typeFormalsFromFunction(this[_instantiateTypeParts]);
  }
  checkBounds(typeArgs) {
    if (this[_instantiateTypeBounds] == null) return;
    let bounds = this.instantiateTypeBounds(typeArgs);
    let typeFormals = this.typeFormals;
    for (let i = 0; i < dart.notNull(typeArgs[$length]); i++) {
      dart.checkTypeBound(typeArgs[$_get](i), bounds[$_get](i), typeFormals[$_get](i).name);
    }
  }
  instantiate(typeArgs) {
    let parts = this[_instantiateTypeParts].apply(null, typeArgs);
    return dart.FunctionType.create(parts[0], parts[1], parts[2]);
  }
  instantiateTypeBounds(typeArgs) {
    let boundsFn = this[_instantiateTypeBounds];
    if (boundsFn == null) {
      return core.List.filled(this.formalCount, dart.dynamic);
    }
    return boundsFn.apply(null, typeArgs);
  }
  toString() {
    let s = "<";
    let typeFormals = this.typeFormals;
    let typeBounds = this.instantiateTypeBounds(typeFormals);
    for (let i = 0, n = typeFormals[$length]; i < dart.notNull(n); i++) {
      if (i !== 0) {
        s = s + ", ";
      }
      s = s + typeFormals[i].name;
      let bound = typeBounds[$_get](i);
      if (bound !== dart.dynamic && bound !== core.Object) {
        s = s + (" extends " + dart.str(bound));
      }
    }
    s = s + (">" + dart.notNull(dart.toString(this.instantiate(typeFormals))));
    return s;
  }
  instantiateDefaultBounds() {
    let typeFormals = this.typeFormals;
    let all = new (IdentityMapOfObject$int()).new();
    let defaults = ListOfObject().new(typeFormals[$length]);
    let partials = new (IdentityMapOfTypeVariable$Object()).new();
    let typeBounds = this.instantiateTypeBounds(typeFormals);
    for (let i = 0; i < dart.notNull(typeFormals[$length]); i++) {
      let typeFormal = typeFormals[$_get](i);
      let bound = typeBounds[$_get](i);
      all._set(typeFormal, i);
      if (core.identical(bound, dart.dynamic)) {
        defaults[$_set](i, bound);
      } else {
        defaults[$_set](i, typeFormal);
        partials[$_set](typeFormal, bound);
      }
    }
    function hasFreeFormal(t) {
      if (dart.test(partials[$containsKey](t))) return true;
      let typeArgs = dart.getGenericArgs(t);
      if (typeArgs != null) return typeArgs[$any](hasFreeFormal);
      if (dart.GenericFunctionType.is(t)) {
        return hasFreeFormal(t.instantiate(t.typeFormals));
      }
      if (dart.FunctionType.is(t)) {
        return dart.test(hasFreeFormal(t.returnType)) || dart.test(t.args[$any](hasFreeFormal));
      }
      return false;
    }
    let hasProgress = true;
    while (hasProgress) {
      hasProgress = false;
      for (let typeFormal of partials[$keys]) {
        let partialBound = partials[$_get](typeFormal);
        if (!dart.test(hasFreeFormal(partialBound))) {
          let index = all._get(typeFormal);
          defaults[$_set](index, this.instantiateTypeBounds(defaults)[$_get](index));
          partials[$remove](typeFormal);
          hasProgress = true;
          break;
        }
      }
    }
    if (dart.test(partials[$isNotEmpty])) {
      dart.throwTypeError("Instantiate to bounds failed for type with " + ("recursive generic bounds: " + dart.typeName(this) + ". ") + "Try passing explicit type arguments.");
    }
    return defaults;
  }
  is(obj) {
    if (typeof obj == "function") {
      let actual = obj[dart._runtimeType];
      return actual != null && dart.isSubtypeOf(actual, this);
    }
    return false;
  }
  as(obj) {
    if (obj == null || this.is(obj)) return obj;
    return dart.castError(obj, this, false);
  }
  _check(obj) {
    if (obj == null || this.is(obj)) return obj;
    return dart.castError(obj, this, true);
  }
};
(dart.GenericFunctionType.new = function(instantiateTypeParts, instantiateTypeBounds) {
  this[_typeFormals] = null;
  this[_instantiateTypeBounds] = instantiateTypeBounds;
  this[_instantiateTypeParts] = instantiateTypeParts;
  this.formalCount = instantiateTypeParts.length;
}).prototype = dart.GenericFunctionType.prototype;
dart.addTypeTests(dart.GenericFunctionType);
dart.setMethodSignature(dart.GenericFunctionType, () => ({
  __proto__: dart.getMethods(dart.GenericFunctionType.__proto__),
  checkBounds: dart.fnType(dart.void, [core.List]),
  instantiate: dart.fnType(dart.FunctionType, [dart.dynamic]),
  instantiateTypeBounds: dart.fnType(core.List, [core.List]),
  instantiateDefaultBounds: dart.fnType(core.List, [])
}));
dart.setGetterSignature(dart.GenericFunctionType, () => ({
  __proto__: dart.getGetters(dart.GenericFunctionType.__proto__),
  typeFormals: core.List$(dart.TypeVariable)
}));
dart.setFieldSignature(dart.GenericFunctionType, () => ({
  __proto__: dart.getFields(dart.GenericFunctionType.__proto__),
  [_instantiateTypeParts]: dart.finalFieldType(dart.dynamic),
  formalCount: dart.finalFieldType(core.int),
  [_instantiateTypeBounds]: dart.finalFieldType(dart.dynamic),
  [_typeFormals]: dart.fieldType(ListOfTypeVariable())
}));
dart.defineExtensionMethods(dart.GenericFunctionType, ['toString']);
dart._subtypeCache = Symbol("_subtypeCache");
const _typeVariables = Symbol('_typeVariables');
const _isSubtypeMatch = Symbol('_isSubtypeMatch');
const _constrainLower = Symbol('_constrainLower');
const _constrainUpper = Symbol('_constrainUpper');
const _isFunctionSubtypeMatch = Symbol('_isFunctionSubtypeMatch');
const _isInterfaceSubtypeMatch = Symbol('_isInterfaceSubtypeMatch');
const _isNull = Symbol('_isNull');
const _isTop = Symbol('_isTop');
dart._TypeInferrer = class _TypeInferrer extends core.Object {
  getInferredTypes() {
    let result = JSArrayOfObject().of([]);
    for (let constraint of this[_typeVariables][$values]) {
      if (constraint.lower != null) {
        result[$add](constraint.lower);
      } else if (constraint.upper != null) {
        result[$add](constraint.upper);
      } else {
        return null;
      }
    }
    return result;
  }
  trySubtypeMatch(subtype, supertype) {
    return this[_isSubtypeMatch](subtype, supertype);
  }
  [_constrainLower](parameter, lower) {
    this[_typeVariables][$_get](parameter)[_constrainLower](lower);
  }
  [_constrainUpper](parameter, upper) {
    this[_typeVariables][$_get](parameter)[_constrainUpper](upper);
  }
  [_isFunctionSubtypeMatch](subtype, supertype) {
    if (dart.notNull(subtype.requiredParameterCount) > dart.notNull(supertype.requiredParameterCount)) {
      return false;
    }
    if (dart.notNull(subtype.positionalParameterCount) < dart.notNull(supertype.positionalParameterCount)) {
      return false;
    }
    if (!dart.VoidType.is(supertype.returnType) && !dart.test(this[_isSubtypeMatch](subtype.returnType, supertype.returnType))) {
      return false;
    }
    for (let i = 0, n = supertype.positionalParameterCount; i < dart.notNull(n); ++i) {
      if (!dart.test(this[_isSubtypeMatch](supertype.getPositionalParameter(i), subtype.getPositionalParameter(i)))) {
        return false;
      }
    }
    let supertypeNamed = supertype.getNamedParameters();
    let subtypeNamed = supertype.getNamedParameters();
    for (let name of supertypeNamed[$keys]) {
      let subtypeParamType = subtypeNamed[$_get](name);
      if (subtypeParamType == null) return false;
      if (!dart.test(this[_isSubtypeMatch](supertypeNamed[$_get](name), subtypeParamType))) {
        return false;
      }
    }
    return true;
  }
  [_isInterfaceSubtypeMatch](subtype, supertype) {
    let matchingSupertype = dart._getMatchingSupertype(subtype, supertype);
    if (matchingSupertype == null) return false;
    let matchingTypeArgs = dart.getGenericArgs(matchingSupertype);
    let supertypeTypeArgs = dart.getGenericArgs(supertype);
    for (let i = 0; i < dart.notNull(supertypeTypeArgs[$length]); i++) {
      if (!dart.test(this[_isSubtypeMatch](matchingTypeArgs[$_get](i), supertypeTypeArgs[$_get](i)))) {
        return false;
      }
    }
    return true;
  }
  [_isNull](type) {
    return core.identical(type, core.Null);
  }
  [_isSubtypeMatch](subtype, supertype) {
    if (dart.TypeVariable.is(subtype) && dart.test(this[_typeVariables][$containsKey](subtype))) {
      this[_constrainUpper](subtype, supertype);
      return true;
    }
    if (dart.TypeVariable.is(supertype) && dart.test(this[_typeVariables][$containsKey](supertype))) {
      this[_constrainLower](supertype, subtype);
      return true;
    }
    if (core.identical(subtype, supertype)) return true;
    if (dart.test(this[_isTop](supertype))) return true;
    if (dart.test(this[_isNull](subtype))) return true;
    if (dart._isFutureOr(subtype)) {
      let subtypeArg = dart.getGenericArgs(subtype)[$_get](0);
      if (dart._isFutureOr(supertype)) {
        let supertypeArg = dart.getGenericArgs(supertype)[$_get](0);
        return this[_isSubtypeMatch](subtypeArg, supertypeArg);
      }
      let subtypeFuture = async.Future$(subtypeArg);
      return dart.test(this[_isSubtypeMatch](subtypeFuture, supertype)) && dart.test(this[_isSubtypeMatch](subtypeArg, supertype));
    }
    if (dart._isFutureOr(supertype)) {
      let supertypeArg = dart.getGenericArgs(supertype)[$_get](0);
      let supertypeFuture = async.Future$(supertypeArg);
      return dart.test(this[_isSubtypeMatch](subtype, supertypeFuture)) || dart.test(this[_isSubtypeMatch](subtype, supertypeArg));
    }
    if (dart.TypeVariable.is(subtype)) {
      return dart.TypeVariable.is(supertype) && subtype == supertype;
    }
    if (dart.GenericFunctionType.is(subtype)) {
      if (dart.GenericFunctionType.is(supertype)) {
        let formalCount = subtype.formalCount;
        if (formalCount != supertype.formalCount) return false;
        let fresh = supertype.typeFormals;
        let t1Bounds = subtype.instantiateTypeBounds(fresh);
        let t2Bounds = supertype.instantiateTypeBounds(fresh);
        for (let i = 0; i < dart.notNull(formalCount); i++) {
          if (!dart.test(this[_isSubtypeMatch](t2Bounds[$_get](i), t1Bounds[$_get](i)))) {
            return false;
          }
        }
        return this[_isFunctionSubtypeMatch](subtype.instantiate(fresh), supertype.instantiate(fresh));
      } else {
        return false;
      }
    } else if (dart.GenericFunctionType.is(supertype)) {
      return false;
    }
    if (dart.FunctionType.is(subtype)) {
      if (!dart.FunctionType.is(supertype)) {
        if (core.identical(supertype, core.Function) || core.identical(supertype, core.Object)) {
          return true;
        } else {
          return false;
        }
      }
      if (dart.FunctionType.is(supertype)) {
        return this[_isFunctionSubtypeMatch](subtype, supertype);
      }
    }
    return this[_isInterfaceSubtypeMatch](subtype, supertype);
  }
  [_isTop](type) {
    return core.identical(type, dart.dynamic) || core.identical(type, dart.void) || core.identical(type, core.Object);
  }
};
(dart._TypeInferrer.new = function(typeVariables) {
  this[_typeVariables] = MapOfTypeVariable$TypeConstraint().fromIterables(typeVariables, IterableOfTypeConstraint()._check(typeVariables[$map](dart.TypeConstraint, _ => new dart.TypeConstraint.new())));
}).prototype = dart._TypeInferrer.prototype;
dart.addTypeTests(dart._TypeInferrer);
dart.setMethodSignature(dart._TypeInferrer, () => ({
  __proto__: dart.getMethods(dart._TypeInferrer.__proto__),
  getInferredTypes: dart.fnType(core.List$(core.Object), []),
  trySubtypeMatch: dart.fnType(core.bool, [core.Object, core.Object]),
  [_constrainLower]: dart.fnType(dart.void, [dart.TypeVariable, core.Object]),
  [_constrainUpper]: dart.fnType(dart.void, [dart.TypeVariable, core.Object]),
  [_isFunctionSubtypeMatch]: dart.fnType(core.bool, [dart.FunctionType, dart.FunctionType]),
  [_isInterfaceSubtypeMatch]: dart.fnType(core.bool, [core.Object, core.Object]),
  [_isNull]: dart.fnType(core.bool, [core.Object]),
  [_isSubtypeMatch]: dart.fnType(core.bool, [core.Object, core.Object]),
  [_isTop]: dart.fnType(core.bool, [core.Object])
}));
dart.setFieldSignature(dart._TypeInferrer, () => ({
  __proto__: dart.getFields(dart._TypeInferrer.__proto__),
  [_typeVariables]: dart.finalFieldType(MapOfTypeVariable$TypeConstraint())
}));
dart.TypeConstraint = class TypeConstraint extends core.Object {
  [_constrainLower](type) {
    if (this.lower != null) {
      if (dart.isSubtypeOf(this.lower, type)) {
        return;
      }
      if (!dart.isSubtypeOf(type, this.lower)) {
        type = core.Null;
      }
    }
    this.lower = type;
  }
  [_constrainUpper](type) {
    if (this.upper != null) {
      if (dart.isSubtypeOf(type, this.upper)) {
        return;
      }
      if (!dart.isSubtypeOf(this.upper, type)) {
        type = core.Object;
      }
    }
    this.upper = type;
  }
  toString() {
    return dart.typeName(this.lower) + " <: <type> <: " + dart.typeName(this.upper);
  }
};
(dart.TypeConstraint.new = function() {
  this.lower = null;
  this.upper = null;
}).prototype = dart.TypeConstraint.prototype;
dart.addTypeTests(dart.TypeConstraint);
dart.setMethodSignature(dart.TypeConstraint, () => ({
  __proto__: dart.getMethods(dart.TypeConstraint.__proto__),
  [_constrainLower]: dart.fnType(dart.void, [core.Object]),
  [_constrainUpper]: dart.fnType(dart.void, [core.Object])
}));
dart.setFieldSignature(dart.TypeConstraint, () => ({
  __proto__: dart.getFields(dart.TypeConstraint.__proto__),
  lower: dart.fieldType(core.Object),
  upper: dart.fieldType(core.Object)
}));
dart.defineExtensionMethods(dart.TypeConstraint, ['toString']);
dart._thrownValue = Symbol("_thrownValue");
dart._jsError = Symbol("_jsError");
dart._stackTrace = Symbol("_stackTrace");
dart.DartError = class DartError extends Error {
  constructor(error) {
    super();
    this[dart._thrownValue] = error;
    if (error != null && typeof error == "object" && error[dart._jsError] == null) {
      error[dart._jsError] = this;
    }
  }
  get message() {
    return dart.toString(this[dart._thrownValue]);
  }
};
dart.RethrownDartError = class RethrownDartError extends dart.DartError {
  constructor(error, stackTrace) {
    super(error);
    this[dart._stackTrace] = stackTrace;
  }
  get message() {
    return super.message + "\n    " + dart.toString(this[dart._stackTrace]) + "\n";
  }
};
const _jsError = Symbol('_jsError');
const _jsObjectMissingTrace = Symbol('_jsObjectMissingTrace');
const _trace = Symbol('_trace');
dart._StackTrace = class _StackTrace extends core.Object {
  toString() {
    if (this[_trace] != null) return this[_trace];
    let e = this[_jsError];
    let trace = "";
    if (e != null && typeof e === "object") {
      trace = _interceptors.NativeError.is(e) ? e[$dartStack]() : e.stack;
      if (trace != null && _debugger.stackTraceMapper != null) {
        trace = _debugger.stackTraceMapper(trace);
      }
    }
    if (trace[$isEmpty] || this[_jsObjectMissingTrace] != null) {
      let jsToString = null;
      try {
        jsToString = "" + this[_jsObjectMissingTrace];
      } catch (e$) {
        let _ = dart.getThrown(e$);
        jsToString = "<error converting JS object to string>";
      }
      trace = "Non-error `" + dart.str(jsToString) + "` thrown by JS does not have stack trace." + ("\nCaught in Dart at:\n\n" + dart.str(trace));
    }
    return this[_trace] = trace;
  }
};
(dart._StackTrace.new = function(jsError) {
  this[_trace] = null;
  this[_jsError] = jsError;
  this[_jsObjectMissingTrace] = null;
}).prototype = dart._StackTrace.prototype;
(dart._StackTrace.missing = function(caughtObj) {
  this[_trace] = null;
  this[_jsObjectMissingTrace] = caughtObj != null ? caughtObj : "null";
  this[_jsError] = Error();
}).prototype = dart._StackTrace.prototype;
dart.addTypeTests(dart._StackTrace);
dart._StackTrace[dart.implements] = () => [core.StackTrace];
dart.setFieldSignature(dart._StackTrace, () => ({
  __proto__: dart.getFields(dart._StackTrace.__proto__),
  [_jsError]: dart.finalFieldType(core.Object),
  [_jsObjectMissingTrace]: dart.finalFieldType(core.Object),
  [_trace]: dart.fieldType(core.String)
}));
dart.defineExtensionMethods(dart._StackTrace, ['toString']);
let const$;
let const$0;
let const$1;
core.Invocation = class Invocation extends core.Object {
  static method(memberName, positionalArguments, namedArguments) {
    if (namedArguments === void 0) namedArguments = null;
    return new core._Invocation.method(memberName, null, positionalArguments, namedArguments);
  }
  static genericMethod(memberName, typeArguments, positionalArguments, namedArguments) {
    if (namedArguments === void 0) namedArguments = null;
    return new core._Invocation.method(memberName, typeArguments, positionalArguments, namedArguments);
  }
  static getter(name) {
    return new core._Invocation.getter(name);
  }
  static setter(memberName, argument) {
    return new core._Invocation.setter(memberName, argument);
  }
  get typeArguments() {
    return const$1 || (const$1 = dart.constList([], core.Type));
  }
  get isAccessor() {
    return dart.test(this.isGetter) || dart.test(this.isSetter);
  }
};
(core.Invocation.new = function() {
}).prototype = core.Invocation.prototype;
dart.addTypeTests(core.Invocation);
dart.setGetterSignature(core.Invocation, () => ({
  __proto__: dart.getGetters(core.Invocation.__proto__),
  typeArguments: core.List$(core.Type),
  isAccessor: core.bool
}));
dart.InvocationImpl = class InvocationImpl extends core.Invocation {
  get typeArguments() {
    return this[typeArguments$];
  }
  set typeArguments(value) {
    super.typeArguments = value;
  }
  static _namedArgsToSymbols(namedArgs) {
    if (namedArgs == null) return const$0 || (const$0 = dart.constMap(core.Symbol, dart.dynamic, []));
    return MapOfSymbol$dynamic().unmodifiable(core.Map.fromIterable(dart.getOwnPropertyNames(namedArgs), {
      key: dart._dartSymbol,
      value: k => namedArgs[k]
    }));
  }
};
(dart.InvocationImpl.new = function(memberName, positionalArguments, opts) {
  let namedArguments = opts && 'namedArguments' in opts ? opts.namedArguments : null;
  let typeArguments = opts && 'typeArguments' in opts ? opts.typeArguments : null;
  let isMethod = opts && 'isMethod' in opts ? opts.isMethod : false;
  let isGetter = opts && 'isGetter' in opts ? opts.isGetter : false;
  let isSetter = opts && 'isSetter' in opts ? opts.isSetter : false;
  this.isMethod = isMethod;
  this.isGetter = isGetter;
  this.isSetter = isSetter;
  this.memberName = dart.test(isSetter) ? dart._setterSymbol(memberName) : dart._dartSymbol(memberName);
  this.positionalArguments = core.List.unmodifiable(positionalArguments);
  this.namedArguments = dart.InvocationImpl._namedArgsToSymbols(namedArguments);
  this[typeArguments$] = typeArguments == null ? const$ || (const$ = dart.constList([], core.Type)) : ListOfType().unmodifiable(typeArguments[$map](dart.dynamic, dart.wrapType));
  dart.InvocationImpl.__proto__.new.call(this);
}).prototype = dart.InvocationImpl.prototype;
dart.addTypeTests(dart.InvocationImpl);
const typeArguments$ = Symbol("InvocationImpl.typeArguments");
dart.setFieldSignature(dart.InvocationImpl, () => ({
  __proto__: dart.getFields(dart.InvocationImpl.__proto__),
  memberName: dart.finalFieldType(core.Symbol),
  positionalArguments: dart.finalFieldType(core.List),
  namedArguments: dart.finalFieldType(MapOfSymbol$dynamic()),
  typeArguments: dart.finalFieldType(ListOfType()),
  isMethod: dart.finalFieldType(core.bool),
  isGetter: dart.finalFieldType(core.bool),
  isSetter: dart.finalFieldType(core.bool)
}));
dart._ignoreSubtypeCache = new Map();
dart.constantMaps = new Map();
dart.constantSets = new Map();
dart._value = Symbol("_value");
dart.constants = new Map();
dart.constantLists = new Map();
dart.identityHashCode_ = Symbol("_identityHashCode");
dart.JsIterator = class JsIterator {
  constructor(dartIterator) {
    this.dartIterator = dartIterator;
  }
  next() {
    let i = this.dartIterator;
    let done = !i.moveNext();
    return {done: done, value: done ? void 0 : i.current};
  }
};
_debugger.JsonMLConfig = class JsonMLConfig extends core.Object {
  toString() {
    return "JsonMLConfig(" + dart.str(this.name) + ")";
  }
};
(_debugger.JsonMLConfig.new = function(name) {
  this.name = name;
}).prototype = _debugger.JsonMLConfig.prototype;
dart.addTypeTests(_debugger.JsonMLConfig);
dart.setFieldSignature(_debugger.JsonMLConfig, () => ({
  __proto__: dart.getFields(_debugger.JsonMLConfig.__proto__),
  name: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(_debugger.JsonMLConfig, ['toString']);
dart.defineLazy(_debugger.JsonMLConfig, {
  /*_debugger.JsonMLConfig.none*/get none() {
    return dart.const(new _debugger.JsonMLConfig.new("none"));
  },
  /*_debugger.JsonMLConfig.skipDart*/get skipDart() {
    return dart.const(new _debugger.JsonMLConfig.new("skipDart"));
  },
  /*_debugger.JsonMLConfig.keyToString*/get keyToString() {
    return dart.const(new _debugger.JsonMLConfig.new("keyToString"));
  },
  /*_debugger.JsonMLConfig.asClass*/get asClass() {
    return dart.const(new _debugger.JsonMLConfig.new("asClass"));
  },
  /*_debugger.JsonMLConfig.asObject*/get asObject() {
    return dart.const(new _debugger.JsonMLConfig.new("asObject"));
  }
});
dart.defineLazy(_debugger, {
  /*_debugger._maxSpanLength*/get _maxSpanLength() {
    return 100;
  },
  set _maxSpanLength(_) {},
  /*_debugger._devtoolsFormatter*/get _devtoolsFormatter() {
    return new _debugger.JsonMLFormatter.new(new _debugger.DartFormatter.new());
  },
  set _devtoolsFormatter(_) {},
  /*_debugger.maxFormatterStringLength*/get maxFormatterStringLength() {
    return 100;
  },
  set maxFormatterStringLength(_) {}
});
_debugger._typeof = function(object) {
  return typeof object;
};
_debugger.getOwnPropertyNames = function(object) {
  return JSArrayOfString().of(dart.getOwnPropertyNames(object));
};
_debugger.getOwnPropertySymbols = function(object) {
  return Object.getOwnPropertySymbols(object);
};
_debugger.JSNative = class JSNative extends core.Object {
  static getProperty(object, name) {
    return object[name];
  }
  static setProperty(object, name, value) {
    return object[name] = value;
  }
};
(_debugger.JSNative.new = function() {
}).prototype = _debugger.JSNative.prototype;
dart.addTypeTests(_debugger.JSNative);
_debugger.addMetadataChildren = function(object, ret) {
  ret.add(new _debugger.NameValuePair.new({name: "[[class]]", value: dart.getReifiedType(object), config: _debugger.JsonMLConfig.asClass}));
};
_debugger.addPropertiesFromSignature = function(sig, properties, object, walkPrototypeChain, opts) {
  let tagTypes = opts && 'tagTypes' in opts ? opts.tagTypes : false;
  let skippedNames = new collection._HashSet.new();
  skippedNames.add("hashCode");
  let objectPrototype = Object.prototype;
  while (sig != null && !core.identical(sig, objectPrototype)) {
    for (let symbol of _debugger.getOwnPropertySymbols(sig)) {
      let dartName = _debugger.symbolName(symbol);
      let dartXPrefix = "dartx.";
      if (dartName[$startsWith](dartXPrefix)) {
        dartName = dartName[$substring](dartXPrefix.length);
      }
      if (dart.test(skippedNames.contains(dartName))) continue;
      let value = _debugger.safeGetProperty(object, symbol);
      if (dart.dtest(tagTypes) && _debugger._typeof(value) === "function") {
        dart.fn(value, sig[symbol]);
      }
      properties.add(new _debugger.NameValuePair.new({name: dartName, value: value}));
    }
    for (let name of _debugger.getOwnPropertyNames(sig)) {
      let value = _debugger.safeGetProperty(object, name);
      if (dart.test(skippedNames.contains(name))) continue;
      if (dart.dtest(tagTypes) && _debugger._typeof(value) === "function") {
        dart.fn(value, sig[name]);
      }
      properties.add(new _debugger.NameValuePair.new({name: name, value: value}));
    }
    if (!dart.test(walkPrototypeChain)) break;
    sig = dart.getPrototypeOf(sig);
  }
};
_debugger.sortProperties = function(properties) {
  let sortedProperties = properties[$toList]();
  sortedProperties[$sort](dart.fn((a, b) => {
    let aPrivate = a.name[$startsWith]("_");
    let bPrivate = b.name[$startsWith]("_");
    if (aPrivate !== bPrivate) return aPrivate ? 1 : -1;
    return a.name[$compareTo](b.name);
  }, NameValuePairAndNameValuePairToint()));
  return sortedProperties;
};
_debugger.getObjectTypeName = function(object) {
  let reifiedType = dart.getReifiedType(object);
  if (reifiedType == null) {
    if (_debugger._typeof(object) === "function") {
      return "[[Raw JavaScript Function]]";
    }
    return "<Error getting type name>";
  }
  return _debugger.getTypeName(reifiedType);
};
_debugger.getTypeName = function(type) {
  return dart.typeName(type);
};
const _simpleFormatter = Symbol('_simpleFormatter');
_debugger.safePreview = function(object, config) {
  try {
    let preview = _debugger._devtoolsFormatter[_simpleFormatter].preview(object, config);
    if (preview != null) return preview;
    return dart.toString(object);
  } catch (e$) {
    let e = dart.getThrown(e$);
    return "<Exception thrown> " + dart.str(e);
  }
};
_debugger.symbolName = function(symbol) {
  let name = dart.toString(symbol);
  if (!name[$startsWith]("Symbol(")) dart.assertFailed();
  return name[$substring]("Symbol(".length, name.length - 1);
};
_debugger.hasMethod = function(object, name) {
  try {
    return dart.hasMethod(object, name);
  } catch (e$) {
    let e = dart.getThrown(e$);
    return false;
  }
};
_debugger.NameValuePair = class NameValuePair extends core.Object {
  _equals(other) {
    if (!_debugger.NameValuePair.is(other)) return false;
    if (dart.test(this.hideName) || dart.dtest(dart.dload(other, 'hideName'))) return this === other;
    return dart.equals(dart.dload(other, 'name'), this.name);
  }
  get hashCode() {
    return dart.hashCode(this.name);
  }
  get displayName() {
    return dart.test(this.hideName) ? "" : this.name;
  }
};
(_debugger.NameValuePair.new = function(opts) {
  let name = opts && 'name' in opts ? opts.name : null;
  let value = opts && 'value' in opts ? opts.value : null;
  let config = opts && 'config' in opts ? opts.config : _debugger.JsonMLConfig.none;
  let hideName = opts && 'hideName' in opts ? opts.hideName : false;
  this.name = name;
  this.value = value;
  this.config = config;
  this.hideName = hideName;
}).prototype = _debugger.NameValuePair.prototype;
dart.addTypeTests(_debugger.NameValuePair);
dart.setGetterSignature(_debugger.NameValuePair, () => ({
  __proto__: dart.getGetters(_debugger.NameValuePair.__proto__),
  displayName: core.String
}));
dart.setFieldSignature(_debugger.NameValuePair, () => ({
  __proto__: dart.getFields(_debugger.NameValuePair.__proto__),
  name: dart.finalFieldType(core.String),
  value: dart.finalFieldType(core.Object),
  config: dart.finalFieldType(_debugger.JsonMLConfig),
  hideName: dart.finalFieldType(core.bool)
}));
dart.defineExtensionMethods(_debugger.NameValuePair, ['_equals']);
dart.defineExtensionAccessors(_debugger.NameValuePair, ['hashCode']);
_debugger.MapEntry = class MapEntry extends core.Object {};
(_debugger.MapEntry.new = function(opts) {
  let key = opts && 'key' in opts ? opts.key : null;
  let value = opts && 'value' in opts ? opts.value : null;
  this.key = key;
  this.value = value;
}).prototype = _debugger.MapEntry.prototype;
dart.addTypeTests(_debugger.MapEntry);
dart.setFieldSignature(_debugger.MapEntry, () => ({
  __proto__: dart.getFields(_debugger.MapEntry.__proto__),
  key: dart.finalFieldType(core.Object),
  value: dart.finalFieldType(core.Object)
}));
_debugger.IterableSpan = class IterableSpan extends core.Object {
  get length() {
    return dart.notNull(this.end) - dart.notNull(this.start);
  }
  get maxPowerOfSubsetSize() {
    return (math.log(dart.notNull(this.length) - 0.5) / math.log(_debugger._maxSpanLength))[$truncate]();
  }
  get subsetSize() {
    return dart.asInt(math.pow(_debugger._maxSpanLength, this.maxPowerOfSubsetSize));
  }
  asMap() {
    return this.iterable[$skip](this.start)[$take](this.length)[$toList]()[$asMap]();
  }
  children() {
    let children = JSArrayOfNameValuePair().of([]);
    if (dart.notNull(this.length) <= dart.notNull(_debugger._maxSpanLength)) {
      this.asMap()[$forEach](dart.fn((i, element) => {
        children[$add](new _debugger.NameValuePair.new({name: (dart.notNull(i) + dart.notNull(this.start))[$toString](), value: element}));
      }, intAnddynamicToNull()));
    } else {
      for (let i = this.start; dart.notNull(i) < dart.notNull(this.end); i = dart.notNull(i) + dart.notNull(this.subsetSize)) {
        let subSpan = new _debugger.IterableSpan.new(i, math.min(core.int, this.end, dart.notNull(this.subsetSize) + dart.notNull(i)), this.iterable);
        if (subSpan.length === 1) {
          children[$add](new _debugger.NameValuePair.new({name: dart.toString(i), value: this.iterable[$elementAt](i)}));
        } else {
          children[$add](new _debugger.NameValuePair.new({name: "[" + dart.str(i) + "..." + dart.str(dart.notNull(subSpan.end) - 1) + "]", value: subSpan, hideName: true}));
        }
      }
    }
    return children;
  }
};
(_debugger.IterableSpan.new = function(start, end, iterable) {
  this.start = start;
  this.end = end;
  this.iterable = iterable;
}).prototype = _debugger.IterableSpan.prototype;
dart.addTypeTests(_debugger.IterableSpan);
dart.setMethodSignature(_debugger.IterableSpan, () => ({
  __proto__: dart.getMethods(_debugger.IterableSpan.__proto__),
  asMap: dart.fnType(core.Map$(core.int, dart.dynamic), []),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [])
}));
dart.setGetterSignature(_debugger.IterableSpan, () => ({
  __proto__: dart.getGetters(_debugger.IterableSpan.__proto__),
  length: core.int,
  maxPowerOfSubsetSize: core.int,
  subsetSize: core.int
}));
dart.setFieldSignature(_debugger.IterableSpan, () => ({
  __proto__: dart.getFields(_debugger.IterableSpan.__proto__),
  start: dart.finalFieldType(core.int),
  end: dart.finalFieldType(core.int),
  iterable: dart.finalFieldType(core.Iterable)
}));
_debugger.Library = class Library extends core.Object {};
(_debugger.Library.new = function(name, object) {
  this.name = name;
  this.object = object;
}).prototype = _debugger.Library.prototype;
dart.addTypeTests(_debugger.Library);
dart.setFieldSignature(_debugger.Library, () => ({
  __proto__: dart.getFields(_debugger.Library.__proto__),
  name: dart.finalFieldType(core.String),
  object: dart.finalFieldType(core.Object)
}));
_debugger.NamedConstructor = class NamedConstructor extends core.Object {};
(_debugger.NamedConstructor.new = function(object) {
  this.object = object;
}).prototype = _debugger.NamedConstructor.prototype;
dart.addTypeTests(_debugger.NamedConstructor);
dart.setFieldSignature(_debugger.NamedConstructor, () => ({
  __proto__: dart.getFields(_debugger.NamedConstructor.__proto__),
  object: dart.finalFieldType(core.Object)
}));
_debugger.HeritageClause = class HeritageClause extends core.Object {};
(_debugger.HeritageClause.new = function(name, types) {
  this.name = name;
  this.types = types;
}).prototype = _debugger.HeritageClause.prototype;
dart.addTypeTests(_debugger.HeritageClause);
dart.setFieldSignature(_debugger.HeritageClause, () => ({
  __proto__: dart.getFields(_debugger.HeritageClause.__proto__),
  name: dart.finalFieldType(core.String),
  types: dart.finalFieldType(core.List)
}));
_debugger.safeGetProperty = function(protoChain, name) {
  try {
    return _debugger.JSNative.getProperty(protoChain, name);
  } catch (e$) {
    let e = dart.getThrown(e$);
    return "<Exception thrown> " + dart.str(e);
  }
};
_debugger.safeProperties = function(object) {
  return MapOfdynamic$Object().fromIterable(_debugger.getOwnPropertyNames(object)[$where](dart.fn(each => _debugger.safeGetProperty(object, each) != null, StringTobool())), {key: dart.fn(name => name, dynamicTodynamic()), value: dart.fn(name => _debugger.safeGetProperty(object, name), dynamicToObject())});
};
const _attributes = Symbol('_attributes');
const _jsonML = Symbol('_jsonML');
_debugger.JsonMLElement = class JsonMLElement extends core.Object {
  appendChild(element) {
    this[_jsonML][$add](dart.dsend(element, 'toJsonML', []));
  }
  createChild(tagName) {
    let c = new _debugger.JsonMLElement.new(tagName);
    this[_jsonML][$add](c.toJsonML());
    return c;
  }
  createObjectTag(object) {
    let _ = this.createChild("object");
    _.addAttribute("object", object);
    return _;
  }
  setStyle(style) {
    dart.dput(this[_attributes], 'style', style);
  }
  addStyle(style) {
    if (dart.dload(this[_attributes], 'style') == null) {
      dart.dput(this[_attributes], 'style', style);
    } else {
      let o = this[_attributes];
      dart.dput(o, 'style', dart.dsend(dart.dload(o, 'style'), '+', [style]));
    }
  }
  addAttribute(key, value) {
    _debugger.JSNative.setProperty(this[_attributes], key, value);
  }
  createTextChild(text) {
    this[_jsonML][$add](text);
  }
  toJsonML() {
    return this[_jsonML];
  }
};
(_debugger.JsonMLElement.new = function(tagName) {
  this[_attributes] = null;
  this[_jsonML] = null;
  this[_attributes] = {};
  this[_jsonML] = [tagName, this[_attributes]];
}).prototype = _debugger.JsonMLElement.prototype;
dart.addTypeTests(_debugger.JsonMLElement);
dart.setMethodSignature(_debugger.JsonMLElement, () => ({
  __proto__: dart.getMethods(_debugger.JsonMLElement.__proto__),
  appendChild: dart.fnType(dart.dynamic, [dart.dynamic]),
  createChild: dart.fnType(_debugger.JsonMLElement, [core.String]),
  createObjectTag: dart.fnType(_debugger.JsonMLElement, [dart.dynamic]),
  setStyle: dart.fnType(dart.void, [core.String]),
  addStyle: dart.fnType(dart.dynamic, [core.String]),
  addAttribute: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic]),
  createTextChild: dart.fnType(dart.dynamic, [core.String]),
  toJsonML: dart.fnType(dart.dynamic, [])
}));
dart.setFieldSignature(_debugger.JsonMLElement, () => ({
  __proto__: dart.getFields(_debugger.JsonMLElement.__proto__),
  [_attributes]: dart.fieldType(dart.dynamic),
  [_jsonML]: dart.fieldType(core.List)
}));
_debugger.isNativeJavaScriptObject = function(object) {
  let type = _debugger._typeof(object);
  if (type !== "object" && type !== "function") return true;
  if (dart.test(dart.isJsInterop(object)) && dart.getModuleName(object) == null) {
    return true;
  }
  return html$.Node.is(object);
};
_debugger.JsonMLFormatter = class JsonMLFormatter extends core.Object {
  setMaxSpanLengthForTestingOnly(spanLength) {
    _debugger._maxSpanLength = spanLength;
  }
  header(object, config) {
    this.customFormattersOn = true;
    if (dart.equals(config, _debugger.JsonMLConfig.skipDart) || dart.test(_debugger.isNativeJavaScriptObject(object))) {
      return null;
    }
    let c = this[_simpleFormatter].preview(object, config);
    if (c == null) return null;
    if (dart.equals(config, _debugger.JsonMLConfig.keyToString)) {
      c = dart.toString(object);
    }
    let element = new _debugger.JsonMLElement.new("span");
    element.setStyle("background-color: #d9edf7;color: black");
    element.createTextChild(c);
    return element.toJsonML();
  }
  hasBody(object, config) {
    return this[_simpleFormatter].hasChildren(object, config);
  }
  body(object, config) {
    let body = new _debugger.JsonMLElement.new("ol");
    body.setStyle("list-style-type: none;" + "padding-left: 0px;" + "margin-top: 0px;" + "margin-bottom: 0px;" + "margin-left: 12px;");
    if (core.StackTrace.is(object)) {
      body.addStyle("background-color: thistle;color: rgb(196, 26, 22);");
    }
    let children = this[_simpleFormatter].children(object, config);
    if (children == null) return body.toJsonML();
    for (let child of children) {
      let li = body.createChild("li");
      li.setStyle("padding-left: 13px;");
      let nameSpan = null;
      let valueStyle = "";
      if (!dart.test(child.hideName)) {
        nameSpan = new _debugger.JsonMLElement.new("span");
        nameSpan.createTextChild(child.displayName[$isNotEmpty] ? dart.str(child.displayName) + ": " : "");
        nameSpan.setStyle("background-color: thistle; color: rgb(136, 19, 145); margin-right: -13px");
        valueStyle = "margin-left: 13px";
      }
      if (_debugger._typeof(child.value) === "object" || _debugger._typeof(child.value) === "function") {
        let valueSpan = new _debugger.JsonMLElement.new("span");
        valueSpan.setStyle(valueStyle);
        valueSpan.createObjectTag(child.value).addAttribute("config", child.config);
        if (nameSpan != null) {
          li.appendChild(nameSpan);
        }
        li.appendChild(valueSpan);
      } else {
        let line = li.createChild("span");
        if (nameSpan != null) {
          line.appendChild(nameSpan);
        }
        line.appendChild((() => {
          let _ = new _debugger.JsonMLElement.new("span");
          _.createTextChild(_debugger.safePreview(child.value, child.config));
          _.setStyle(valueStyle);
          return _;
        })());
      }
    }
    return body.toJsonML();
  }
};
(_debugger.JsonMLFormatter.new = function(simpleFormatter) {
  this.customFormattersOn = false;
  this[_simpleFormatter] = simpleFormatter;
}).prototype = _debugger.JsonMLFormatter.prototype;
dart.addTypeTests(_debugger.JsonMLFormatter);
dart.setMethodSignature(_debugger.JsonMLFormatter, () => ({
  __proto__: dart.getMethods(_debugger.JsonMLFormatter.__proto__),
  setMaxSpanLengthForTestingOnly: dart.fnType(dart.void, [core.int]),
  header: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic]),
  hasBody: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  body: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic])
}));
dart.setFieldSignature(_debugger.JsonMLFormatter, () => ({
  __proto__: dart.getFields(_debugger.JsonMLFormatter.__proto__),
  [_simpleFormatter]: dart.fieldType(_debugger.DartFormatter),
  customFormattersOn: dart.fieldType(core.bool)
}));
_debugger.Formatter = class Formatter extends core.Object {};
(_debugger.Formatter.new = function() {
}).prototype = _debugger.Formatter.prototype;
dart.addTypeTests(_debugger.Formatter);
const _formatters = Symbol('_formatters');
_debugger.DartFormatter = class DartFormatter extends core.Object {
  preview(object, config) {
    try {
      if (object == null || typeof object == 'number' || typeof object == 'string' || dart.test(_debugger.isNativeJavaScriptObject(object))) {
        return dart.toString(object);
      }
      for (let formatter of this[_formatters]) {
        if (dart.test(formatter.accept(object, config))) return formatter.preview(object);
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
      let trace = dart.stackTrace(e$);
      html$.window[$console].error("Caught exception " + dart.str(e) + "\n trace:\n" + dart.str(trace));
    }
    return null;
  }
  hasChildren(object, config) {
    if (object == null) return false;
    try {
      for (let formatter of this[_formatters]) {
        if (dart.test(formatter.accept(object, config))) return formatter.hasChildren(object);
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
      let trace = dart.stackTrace(e$);
      html$.window[$console].error("[hasChildren] Caught exception " + dart.str(e) + "\n trace:\n" + dart.str(trace));
    }
    return false;
  }
  children(object, config) {
    try {
      if (object != null) {
        for (let formatter of this[_formatters]) {
          if (dart.test(formatter.accept(object, config))) return formatter.children(object);
        }
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
      let trace = dart.stackTrace(e$);
      html$.window[$console].error("Caught exception " + dart.str(e) + "\n trace:\n" + dart.str(trace));
    }
    return JSArrayOfNameValuePair().of([]);
  }
};
(_debugger.DartFormatter.new = function() {
  this[_formatters] = null;
  this[_formatters] = JSArrayOfFormatter().of([new _debugger.ObjectInternalsFormatter.new(), new _debugger.ClassFormatter.new(), new _debugger.TypeFormatter.new(), new _debugger.NamedConstructorFormatter.new(), new _debugger.MapFormatter.new(), new _debugger.IterableFormatter.new(), new _debugger.IterableSpanFormatter.new(), new _debugger.MapEntryFormatter.new(), new _debugger.StackTraceFormatter.new(), new _debugger.ErrorAndExceptionFormatter.new(), new _debugger.FunctionFormatter.new(), new _debugger.HeritageClauseFormatter.new(), new _debugger.LibraryModuleFormatter.new(), new _debugger.LibraryFormatter.new(), new _debugger.ObjectFormatter.new()]);
}).prototype = _debugger.DartFormatter.prototype;
dart.addTypeTests(_debugger.DartFormatter);
dart.setMethodSignature(_debugger.DartFormatter, () => ({
  __proto__: dart.getMethods(_debugger.DartFormatter.__proto__),
  preview: dart.fnType(core.String, [dart.dynamic, dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic, dart.dynamic])
}));
dart.setFieldSignature(_debugger.DartFormatter, () => ({
  __proto__: dart.getFields(_debugger.DartFormatter.__proto__),
  [_formatters]: dart.fieldType(ListOfFormatter())
}));
_debugger.ObjectFormatter = class ObjectFormatter extends _debugger.Formatter {
  accept(object, config) {
    return !dart.test(_debugger.isNativeJavaScriptObject(object));
  }
  preview(object) {
    let typeName = _debugger.getObjectTypeName(object);
    try {
      let toString = dart.str(object);
      if (toString.length > dart.notNull(_debugger.maxFormatterStringLength)) {
        toString = toString[$substring](0, dart.notNull(_debugger.maxFormatterStringLength) - 3) + "...";
      }
      if (toString[$contains](typeName)) {
        return toString;
      } else {
        return toString + " (" + dart.str(typeName) + ")";
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
    return typeName;
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    let type = dart.getType(object);
    let ret = new (_HashSetOfNameValuePair()).new();
    let fields = new (_HashSetOfNameValuePair()).new();
    _debugger.addPropertiesFromSignature(dart.getFields(type), fields, object, true);
    let getters = new (_HashSetOfNameValuePair()).new();
    _debugger.addPropertiesFromSignature(dart.getGetters(type), getters, object, true);
    ret.addAll(_debugger.sortProperties(fields));
    ret.addAll(_debugger.sortProperties(getters));
    _debugger.addMetadataChildren(object, ret);
    return ret.toList();
  }
};
(_debugger.ObjectFormatter.new = function() {
}).prototype = _debugger.ObjectFormatter.prototype;
dart.addTypeTests(_debugger.ObjectFormatter);
dart.setMethodSignature(_debugger.ObjectFormatter, () => ({
  __proto__: dart.getMethods(_debugger.ObjectFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
_debugger.ObjectInternalsFormatter = class ObjectInternalsFormatter extends _debugger.ObjectFormatter {
  accept(object, config) {
    return dart.test(super.accept(object, config)) && dart.equals(config, _debugger.JsonMLConfig.asObject);
  }
  preview(object) {
    return _debugger.getObjectTypeName(object);
  }
};
(_debugger.ObjectInternalsFormatter.new = function() {
}).prototype = _debugger.ObjectInternalsFormatter.prototype;
dart.addTypeTests(_debugger.ObjectInternalsFormatter);
_debugger.LibraryModuleFormatter = class LibraryModuleFormatter extends core.Object {
  accept(object, config) {
    return dart.getModuleName(object) != null;
  }
  hasChildren(object) {
    return true;
  }
  preview(object) {
    let libraryNames = dart.getModuleName(object)[$split]("/");
    if (dart.notNull(libraryNames[$length]) > 1 && libraryNames[$last] == libraryNames[$_get](dart.notNull(libraryNames[$length]) - 2)) {
      libraryNames[$_set](dart.notNull(libraryNames[$length]) - 1, "");
    }
    return "Library Module: " + dart.str(libraryNames[$join]("/"));
  }
  children(object) {
    let children = new (_HashSetOfNameValuePair()).new();
    for (let name of _debugger.getOwnPropertyNames(object)) {
      let value = _debugger.safeGetProperty(object, name);
      children.add(new _debugger.NameValuePair.new({name: name, value: new _debugger.Library.new(name, value), hideName: true}));
    }
    return children.toList();
  }
};
(_debugger.LibraryModuleFormatter.new = function() {
}).prototype = _debugger.LibraryModuleFormatter.prototype;
dart.addTypeTests(_debugger.LibraryModuleFormatter);
_debugger.LibraryModuleFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.LibraryModuleFormatter, () => ({
  __proto__: dart.getMethods(_debugger.LibraryModuleFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
_debugger.LibraryFormatter = class LibraryFormatter extends core.Object {
  accept(object, config) {
    return _debugger.Library.is(object);
  }
  hasChildren(object) {
    return true;
  }
  preview(object) {
    return core.String._check(dart.dload(object, 'name'));
  }
  children(object) {
    let children = new (_HashSetOfNameValuePair()).new();
    let objectProperties = _debugger.safeProperties(dart.dload(object, 'object'));
    dart.dsend(objectProperties, 'forEach', [dart.fn((name, value) => {
        if (dart.getGenericTypeCtor(value) != null) return;
        children.add(_debugger.NameValuePair._check(dart.isType(value) ? this.classChild(core.String._check(name), value) : new _debugger.NameValuePair.new({name: core.String._check(name), value: value})));
      }, dynamicAnddynamicToNull())]);
    return children.toList();
  }
  classChild(name, child) {
    let typeName = _debugger.getTypeName(child);
    return new _debugger.NameValuePair.new({name: typeName, value: child, config: _debugger.JsonMLConfig.asClass});
  }
};
(_debugger.LibraryFormatter.new = function() {
  this.genericParameters = new (IdentityMapOfString$String()).new();
}).prototype = _debugger.LibraryFormatter.prototype;
dart.addTypeTests(_debugger.LibraryFormatter);
_debugger.LibraryFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.LibraryFormatter, () => ({
  __proto__: dart.getMethods(_debugger.LibraryFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic]),
  classChild: dart.fnType(dart.dynamic, [core.String, core.Object])
}));
dart.setFieldSignature(_debugger.LibraryFormatter, () => ({
  __proto__: dart.getFields(_debugger.LibraryFormatter.__proto__),
  genericParameters: dart.fieldType(HashMapOfString$String())
}));
_debugger.FunctionFormatter = class FunctionFormatter extends core.Object {
  accept(object, config) {
    if (_debugger._typeof(object) !== "function") return false;
    return dart.getReifiedType(object) != null;
  }
  hasChildren(object) {
    return true;
  }
  preview(object) {
    return dart.typeName(dart.getReifiedType(object));
  }
  children(object) {
    return JSArrayOfNameValuePair().of([new _debugger.NameValuePair.new({name: "signature", value: this.preview(object)}), new _debugger.NameValuePair.new({name: "JavaScript Function", value: object, config: _debugger.JsonMLConfig.skipDart})]);
  }
};
(_debugger.FunctionFormatter.new = function() {
}).prototype = _debugger.FunctionFormatter.prototype;
dart.addTypeTests(_debugger.FunctionFormatter);
_debugger.FunctionFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.FunctionFormatter, () => ({
  __proto__: dart.getMethods(_debugger.FunctionFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
_debugger.MapFormatter = class MapFormatter extends core.Object {
  accept(object, config) {
    return core.Map.is(object);
  }
  hasChildren(object) {
    return true;
  }
  preview(object) {
    let map = core.Map._check(object);
    try {
      return dart.str(_debugger.getObjectTypeName(map)) + " length " + dart.str(map[$length]);
    } catch (e$) {
      let e = dart.getThrown(e$);
      return _debugger.safePreview(object, _debugger.JsonMLConfig.none);
    }
  }
  children(object) {
    let map = core.Map._check(object);
    let entries = new (_HashSetOfNameValuePair()).new();
    map[$forEach](dart.fn((key, value) => {
      let entryWrapper = new _debugger.MapEntry.new({key: key, value: value});
      entries.add(new _debugger.NameValuePair.new({name: dart.toString(entries.length), value: entryWrapper}));
    }, dynamicAnddynamicToNull()));
    this.addInstanceMembers(object, entries);
    _debugger.addMetadataChildren(object, entries);
    return entries.toList();
  }
  addInstanceMembers(object, ret) {
    ret.add(new _debugger.NameValuePair.new({name: "[[instance members]]", value: object, config: _debugger.JsonMLConfig.asObject}));
  }
};
(_debugger.MapFormatter.new = function() {
}).prototype = _debugger.MapFormatter.prototype;
dart.addTypeTests(_debugger.MapFormatter);
_debugger.MapFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.MapFormatter, () => ({
  __proto__: dart.getMethods(_debugger.MapFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic]),
  addInstanceMembers: dart.fnType(dart.void, [dart.dynamic, core.Set$(_debugger.NameValuePair)])
}));
_debugger.IterableFormatter = class IterableFormatter extends core.Object {
  accept(object, config) {
    return core.Iterable.is(object);
  }
  preview(object) {
    let iterable = core.Iterable._check(object);
    try {
      let length = iterable[$length];
      return dart.str(_debugger.getObjectTypeName(iterable)) + " length " + dart.str(length);
    } catch (e) {
      let _ = dart.getThrown(e);
      return dart.str(_debugger.getObjectTypeName(iterable));
    }
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    let children = new (_HashSetOfNameValuePair()).new();
    children.addAll(new _debugger.IterableSpan.new(0, core.int._check(dart.dload(object, 'length')), core.Iterable._check(object)).children());
    _debugger.addMetadataChildren(object, children);
    return children.toList();
  }
};
(_debugger.IterableFormatter.new = function() {
}).prototype = _debugger.IterableFormatter.prototype;
dart.addTypeTests(_debugger.IterableFormatter);
_debugger.IterableFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.IterableFormatter, () => ({
  __proto__: dart.getMethods(_debugger.IterableFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
_debugger.NamedConstructorFormatter = class NamedConstructorFormatter extends core.Object {
  accept(object, config) {
    return _debugger.NamedConstructor.is(object);
  }
  preview(object) {
    return "Named Constructor";
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    return JSArrayOfNameValuePair().of([new _debugger.NameValuePair.new({name: "JavaScript Function", value: object, config: _debugger.JsonMLConfig.skipDart})]);
  }
};
(_debugger.NamedConstructorFormatter.new = function() {
}).prototype = _debugger.NamedConstructorFormatter.prototype;
dart.addTypeTests(_debugger.NamedConstructorFormatter);
_debugger.NamedConstructorFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.NamedConstructorFormatter, () => ({
  __proto__: dart.getMethods(_debugger.NamedConstructorFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
_debugger.MapEntryFormatter = class MapEntryFormatter extends core.Object {
  accept(object, config) {
    return _debugger.MapEntry.is(object);
  }
  preview(object) {
    let entry = _debugger.MapEntry._check(object);
    return dart.str(_debugger.safePreview(entry.key, _debugger.JsonMLConfig.none)) + " => " + dart.str(_debugger.safePreview(entry.value, _debugger.JsonMLConfig.none));
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    return JSArrayOfNameValuePair().of([new _debugger.NameValuePair.new({name: "key", value: dart.dload(object, 'key'), config: _debugger.JsonMLConfig.keyToString}), new _debugger.NameValuePair.new({name: "value", value: dart.dload(object, 'value')})]);
  }
};
(_debugger.MapEntryFormatter.new = function() {
}).prototype = _debugger.MapEntryFormatter.prototype;
dart.addTypeTests(_debugger.MapEntryFormatter);
_debugger.MapEntryFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.MapEntryFormatter, () => ({
  __proto__: dart.getMethods(_debugger.MapEntryFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
_debugger.HeritageClauseFormatter = class HeritageClauseFormatter extends core.Object {
  accept(object, config) {
    return _debugger.HeritageClause.is(object);
  }
  preview(object) {
    let clause = _debugger.HeritageClause._check(object);
    let typeNames = IterableOfString()._check(clause.types[$map](core.String, dart.fn(_debugger.getTypeName, dynamicToString())));
    return dart.str(clause.name) + " " + dart.str(typeNames[$join](", "));
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    let clause = _debugger.HeritageClause._check(object);
    let children = JSArrayOfNameValuePair().of([]);
    for (let type of clause.types) {
      children[$add](new _debugger.NameValuePair.new({value: type, config: _debugger.JsonMLConfig.asClass}));
    }
    return children;
  }
};
(_debugger.HeritageClauseFormatter.new = function() {
}).prototype = _debugger.HeritageClauseFormatter.prototype;
dart.addTypeTests(_debugger.HeritageClauseFormatter);
_debugger.HeritageClauseFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.HeritageClauseFormatter, () => ({
  __proto__: dart.getMethods(_debugger.HeritageClauseFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
_debugger.IterableSpanFormatter = class IterableSpanFormatter extends core.Object {
  accept(object, config) {
    return _debugger.IterableSpan.is(object);
  }
  preview(object) {
    return "[" + dart.str(dart.dload(object, 'start')) + "..." + dart.str(dart.dsend(dart.dload(object, 'end'), '-', [1])) + "]";
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    return ListOfNameValuePair()._check(dart.dsend(object, 'children', []));
  }
};
(_debugger.IterableSpanFormatter.new = function() {
}).prototype = _debugger.IterableSpanFormatter.prototype;
dart.addTypeTests(_debugger.IterableSpanFormatter);
_debugger.IterableSpanFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.IterableSpanFormatter, () => ({
  __proto__: dart.getMethods(_debugger.IterableSpanFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
_debugger.ErrorAndExceptionFormatter = class ErrorAndExceptionFormatter extends _debugger.ObjectFormatter {
  accept(object, config) {
    return core.Error.is(object) || core.Exception.is(object);
  }
  hasChildren(object) {
    return true;
  }
  preview(object) {
    let trace = dart.stackTrace(object);
    let line = dart.str(trace)[$split]("\n")[$firstWhere](dart.fn(l => l[$contains](_debugger.ErrorAndExceptionFormatter._pattern) && !l[$contains]("dart:sdk") && !l[$contains]("dart_sdk"), StringTobool()), {orElse: dart.fn(() => null, VoidToNull())});
    return line != null ? dart.str(object) + " at " + dart.str(line) : dart.str(object);
  }
  children(object) {
    let trace = dart.stackTrace(object);
    let entries = new (_HashSetOfNameValuePair()).new();
    entries.add(new _debugger.NameValuePair.new({name: "stackTrace", value: trace}));
    this.addInstanceMembers(object, entries);
    _debugger.addMetadataChildren(object, entries);
    return entries.toList();
  }
  addInstanceMembers(object, ret) {
    ret.add(new _debugger.NameValuePair.new({name: "[[instance members]]", value: object, config: _debugger.JsonMLConfig.asObject}));
  }
};
(_debugger.ErrorAndExceptionFormatter.new = function() {
}).prototype = _debugger.ErrorAndExceptionFormatter.prototype;
dart.addTypeTests(_debugger.ErrorAndExceptionFormatter);
dart.setMethodSignature(_debugger.ErrorAndExceptionFormatter, () => ({
  __proto__: dart.getMethods(_debugger.ErrorAndExceptionFormatter.__proto__),
  addInstanceMembers: dart.fnType(dart.void, [dart.dynamic, core.Set$(_debugger.NameValuePair)])
}));
dart.defineLazy(_debugger.ErrorAndExceptionFormatter, {
  /*_debugger.ErrorAndExceptionFormatter._pattern*/get _pattern() {
    return core.RegExp.new("\\d+\\:\\d+");
  }
});
_debugger.StackTraceFormatter = class StackTraceFormatter extends core.Object {
  accept(object, config) {
    return core.StackTrace.is(object);
  }
  preview(object) {
    return "StackTrace";
  }
  hasChildren(object) {
    return true;
  }
  children(object) {
    return IterableOfNameValuePair()._check(dart.toString(object)[$split]("\n")[$map](_debugger.NameValuePair, dart.fn(line => new _debugger.NameValuePair.new({value: line[$replaceFirst](core.RegExp.new("^\\s+at\\s"), ""), hideName: true}), StringToNameValuePair())))[$toList]();
  }
};
(_debugger.StackTraceFormatter.new = function() {
}).prototype = _debugger.StackTraceFormatter.prototype;
dart.addTypeTests(_debugger.StackTraceFormatter);
_debugger.StackTraceFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.StackTraceFormatter, () => ({
  __proto__: dart.getMethods(_debugger.StackTraceFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
_debugger.ClassFormatter = class ClassFormatter extends core.Object {
  accept(object, config) {
    return dart.equals(config, _debugger.JsonMLConfig.asClass);
  }
  preview(type) {
    let implements$ = dart.getImplements(type);
    let typeName = _debugger.getTypeName(type);
    if (implements$ != null) {
      let typeNames = IterableOfString()._check(implements$()[$map](core.String, dart.fn(_debugger.getTypeName, dynamicToString())));
      return dart.str(typeName) + " implements " + dart.str(typeNames[$join](", "));
    } else {
      return typeName;
    }
  }
  hasChildren(object) {
    return true;
  }
  children(type) {
    let ret = new (_HashSetOfNameValuePair()).new();
    let staticProperties = new (_HashSetOfNameValuePair()).new();
    let staticMethods = new (_HashSetOfNameValuePair()).new();
    _debugger.addPropertiesFromSignature(dart.getStaticFields(type), staticProperties, type, false);
    _debugger.addPropertiesFromSignature(dart.getStaticGetters(type), staticProperties, type, false);
    _debugger.addPropertiesFromSignature(dart.getStaticMethods(type), staticMethods, type, false);
    if (dart.test(staticProperties.isNotEmpty) || dart.test(staticMethods.isNotEmpty)) {
      ret.add(new _debugger.NameValuePair.new({value: "[[Static members]]", hideName: true}));
      ret.addAll(_debugger.sortProperties(staticProperties));
      ret.addAll(_debugger.sortProperties(staticMethods));
    }
    let instanceMethods = new (_HashSetOfNameValuePair()).new();
    _debugger.addPropertiesFromSignature(dart.getMethods(type), instanceMethods, type.prototype, false, {tagTypes: true});
    if (dart.test(instanceMethods.isNotEmpty)) {
      ret.add(new _debugger.NameValuePair.new({value: "[[Instance Methods]]", hideName: true}));
      ret.addAll(_debugger.sortProperties(instanceMethods));
    }
    let mixin = dart.getMixin(type);
    if (mixin != null) {
      ret.add(new _debugger.NameValuePair.new({name: "[[Mixins]]", value: new _debugger.HeritageClause.new("mixins", [mixin])}));
    }
    let baseProto = type.__proto__;
    if (baseProto != null && !dart.test(dart.isJsInterop(baseProto))) {
      ret.add(new _debugger.NameValuePair.new({name: "[[base class]]", value: baseProto, config: _debugger.JsonMLConfig.asClass}));
    }
    return ret.toList();
  }
};
(_debugger.ClassFormatter.new = function() {
}).prototype = _debugger.ClassFormatter.prototype;
dart.addTypeTests(_debugger.ClassFormatter);
_debugger.ClassFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.ClassFormatter, () => ({
  __proto__: dart.getMethods(_debugger.ClassFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
_debugger.TypeFormatter = class TypeFormatter extends core.Object {
  accept(object, config) {
    return core.Type.is(object);
  }
  preview(object) {
    return dart.toString(object);
  }
  hasChildren(object) {
    return false;
  }
  children(object) {
    return JSArrayOfNameValuePair().of([]);
  }
};
(_debugger.TypeFormatter.new = function() {
}).prototype = _debugger.TypeFormatter.prototype;
dart.addTypeTests(_debugger.TypeFormatter);
_debugger.TypeFormatter[dart.implements] = () => [_debugger.Formatter];
dart.setMethodSignature(_debugger.TypeFormatter, () => ({
  __proto__: dart.getMethods(_debugger.TypeFormatter.__proto__),
  accept: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  preview: dart.fnType(core.String, [dart.dynamic]),
  hasChildren: dart.fnType(core.bool, [dart.dynamic]),
  children: dart.fnType(core.List$(_debugger.NameValuePair), [dart.dynamic])
}));
dart.copyProperties(_debugger, {
  get stackTraceMapper() {
    let _util = dart.global.$dartStackTraceUtility;
    return _util != null ? _util.mapper : null;
  }
});
_debugger.registerDevtoolsFormatter = function() {
  dart.global.devtoolsFormatters = [_debugger._devtoolsFormatter];
};
_debugger.getModuleNames = function() {
  return dart.getModuleNames();
};
_debugger.getModuleLibraries = function(name) {
  return dart.getModuleLibraries(name);
};
_debugger._MethodStats = class _MethodStats extends core.Object {};
(_debugger._MethodStats.new = function(typeName, frame) {
  this.count = null;
  this.typeName = typeName;
  this.frame = frame;
  this.count = 0.0;
}).prototype = _debugger._MethodStats.prototype;
dart.addTypeTests(_debugger._MethodStats);
dart.setFieldSignature(_debugger._MethodStats, () => ({
  __proto__: dart.getFields(_debugger._MethodStats.__proto__),
  typeName: dart.finalFieldType(core.String),
  frame: dart.finalFieldType(core.String),
  count: dart.fieldType(core.double)
}));
_debugger._CallMethodRecord = class _CallMethodRecord extends core.Object {};
(_debugger._CallMethodRecord.new = function(jsError, type) {
  this.jsError = jsError;
  this.type = type;
}).prototype = _debugger._CallMethodRecord.prototype;
dart.addTypeTests(_debugger._CallMethodRecord);
dart.setFieldSignature(_debugger._CallMethodRecord, () => ({
  __proto__: dart.getFields(_debugger._CallMethodRecord.__proto__),
  jsError: dart.fieldType(dart.dynamic),
  type: dart.fieldType(dart.dynamic)
}));
dart.defineLazy(_debugger, {
  /*_debugger._callRecordSampleSize*/get _callRecordSampleSize() {
    return 5000;
  },
  set _callRecordSampleSize(_) {},
  /*_debugger._callMethodRecords*/get _callMethodRecords() {
    return JSArrayOf_CallMethodRecord().of([]);
  },
  set _callMethodRecords(_) {},
  /*_debugger._totalCallRecords*/get _totalCallRecords() {
    return 0;
  },
  set _totalCallRecords(_) {},
  /*_debugger._minCount*/get _minCount() {
    return 2;
  },
  set _minCount(_) {},
  /*_debugger._frameMappingCache*/get _frameMappingCache() {
    return new (IdentityMapOfString$String()).new();
  },
  set _frameMappingCache(_) {}
});
_debugger.getDynamicStats = function() {
  let callMethodStats = new (IdentityMapOfString$_MethodStats()).new();
  if (dart.notNull(_debugger._callMethodRecords[$length]) > 0) {
    let recordRatio = dart.notNull(_debugger._totalCallRecords) / dart.notNull(_debugger._callMethodRecords[$length]);
    for (let record of _debugger._callMethodRecords) {
      let stackStr = record.jsError.stack;
      let frames = stackStr[$split]("\n");
      let src = IterableOfString()._check(frames[$skip](2)[$map](core.String, dart.fn(f => _debugger._frameMappingCache[$putIfAbsent](f, dart.fn(() => _debugger.stackTraceMapper("\n" + dart.str(f)), VoidToString())), StringToString())))[$firstWhere](dart.fn(f => !f[$startsWith]("dart:"), StringTobool()), {orElse: dart.fn(() => "", VoidToString())});
      let actualTypeName = dart.typeName(record.type);
      let o = callMethodStats[$putIfAbsent](actualTypeName + " <" + dart.str(src) + ">", dart.fn(() => new _debugger._MethodStats.new(actualTypeName, src), VoidTo_MethodStats()));
      o.count = dart.notNull(o.count) + recordRatio;
    }
    if (_debugger._totalCallRecords != _debugger._callMethodRecords[$length]) {
      for (let k of callMethodStats[$keys][$toList]()) {
        let stats = callMethodStats[$_get](k);
        let threshold = dart.notNull(_debugger._minCount) * recordRatio;
        if (dart.notNull(stats.count) + 0.001 < threshold) {
          callMethodStats[$remove](k);
        }
      }
    }
  }
  _debugger._callMethodRecords[$clear]();
  _debugger._totalCallRecords = 0;
  let keys = callMethodStats[$keys][$toList]();
  keys[$sort](dart.fn((a, b) => callMethodStats[$_get](b).count[$compareTo](callMethodStats[$_get](a).count), StringAndStringToint()));
  let ret = JSArrayOfListOfObject().of([]);
  for (let key of keys) {
    let stats = callMethodStats[$_get](key);
    ret[$add](JSArrayOfObject().of([stats.typeName, stats.frame, stats.count[$round]()]));
  }
  return ret;
};
_debugger.clearDynamicStats = function() {
  _debugger._callMethodRecords[$clear]();
};
dart.copyProperties(_debugger, {
  get _trackProfile() {
    return dart.__trackProfile;
  }
});
_debugger.trackCall = function(obj) {
  if (!_debugger._trackProfile) return;
  let index = -1;
  _debugger._totalCallRecords = dart.notNull(_debugger._totalCallRecords) + 1;
  if (_debugger._callMethodRecords[$length] == _debugger._callRecordSampleSize) {
    index = Math.floor(Math.random() * _debugger._totalCallRecords);
    if (index >= dart.notNull(_debugger._callMethodRecords[$length])) return;
  }
  let record = new _debugger._CallMethodRecord.new(new Error(), dart.getReifiedType(obj));
  if (index === -1) {
    _debugger._callMethodRecords[$add](record);
  } else {
    _debugger._callMethodRecords[$_set](index, record);
  }
};
_foreign_helper.JS = function(T, typeDescription, codeTemplate, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19) {
  if (arg0 === void 0) arg0 = null;
  if (arg1 === void 0) arg1 = null;
  if (arg2 === void 0) arg2 = null;
  if (arg3 === void 0) arg3 = null;
  if (arg4 === void 0) arg4 = null;
  if (arg5 === void 0) arg5 = null;
  if (arg6 === void 0) arg6 = null;
  if (arg7 === void 0) arg7 = null;
  if (arg8 === void 0) arg8 = null;
  if (arg9 === void 0) arg9 = null;
  if (arg10 === void 0) arg10 = null;
  if (arg11 === void 0) arg11 = null;
  if (arg12 === void 0) arg12 = null;
  if (arg13 === void 0) arg13 = null;
  if (arg14 === void 0) arg14 = null;
  if (arg15 === void 0) arg15 = null;
  if (arg16 === void 0) arg16 = null;
  if (arg17 === void 0) arg17 = null;
  if (arg18 === void 0) arg18 = null;
  if (arg19 === void 0) arg19 = null;
};
_foreign_helper.JSExportName = class JSExportName extends core.Object {};
(_foreign_helper.JSExportName.new = function(name) {
  this.name = name;
}).prototype = _foreign_helper.JSExportName.prototype;
dart.addTypeTests(_foreign_helper.JSExportName);
dart.setFieldSignature(_foreign_helper.JSExportName, () => ({
  __proto__: dart.getFields(_foreign_helper.JSExportName.__proto__),
  name: dart.finalFieldType(core.String)
}));
_foreign_helper.JS_DART_OBJECT_CONSTRUCTOR = function() {
};
_foreign_helper.JS_INTERCEPTOR_CONSTANT = function(type) {
};
_foreign_helper.JS_OPERATOR_IS_PREFIX = function() {
};
_foreign_helper.JS_OPERATOR_AS_PREFIX = function() {
};
_foreign_helper.JS_OBJECT_CLASS_NAME = function() {
};
_foreign_helper.JS_NULL_CLASS_NAME = function() {
};
_foreign_helper.JS_FUNCTION_CLASS_NAME = function() {
};
_foreign_helper.JS_IS_INDEXABLE_FIELD_NAME = function() {
};
_foreign_helper.JS_SIGNATURE_NAME = function() {
};
_foreign_helper.JS_TYPEDEF_TAG = function() {
};
_foreign_helper.JS_FUNCTION_TYPE_TAG = function() {
};
_foreign_helper.JS_FUNCTION_TYPE_VOID_RETURN_TAG = function() {
};
_foreign_helper.JS_FUNCTION_TYPE_RETURN_TYPE_TAG = function() {
};
_foreign_helper.JS_FUNCTION_TYPE_REQUIRED_PARAMETERS_TAG = function() {
};
_foreign_helper.JS_FUNCTION_TYPE_OPTIONAL_PARAMETERS_TAG = function() {
};
_foreign_helper.JS_FUNCTION_TYPE_NAMED_PARAMETERS_TAG = function() {
};
_foreign_helper.JS_GET_NAME = function(name) {
};
_foreign_helper.JS_GET_FLAG = function(name) {
};
_foreign_helper.JS_EFFECT = function(code) {
  dart.dcall(code, [null]);
};
_foreign_helper.JS_CONST = class JS_CONST extends core.Object {};
(_foreign_helper.JS_CONST.new = function(code) {
  this.code = code;
}).prototype = _foreign_helper.JS_CONST.prototype;
dart.addTypeTests(_foreign_helper.JS_CONST);
dart.setFieldSignature(_foreign_helper.JS_CONST, () => ({
  __proto__: dart.getFields(_foreign_helper.JS_CONST.__proto__),
  code: dart.finalFieldType(core.String)
}));
_foreign_helper.JS_STRING_CONCAT = function(a, b) {
  return a + b;
};
_foreign_helper._Rest = class _Rest extends core.Object {};
(_foreign_helper._Rest.new = function() {
}).prototype = _foreign_helper._Rest.prototype;
dart.addTypeTests(_foreign_helper._Rest);
dart.defineLazy(_foreign_helper, {
  /*_foreign_helper.rest*/get rest() {
    return dart.const(new _foreign_helper._Rest.new());
  }
});
_foreign_helper.spread = function(args) {
  dart.throw(new core.StateError.new("The spread function cannot be called, " + "it should be compiled away."));
};
_interceptors.Interceptor = class Interceptor extends core.Object {
  toString() {
    return this.toString();
  }
};
(_interceptors.Interceptor.new = function() {
}).prototype = _interceptors.Interceptor.prototype;
dart.addTypeTests(_interceptors.Interceptor);
dart.defineExtensionMethods(_interceptors.Interceptor, ['toString']);
_interceptors.getInterceptor = function(obj) {
  return obj;
};
_interceptors.JSBool = class JSBool extends _interceptors.Interceptor {
  [$toString]() {
    return String(this);
  }
  get [$hashCode]() {
    return this ? 2 * 3 * 23 * 3761 : 269 * 811;
  }
  [$bitAnd](other) {
    if (other == null) dart.argumentError(other);
    return other && this;
  }
  [$bitOr](other) {
    if (other == null) dart.argumentError(other);
    return other || this;
  }
  [$bitXor](other) {
    if (other == null) dart.argumentError(other);
    return !(this === other);
  }
  get [$runtimeType]() {
    return dart.wrapType(core.bool);
  }
};
(_interceptors.JSBool.new = function() {
  _interceptors.JSBool.__proto__.new.call(this);
}).prototype = _interceptors.JSBool.prototype;
dart.addTypeTests(_interceptors.JSBool);
_interceptors.JSBool[dart.implements] = () => [core.bool];
dart.setMethodSignature(_interceptors.JSBool, () => ({
  __proto__: dart.getMethods(_interceptors.JSBool.__proto__),
  [$bitAnd]: dart.fnType(core.bool, [core.bool]),
  [$bitOr]: dart.fnType(core.bool, [core.bool]),
  [$bitXor]: dart.fnType(core.bool, [core.bool])
}));
dart.definePrimitiveHashCode(_interceptors.JSBool.prototype);
dart.registerExtension("Boolean", _interceptors.JSBool);
const _is_JSIndexable_default = Symbol('_is_JSIndexable_default');
_interceptors.JSIndexable$ = dart.generic(E => {
  class JSIndexable extends core.Object {}
  (JSIndexable.new = function() {
  }).prototype = JSIndexable.prototype;
  dart.addTypeTests(JSIndexable);
  JSIndexable.prototype[_is_JSIndexable_default] = true;
  return JSIndexable;
});
_interceptors.JSIndexable = _interceptors.JSIndexable$();
dart.addTypeTests(_interceptors.JSIndexable, _is_JSIndexable_default);
_interceptors.JSObject = class JSObject extends core.Object {};
(_interceptors.JSObject.new = function() {
}).prototype = _interceptors.JSObject.prototype;
dart.addTypeTests(_interceptors.JSObject);
_interceptors.JavaScriptObject = class JavaScriptObject extends _interceptors.Interceptor {
  get hashCode() {
    return 0;
  }
  get runtimeType() {
    return dart.wrapType(_interceptors.JSObject);
  }
};
(_interceptors.JavaScriptObject.new = function() {
  _interceptors.JavaScriptObject.__proto__.new.call(this);
}).prototype = _interceptors.JavaScriptObject.prototype;
dart.addTypeTests(_interceptors.JavaScriptObject);
_interceptors.JavaScriptObject[dart.implements] = () => [_interceptors.JSObject];
dart.defineExtensionAccessors(_interceptors.JavaScriptObject, ['hashCode', 'runtimeType']);
_interceptors.PlainJavaScriptObject = class PlainJavaScriptObject extends _interceptors.JavaScriptObject {};
(_interceptors.PlainJavaScriptObject.new = function() {
  _interceptors.PlainJavaScriptObject.__proto__.new.call(this);
}).prototype = _interceptors.PlainJavaScriptObject.prototype;
dart.addTypeTests(_interceptors.PlainJavaScriptObject);
_interceptors.UnknownJavaScriptObject = class UnknownJavaScriptObject extends _interceptors.JavaScriptObject {
  toString() {
    return String(this);
  }
};
(_interceptors.UnknownJavaScriptObject.new = function() {
  _interceptors.UnknownJavaScriptObject.__proto__.new.call(this);
}).prototype = _interceptors.UnknownJavaScriptObject.prototype;
dart.addTypeTests(_interceptors.UnknownJavaScriptObject);
dart.defineExtensionMethods(_interceptors.UnknownJavaScriptObject, ['toString']);
_interceptors.NativeError = class NativeError extends _interceptors.Interceptor {
  dartStack() {
    return this.stack;
  }
};
(_interceptors.NativeError.new = function() {
  _interceptors.NativeError.__proto__.new.call(this);
}).prototype = _interceptors.NativeError.prototype;
dart.addTypeTests(_interceptors.NativeError);
dart.setMethodSignature(_interceptors.NativeError, () => ({
  __proto__: dart.getMethods(_interceptors.NativeError.__proto__),
  dartStack: dart.fnType(core.String, []),
  [$dartStack]: dart.fnType(core.String, [])
}));
dart.defineExtensionMethods(_interceptors.NativeError, ['dartStack']);
const _fieldName = Symbol('_fieldName');
const _functionCallTarget = Symbol('_functionCallTarget');
_interceptors.JSNoSuchMethodError = class JSNoSuchMethodError extends _interceptors.NativeError {
  [_fieldName](message) {
    let match = _interceptors.JSNoSuchMethodError._nullError.firstMatch(message);
    if (match == null) return null;
    let name = match._get(1);
    let l = _interceptors.JSNoSuchMethodError._extensionName.firstMatch(name);
    match = l != null ? l : _interceptors.JSNoSuchMethodError._privateName.firstMatch(name);
    return match != null ? match._get(1) : name;
  }
  [_functionCallTarget](message) {
    let match = _interceptors.JSNoSuchMethodError._notAFunction.firstMatch(message);
    return match != null ? match._get(1) : null;
  }
  [$dartStack]() {
    let stack = super[$dartStack]();
    stack = dart.notNull(this[$toString]()) + "\n" + dart.notNull(stack[$split]("\n")[$sublist](1)[$join]("\n"));
    return stack;
  }
  get [$stackTrace]() {
    return dart.stackTrace(this);
  }
  [$toString]() {
    let message = this.message;
    let callTarget = this[_functionCallTarget](message);
    if (callTarget != null) {
      return "NoSuchMethodError: tried to call a non-function, such as null: " + ("'" + dart.str(callTarget) + "'");
    }
    let name = this[_fieldName](message);
    if (name == null) {
      return this.toString();
    }
    return "NoSuchMethodError: invalid member on null: '" + dart.str(name) + "'";
  }
};
(_interceptors.JSNoSuchMethodError.new = function() {
  _interceptors.JSNoSuchMethodError.__proto__.new.call(this);
}).prototype = _interceptors.JSNoSuchMethodError.prototype;
dart.addTypeTests(_interceptors.JSNoSuchMethodError);
_interceptors.JSNoSuchMethodError[dart.implements] = () => [core.NoSuchMethodError];
dart.setMethodSignature(_interceptors.JSNoSuchMethodError, () => ({
  __proto__: dart.getMethods(_interceptors.JSNoSuchMethodError.__proto__),
  [_fieldName]: dart.fnType(core.String, [core.String]),
  [_functionCallTarget]: dart.fnType(core.String, [core.String])
}));
dart.setGetterSignature(_interceptors.JSNoSuchMethodError, () => ({
  __proto__: dart.getGetters(_interceptors.JSNoSuchMethodError.__proto__),
  [$stackTrace]: core.StackTrace
}));
dart.defineLazy(_interceptors.JSNoSuchMethodError, {
  /*_interceptors.JSNoSuchMethodError._nullError*/get _nullError() {
    return core.RegExp.new("^Cannot read property '(.+)' of null$");
  },
  /*_interceptors.JSNoSuchMethodError._notAFunction*/get _notAFunction() {
    return core.RegExp.new("^(.+) is not a function$");
  },
  /*_interceptors.JSNoSuchMethodError._extensionName*/get _extensionName() {
    return core.RegExp.new("^Symbol\\(dartx\\.(.+)\\)$");
  },
  /*_interceptors.JSNoSuchMethodError._privateName*/get _privateName() {
    return core.RegExp.new("^Symbol\\((_.+)\\)$");
  }
});
dart.registerExtension("TypeError", _interceptors.JSNoSuchMethodError);
_interceptors.JSFunction = class JSFunction extends _interceptors.Interceptor {
  [$toString]() {
    if (dart.isType(this)) return dart.typeName(this);
    return "Closure: " + dart.typeName(dart.getReifiedType(this)) + " from: " + this;
  }
  [$_equals](other) {
    if (other == null) return false;
    let boundObj = this._boundObject;
    if (boundObj == null) return this === other;
    return boundObj === other._boundObject && this._boundMethod === other._boundMethod;
  }
  get [$hashCode]() {
    let boundObj = this._boundObject;
    if (boundObj == null) return core.identityHashCode(this);
    let boundMethod = this._boundMethod;
    let hash = 17 * 31 + dart.notNull(dart.hashCode(boundObj)) & 536870911;
    return hash * 31 + dart.notNull(core.identityHashCode(boundMethod)) & 536870911;
  }
  get [$runtimeType]() {
    return dart.wrapType(dart.getReifiedType(this));
  }
};
(_interceptors.JSFunction.new = function() {
  _interceptors.JSFunction.__proto__.new.call(this);
}).prototype = _interceptors.JSFunction.prototype;
dart.addTypeTests(_interceptors.JSFunction);
dart.registerExtension("Function", _interceptors.JSFunction);
_interceptors.JSNull = class JSNull extends core.Object {
  toString() {
    return "null";
  }
  noSuchMethod(i) {
    return dart.defaultNoSuchMethod(null, i);
  }
};
(_interceptors.JSNull.new = function() {
}).prototype = _interceptors.JSNull.prototype;
dart.addTypeTests(_interceptors.JSNull);
dart.defineExtensionMethods(_interceptors.JSNull, ['toString', 'noSuchMethod']);
dart.defineLazy(_interceptors, {
  /*_interceptors.jsNull*/get jsNull() {
    return new _interceptors.JSNull.new();
  }
});
_interceptors.JSRangeError = class JSRangeError extends _interceptors.Interceptor {
  get [$stackTrace]() {
    return dart.stackTrace(this);
  }
  get [$invalidValue]() {
    return null;
  }
  get [$name]() {
    return null;
  }
  get [$message]() {
    return this.message;
  }
  [$toString]() {
    return "Invalid argument: " + dart.str(this[$message]);
  }
};
(_interceptors.JSRangeError.new = function() {
  _interceptors.JSRangeError.__proto__.new.call(this);
}).prototype = _interceptors.JSRangeError.prototype;
dart.addTypeTests(_interceptors.JSRangeError);
_interceptors.JSRangeError[dart.implements] = () => [core.ArgumentError];
dart.setGetterSignature(_interceptors.JSRangeError, () => ({
  __proto__: dart.getGetters(_interceptors.JSRangeError.__proto__),
  [$stackTrace]: core.StackTrace,
  [$invalidValue]: dart.dynamic,
  [$name]: core.String,
  [$message]: dart.dynamic
}));
dart.registerExtension("RangeError", _interceptors.JSRangeError);
_interceptors.findInterceptorConstructorForType = function(type) {
};
_interceptors.findConstructorForNativeSubclassType = function(type, name) {
};
_interceptors.getNativeInterceptor = function(object) {
};
_interceptors.setDispatchProperty = function(object, value) {
};
const _removeWhere = Symbol('_removeWhere');
const _is_JSArray_default = Symbol('_is_JSArray_default');
_interceptors.JSArray$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let ReversedListIterableOfE = () => (ReversedListIterableOfE = dart.constFn(_internal.ReversedListIterable$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let ArrayIteratorOfE = () => (ArrayIteratorOfE = dart.constFn(_interceptors.ArrayIterator$(E)))();
  let ListMapViewOfE = () => (ListMapViewOfE = dart.constFn(_internal.ListMapView$(E)))();
  let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
  let JSIndexableOfE = () => (JSIndexableOfE = dart.constFn(_interceptors.JSIndexable$(E)))();
  class JSArray extends core.Object {
    static of(list) {
      list.__proto__ = JSArray.prototype;
      return list;
    }
    static fixed(list) {
      list.__proto__ = JSArray.prototype;
      list.fixed$length = Array;
      return list;
    }
    static unmodifiable(list) {
      list.__proto__ = JSArray.prototype;
      list.fixed$length = Array;
      list.immutable$list = Array;
      return list;
    }
    static markFixedList(list) {
      list.fixed$length = Array;
    }
    static markUnmodifiableList(list) {
      list.fixed$length = Array;
      list.immutable$list = Array;
    }
    [$checkMutable](reason) {
      if (this.immutable$list) {
        dart.throw(new core.UnsupportedError.new(core.String._check(reason)));
      }
    }
    [$checkGrowable](reason) {
      if (this.fixed$length) {
        dart.throw(new core.UnsupportedError.new(core.String._check(reason)));
      }
    }
    [$cast](R) {
      return core.List.castFrom(E, R, this);
    }
    [$add](value) {
      E._check(value);
      this[$checkGrowable]("add");
      this.push(value);
    }
    [$removeAt](index) {
      if (index == null) dart.argumentError(index);
      this[$checkGrowable]("removeAt");
      if (index < 0 || index >= this[$length]) {
        dart.throw(new core.RangeError.value(index));
      }
      return this.splice(index, 1)[0];
    }
    [$insert](index, value) {
      if (index == null) dart.argumentError(index);
      E._check(value);
      this[$checkGrowable]("insert");
      if (index < 0 || index > this[$length]) {
        dart.throw(new core.RangeError.value(index));
      }
      this.splice(index, 0, value);
    }
    [$insertAll](index, iterable) {
      if (index == null) dart.argumentError(index);
      IterableOfE()._check(iterable);
      this[$checkGrowable]("insertAll");
      core.RangeError.checkValueInInterval(index, 0, this[$length], "index");
      if (!_internal.EfficientLengthIterable.is(iterable)) {
        iterable = iterable[$toList]();
      }
      let insertionLength = dart.notNull(iterable[$length]);
      this[$length] = dart.notNull(this[$length]) + insertionLength;
      let end = index + insertionLength;
      this[$setRange](end, this[$length], this, index);
      this[$setRange](index, end, iterable);
    }
    [$setAll](index, iterable) {
      if (index == null) dart.argumentError(index);
      IterableOfE()._check(iterable);
      this[$checkMutable]("setAll");
      core.RangeError.checkValueInInterval(index, 0, this[$length], "index");
      for (let element of iterable) {
        this[$_set](index++, element);
      }
    }
    [$removeLast]() {
      this[$checkGrowable]("removeLast");
      if (this[$length] === 0) dart.throw(_js_helper.diagnoseIndexError(this, -1));
      return this.pop();
    }
    [$remove](element) {
      this[$checkGrowable]("remove");
      let length = this[$length];
      for (let i = 0; i < length; i++) {
        if (dart.equals(this[$_get](i), element)) {
          this.splice(i, 1);
          return true;
        }
      }
      return false;
    }
    [$removeWhere](test) {
      this[$checkGrowable]("removeWhere");
      this[_removeWhere](test, true);
    }
    [$retainWhere](test) {
      this[$checkGrowable]("retainWhere");
      this[_removeWhere](test, false);
    }
    [_removeWhere](test, removeMatching) {
      let retained = [];
      let end = this[$length];
      for (let i = 0; i < end; i++) {
        let element = this[i];
        if (!dart.test(test(element)) === removeMatching) {
          retained[$add](element);
        }
        if (this[$length] !== end) dart.throw(new core.ConcurrentModificationError.new(this));
      }
      if (retained[$length] === end) return;
      this[$length] = retained[$length];
      let length = dart.notNull(retained[$length]);
      for (let i = 0; i < length; i++) {
        this[i] = retained[i];
      }
    }
    [$where](f) {
      return new (WhereIterableOfE()).new(this, f);
    }
    [$expand](T, f) {
      return new (_internal.ExpandIterable$(E, T)).new(this, f);
    }
    [$addAll](collection) {
      IterableOfE()._check(collection);
      let i = this[$length];
      this[$checkGrowable]("addAll");
      for (let e of collection) {
        if (!(i === this[$length] || dart.test(dart.throw(new core.ConcurrentModificationError.new(this))))) dart.assertFailed();
        i++;
        this.push(e);
      }
    }
    [$clear]() {
      this[$length] = 0;
    }
    [$forEach](f) {
      let end = this[$length];
      for (let i = 0; i < end; i++) {
        let element = this[i];
        f(E._check(element));
        if (this[$length] !== end) dart.throw(new core.ConcurrentModificationError.new(this));
      }
    }
    [$map](T, f) {
      return new (_internal.MappedListIterable$(E, T)).new(this, f);
    }
    [$join](separator) {
      if (separator === void 0) separator = "";
      let length = this[$length];
      let list = core.List.new(length);
      for (let i = 0; i < length; i++) {
        list[$_set](i, dart.str(this[$_get](i)));
      }
      return list.join(separator);
    }
    [$take](n) {
      return new (SubListIterableOfE()).new(this, 0, n);
    }
    [$takeWhile](test) {
      return new (TakeWhileIterableOfE()).new(this, test);
    }
    [$skip](n) {
      return new (SubListIterableOfE()).new(this, n, null);
    }
    [$skipWhile](test) {
      return new (SkipWhileIterableOfE()).new(this, test);
    }
    [$reduce](combine) {
      EAndEToE()._check(combine);
      let length = this[$length];
      if (length === 0) dart.throw(_internal.IterableElementError.noElement());
      let value = this[$_get](0);
      for (let i = 1; i < length; i++) {
        let element = this[i];
        value = combine(value, E._check(element));
        if (length !== this[$length]) dart.throw(new core.ConcurrentModificationError.new(this));
      }
      return value;
    }
    [$fold](T, initialValue, combine) {
      let value = initialValue;
      let length = this[$length];
      for (let i = 0; i < length; i++) {
        let element = this[i];
        value = combine(value, E._check(element));
        if (this[$length] !== length) dart.throw(new core.ConcurrentModificationError.new(this));
      }
      return value;
    }
    [$firstWhere](test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let end = this[$length];
      for (let i = 0; i < end; ++i) {
        let element = this[i];
        if (dart.test(test(E._check(element)))) return E._check(element);
        if (this[$length] !== end) dart.throw(new core.ConcurrentModificationError.new(this));
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    [$lastWhere](test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this[$length];
      for (let i = length - 1; i >= 0; i--) {
        let element = this[i];
        if (dart.test(test(E._check(element)))) return E._check(element);
        if (length !== this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    [$singleWhere](test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this[$length];
      let match = null;
      let matchFound = false;
      for (let i = 0; i < length; i++) {
        let element = this[i];
        if (dart.test(test(element))) {
          if (matchFound) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          matchFound = true;
          match = element;
        }
        if (length !== this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      if (matchFound) return match;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    [$elementAt](index) {
      return this[$_get](index);
    }
    [$sublist](start, end) {
      if (start == null) dart.argumentError(start);
      if (end === void 0) end = null;
      if (start < 0 || start > this[$length]) {
        dart.throw(new core.RangeError.range(start, 0, this[$length], "start"));
      }
      if (end == null) {
        end = this[$length];
      } else {
        let _end = end;
        if (_end < start || _end > this[$length]) {
          dart.throw(new core.RangeError.range(end, start, this[$length], "end"));
        }
      }
      if (start === end) return JSArrayOfE().of([]);
      return JSArrayOfE().of(this.slice(start, end));
    }
    [$getRange](start, end) {
      core.RangeError.checkValidRange(start, end, this[$length]);
      return new (SubListIterableOfE()).new(this, start, end);
    }
    get [$first]() {
      if (this[$length] > 0) return this[$_get](0);
      dart.throw(_internal.IterableElementError.noElement());
    }
    get [$last]() {
      if (this[$length] > 0) return this[$_get](this[$length] - 1);
      dart.throw(_internal.IterableElementError.noElement());
    }
    get [$single]() {
      if (this[$length] === 1) return this[$_get](0);
      if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
      dart.throw(_internal.IterableElementError.tooMany());
    }
    [$removeRange](start, end) {
      if (start == null) dart.argumentError(start);
      if (end == null) dart.argumentError(end);
      this[$checkGrowable]("removeRange");
      core.RangeError.checkValidRange(start, end, this[$length]);
      let deleteCount = end - start;
      this.splice(start, deleteCount);
    }
    [$setRange](start, end, iterable, skipCount) {
      if (start == null) dart.argumentError(start);
      if (end == null) dart.argumentError(end);
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      if (skipCount == null) dart.argumentError(skipCount);
      this[$checkMutable]("set range");
      core.RangeError.checkValidRange(start, end, this[$length]);
      let length = end - start;
      if (length === 0) return;
      core.RangeError.checkNotNegative(skipCount, "skipCount");
      let otherList = null;
      let otherStart = 0;
      if (ListOfE().is(iterable)) {
        otherList = iterable;
        otherStart = skipCount;
      } else {
        otherList = iterable[$skip](skipCount)[$toList]({growable: false});
        otherStart = 0;
      }
      if (otherStart + length > dart.notNull(otherList[$length])) {
        dart.throw(_internal.IterableElementError.tooFew());
      }
      if (otherStart < start) {
        for (let i = length - 1; i >= 0; i--) {
          let element = otherList[$_get](otherStart + i);
          this[start + i] = element;
        }
      } else {
        for (let i = 0; i < length; i++) {
          let element = otherList[$_get](otherStart + i);
          this[start + i] = element;
        }
      }
    }
    [$fillRange](start, end, fillValue) {
      if (start == null) dart.argumentError(start);
      if (end == null) dart.argumentError(end);
      if (fillValue === void 0) fillValue = null;
      E._check(fillValue);
      this[$checkMutable]("fill range");
      core.RangeError.checkValidRange(start, end, this[$length]);
      for (let i = start; i < end; i++) {
        this[i] = fillValue;
      }
    }
    [$replaceRange](start, end, replacement) {
      if (start == null) dart.argumentError(start);
      if (end == null) dart.argumentError(end);
      IterableOfE()._check(replacement);
      this[$checkGrowable]("replace range");
      core.RangeError.checkValidRange(start, end, this[$length]);
      if (!_internal.EfficientLengthIterable.is(replacement)) {
        replacement = replacement[$toList]();
      }
      let removeLength = end - start;
      let insertLength = dart.notNull(replacement[$length]);
      if (removeLength >= insertLength) {
        let delta = removeLength - insertLength;
        let insertEnd = start + insertLength;
        let newLength = this[$length] - delta;
        this[$setRange](start, insertEnd, replacement);
        if (delta !== 0) {
          this[$setRange](insertEnd, newLength, this, end);
          this[$length] = newLength;
        }
      } else {
        let delta = insertLength - removeLength;
        let newLength = this[$length] + delta;
        let insertEnd = start + insertLength;
        this[$length] = newLength;
        this[$setRange](insertEnd, newLength, this, end);
        this[$setRange](start, insertEnd, replacement);
      }
    }
    [$any](test) {
      let end = this[$length];
      for (let i = 0; i < end; i++) {
        let element = this[i];
        if (dart.test(test(E._check(element)))) return true;
        if (this[$length] !== end) dart.throw(new core.ConcurrentModificationError.new(this));
      }
      return false;
    }
    [$every](test) {
      let end = this[$length];
      for (let i = 0; i < end; i++) {
        let element = this[i];
        if (!dart.test(test(element))) return false;
        if (this[$length] !== end) dart.throw(new core.ConcurrentModificationError.new(this));
      }
      return true;
    }
    get [$reversed]() {
      return new (ReversedListIterableOfE()).new(this);
    }
    [$sort](compare) {
      if (compare === void 0) compare = null;
      this[$checkMutable]("sort");
      if (compare == null) {
        _internal.Sort.sort(E, this, dart.fn((a, b) => core.Comparable.compare(core.Comparable._check(a), core.Comparable._check(b)), dynamicAnddynamicToint()));
      } else {
        _internal.Sort.sort(E, this, compare);
      }
    }
    [$shuffle](random) {
      if (random === void 0) random = null;
      this[$checkMutable]("shuffle");
      if (random == null) random = math.Random.new();
      let length = this[$length];
      while (length > 1) {
        let pos = random.nextInt(length);
        length = length - 1;
        let tmp = this[$_get](length);
        this[$_set](length, this[$_get](pos));
        this[$_set](pos, tmp);
      }
    }
    [$indexOf](element, start) {
      if (start === void 0) start = 0;
      if (start == null) dart.argumentError(start);
      let length = this[$length];
      if (start >= length) {
        return -1;
      }
      if (start < 0) {
        start = 0;
      }
      for (let i = start; i < length; i++) {
        if (dart.equals(this[$_get](i), element)) {
          return i;
        }
      }
      return -1;
    }
    [$lastIndexOf](element, _startIndex) {
      if (_startIndex === void 0) _startIndex = null;
      let startIndex = _startIndex != null ? _startIndex : this[$length] - 1;
      if (startIndex >= this[$length]) {
        startIndex = this[$length] - 1;
      } else if (startIndex < 0) {
        return -1;
      }
      for (let i = startIndex; i >= 0; i--) {
        if (dart.equals(this[$_get](i), element)) {
          return i;
        }
      }
      return -1;
    }
    [$contains](other) {
      let length = this[$length];
      for (let i = 0; i < length; i++) {
        let element = this[i];
        if (dart.equals(element, other)) return true;
      }
      return false;
    }
    get [$isEmpty]() {
      return this[$length] === 0;
    }
    get [$isNotEmpty]() {
      return !this[$isEmpty];
    }
    [$toString]() {
      return collection.ListBase.listToString(this);
    }
    [$toList](opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      if (growable == null) dart.argumentError(growable);
      let list = this.slice();
      if (!growable) _interceptors.JSArray.markFixedList(list);
      return JSArrayOfE().of(list);
    }
    [$toSet]() {
      return SetOfE().from(this);
    }
    get [$iterator]() {
      return new (ArrayIteratorOfE()).new(this);
    }
    get [$hashCode]() {
      return core.identityHashCode(this);
    }
    [$_equals](other) {
      return this === other;
    }
    get [$length]() {
      return this.length;
    }
    set [$length](newLength) {
      if (newLength == null) dart.argumentError(newLength);
      this[$checkGrowable]("set length");
      if (newLength < 0) {
        dart.throw(new core.RangeError.range(newLength, 0, null, "newLength"));
      }
      this.length = newLength;
    }
    [$_get](index) {
      if (index == null || index >= this.length || index < 0) {
        dart.throw(_js_helper.diagnoseIndexError(this, index));
      }
      return this[index];
    }
    [$_set](index, value) {
      E._check(value);
      this[$checkMutable]("indexed set");
      if (index == null || index >= this.length || index < 0) {
        dart.throw(_js_helper.diagnoseIndexError(this, index));
      }
      this[index] = value;
      return value;
    }
    [$asMap]() {
      return new (ListMapViewOfE()).new(this);
    }
    get [$runtimeType]() {
      return dart.wrapType(core.List$(E));
    }
    [$followedBy](other) {
      IterableOfE()._check(other);
      return FollowedByIterableOfE().firstEfficient(this, other);
    }
    [$whereType](T) {
      return new (_internal.WhereTypeIterable$(T)).new(this);
    }
    [$plus](other) {
      ListOfE()._check(other);
      let totalLength = this[$length] + dart.notNull(other[$length]);
      let _ = JSArrayOfE().of([]);
      _[$length] = totalLength;
      _[$setRange](0, this[$length], this);
      _[$setRange](this[$length], totalLength, other);
      return _;
    }
    [$indexWhere](test, start) {
      if (start === void 0) start = 0;
      if (dart.notNull(start) >= this[$length]) return -1;
      if (dart.notNull(start) < 0) start = 0;
      for (let i = start; dart.notNull(i) < this[$length]; i = dart.notNull(i) + 1) {
        if (dart.test(test(this[$_get](i)))) return i;
      }
      return -1;
    }
    [$lastIndexWhere](test, start) {
      if (start === void 0) start = null;
      if (start == null) start = this[$length] - 1;
      if (dart.notNull(start) < 0) return -1;
      for (let i = start; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
        if (dart.test(test(this[$_get](i)))) return i;
      }
      return -1;
    }
    set [$first](element) {
      E._check(element);
      if (this[$isEmpty]) dart.throw(core.RangeError.index(0, this));
      this[$_set](0, element);
    }
    set [$last](element) {
      E._check(element);
      if (this[$isEmpty]) dart.throw(core.RangeError.index(0, this));
      this[$_set](this[$length] - 1, element);
    }
  }
  (JSArray.new = function() {
  }).prototype = JSArray.prototype;
  dart.setExtensionBaseClass(JSArray, dart.global.Array);
  JSArray.prototype[dart.isList] = true;
  dart.addTypeTests(JSArray);
  JSArray.prototype[_is_JSArray_default] = true;
  JSArray[dart.implements] = () => [ListOfE(), JSIndexableOfE()];
  dart.setMethodSignature(JSArray, () => ({
    __proto__: dart.getMethods(JSArray.__proto__),
    [$checkMutable]: dart.fnType(dart.dynamic, [dart.dynamic]),
    [$checkGrowable]: dart.fnType(dart.dynamic, [dart.dynamic]),
    [$cast]: dart.gFnType(R => [core.List$(R), []]),
    [$add]: dart.fnType(dart.void, [core.Object]),
    [$removeAt]: dart.fnType(E, [core.int]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
    [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
    [$removeLast]: dart.fnType(E, []),
    [$remove]: dart.fnType(core.bool, [core.Object]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [_removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E]), core.bool]),
    [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    [$clear]: dart.fnType(dart.void, []),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    [$join]: dart.fnType(core.String, [], [core.String]),
    [$take]: dart.fnType(core.Iterable$(E), [core.int]),
    [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
    [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$reduce]: dart.fnType(E, [core.Object]),
    [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$elementAt]: dart.fnType(E, [core.int]),
    [$sublist]: dart.fnType(core.List$(E), [core.int], [core.int]),
    [$getRange]: dart.fnType(core.Iterable$(E), [core.int, core.int]),
    [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
    [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
    [$indexOf]: dart.fnType(core.int, [core.Object], [core.int]),
    [$lastIndexOf]: dart.fnType(core.int, [core.Object], [core.int]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    [$toString]: dart.fnType(core.String, []),
    [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
    [$toSet]: dart.fnType(core.Set$(E), []),
    [$_equals]: dart.fnType(core.bool, [dart.dynamic]),
    [$_get]: dart.fnType(E, [core.int]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    [$asMap]: dart.fnType(core.Map$(core.int, E), []),
    [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
    [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
    [$plus]: dart.fnType(core.List$(E), [core.Object]),
    [$indexWhere]: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int]),
    [$lastIndexWhere]: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int])
  }));
  dart.setGetterSignature(JSArray, () => ({
    __proto__: dart.getGetters(JSArray.__proto__),
    [$first]: E,
    [$last]: E,
    [$single]: E,
    [$reversed]: core.Iterable$(E),
    [$isEmpty]: core.bool,
    [$isNotEmpty]: core.bool,
    [$iterator]: core.Iterator$(E),
    [$hashCode]: core.int,
    [$length]: core.int,
    [$runtimeType]: core.Type
  }));
  dart.setSetterSignature(JSArray, () => ({
    __proto__: dart.getSetters(JSArray.__proto__),
    [$length]: core.int,
    [$first]: E,
    [$last]: E
  }));
  return JSArray;
});
_interceptors.JSArray = _interceptors.JSArray$();
dart.addTypeTests(_interceptors.JSArray, _is_JSArray_default);
dart.registerExtension("Array", _interceptors.JSArray);
const _is_JSMutableArray_default = Symbol('_is_JSMutableArray_default');
_interceptors.JSMutableArray$ = dart.generic(E => {
  class JSMutableArray extends _interceptors.JSArray$(E) {}
  (JSMutableArray.new = function() {
    JSMutableArray.__proto__.new.call(this);
  }).prototype = JSMutableArray.prototype;
  dart.addTypeTests(JSMutableArray);
  JSMutableArray.prototype[_is_JSMutableArray_default] = true;
  return JSMutableArray;
});
_interceptors.JSMutableArray = _interceptors.JSMutableArray$();
dart.addTypeTests(_interceptors.JSMutableArray, _is_JSMutableArray_default);
const _is_JSFixedArray_default = Symbol('_is_JSFixedArray_default');
_interceptors.JSFixedArray$ = dart.generic(E => {
  class JSFixedArray extends _interceptors.JSMutableArray$(E) {}
  (JSFixedArray.new = function() {
    JSFixedArray.__proto__.new.call(this);
  }).prototype = JSFixedArray.prototype;
  dart.addTypeTests(JSFixedArray);
  JSFixedArray.prototype[_is_JSFixedArray_default] = true;
  return JSFixedArray;
});
_interceptors.JSFixedArray = _interceptors.JSFixedArray$();
dart.addTypeTests(_interceptors.JSFixedArray, _is_JSFixedArray_default);
const _is_JSExtendableArray_default = Symbol('_is_JSExtendableArray_default');
_interceptors.JSExtendableArray$ = dart.generic(E => {
  class JSExtendableArray extends _interceptors.JSMutableArray$(E) {}
  (JSExtendableArray.new = function() {
    JSExtendableArray.__proto__.new.call(this);
  }).prototype = JSExtendableArray.prototype;
  dart.addTypeTests(JSExtendableArray);
  JSExtendableArray.prototype[_is_JSExtendableArray_default] = true;
  return JSExtendableArray;
});
_interceptors.JSExtendableArray = _interceptors.JSExtendableArray$();
dart.addTypeTests(_interceptors.JSExtendableArray, _is_JSExtendableArray_default);
const _is_JSUnmodifiableArray_default = Symbol('_is_JSUnmodifiableArray_default');
_interceptors.JSUnmodifiableArray$ = dart.generic(E => {
  class JSUnmodifiableArray extends _interceptors.JSArray$(E) {}
  (JSUnmodifiableArray.new = function() {
    JSUnmodifiableArray.__proto__.new.call(this);
  }).prototype = JSUnmodifiableArray.prototype;
  dart.addTypeTests(JSUnmodifiableArray);
  JSUnmodifiableArray.prototype[_is_JSUnmodifiableArray_default] = true;
  return JSUnmodifiableArray;
});
_interceptors.JSUnmodifiableArray = _interceptors.JSUnmodifiableArray$();
dart.addTypeTests(_interceptors.JSUnmodifiableArray, _is_JSUnmodifiableArray_default);
const _iterable = Symbol('_iterable');
const _length = Symbol('_length');
const _index = Symbol('_index');
const _current = Symbol('_current');
const _is_ArrayIterator_default = Symbol('_is_ArrayIterator_default');
_interceptors.ArrayIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  class ArrayIterator extends core.Object {
    get current() {
      return this[_current];
    }
    moveNext() {
      let length = this[_iterable][$length];
      if (this[_length] !== length) {
        dart.throw(_js_helper.throwConcurrentModificationError(this[_iterable]));
      }
      if (this[_index] >= length) {
        this[_current] = null;
        return false;
      }
      this[_current] = this[_iterable][$_get](this[_index]);
      this[_index]++;
      return true;
    }
  }
  (ArrayIterator.new = function(iterable) {
    this[_current] = null;
    this[_iterable] = iterable;
    this[_length] = iterable[$length];
    this[_index] = 0;
  }).prototype = ArrayIterator.prototype;
  dart.addTypeTests(ArrayIterator);
  ArrayIterator.prototype[_is_ArrayIterator_default] = true;
  ArrayIterator[dart.implements] = () => [IteratorOfE()];
  dart.setMethodSignature(ArrayIterator, () => ({
    __proto__: dart.getMethods(ArrayIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(ArrayIterator, () => ({
    __proto__: dart.getGetters(ArrayIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(ArrayIterator, () => ({
    __proto__: dart.getFields(ArrayIterator.__proto__),
    [_iterable]: dart.finalFieldType(JSArrayOfE()),
    [_length]: dart.finalFieldType(core.int),
    [_index]: dart.fieldType(core.int),
    [_current]: dart.fieldType(E)
  }));
  return ArrayIterator;
});
_interceptors.ArrayIterator = _interceptors.ArrayIterator$();
dart.addTypeTests(_interceptors.ArrayIterator, _is_ArrayIterator_default);
const _isInt32 = Symbol('_isInt32');
const _tdivSlow = Symbol('_tdivSlow');
const _shlPositive = Symbol('_shlPositive');
const _shrOtherPositive = Symbol('_shrOtherPositive');
const _shrBothPositive = Symbol('_shrBothPositive');
_interceptors.JSNumber = class JSNumber extends _interceptors.Interceptor {
  [$compareTo](b) {
    core.num._check(b);
    if (b == null) dart.argumentError(b);
    if (this < b) {
      return -1;
    } else if (this > b) {
      return 1;
    } else if (this === b) {
      if (this === 0) {
        let bIsNegative = b[$isNegative];
        if (this[$isNegative] === bIsNegative) return 0;
        if (this[$isNegative]) return -1;
        return 1;
      }
      return 0;
    } else if (this[$isNaN]) {
      if (b[$isNaN]) {
        return 0;
      }
      return 1;
    } else {
      return -1;
    }
  }
  get [$isNegative]() {
    return this === 0 ? 1 / this < 0 : this < 0;
  }
  get [$isNaN]() {
    return isNaN(this);
  }
  get [$isInfinite]() {
    return this == 1 / 0 || this == -1 / 0;
  }
  get [$isFinite]() {
    return isFinite(this);
  }
  [$remainder](b) {
    if (b == null) dart.argumentError(b);
    return this % b;
  }
  [$abs]() {
    return Math.abs(this);
  }
  get [$sign]() {
    return this > 0 ? 1 : this < 0 ? -1 : this;
  }
  [$toInt]() {
    if (this >= -2147483648 && this <= 2147483647) {
      return this | 0;
    }
    if (isFinite(this)) {
      return this[$truncateToDouble]() + 0;
    }
    dart.throw(new core.UnsupportedError.new("" + this));
  }
  [$truncate]() {
    return this[$toInt]();
  }
  [$ceil]() {
    return this[$ceilToDouble]()[$toInt]();
  }
  [$floor]() {
    return this[$floorToDouble]()[$toInt]();
  }
  [$round]() {
    if (this > 0) {
      if (this !== 1 / 0) {
        return Math.round(this);
      }
    } else if (this > -1 / 0) {
      return 0 - Math.round(0 - this);
    }
    dart.throw(new core.UnsupportedError.new("" + this));
  }
  [$ceilToDouble]() {
    return Math.ceil(this);
  }
  [$floorToDouble]() {
    return Math.floor(this);
  }
  [$roundToDouble]() {
    if (this < 0) {
      return -Math.round(-this);
    } else {
      return Math.round(this);
    }
  }
  [$truncateToDouble]() {
    return this < 0 ? this[$ceilToDouble]() : this[$floorToDouble]();
  }
  [$clamp](lowerLimit, upperLimit) {
    if (lowerLimit == null) dart.argumentError(lowerLimit);
    if (upperLimit == null) dart.argumentError(upperLimit);
    if (lowerLimit[$compareTo](upperLimit) > 0) {
      dart.throw(_js_helper.argumentErrorValue(lowerLimit));
    }
    if (this[$compareTo](lowerLimit) < 0) return lowerLimit;
    if (this[$compareTo](upperLimit) > 0) return upperLimit;
    return this;
  }
  [$toDouble]() {
    return this;
  }
  [$toStringAsFixed](fractionDigits) {
    if (fractionDigits < 0 || fractionDigits > 20) {
      dart.throw(new core.RangeError.range(fractionDigits, 0, 20, "fractionDigits"));
    }
    let result = this.toFixed(fractionDigits);
    if (this === 0 && this[$isNegative]) return "-" + result;
    return result;
  }
  [$toStringAsExponential](fractionDigits) {
    if (fractionDigits === void 0) fractionDigits = null;
    let result = null;
    if (fractionDigits != null) {
      let _fractionDigits = fractionDigits;
      if (_fractionDigits < 0 || _fractionDigits > 20) {
        dart.throw(new core.RangeError.range(_fractionDigits, 0, 20, "fractionDigits"));
      }
      result = this.toExponential(_fractionDigits);
    } else {
      result = this.toExponential();
    }
    if (this === 0 && this[$isNegative]) return "-" + dart.str(result);
    return result;
  }
  [$toStringAsPrecision](precision) {
    if (precision == null) dart.argumentError(precision);
    if (precision < 1 || precision > 21) {
      dart.throw(new core.RangeError.range(precision, 1, 21, "precision"));
    }
    let result = this.toPrecision(precision);
    if (this === 0 && this[$isNegative]) return "-" + result;
    return result;
  }
  [$toRadixString](radix) {
    if (radix == null) dart.argumentError(radix);
    if (radix < 2 || radix > 36) {
      dart.throw(new core.RangeError.range(radix, 2, 36, "radix"));
    }
    let result = this.toString(radix);
    let rightParenCode = 41;
    if (result[$codeUnitAt](result.length - 1) !== rightParenCode) {
      return result;
    }
    return _interceptors.JSNumber._handleIEtoString(result);
  }
  static _handleIEtoString(result) {
    let match = /^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(result);
    if (match == null) {
      dart.throw(new core.UnsupportedError.new("Unexpected toString result: " + dart.str(result)));
    }
    result = match[$_get](1);
    let exponent = +match[$_get](3);
    if (match[$_get](2) != null) {
      result = result + match[$_get](2);
      exponent = exponent - match[$_get](2).length;
    }
    return dart.notNull(result) + "0"[$times](exponent);
  }
  [$toString]() {
    if (this === 0 && 1 / this < 0) {
      return "-0.0";
    } else {
      return "" + this;
    }
  }
  get [$hashCode]() {
    let intValue = this | 0;
    if (this === intValue) return 536870911 & intValue;
    let absolute = Math.abs(this);
    let lnAbsolute = Math.log(absolute);
    let log2 = lnAbsolute / 0.6931471805599453;
    let floorLog2 = log2 | 0;
    let factor = Math.pow(2, floorLog2);
    let scaled = absolute < 1 ? absolute / factor : factor / absolute;
    let rescaled1 = scaled * 9007199254740992;
    let rescaled2 = scaled * 3542243181176521;
    let d1 = rescaled1 | 0;
    let d2 = rescaled2 | 0;
    let d3 = floorLog2;
    let h = 536870911 & (d1 + d2) * (601 * 997) + d3 * 1259;
    return h;
  }
  [$_negate]() {
    return -this;
  }
  [$plus](other) {
    if (other == null) dart.argumentError(other);
    return this + other;
  }
  [$minus](other) {
    if (other == null) dart.argumentError(other);
    return this - other;
  }
  [$divide](other) {
    if (other == null) dart.argumentError(other);
    return this / other;
  }
  [$times](other) {
    if (other == null) dart.argumentError(other);
    return this * other;
  }
  [$modulo](other) {
    if (other == null) dart.argumentError(other);
    let result = this % other;
    if (result === 0) return 0;
    if (result > 0) return result;
    if (other < 0) {
      return result - other;
    } else {
      return result + other;
    }
  }
  [_isInt32](value) {
    return (value | 0) === value;
  }
  [$floorDivide](other) {
    if (other == null) dart.argumentError(other);
    if (this[_isInt32](this) && this[_isInt32](other) && 0 !== other && -1 !== other) {
      return this / other | 0;
    } else {
      return this[_tdivSlow](other);
    }
  }
  [_tdivSlow](other) {
    return (this / other)[$toInt]();
  }
  [$leftShift](other) {
    if (other == null) dart.argumentError(other);
    if (other < 0) _js_helper.throwArgumentErrorValue(other);
    return this[_shlPositive](other);
  }
  [_shlPositive](other) {
    return other > 31 ? 0 : this << other >>> 0;
  }
  [$rightShift](other) {
    if (other == null) dart.argumentError(other);
    if (other < 0) _js_helper.throwArgumentErrorValue(other);
    return this[_shrOtherPositive](other);
  }
  [_shrOtherPositive](other) {
    return this > 0 ? this[_shrBothPositive](other) : this >> (other > 31 ? 31 : other) >>> 0;
  }
  [_shrBothPositive](other) {
    return other > 31 ? 0 : this >>> other;
  }
  [$bitAnd](other) {
    if (other == null) dart.argumentError(other);
    return (this & other) >>> 0;
  }
  [$bitOr](other) {
    if (other == null) dart.argumentError(other);
    return (this | other) >>> 0;
  }
  [$bitXor](other) {
    if (other == null) dart.argumentError(other);
    return (this ^ other) >>> 0;
  }
  [$lessThan](other) {
    if (other == null) dart.argumentError(other);
    return this < other;
  }
  [$greaterThan](other) {
    if (other == null) dart.argumentError(other);
    return this > other;
  }
  [$lessOrEquals](other) {
    if (other == null) dart.argumentError(other);
    return this <= other;
  }
  [$greaterOrEquals](other) {
    if (other == null) dart.argumentError(other);
    return this >= other;
  }
  get [$isEven]() {
    return (this & 1) === 0;
  }
  get [$isOdd]() {
    return (this & 1) === 1;
  }
  [$toUnsigned](width) {
    if (width == null) dart.argumentError(width);
    return (this & (1)[$leftShift](width) - 1) >>> 0;
  }
  [$toSigned](width) {
    if (width == null) dart.argumentError(width);
    let signMask = (1)[$leftShift](width - 1);
    return ((this & signMask - 1) >>> 0) - ((this & signMask) >>> 0);
  }
  get [$bitLength]() {
    let nonneg = this < 0 ? -this - 1 : this;
    let wordBits = 32;
    while (nonneg >= 4294967296) {
      nonneg = (nonneg / 4294967296)[$truncate]();
      wordBits = wordBits + 32;
    }
    return wordBits - _interceptors.JSNumber._clz32(nonneg);
  }
  static _clz32(uint32) {
    return 32 - _interceptors.JSNumber._bitCount(_interceptors.JSNumber._spread(uint32));
  }
  [$modPow](e, m) {
    if (e == null) dart.argumentError(e);
    if (m == null) dart.argumentError(m);
    if (e < 0) dart.throw(new core.RangeError.range(e, 0, null, "exponent"));
    if (m <= 0) dart.throw(new core.RangeError.range(m, 1, null, "modulus"));
    if (e === 0) return 1;
    let b = this;
    if (b < 0 || b > m) {
      b = b[$modulo](m);
    }
    let r = 1;
    while (e > 0) {
      if (e[$isOdd]) {
        r = (r * b)[$modulo](m);
      }
      e = (e / 2)[$truncate]();
      b = (b * b)[$modulo](m);
    }
    return r;
  }
  static _binaryGcd(x, y, inv) {
    let s = 1;
    if (!inv) {
      while (x[$isEven] && y[$isEven]) {
        x = (x / 2)[$truncate]();
        y = (y / 2)[$truncate]();
        s = s * 2;
      }
      if (y[$isOdd]) {
        let t = x;
        x = y;
        y = t;
      }
    }
    let ac = x[$isEven];
    let u = x;
    let v = y;
    let a = 1, b = 0, c = 0, d = 1;
    do {
      while (u[$isEven]) {
        u = (u / 2)[$truncate]();
        if (ac) {
          if (!a[$isEven] || !b[$isEven]) {
            a = a + y;
            b = b - x;
          }
          a = (a / 2)[$truncate]();
        } else if (!b[$isEven]) {
          b = b - x;
        }
        b = (b / 2)[$truncate]();
      }
      while (v[$isEven]) {
        v = (v / 2)[$truncate]();
        if (ac) {
          if (!c[$isEven] || !d[$isEven]) {
            c = c + y;
            d = d - x;
          }
          c = (c / 2)[$truncate]();
        } else if (!d[$isEven]) {
          d = d - x;
        }
        d = (d / 2)[$truncate]();
      }
      if (u >= v) {
        u = u - v;
        if (ac) {
          a = a - c;
        }
        b = b - d;
      } else {
        v = v - u;
        if (ac) {
          c = c - a;
        }
        d = d - b;
      }
    } while (u !== 0);
    if (!inv) return s * v;
    if (v !== 1) dart.throw(core.Exception.new("Not coprime"));
    if (d < 0) {
      d = d + x;
      if (d < 0) {
        d = d + x;
      }
    } else if (d > x) {
      d = d - x;
      if (d > x) {
        d = d - x;
      }
    }
    return d;
  }
  [$modInverse](m) {
    if (m == null) dart.argumentError(m);
    if (m <= 0) dart.throw(new core.RangeError.range(m, 1, null, "modulus"));
    if (m === 1) return 0;
    let t = this;
    if (t < 0 || t >= m) {
      t = t[$modulo](m);
    }
    if (t === 1) return 1;
    if (t === 0 || t[$isEven] && m[$isEven]) {
      dart.throw(core.Exception.new("Not coprime"));
    }
    return _interceptors.JSNumber._binaryGcd(m, t, true);
  }
  [$gcd](other) {
    if (other == null) dart.argumentError(other);
    let x = this[$abs]();
    let y = other[$abs]();
    if (x === 0) return y;
    if (y === 0) return x;
    if (x === 1 || y === 1) return 1;
    return _interceptors.JSNumber._binaryGcd(x, y, false);
  }
  static _bitCount(i) {
    i = _interceptors.JSNumber._shru(i, 0) - (_interceptors.JSNumber._shru(i, 1) & 1431655765);
    i = (i & 858993459) + (_interceptors.JSNumber._shru(i, 2) & 858993459);
    i = 252645135 & i + _interceptors.JSNumber._shru(i, 4);
    i = i + _interceptors.JSNumber._shru(i, 8);
    i = i + _interceptors.JSNumber._shru(i, 16);
    return i & 63;
  }
  static _shru(value, shift) {
    return value >>> shift;
  }
  static _shrs(value, shift) {
    return value >> shift;
  }
  static _ors(a, b) {
    return a | b;
  }
  static _spread(i) {
    i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 1));
    i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 2));
    i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 4));
    i = _interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 8));
    i = _interceptors.JSNumber._shru(_interceptors.JSNumber._ors(i, _interceptors.JSNumber._shrs(i, 16)), 0);
    return i;
  }
  [$bitNot]() {
    return ~this >>> 0;
  }
};
(_interceptors.JSNumber.new = function() {
  _interceptors.JSNumber.__proto__.new.call(this);
}).prototype = _interceptors.JSNumber.prototype;
dart.addTypeTests(_interceptors.JSNumber);
_interceptors.JSNumber[dart.implements] = () => [core.int, core.double];
dart.setMethodSignature(_interceptors.JSNumber, () => ({
  __proto__: dart.getMethods(_interceptors.JSNumber.__proto__),
  [$compareTo]: dart.fnType(core.int, [core.Object]),
  [$remainder]: dart.fnType(_interceptors.JSNumber, [core.num]),
  [$abs]: dart.fnType(_interceptors.JSNumber, []),
  [$toInt]: dart.fnType(core.int, []),
  [$truncate]: dart.fnType(core.int, []),
  [$ceil]: dart.fnType(core.int, []),
  [$floor]: dart.fnType(core.int, []),
  [$round]: dart.fnType(core.int, []),
  [$ceilToDouble]: dart.fnType(core.double, []),
  [$floorToDouble]: dart.fnType(core.double, []),
  [$roundToDouble]: dart.fnType(core.double, []),
  [$truncateToDouble]: dart.fnType(core.double, []),
  [$clamp]: dart.fnType(core.num, [core.num, core.num]),
  [$toDouble]: dart.fnType(core.double, []),
  [$toStringAsFixed]: dart.fnType(core.String, [core.int]),
  [$toStringAsExponential]: dart.fnType(core.String, [], [core.int]),
  [$toStringAsPrecision]: dart.fnType(core.String, [core.int]),
  [$toRadixString]: dart.fnType(core.String, [core.int]),
  [$_negate]: dart.fnType(_interceptors.JSNumber, []),
  [$plus]: dart.fnType(_interceptors.JSNumber, [core.num]),
  [$minus]: dart.fnType(_interceptors.JSNumber, [core.num]),
  [$divide]: dart.fnType(core.double, [core.num]),
  [$times]: dart.fnType(_interceptors.JSNumber, [core.num]),
  [$modulo]: dart.fnType(_interceptors.JSNumber, [core.num]),
  [_isInt32]: dart.fnType(core.bool, [core.num]),
  [$floorDivide]: dart.fnType(core.int, [core.num]),
  [_tdivSlow]: dart.fnType(core.int, [core.num]),
  [$leftShift]: dart.fnType(core.int, [core.num]),
  [_shlPositive]: dart.fnType(core.int, [core.num]),
  [$rightShift]: dart.fnType(core.int, [core.num]),
  [_shrOtherPositive]: dart.fnType(core.int, [core.num]),
  [_shrBothPositive]: dart.fnType(core.int, [core.num]),
  [$bitAnd]: dart.fnType(core.int, [core.num]),
  [$bitOr]: dart.fnType(core.int, [core.num]),
  [$bitXor]: dart.fnType(core.int, [core.num]),
  [$lessThan]: dart.fnType(core.bool, [core.num]),
  [$greaterThan]: dart.fnType(core.bool, [core.num]),
  [$lessOrEquals]: dart.fnType(core.bool, [core.num]),
  [$greaterOrEquals]: dart.fnType(core.bool, [core.num]),
  [$toUnsigned]: dart.fnType(core.int, [core.int]),
  [$toSigned]: dart.fnType(core.int, [core.int]),
  [$modPow]: dart.fnType(core.int, [core.int, core.int]),
  [$modInverse]: dart.fnType(core.int, [core.int]),
  [$gcd]: dart.fnType(core.int, [core.int]),
  [$bitNot]: dart.fnType(core.int, [])
}));
dart.setGetterSignature(_interceptors.JSNumber, () => ({
  __proto__: dart.getGetters(_interceptors.JSNumber.__proto__),
  [$isNegative]: core.bool,
  [$isNaN]: core.bool,
  [$isInfinite]: core.bool,
  [$isFinite]: core.bool,
  [$sign]: _interceptors.JSNumber,
  [$isEven]: core.bool,
  [$isOdd]: core.bool,
  [$bitLength]: core.int
}));
dart.defineLazy(_interceptors.JSNumber, {
  /*_interceptors.JSNumber._MIN_INT32*/get _MIN_INT32() {
    return -2147483648;
  },
  /*_interceptors.JSNumber._MAX_INT32*/get _MAX_INT32() {
    return 2147483647;
  }
});
dart.definePrimitiveHashCode(_interceptors.JSNumber.prototype);
dart.registerExtension("Number", _interceptors.JSNumber);
const _defaultSplit = Symbol('_defaultSplit');
let const$2;
_interceptors.JSString = class JSString extends _interceptors.Interceptor {
  [$codeUnitAt](index) {
    if (index == null) dart.argumentError(index);
    let len = this.length;
    if (index < 0 || index >= len) {
      dart.throw(core.RangeError.index(index, this, "index", null, len));
    }
    return this.charCodeAt(index);
  }
  [$allMatches](string, start) {
    if (string == null) dart.argumentError(string);
    if (start === void 0) start = 0;
    if (start == null) dart.argumentError(start);
    let len = string.length;
    if (0 > start || start > len) {
      dart.throw(new core.RangeError.range(start, 0, len));
    }
    return _js_helper.allMatchesInStringUnchecked(this, string, start);
  }
  [$matchAsPrefix](string, start) {
    if (string == null) dart.argumentError(string);
    if (start === void 0) start = 0;
    if (start == null) dart.argumentError(start);
    let stringLength = string.length;
    if (start < 0 || start > stringLength) {
      dart.throw(new core.RangeError.range(start, 0, stringLength));
    }
    let thisLength = this.length;
    if (start + thisLength > stringLength) return null;
    for (let i = 0; i < thisLength; i++) {
      if (string[$codeUnitAt](start + i) !== this[$codeUnitAt](i)) {
        return null;
      }
    }
    return new _js_helper.StringMatch.new(start, string, this);
  }
  [$plus](other) {
    if (other == null) dart.argumentError(other);
    return this + other;
  }
  [$endsWith](other) {
    if (other == null) dart.argumentError(other);
    let otherLength = other.length;
    let thisLength = this.length;
    if (otherLength > thisLength) return false;
    return other === this[$substring](thisLength - otherLength);
  }
  [$replaceAll](from, to) {
    if (to == null) dart.argumentError(to);
    return _js_helper.stringReplaceAllUnchecked(this, from, to);
  }
  [$replaceAllMapped](from, convert) {
    return this[$splitMapJoin](from, {onMatch: convert});
  }
  [$splitMapJoin](from, opts) {
    let onMatch = opts && 'onMatch' in opts ? opts.onMatch : null;
    let onNonMatch = opts && 'onNonMatch' in opts ? opts.onNonMatch : null;
    return _js_helper.stringReplaceAllFuncUnchecked(this, from, onMatch, onNonMatch);
  }
  [$replaceFirst](from, to, startIndex) {
    if (to == null) dart.argumentError(to);
    if (startIndex === void 0) startIndex = 0;
    if (startIndex == null) dart.argumentError(startIndex);
    core.RangeError.checkValueInInterval(startIndex, 0, this.length, "startIndex");
    return _js_helper.stringReplaceFirstUnchecked(this, from, to, startIndex);
  }
  [$replaceFirstMapped](from, replace, startIndex) {
    if (replace == null) dart.argumentError(replace);
    if (startIndex === void 0) startIndex = 0;
    if (startIndex == null) dart.argumentError(startIndex);
    core.RangeError.checkValueInInterval(startIndex, 0, this.length, "startIndex");
    return _js_helper.stringReplaceFirstMappedUnchecked(this, from, replace, startIndex);
  }
  [$split](pattern) {
    if (pattern == null) dart.argumentError(pattern);
    if (typeof pattern == 'string') {
      return JSArrayOfString().of(this.split(pattern));
    } else if (_js_helper.JSSyntaxRegExp.is(pattern) && _js_helper.regExpCaptureCount(pattern) === 0) {
      let re = _js_helper.regExpGetNative(pattern);
      return JSArrayOfString().of(this.split(re));
    } else {
      return this[_defaultSplit](pattern);
    }
  }
  [$replaceRange](start, end, replacement) {
    if (start == null) dart.argumentError(start);
    if (replacement == null) dart.argumentError(replacement);
    end = core.RangeError.checkValidRange(start, end, this.length);
    return _js_helper.stringReplaceRangeUnchecked(this, start, end, replacement);
  }
  [_defaultSplit](pattern) {
    let result = JSArrayOfString().of([]);
    let start = 0;
    let length = 1;
    for (let match of pattern[$allMatches](this)) {
      let matchStart = match.start;
      let matchEnd = match.end;
      length = matchEnd - matchStart;
      if (length === 0 && start === matchStart) {
        continue;
      }
      let end = matchStart;
      result[$add](this[$substring](start, end));
      start = matchEnd;
    }
    if (start < this.length || length > 0) {
      result[$add](this[$substring](start));
    }
    return result;
  }
  [$startsWith](pattern, index) {
    if (index === void 0) index = 0;
    if (index == null) dart.argumentError(index);
    let length = this.length;
    if (index < 0 || index > length) {
      dart.throw(new core.RangeError.range(index, 0, this.length));
    }
    if (typeof pattern == 'string') {
      let other = pattern;
      let otherLength = other.length;
      let endIndex = index + otherLength;
      if (endIndex > length) return false;
      return other === this.substring(index, endIndex);
    }
    return pattern[$matchAsPrefix](this, index) != null;
  }
  [$substring](startIndex, _endIndex) {
    if (startIndex == null) dart.argumentError(startIndex);
    if (_endIndex === void 0) _endIndex = null;
    let length = this.length;
    let endIndex = _endIndex != null ? _endIndex : length;
    if (startIndex < 0) dart.throw(new core.RangeError.value(startIndex));
    if (startIndex > endIndex) dart.throw(new core.RangeError.value(startIndex));
    if (endIndex > length) dart.throw(new core.RangeError.value(endIndex));
    return this.substring(startIndex, endIndex);
  }
  [$toLowerCase]() {
    return this.toLowerCase();
  }
  [$toUpperCase]() {
    return this.toUpperCase();
  }
  static _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;
      }
    }
  }
  static _skipLeadingWhitespace(string, index) {
    if (index == null) dart.argumentError(index);
    let SPACE = 32;
    let CARRIAGE_RETURN = 13;
    let stringLength = string.length;
    while (index < stringLength) {
      let codeUnit = string[$codeUnitAt](index);
      if (codeUnit !== SPACE && codeUnit !== CARRIAGE_RETURN && !_interceptors.JSString._isWhitespace(codeUnit)) {
        break;
      }
      index++;
    }
    return index;
  }
  static _skipTrailingWhitespace(string, index) {
    if (index == null) dart.argumentError(index);
    let SPACE = 32;
    let CARRIAGE_RETURN = 13;
    while (index > 0) {
      let codeUnit = string[$codeUnitAt](index - 1);
      if (codeUnit !== SPACE && codeUnit !== CARRIAGE_RETURN && !_interceptors.JSString._isWhitespace(codeUnit)) {
        break;
      }
      index--;
    }
    return index;
  }
  [$trim]() {
    let NEL = 133;
    let result = this.trim();
    let length = result.length;
    if (length === 0) return result;
    let firstCode = result[$codeUnitAt](0);
    let startIndex = 0;
    if (firstCode === NEL) {
      startIndex = _interceptors.JSString._skipLeadingWhitespace(result, 1);
      if (startIndex === length) return "";
    }
    let endIndex = length;
    let lastCode = result[$codeUnitAt](endIndex - 1);
    if (lastCode === NEL) {
      endIndex = _interceptors.JSString._skipTrailingWhitespace(result, endIndex - 1);
    }
    if (startIndex === 0 && endIndex === length) return result;
    return result.substring(startIndex, endIndex);
  }
  [$trimLeft]() {
    let NEL = 133;
    let result = null;
    let startIndex = 0;
    if (typeof this.trimLeft != "undefined") {
      result = this.trimLeft();
      if (result.length === 0) return result;
      let firstCode = result[$codeUnitAt](0);
      if (firstCode === NEL) {
        startIndex = _interceptors.JSString._skipLeadingWhitespace(result, 1);
      }
    } else {
      result = this;
      startIndex = _interceptors.JSString._skipLeadingWhitespace(this, 0);
    }
    if (startIndex === 0) return result;
    if (startIndex === result.length) return "";
    return result.substring(startIndex);
  }
  [$trimRight]() {
    let NEL = 133;
    let result = null;
    let endIndex = 0;
    if (typeof this.trimRight != "undefined") {
      result = this.trimRight();
      endIndex = result.length;
      if (endIndex === 0) return result;
      let lastCode = result[$codeUnitAt](endIndex - 1);
      if (lastCode === NEL) {
        endIndex = _interceptors.JSString._skipTrailingWhitespace(result, endIndex - 1);
      }
    } else {
      result = this;
      endIndex = _interceptors.JSString._skipTrailingWhitespace(this, this.length);
    }
    if (endIndex === result.length) return result;
    if (endIndex === 0) return "";
    return result.substring(0, endIndex);
  }
  [$times](times) {
    if (times == null) dart.argumentError(times);
    if (0 >= times) return "";
    if (times === 1 || this.length === 0) return this;
    if (times !== times >>> 0) {
      dart.throw(const$2 || (const$2 = dart.const(new core.OutOfMemoryError.new())));
    }
    let result = "";
    let s = this;
    while (true) {
      if ((times & 1) === 1) result = s + result;
      times = times >>> 1;
      if (times === 0) break;
      s = s + s;
    }
    return result;
  }
  [$padLeft](width, padding) {
    if (width == null) dart.argumentError(width);
    if (padding === void 0) padding = " ";
    let delta = width - this.length;
    if (delta <= 0) return this;
    return padding[$times](delta) + this;
  }
  [$padRight](width, padding) {
    if (width == null) dart.argumentError(width);
    if (padding === void 0) padding = " ";
    let delta = width - this.length;
    if (delta <= 0) return this;
    return this[$plus](padding[$times](delta));
  }
  get [$codeUnits]() {
    return new _internal.CodeUnits.new(this);
  }
  get [$runes]() {
    return new core.Runes.new(this);
  }
  [$indexOf](pattern, start) {
    if (pattern == null) dart.argumentError(pattern);
    if (start === void 0) start = 0;
    if (start == null) dart.argumentError(start);
    if (start < 0 || start > this.length) {
      dart.throw(new core.RangeError.range(start, 0, this.length));
    }
    if (typeof pattern == 'string') {
      return _js_helper.stringIndexOfStringUnchecked(this, pattern, start);
    }
    if (_js_helper.JSSyntaxRegExp.is(pattern)) {
      let re = pattern;
      let match = _js_helper.firstMatchAfter(re, this, start);
      return match == null ? -1 : match.start;
    }
    let length = this.length;
    for (let i = start; i <= length; i++) {
      if (pattern[$matchAsPrefix](this, i) != null) return i;
    }
    return -1;
  }
  [$lastIndexOf](pattern, _start) {
    if (pattern == null) dart.argumentError(pattern);
    if (_start === void 0) _start = null;
    let length = this.length;
    let start = _start != null ? _start : length;
    if (start < 0 || start > length) {
      dart.throw(new core.RangeError.range(start, 0, length));
    }
    if (typeof pattern == 'string') {
      let other = pattern;
      if (start + other.length > length) {
        start = length - other.length;
      }
      return _js_helper.stringLastIndexOfUnchecked(this, other, start);
    }
    for (let i = start; i >= 0; i--) {
      if (pattern[$matchAsPrefix](this, i) != null) return i;
    }
    return -1;
  }
  [$contains](other, startIndex) {
    if (other == null) dart.argumentError(other);
    if (startIndex === void 0) startIndex = 0;
    if (startIndex == null) dart.argumentError(startIndex);
    if (startIndex < 0 || startIndex > this.length) {
      dart.throw(new core.RangeError.range(startIndex, 0, this.length));
    }
    return _js_helper.stringContainsUnchecked(this, other, startIndex);
  }
  get [$isEmpty]() {
    return this.length === 0;
  }
  get [$isNotEmpty]() {
    return !this[$isEmpty];
  }
  [$compareTo](other) {
    core.String._check(other);
    if (other == null) dart.argumentError(other);
    return this === other ? 0 : this < other ? -1 : 1;
  }
  [$toString]() {
    return this;
  }
  get [$hashCode]() {
    let hash = 0;
    let length = this.length;
    for (let i = 0; i < length; i++) {
      hash = 536870911 & hash + this.charCodeAt(i);
      hash = 536870911 & hash + ((524287 & hash) << 10);
      hash = hash ^ hash >> 6;
    }
    hash = 536870911 & hash + ((67108863 & hash) << 3);
    hash = hash ^ hash >> 11;
    return 536870911 & hash + ((16383 & hash) << 15);
  }
  get [$runtimeType]() {
    return dart.wrapType(core.String);
  }
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index == null) dart.argumentError(index);
    if (index >= this.length || index < 0) {
      dart.throw(_js_helper.diagnoseIndexError(this, index));
    }
    return this[index];
  }
};
(_interceptors.JSString.new = function() {
  this[$length] = null;
  _interceptors.JSString.__proto__.new.call(this);
}).prototype = _interceptors.JSString.prototype;
dart.addTypeTests(_interceptors.JSString);
_interceptors.JSString[dart.implements] = () => [core.String, JSIndexableOfString()];
dart.setMethodSignature(_interceptors.JSString, () => ({
  __proto__: dart.getMethods(_interceptors.JSString.__proto__),
  [$codeUnitAt]: dart.fnType(core.int, [core.int]),
  [$allMatches]: dart.fnType(core.Iterable$(core.Match), [core.String], [core.int]),
  [$matchAsPrefix]: dart.fnType(core.Match, [core.String], [core.int]),
  [$plus]: dart.fnType(core.String, [core.String]),
  [$endsWith]: dart.fnType(core.bool, [core.String]),
  [$replaceAll]: dart.fnType(core.String, [core.Pattern, core.String]),
  [$replaceAllMapped]: dart.fnType(core.String, [core.Pattern, dart.fnType(core.String, [core.Match])]),
  [$splitMapJoin]: dart.fnType(core.String, [core.Pattern], {onMatch: dart.fnType(core.String, [core.Match]), onNonMatch: dart.fnType(core.String, [core.String])}),
  [$replaceFirst]: dart.fnType(core.String, [core.Pattern, core.String], [core.int]),
  [$replaceFirstMapped]: dart.fnType(core.String, [core.Pattern, dart.fnType(core.String, [core.Match])], [core.int]),
  [$split]: dart.fnType(core.List$(core.String), [core.Pattern]),
  [$replaceRange]: dart.fnType(core.String, [core.int, core.int, core.String]),
  [_defaultSplit]: dart.fnType(core.List$(core.String), [core.Pattern]),
  [$startsWith]: dart.fnType(core.bool, [core.Pattern], [core.int]),
  [$substring]: dart.fnType(core.String, [core.int], [core.int]),
  [$toLowerCase]: dart.fnType(core.String, []),
  [$toUpperCase]: dart.fnType(core.String, []),
  [$trim]: dart.fnType(core.String, []),
  [$trimLeft]: dart.fnType(core.String, []),
  [$trimRight]: dart.fnType(core.String, []),
  [$times]: dart.fnType(core.String, [core.int]),
  [$padLeft]: dart.fnType(core.String, [core.int], [core.String]),
  [$padRight]: dart.fnType(core.String, [core.int], [core.String]),
  [$indexOf]: dart.fnType(core.int, [core.Pattern], [core.int]),
  [$lastIndexOf]: dart.fnType(core.int, [core.Pattern], [core.int]),
  [$contains]: dart.fnType(core.bool, [core.Pattern], [core.int]),
  [$compareTo]: dart.fnType(core.int, [core.Object]),
  [$_get]: dart.fnType(core.String, [core.int])
}));
dart.setGetterSignature(_interceptors.JSString, () => ({
  __proto__: dart.getGetters(_interceptors.JSString.__proto__),
  [$codeUnits]: core.List$(core.int),
  [$runes]: core.Runes,
  [$isEmpty]: core.bool,
  [$isNotEmpty]: core.bool
}));
dart.setFieldSignature(_interceptors.JSString, () => ({
  __proto__: dart.getFields(_interceptors.JSString.__proto__),
  [$length]: dart.finalFieldType(core.int)
}));
dart.definePrimitiveHashCode(_interceptors.JSString.prototype);
dart.registerExtension("String", _interceptors.JSString);
dart.defineLazy(_internal, {
  /*_internal.POWERS_OF_TEN*/get POWERS_OF_TEN() {
    return dart.constList([1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0, 1000000000.0, 10000000000.0, 100000000000.0, 1000000000000.0, 10000000000000.0, 100000000000000.0, 1000000000000000.0, 10000000000000000.0, 100000000000000000.0, 1000000000000000000.0, 10000000000000000000.0, 100000000000000000000.0, 1e+21, 1e+22], core.double);
  }
});
const _string = Symbol('_string');
const _closeGap = Symbol('_closeGap');
const _filter = Symbol('_filter');
const _is_ListMixin_default = Symbol('_is_ListMixin_default');
collection.ListMixin$ = dart.generic(E => {
  let ListIteratorOfE = () => (ListIteratorOfE = dart.constFn(_internal.ListIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
  let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
  let ListMapViewOfE = () => (ListMapViewOfE = dart.constFn(_internal.ListMapView$(E)))();
  let ReversedListIterableOfE = () => (ReversedListIterableOfE = dart.constFn(_internal.ReversedListIterable$(E)))();
  class ListMixin extends core.Object {
    get iterator() {
      return new (ListIteratorOfE()).new(this);
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this[$iterator]);
    }
    elementAt(index) {
      return this[$_get](index);
    }
    followedBy(other) {
      IterableOfE()._check(other);
      return FollowedByIterableOfE().firstEfficient(this, other);
    }
    forEach(action) {
      let length = this[$length];
      for (let i = 0; i < dart.notNull(length); i++) {
        action(this[$_get](i));
        if (length != this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
    }
    get isEmpty() {
      return this[$length] === 0;
    }
    get isNotEmpty() {
      return !dart.test(this[$isEmpty]);
    }
    get first() {
      if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
      return this[$_get](0);
    }
    set first(value) {
      E._check(value);
      if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
      this[$_set](0, value);
    }
    get last() {
      if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
      return this[$_get](dart.notNull(this[$length]) - 1);
    }
    set last(value) {
      E._check(value);
      if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
      this[$_set](dart.notNull(this[$length]) - 1, value);
    }
    get single() {
      if (this[$length] === 0) dart.throw(_internal.IterableElementError.noElement());
      if (dart.notNull(this[$length]) > 1) dart.throw(_internal.IterableElementError.tooMany());
      return this[$_get](0);
    }
    contains(element) {
      let length = this[$length];
      for (let i = 0; i < dart.notNull(length); i++) {
        if (dart.equals(this[$_get](i), element)) return true;
        if (length != this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      return false;
    }
    every(test) {
      let length = this[$length];
      for (let i = 0; i < dart.notNull(length); i++) {
        if (!dart.test(test(this[$_get](i)))) return false;
        if (length != this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      return true;
    }
    any(test) {
      let length = this[$length];
      for (let i = 0; i < dart.notNull(length); i++) {
        if (dart.test(test(this[$_get](i)))) return true;
        if (length != this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      return false;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this[$length];
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = this[$_get](i);
        if (dart.test(test(element))) return element;
        if (length != this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this[$length];
      for (let i = dart.notNull(length) - 1; i >= 0; i--) {
        let element = this[$_get](i);
        if (dart.test(test(element))) return element;
        if (length != this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this[$length];
      let match = null;
      let matchFound = false;
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = this[$_get](i);
        if (dart.test(test(element))) {
          if (matchFound) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          matchFound = true;
          match = element;
        }
        if (length != this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      if (matchFound) return match;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    join(separator) {
      if (separator === void 0) separator = "";
      if (this[$length] === 0) return "";
      let buffer = new core.StringBuffer.new();
      buffer.writeAll(this, separator);
      return buffer.toString();
    }
    where(test) {
      return new (WhereIterableOfE()).new(this, test);
    }
    whereType(T) {
      return new (_internal.WhereTypeIterable$(T)).new(this);
    }
    map(T, f) {
      return new (_internal.MappedListIterable$(E, T)).new(this, f);
    }
    expand(T, f) {
      return new (_internal.ExpandIterable$(E, T)).new(this, f);
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      let length = this[$length];
      if (length === 0) dart.throw(_internal.IterableElementError.noElement());
      let value = this[$_get](0);
      for (let i = 1; i < dart.notNull(length); i++) {
        value = combine(value, this[$_get](i));
        if (length != this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      return value;
    }
    fold(T, initialValue, combine) {
      let value = initialValue;
      let length = this[$length];
      for (let i = 0; i < dart.notNull(length); i++) {
        value = combine(value, this[$_get](i));
        if (length != this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      return value;
    }
    skip(count) {
      return new (SubListIterableOfE()).new(this, count, null);
    }
    skipWhile(test) {
      return new (SkipWhileIterableOfE()).new(this, test);
    }
    take(count) {
      return new (SubListIterableOfE()).new(this, 0, count);
    }
    takeWhile(test) {
      return new (TakeWhileIterableOfE()).new(this, test);
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let result = null;
      if (dart.test(growable)) {
        result = JSArrayOfE().of([]);
        result[$length] = this[$length];
      } else {
        result = ListOfE().new(this[$length]);
      }
      for (let i = 0; i < dart.notNull(this[$length]); i++) {
        result[$_set](i, this[$_get](i));
      }
      return result;
    }
    toSet() {
      let result = new (_HashSetOfE()).new();
      for (let i = 0; i < dart.notNull(this[$length]); i++) {
        result.add(this[$_get](i));
      }
      return result;
    }
    add(element) {
      E._check(element);
      this[$_set]((() => {
        let x = this[$length];
        this[$length] = dart.notNull(x) + 1;
        return x;
      })(), element);
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      let i = this[$length];
      for (let element of iterable) {
        if (!(this[$length] == i || dart.test(dart.throw(new core.ConcurrentModificationError.new(this))))) dart.assertFailed();
        this[$length] = dart.notNull(i) + 1;
        this[$_set](i, element);
        i = dart.notNull(i) + 1;
      }
    }
    remove(element) {
      for (let i = 0; i < dart.notNull(this[$length]); i++) {
        if (dart.equals(this[$_get](i), element)) {
          this[_closeGap](i, i + 1);
          return true;
        }
      }
      return false;
    }
    [_closeGap](start, end) {
      let length = this[$length];
      if (!(0 <= dart.notNull(start))) dart.assertFailed();
      if (!(dart.notNull(start) < dart.notNull(end))) dart.assertFailed();
      if (!(dart.notNull(end) <= dart.notNull(length))) dart.assertFailed();
      let size = dart.notNull(end) - dart.notNull(start);
      for (let i = end; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
        this[$_set](dart.notNull(i) - size, this[$_get](i));
      }
      this[$length] = dart.notNull(length) - size;
    }
    removeWhere(test) {
      this[_filter](test, false);
    }
    retainWhere(test) {
      this[_filter](test, true);
    }
    [_filter](test, retainMatching) {
      let retained = JSArrayOfE().of([]);
      let length = this[$length];
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = this[$_get](i);
        if (test(element) == retainMatching) {
          retained[$add](element);
        }
        if (length != this[$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      if (retained[$length] != this[$length]) {
        this[$setRange](0, retained[$length], retained);
        this[$length] = retained[$length];
      }
    }
    clear() {
      this[$length] = 0;
    }
    cast(R) {
      return core.List.castFrom(E, R, this);
    }
    removeLast() {
      if (this[$length] === 0) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let result = this[$_get](dart.notNull(this[$length]) - 1);
      this[$length] = dart.notNull(this[$length]) - 1;
      return result;
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      _internal.Sort.sort(E, this, compare != null ? compare : dart.fn(collection.ListMixin._compareAny, dynamicAnddynamicToint()));
    }
    static _compareAny(a, b) {
      return core.Comparable.compare(core.Comparable._check(a), core.Comparable._check(b));
    }
    shuffle(random) {
      if (random === void 0) random = null;
      let t = random;
      t == null ? random = math.Random.new() : t;
      let length = this[$length];
      while (dart.notNull(length) > 1) {
        let pos = random.nextInt(length);
        length = dart.notNull(length) - 1;
        let tmp = this[$_get](length);
        this[$_set](length, this[$_get](pos));
        this[$_set](pos, tmp);
      }
    }
    asMap() {
      return new (ListMapViewOfE()).new(this);
    }
    ['+'](other) {
      ListOfE()._check(other);
      let result = JSArrayOfE().of([]);
      result[$length] = dart.notNull(this[$length]) + dart.notNull(other[$length]);
      result[$setRange](0, this[$length], this);
      result[$setRange](this[$length], result[$length], other);
      return result;
    }
    sublist(start, end) {
      if (end === void 0) end = null;
      let listLength = this[$length];
      let t = end;
      t == null ? end = listLength : t;
      core.RangeError.checkValidRange(start, end, listLength);
      let length = dart.notNull(end) - dart.notNull(start);
      let result = JSArrayOfE().of([]);
      result[$length] = length;
      for (let i = 0; i < length; i++) {
        result[$_set](i, this[$_get](dart.notNull(start) + i));
      }
      return result;
    }
    getRange(start, end) {
      core.RangeError.checkValidRange(start, end, this[$length]);
      return new (SubListIterableOfE()).new(this, start, end);
    }
    removeRange(start, end) {
      core.RangeError.checkValidRange(start, end, this[$length]);
      if (dart.notNull(end) > dart.notNull(start)) {
        this[_closeGap](start, end);
      }
    }
    fillRange(start, end, fill) {
      if (fill === void 0) fill = null;
      E._check(fill);
      core.RangeError.checkValidRange(start, end, this[$length]);
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        this[$_set](i, fill);
      }
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      core.RangeError.checkValidRange(start, end, this[$length]);
      let length = dart.notNull(end) - dart.notNull(start);
      if (length === 0) return;
      core.RangeError.checkNotNegative(skipCount, "skipCount");
      let otherList = null;
      let otherStart = null;
      if (ListOfE().is(iterable)) {
        otherList = iterable;
        otherStart = skipCount;
      } else {
        otherList = iterable[$skip](skipCount)[$toList]({growable: false});
        otherStart = 0;
      }
      if (dart.notNull(otherStart) + length > dart.notNull(otherList[$length])) {
        dart.throw(_internal.IterableElementError.tooFew());
      }
      if (dart.notNull(otherStart) < dart.notNull(start)) {
        for (let i = length - 1; i >= 0; i--) {
          this[$_set](dart.notNull(start) + i, otherList[$_get](dart.notNull(otherStart) + i));
        }
      } else {
        for (let i = 0; i < length; i++) {
          this[$_set](dart.notNull(start) + i, otherList[$_get](dart.notNull(otherStart) + i));
        }
      }
    }
    replaceRange(start, end, newContents) {
      IterableOfE()._check(newContents);
      core.RangeError.checkValidRange(start, end, this[$length]);
      if (!_internal.EfficientLengthIterable.is(newContents)) {
        newContents = newContents[$toList]();
      }
      let removeLength = dart.notNull(end) - dart.notNull(start);
      let insertLength = newContents[$length];
      if (removeLength >= dart.notNull(insertLength)) {
        let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
        this[$setRange](start, insertEnd, newContents);
        if (removeLength > dart.notNull(insertLength)) {
          this[_closeGap](insertEnd, end);
        }
      } else {
        let delta = dart.notNull(insertLength) - removeLength;
        let newLength = dart.notNull(this[$length]) + delta;
        let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
        this[$length] = newLength;
        this[$setRange](insertEnd, newLength, this, end);
        this[$setRange](start, insertEnd, newContents);
      }
    }
    indexOf(element, start) {
      if (start === void 0) start = 0;
      if (dart.notNull(start) < 0) start = 0;
      for (let i = start; dart.notNull(i) < dart.notNull(this[$length]); i = dart.notNull(i) + 1) {
        if (dart.equals(this[$_get](i), element)) return i;
      }
      return -1;
    }
    indexWhere(test, start) {
      if (start === void 0) start = 0;
      if (dart.notNull(start) < 0) start = 0;
      for (let i = start; dart.notNull(i) < dart.notNull(this[$length]); i = dart.notNull(i) + 1) {
        if (dart.test(test(this[$_get](i)))) return i;
      }
      return -1;
    }
    lastIndexOf(element, start) {
      if (start === void 0) start = null;
      if (start == null || dart.notNull(start) >= dart.notNull(this[$length])) start = dart.notNull(this[$length]) - 1;
      for (let i = start; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
        if (dart.equals(this[$_get](i), element)) return i;
      }
      return -1;
    }
    lastIndexWhere(test, start) {
      if (start === void 0) start = null;
      if (start == null || dart.notNull(start) >= dart.notNull(this[$length])) start = dart.notNull(this[$length]) - 1;
      for (let i = start; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
        if (dart.test(test(this[$_get](i)))) return i;
      }
      return -1;
    }
    insert(index, element) {
      E._check(element);
      core.ArgumentError.checkNotNull(index, "index");
      core.RangeError.checkValueInInterval(index, 0, this[$length], "index");
      if (index == this[$length]) {
        this[$add](element);
        return;
      }
      this[$length] = dart.notNull(this[$length]) + 1;
      this[$setRange](dart.notNull(index) + 1, this[$length], this, index);
      this[$_set](index, element);
    }
    removeAt(index) {
      let result = this[$_get](index);
      this[_closeGap](index, dart.notNull(index) + 1);
      return result;
    }
    insertAll(index, iterable) {
      IterableOfE()._check(iterable);
      core.RangeError.checkValueInInterval(index, 0, this[$length], "index");
      if (!_internal.EfficientLengthIterable.is(iterable) || iterable === this) {
        iterable = iterable[$toList]();
      }
      let insertionLength = iterable[$length];
      this[$length] = dart.notNull(this[$length]) + dart.notNull(insertionLength);
      if (iterable[$length] != insertionLength) {
        this[$length] = dart.notNull(this[$length]) - dart.notNull(insertionLength);
        dart.throw(new core.ConcurrentModificationError.new(iterable));
      }
      this[$setRange](dart.notNull(index) + dart.notNull(insertionLength), this[$length], this, index);
      this[$setAll](index, iterable);
    }
    setAll(index, iterable) {
      IterableOfE()._check(iterable);
      if (core.List.is(iterable)) {
        this[$setRange](index, dart.notNull(index) + dart.notNull(iterable[$length]), iterable);
      } else {
        for (let element of iterable) {
          this[$_set]((() => {
            let x = index;
            index = dart.notNull(x) + 1;
            return x;
          })(), element);
        }
      }
    }
    get reversed() {
      return new (ReversedListIterableOfE()).new(this);
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, "[", "]");
    }
  }
  (ListMixin.new = function() {
  }).prototype = ListMixin.prototype;
  ListMixin.prototype[dart.isList] = true;
  dart.addTypeTests(ListMixin);
  ListMixin.prototype[_is_ListMixin_default] = true;
  ListMixin[dart.implements] = () => [ListOfE()];
  dart.setMethodSignature(ListMixin, () => ({
    __proto__: dart.getMethods(ListMixin.__proto__),
    elementAt: dart.fnType(E, [core.int]),
    [$elementAt]: dart.fnType(E, [core.int]),
    followedBy: dart.fnType(core.Iterable$(E), [core.Object]),
    [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    every: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    any: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    join: dart.fnType(core.String, [], [core.String]),
    [$join]: dart.fnType(core.String, [], [core.String]),
    where: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    whereType: dart.gFnType(T => [core.Iterable$(T), []]),
    [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
    map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    reduce: dart.fnType(E, [core.Object]),
    [$reduce]: dart.fnType(E, [core.Object]),
    fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    skip: dart.fnType(core.Iterable$(E), [core.int]),
    [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
    skipWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    take: dart.fnType(core.Iterable$(E), [core.int]),
    [$take]: dart.fnType(core.Iterable$(E), [core.int]),
    takeWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    toList: dart.fnType(core.List$(E), [], {growable: core.bool}),
    [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
    toSet: dart.fnType(core.Set$(E), []),
    [$toSet]: dart.fnType(core.Set$(E), []),
    add: dart.fnType(dart.void, [core.Object]),
    [$add]: dart.fnType(dart.void, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object]),
    [$remove]: dart.fnType(core.bool, [core.Object]),
    [_closeGap]: dart.fnType(dart.void, [core.int, core.int]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [_filter]: dart.fnType(dart.void, [dart.fnType(core.bool, [E]), core.bool]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    cast: dart.gFnType(R => [core.List$(R), []]),
    [$cast]: dart.gFnType(R => [core.List$(R), []]),
    removeLast: dart.fnType(E, []),
    [$removeLast]: dart.fnType(E, []),
    sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
    [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
    shuffle: dart.fnType(dart.void, [], [math.Random]),
    [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
    asMap: dart.fnType(core.Map$(core.int, E), []),
    [$asMap]: dart.fnType(core.Map$(core.int, E), []),
    '+': dart.fnType(core.List$(E), [core.Object]),
    [$plus]: dart.fnType(core.List$(E), [core.Object]),
    sublist: dart.fnType(core.List$(E), [core.int], [core.int]),
    [$sublist]: dart.fnType(core.List$(E), [core.int], [core.int]),
    getRange: dart.fnType(core.Iterable$(E), [core.int, core.int]),
    [$getRange]: dart.fnType(core.Iterable$(E), [core.int, core.int]),
    removeRange: dart.fnType(dart.void, [core.int, core.int]),
    [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
    fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    indexOf: dart.fnType(core.int, [core.Object], [core.int]),
    [$indexOf]: dart.fnType(core.int, [core.Object], [core.int]),
    indexWhere: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int]),
    [$indexWhere]: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int]),
    lastIndexOf: dart.fnType(core.int, [core.Object], [core.int]),
    [$lastIndexOf]: dart.fnType(core.int, [core.Object], [core.int]),
    lastIndexWhere: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int]),
    [$lastIndexWhere]: dart.fnType(core.int, [dart.fnType(core.bool, [E])], [core.int]),
    insert: dart.fnType(dart.void, [core.int, core.Object]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    removeAt: dart.fnType(E, [core.int]),
    [$removeAt]: dart.fnType(E, [core.int]),
    insertAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
    setAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, [])
  }));
  dart.setGetterSignature(ListMixin, () => ({
    __proto__: dart.getGetters(ListMixin.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E),
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    first: E,
    [$first]: E,
    last: E,
    [$last]: E,
    single: E,
    [$single]: E,
    reversed: core.Iterable$(E),
    [$reversed]: core.Iterable$(E)
  }));
  dart.setSetterSignature(ListMixin, () => ({
    __proto__: dart.getSetters(ListMixin.__proto__),
    first: E,
    [$first]: E,
    last: E,
    [$last]: E
  }));
  dart.defineExtensionMethods(ListMixin, [
    'elementAt',
    'followedBy',
    'forEach',
    'contains',
    'every',
    'any',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'join',
    'where',
    'whereType',
    'map',
    'expand',
    'reduce',
    'fold',
    'skip',
    'skipWhile',
    'take',
    'takeWhile',
    'toList',
    'toSet',
    'add',
    'addAll',
    'remove',
    'removeWhere',
    'retainWhere',
    'clear',
    'cast',
    'removeLast',
    'sort',
    'shuffle',
    'asMap',
    '+',
    'sublist',
    'getRange',
    'removeRange',
    'fillRange',
    'setRange',
    'replaceRange',
    'indexOf',
    'indexWhere',
    'lastIndexOf',
    'lastIndexWhere',
    'insert',
    'removeAt',
    'insertAll',
    'setAll',
    'toString'
  ]);
  dart.defineExtensionAccessors(ListMixin, [
    'iterator',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last',
    'single',
    'reversed'
  ]);
  return ListMixin;
});
collection.ListMixin = collection.ListMixin$();
dart.addTypeTests(collection.ListMixin, _is_ListMixin_default);
const _is_ListBase_default = Symbol('_is_ListBase_default');
collection.ListBase$ = dart.generic(E => {
  const Object_ListMixin$ = class Object_ListMixin extends core.Object {};
  (Object_ListMixin$.new = function() {
  }).prototype = Object_ListMixin$.prototype;
  dart.applyMixin(Object_ListMixin$, collection.ListMixin$(E));
  class ListBase extends Object_ListMixin$ {
    static listToString(list) {
      return collection.IterableBase.iterableToFullString(list, "[", "]");
    }
  }
  (ListBase.new = function() {
  }).prototype = ListBase.prototype;
  dart.addTypeTests(ListBase);
  ListBase.prototype[_is_ListBase_default] = true;
  return ListBase;
});
collection.ListBase = collection.ListBase$();
dart.addTypeTests(collection.ListBase, _is_ListBase_default);
const _is_UnmodifiableListMixin_default = Symbol('_is_UnmodifiableListMixin_default');
_internal.UnmodifiableListMixin$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  class UnmodifiableListMixin extends core.Object {
    _set(index, value) {
      E._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
      return value;
    }
    set length(newLength) {
      dart.throw(new core.UnsupportedError.new("Cannot change the length of an unmodifiable list"));
    }
    set first(element) {
      E._check(element);
      dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
    }
    set last(element) {
      E._check(element);
      dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
    }
    setAll(at, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
    }
    add(value) {
      E._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot add to an unmodifiable list"));
    }
    insert(index, element) {
      E._check(element);
      dart.throw(new core.UnsupportedError.new("Cannot add to an unmodifiable list"));
    }
    insertAll(at, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot add to an unmodifiable list"));
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot add to an unmodifiable list"));
    }
    remove(element) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
    }
    removeWhere(test) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
    }
    retainWhere(test) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
    }
    shuffle(random) {
      if (random === void 0) random = null;
      dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
    }
    clear() {
      dart.throw(new core.UnsupportedError.new("Cannot clear an unmodifiable list"));
    }
    removeAt(index) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
    }
    removeLast() {
      dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
    }
    removeRange(start, end) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
    }
    replaceRange(start, end, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot remove from an unmodifiable list"));
    }
    fillRange(start, end, fillValue) {
      if (fillValue === void 0) fillValue = null;
      E._check(fillValue);
      dart.throw(new core.UnsupportedError.new("Cannot modify an unmodifiable list"));
    }
  }
  (UnmodifiableListMixin.new = function() {
  }).prototype = UnmodifiableListMixin.prototype;
  UnmodifiableListMixin.prototype[dart.isList] = true;
  dart.addTypeTests(UnmodifiableListMixin);
  UnmodifiableListMixin.prototype[_is_UnmodifiableListMixin_default] = true;
  UnmodifiableListMixin[dart.implements] = () => [ListOfE()];
  dart.setMethodSignature(UnmodifiableListMixin, () => ({
    __proto__: dart.getMethods(UnmodifiableListMixin.__proto__),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    setAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
    add: dart.fnType(dart.void, [core.Object]),
    [$add]: dart.fnType(dart.void, [core.Object]),
    insert: dart.fnType(dart.void, [core.int, core.Object]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    insertAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object]),
    [$remove]: dart.fnType(core.bool, [core.Object]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
    [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
    shuffle: dart.fnType(dart.void, [], [math.Random]),
    [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    removeAt: dart.fnType(E, [core.int]),
    [$removeAt]: dart.fnType(E, [core.int]),
    removeLast: dart.fnType(E, []),
    [$removeLast]: dart.fnType(E, []),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    removeRange: dart.fnType(dart.void, [core.int, core.int]),
    [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
    replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object])
  }));
  dart.setSetterSignature(UnmodifiableListMixin, () => ({
    __proto__: dart.getSetters(UnmodifiableListMixin.__proto__),
    length: core.int,
    [$length]: core.int,
    first: E,
    [$first]: E,
    last: E,
    [$last]: E
  }));
  dart.defineExtensionMethods(UnmodifiableListMixin, [
    '_set',
    'setAll',
    'add',
    'insert',
    'insertAll',
    'addAll',
    'remove',
    'removeWhere',
    'retainWhere',
    'sort',
    'shuffle',
    'clear',
    'removeAt',
    'removeLast',
    'setRange',
    'removeRange',
    'replaceRange',
    'fillRange'
  ]);
  dart.defineExtensionAccessors(UnmodifiableListMixin, ['length', 'first', 'last']);
  return UnmodifiableListMixin;
});
_internal.UnmodifiableListMixin = _internal.UnmodifiableListMixin$();
dart.addTypeTests(_internal.UnmodifiableListMixin, _is_UnmodifiableListMixin_default);
const _is_UnmodifiableListBase_default = Symbol('_is_UnmodifiableListBase_default');
_internal.UnmodifiableListBase$ = dart.generic(E => {
  const ListBase_UnmodifiableListMixin$ = class ListBase_UnmodifiableListMixin extends collection.ListBase$(E) {};
  (ListBase_UnmodifiableListMixin$.new = function() {
  }).prototype = ListBase_UnmodifiableListMixin$.prototype;
  dart.applyMixin(ListBase_UnmodifiableListMixin$, _internal.UnmodifiableListMixin$(E));
  class UnmodifiableListBase extends ListBase_UnmodifiableListMixin$ {}
  (UnmodifiableListBase.new = function() {
  }).prototype = UnmodifiableListBase.prototype;
  dart.addTypeTests(UnmodifiableListBase);
  UnmodifiableListBase.prototype[_is_UnmodifiableListBase_default] = true;
  return UnmodifiableListBase;
});
_internal.UnmodifiableListBase = _internal.UnmodifiableListBase$();
dart.addTypeTests(_internal.UnmodifiableListBase, _is_UnmodifiableListBase_default);
core.num = class num extends core.Object {
  static parse(input, onError) {
    if (onError === void 0) onError = null;
    let result = core.num.tryParse(input);
    if (result != null) return result;
    if (onError == null) dart.throw(new core.FormatException.new(input));
    return onError(input);
  }
  static tryParse(input) {
    let source = input[$trim]();
    let l = core.int.tryParse(source);
    return l != null ? l : core.double.tryParse(source);
  }
  static _returnIntNull(_) {
    return null;
  }
  static _returnDoubleNull(_) {
    return null;
  }
};
(core.num.new = function() {
}).prototype = core.num.prototype;
core.num.is = function is_num(o) {
  return typeof o == "number";
};
core.num.as = function as_num(o) {
  if (typeof o == "number" || o == null) return o;
  return dart.as(o, core.num, false);
};
core.num._check = function check_num(o) {
  if (typeof o == "number" || o == null) return o;
  return dart.as(o, core.num, true);
};
core.num[dart.implements] = () => [ComparableOfnum()];
core.int = class int extends core.num {
  static fromEnvironment(name, opts) {
    let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
    dart.throw(new core.UnsupportedError.new("int.fromEnvironment can only be used as a const constructor"));
  }
  static parse(source, opts) {
    let radix = opts && 'radix' in opts ? opts.radix : null;
    let onError = opts && 'onError' in opts ? opts.onError : null;
    return _js_helper.Primitives.parseInt(source, radix, onError);
  }
  static tryParse(source, opts) {
    let radix = opts && 'radix' in opts ? opts.radix : null;
    return _js_helper.Primitives.parseInt(source, radix, dart.fn(core._kNull, dynamicToNull()));
  }
};
core.int.is = function is_int(o) {
  return typeof o == "number" && Math.floor(o) == o;
};
core.int.as = function as_int(o) {
  if (typeof o == "number" && Math.floor(o) == o || o == null) return o;
  return dart.as(o, core.int, false);
};
core.int._check = function check_int(o) {
  if (typeof o == "number" && Math.floor(o) == o || o == null) return o;
  return dart.as(o, core.int, true);
};
_internal.CodeUnits = class CodeUnits extends _internal.UnmodifiableListBase$(core.int) {
  get length() {
    return this[_string].length;
  }
  set length(value) {
    super.length = value;
  }
  _get(i) {
    return this[_string][$codeUnitAt](i);
  }
  static stringOf(u) {
    return u[_string];
  }
};
(_internal.CodeUnits.new = function(string) {
  this[_string] = string;
}).prototype = _internal.CodeUnits.prototype;
dart.addTypeTests(_internal.CodeUnits);
dart.setMethodSignature(_internal.CodeUnits, () => ({
  __proto__: dart.getMethods(_internal.CodeUnits.__proto__),
  _get: dart.fnType(core.int, [core.int]),
  [$_get]: dart.fnType(core.int, [core.int])
}));
dart.setGetterSignature(_internal.CodeUnits, () => ({
  __proto__: dart.getGetters(_internal.CodeUnits.__proto__),
  length: core.int,
  [$length]: core.int
}));
dart.setFieldSignature(_internal.CodeUnits, () => ({
  __proto__: dart.getFields(_internal.CodeUnits.__proto__),
  [_string]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(_internal.CodeUnits, ['_get']);
dart.defineExtensionAccessors(_internal.CodeUnits, ['length']);
_internal.ExternalName = class ExternalName extends core.Object {};
(_internal.ExternalName.new = function(name) {
  this.name = name;
}).prototype = _internal.ExternalName.prototype;
dart.addTypeTests(_internal.ExternalName);
dart.setFieldSignature(_internal.ExternalName, () => ({
  __proto__: dart.getFields(_internal.ExternalName.__proto__),
  name: dart.finalFieldType(core.String)
}));
_internal.hexDigitValue = function(char) {
  if (!(dart.notNull(char) >= 0 && dart.notNull(char) <= 65535)) dart.assertFailed();
  let digit0 = 48;
  let a = 97;
  let f = 102;
  let digit = (dart.notNull(char) ^ digit0) >>> 0;
  if (digit <= 9) return digit;
  let letter = (dart.notNull(char) | 32) >>> 0;
  if (a <= letter && letter <= f) return letter - (a - 10);
  return -1;
};
_internal.parseHexByte = function(source, index) {
  if (!(dart.notNull(index) + 2 <= source.length)) dart.assertFailed();
  let digit1 = _internal.hexDigitValue(source[$codeUnitAt](index));
  let digit2 = _internal.hexDigitValue(source[$codeUnitAt](dart.notNull(index) + 1));
  return dart.notNull(digit1) * 16 + dart.notNull(digit2) - (dart.notNull(digit2) & 256);
};
_internal.extractTypeArguments = function(T, instance, extract) {
  return dart.extractTypeArguments(T, instance, extract);
};
_internal.Since = class Since extends core.Object {};
(_internal.Since.new = function(version) {
  this.version = version;
}).prototype = _internal.Since.prototype;
dart.addTypeTests(_internal.Since);
dart.setFieldSignature(_internal.Since, () => ({
  __proto__: dart.getFields(_internal.Since.__proto__),
  version: dart.finalFieldType(core.String)
}));
_internal.HttpStatus = class HttpStatus extends core.Object {};
(_internal.HttpStatus.new = function() {
}).prototype = _internal.HttpStatus.prototype;
dart.addTypeTests(_internal.HttpStatus);
dart.defineLazy(_internal.HttpStatus, {
  /*_internal.HttpStatus.continue__*/get continue__() {
    return 100;
  },
  /*_internal.HttpStatus.switchingProtocols*/get switchingProtocols() {
    return 101;
  },
  /*_internal.HttpStatus.processing*/get processing() {
    return 102;
  },
  /*_internal.HttpStatus.ok*/get ok() {
    return 200;
  },
  /*_internal.HttpStatus.created*/get created() {
    return 201;
  },
  /*_internal.HttpStatus.accepted*/get accepted() {
    return 202;
  },
  /*_internal.HttpStatus.nonAuthoritativeInformation*/get nonAuthoritativeInformation() {
    return 203;
  },
  /*_internal.HttpStatus.noContent*/get noContent() {
    return 204;
  },
  /*_internal.HttpStatus.resetContent*/get resetContent() {
    return 205;
  },
  /*_internal.HttpStatus.partialContent*/get partialContent() {
    return 206;
  },
  /*_internal.HttpStatus.multiStatus*/get multiStatus() {
    return 207;
  },
  /*_internal.HttpStatus.alreadyReported*/get alreadyReported() {
    return 208;
  },
  /*_internal.HttpStatus.imUsed*/get imUsed() {
    return 226;
  },
  /*_internal.HttpStatus.multipleChoices*/get multipleChoices() {
    return 300;
  },
  /*_internal.HttpStatus.movedPermanently*/get movedPermanently() {
    return 301;
  },
  /*_internal.HttpStatus.found*/get found() {
    return 302;
  },
  /*_internal.HttpStatus.movedTemporarily*/get movedTemporarily() {
    return 302;
  },
  /*_internal.HttpStatus.seeOther*/get seeOther() {
    return 303;
  },
  /*_internal.HttpStatus.notModified*/get notModified() {
    return 304;
  },
  /*_internal.HttpStatus.useProxy*/get useProxy() {
    return 305;
  },
  /*_internal.HttpStatus.temporaryRedirect*/get temporaryRedirect() {
    return 307;
  },
  /*_internal.HttpStatus.permanentRedirect*/get permanentRedirect() {
    return 308;
  },
  /*_internal.HttpStatus.badRequest*/get badRequest() {
    return 400;
  },
  /*_internal.HttpStatus.unauthorized*/get unauthorized() {
    return 401;
  },
  /*_internal.HttpStatus.paymentRequired*/get paymentRequired() {
    return 402;
  },
  /*_internal.HttpStatus.forbidden*/get forbidden() {
    return 403;
  },
  /*_internal.HttpStatus.notFound*/get notFound() {
    return 404;
  },
  /*_internal.HttpStatus.methodNotAllowed*/get methodNotAllowed() {
    return 405;
  },
  /*_internal.HttpStatus.notAcceptable*/get notAcceptable() {
    return 406;
  },
  /*_internal.HttpStatus.proxyAuthenticationRequired*/get proxyAuthenticationRequired() {
    return 407;
  },
  /*_internal.HttpStatus.requestTimeout*/get requestTimeout() {
    return 408;
  },
  /*_internal.HttpStatus.conflict*/get conflict() {
    return 409;
  },
  /*_internal.HttpStatus.gone*/get gone() {
    return 410;
  },
  /*_internal.HttpStatus.lengthRequired*/get lengthRequired() {
    return 411;
  },
  /*_internal.HttpStatus.preconditionFailed*/get preconditionFailed() {
    return 412;
  },
  /*_internal.HttpStatus.requestEntityTooLarge*/get requestEntityTooLarge() {
    return 413;
  },
  /*_internal.HttpStatus.requestUriTooLong*/get requestUriTooLong() {
    return 414;
  },
  /*_internal.HttpStatus.unsupportedMediaType*/get unsupportedMediaType() {
    return 415;
  },
  /*_internal.HttpStatus.requestedRangeNotSatisfiable*/get requestedRangeNotSatisfiable() {
    return 416;
  },
  /*_internal.HttpStatus.expectationFailed*/get expectationFailed() {
    return 417;
  },
  /*_internal.HttpStatus.misdirectedRequest*/get misdirectedRequest() {
    return 421;
  },
  /*_internal.HttpStatus.unprocessableEntity*/get unprocessableEntity() {
    return 422;
  },
  /*_internal.HttpStatus.locked*/get locked() {
    return 423;
  },
  /*_internal.HttpStatus.failedDependency*/get failedDependency() {
    return 424;
  },
  /*_internal.HttpStatus.upgradeRequired*/get upgradeRequired() {
    return 426;
  },
  /*_internal.HttpStatus.preconditionRequired*/get preconditionRequired() {
    return 428;
  },
  /*_internal.HttpStatus.tooManyRequests*/get tooManyRequests() {
    return 429;
  },
  /*_internal.HttpStatus.requestHeaderFieldsTooLarge*/get requestHeaderFieldsTooLarge() {
    return 431;
  },
  /*_internal.HttpStatus.connectionClosedWithoutResponse*/get connectionClosedWithoutResponse() {
    return 444;
  },
  /*_internal.HttpStatus.unavailableForLegalReasons*/get unavailableForLegalReasons() {
    return 451;
  },
  /*_internal.HttpStatus.clientClosedRequest*/get clientClosedRequest() {
    return 499;
  },
  /*_internal.HttpStatus.internalServerError*/get internalServerError() {
    return 500;
  },
  /*_internal.HttpStatus.notImplemented*/get notImplemented() {
    return 501;
  },
  /*_internal.HttpStatus.badGateway*/get badGateway() {
    return 502;
  },
  /*_internal.HttpStatus.serviceUnavailable*/get serviceUnavailable() {
    return 503;
  },
  /*_internal.HttpStatus.gatewayTimeout*/get gatewayTimeout() {
    return 504;
  },
  /*_internal.HttpStatus.httpVersionNotSupported*/get httpVersionNotSupported() {
    return 505;
  },
  /*_internal.HttpStatus.variantAlsoNegotiates*/get variantAlsoNegotiates() {
    return 506;
  },
  /*_internal.HttpStatus.insufficientStorage*/get insufficientStorage() {
    return 507;
  },
  /*_internal.HttpStatus.loopDetected*/get loopDetected() {
    return 508;
  },
  /*_internal.HttpStatus.notExtended*/get notExtended() {
    return 510;
  },
  /*_internal.HttpStatus.networkAuthenticationRequired*/get networkAuthenticationRequired() {
    return 511;
  },
  /*_internal.HttpStatus.networkConnectTimeoutError*/get networkConnectTimeoutError() {
    return 599;
  },
  /*_internal.HttpStatus.CONTINUE*/get CONTINUE() {
    return 100;
  },
  /*_internal.HttpStatus.SWITCHING_PROTOCOLS*/get SWITCHING_PROTOCOLS() {
    return 101;
  },
  /*_internal.HttpStatus.OK*/get OK() {
    return 200;
  },
  /*_internal.HttpStatus.CREATED*/get CREATED() {
    return 201;
  },
  /*_internal.HttpStatus.ACCEPTED*/get ACCEPTED() {
    return 202;
  },
  /*_internal.HttpStatus.NON_AUTHORITATIVE_INFORMATION*/get NON_AUTHORITATIVE_INFORMATION() {
    return 203;
  },
  /*_internal.HttpStatus.NO_CONTENT*/get NO_CONTENT() {
    return 204;
  },
  /*_internal.HttpStatus.RESET_CONTENT*/get RESET_CONTENT() {
    return 205;
  },
  /*_internal.HttpStatus.PARTIAL_CONTENT*/get PARTIAL_CONTENT() {
    return 206;
  },
  /*_internal.HttpStatus.MULTIPLE_CHOICES*/get MULTIPLE_CHOICES() {
    return 300;
  },
  /*_internal.HttpStatus.MOVED_PERMANENTLY*/get MOVED_PERMANENTLY() {
    return 301;
  },
  /*_internal.HttpStatus.FOUND*/get FOUND() {
    return 302;
  },
  /*_internal.HttpStatus.MOVED_TEMPORARILY*/get MOVED_TEMPORARILY() {
    return 302;
  },
  /*_internal.HttpStatus.SEE_OTHER*/get SEE_OTHER() {
    return 303;
  },
  /*_internal.HttpStatus.NOT_MODIFIED*/get NOT_MODIFIED() {
    return 304;
  },
  /*_internal.HttpStatus.USE_PROXY*/get USE_PROXY() {
    return 305;
  },
  /*_internal.HttpStatus.TEMPORARY_REDIRECT*/get TEMPORARY_REDIRECT() {
    return 307;
  },
  /*_internal.HttpStatus.BAD_REQUEST*/get BAD_REQUEST() {
    return 400;
  },
  /*_internal.HttpStatus.UNAUTHORIZED*/get UNAUTHORIZED() {
    return 401;
  },
  /*_internal.HttpStatus.PAYMENT_REQUIRED*/get PAYMENT_REQUIRED() {
    return 402;
  },
  /*_internal.HttpStatus.FORBIDDEN*/get FORBIDDEN() {
    return 403;
  },
  /*_internal.HttpStatus.NOT_FOUND*/get NOT_FOUND() {
    return 404;
  },
  /*_internal.HttpStatus.METHOD_NOT_ALLOWED*/get METHOD_NOT_ALLOWED() {
    return 405;
  },
  /*_internal.HttpStatus.NOT_ACCEPTABLE*/get NOT_ACCEPTABLE() {
    return 406;
  },
  /*_internal.HttpStatus.PROXY_AUTHENTICATION_REQUIRED*/get PROXY_AUTHENTICATION_REQUIRED() {
    return 407;
  },
  /*_internal.HttpStatus.REQUEST_TIMEOUT*/get REQUEST_TIMEOUT() {
    return 408;
  },
  /*_internal.HttpStatus.CONFLICT*/get CONFLICT() {
    return 409;
  },
  /*_internal.HttpStatus.GONE*/get GONE() {
    return 410;
  },
  /*_internal.HttpStatus.LENGTH_REQUIRED*/get LENGTH_REQUIRED() {
    return 411;
  },
  /*_internal.HttpStatus.PRECONDITION_FAILED*/get PRECONDITION_FAILED() {
    return 412;
  },
  /*_internal.HttpStatus.REQUEST_ENTITY_TOO_LARGE*/get REQUEST_ENTITY_TOO_LARGE() {
    return 413;
  },
  /*_internal.HttpStatus.REQUEST_URI_TOO_LONG*/get REQUEST_URI_TOO_LONG() {
    return 414;
  },
  /*_internal.HttpStatus.UNSUPPORTED_MEDIA_TYPE*/get UNSUPPORTED_MEDIA_TYPE() {
    return 415;
  },
  /*_internal.HttpStatus.REQUESTED_RANGE_NOT_SATISFIABLE*/get REQUESTED_RANGE_NOT_SATISFIABLE() {
    return 416;
  },
  /*_internal.HttpStatus.EXPECTATION_FAILED*/get EXPECTATION_FAILED() {
    return 417;
  },
  /*_internal.HttpStatus.UPGRADE_REQUIRED*/get UPGRADE_REQUIRED() {
    return 426;
  },
  /*_internal.HttpStatus.INTERNAL_SERVER_ERROR*/get INTERNAL_SERVER_ERROR() {
    return 500;
  },
  /*_internal.HttpStatus.NOT_IMPLEMENTED*/get NOT_IMPLEMENTED() {
    return 501;
  },
  /*_internal.HttpStatus.BAD_GATEWAY*/get BAD_GATEWAY() {
    return 502;
  },
  /*_internal.HttpStatus.SERVICE_UNAVAILABLE*/get SERVICE_UNAVAILABLE() {
    return 503;
  },
  /*_internal.HttpStatus.GATEWAY_TIMEOUT*/get GATEWAY_TIMEOUT() {
    return 504;
  },
  /*_internal.HttpStatus.HTTP_VERSION_NOT_SUPPORTED*/get HTTP_VERSION_NOT_SUPPORTED() {
    return 505;
  },
  /*_internal.HttpStatus.NETWORK_CONNECT_TIMEOUT_ERROR*/get NETWORK_CONNECT_TIMEOUT_ERROR() {
    return 599;
  }
});
const _source = Symbol('_source');
const _add = Symbol('_add');
const _closeUnchecked = Symbol('_closeUnchecked');
const _addError = Symbol('_addError');
const _completeError = Symbol('_completeError');
const _complete = Symbol('_complete');
const _sink = Symbol('_sink');
async.Stream$ = dart.generic(T => {
  let _EmptyStreamOfT = () => (_EmptyStreamOfT = dart.constFn(async._EmptyStream$(T)))();
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let _StreamControllerOfT = () => (_StreamControllerOfT = dart.constFn(async._StreamController$(T)))();
  let TToNull = () => (TToNull = dart.constFn(dart.fnType(core.Null, [T])))();
  let _IterablePendingEventsOfT = () => (_IterablePendingEventsOfT = dart.constFn(async._IterablePendingEvents$(T)))();
  let VoidTo_IterablePendingEventsOfT = () => (VoidTo_IterablePendingEventsOfT = dart.constFn(dart.fnType(_IterablePendingEventsOfT(), [])))();
  let _GeneratedStreamImplOfT = () => (_GeneratedStreamImplOfT = dart.constFn(async._GeneratedStreamImpl$(T)))();
  let _BoundSinkStreamOfdynamic$T = () => (_BoundSinkStreamOfdynamic$T = dart.constFn(async._BoundSinkStream$(dart.dynamic, T)))();
  let _AsBroadcastStreamOfT = () => (_AsBroadcastStreamOfT = dart.constFn(async._AsBroadcastStream$(T)))();
  let _WhereStreamOfT = () => (_WhereStreamOfT = dart.constFn(async._WhereStream$(T)))();
  let _HandleErrorStreamOfT = () => (_HandleErrorStreamOfT = dart.constFn(async._HandleErrorStream$(T)))();
  let StreamConsumerOfT = () => (StreamConsumerOfT = dart.constFn(async.StreamConsumer$(T)))();
  let TAndTToT = () => (TAndTToT = dart.constFn(dart.fnType(T, [T, T])))();
  let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
  let VoidToT = () => (VoidToT = dart.constFn(dart.fnType(T, [])))();
  let JSArrayOfT = () => (JSArrayOfT = dart.constFn(_interceptors.JSArray$(T)))();
  let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
  let _FutureOfListOfT = () => (_FutureOfListOfT = dart.constFn(async._Future$(ListOfT())))();
  let _HashSetOfT = () => (_HashSetOfT = dart.constFn(collection._HashSet$(T)))();
  let SetOfT = () => (SetOfT = dart.constFn(core.Set$(T)))();
  let _FutureOfSetOfT = () => (_FutureOfSetOfT = dart.constFn(async._Future$(SetOfT())))();
  let _TakeStreamOfT = () => (_TakeStreamOfT = dart.constFn(async._TakeStream$(T)))();
  let _TakeWhileStreamOfT = () => (_TakeWhileStreamOfT = dart.constFn(async._TakeWhileStream$(T)))();
  let _SkipStreamOfT = () => (_SkipStreamOfT = dart.constFn(async._SkipStream$(T)))();
  let _SkipWhileStreamOfT = () => (_SkipWhileStreamOfT = dart.constFn(async._SkipWhileStream$(T)))();
  let _DistinctStreamOfT = () => (_DistinctStreamOfT = dart.constFn(async._DistinctStream$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.fnType(dart.void, [T])))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  let _ControllerEventSinkWrapperOfT = () => (_ControllerEventSinkWrapperOfT = dart.constFn(async._ControllerEventSinkWrapper$(T)))();
  let _SyncBroadcastStreamControllerOfT = () => (_SyncBroadcastStreamControllerOfT = dart.constFn(async._SyncBroadcastStreamController$(T)))();
  let _SyncStreamControllerOfT = () => (_SyncStreamControllerOfT = dart.constFn(async._SyncStreamController$(T)))();
  class Stream extends core.Object {
    static empty() {
      return new (_EmptyStreamOfT()).new();
    }
    static fromFuture(future) {
      let controller = _StreamControllerOfT()._check(StreamControllerOfT().new({sync: true}));
      FutureOfNull()._check(future.then(core.Null, dart.fn(value => {
        controller[_add](value);
        controller[_closeUnchecked]();
      }, TToNull()), {onError: dart.fn((error, stackTrace) => {
          controller[_addError](error, core.StackTrace._check(stackTrace));
          controller[_closeUnchecked]();
        }, dynamicAnddynamicToNull())}));
      return controller.stream;
    }
    static fromFutures(futures) {
      let controller = _StreamControllerOfT()._check(StreamControllerOfT().new({sync: true}));
      let count = 0;
      let onValue = value => {
        if (!dart.test(controller.isClosed)) {
          controller[_add](value);
          if (--count === 0) controller[_closeUnchecked]();
        }
      };
      dart.fn(onValue, TToNull());
      let onError = (error, stack) => {
        if (!dart.test(controller.isClosed)) {
          controller[_addError](error, stack);
          if (--count === 0) controller[_closeUnchecked]();
        }
      };
      dart.fn(onError, dynamicAndStackTraceToNull());
      for (let future of futures) {
        count++;
        FutureOfNull()._check(future.then(core.Null, onValue, {onError: onError}));
      }
      if (count === 0) async.scheduleMicrotask(dart.bind(controller, 'close'));
      return controller.stream;
    }
    static fromIterable(elements) {
      return new (_GeneratedStreamImplOfT()).new(dart.fn(() => new (_IterablePendingEventsOfT()).new(elements), VoidTo_IterablePendingEventsOfT()));
    }
    static periodic(period, computation) {
      if (computation === void 0) computation = null;
      let timer = null;
      let computationCount = 0;
      let controller = null;
      let watch = new core.Stopwatch.new();
      function sendEvent() {
        watch.reset();
        let data = null;
        if (computation != null) {
          try {
            data = computation(computationCount++);
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            controller.addError(e, s);
            return;
          }
        }
        controller.add(data);
      }
      dart.fn(sendEvent, VoidTovoid());
      function startPeriodicTimer() {
        if (!(timer == null)) dart.assertFailed();
        timer = async.Timer.periodic(period, dart.fn(timer => {
          sendEvent();
        }, TimerToNull()));
      }
      dart.fn(startPeriodicTimer, VoidTovoid());
      controller = StreamControllerOfT().new({sync: true, onListen: dart.fn(() => {
          watch.start();
          startPeriodicTimer();
        }, VoidToNull()), onPause: dart.fn(() => {
          timer.cancel();
          timer = null;
          watch.stop();
        }, VoidToNull()), onResume: dart.fn(() => {
          if (!(timer == null)) dart.assertFailed();
          let elapsed = watch.elapsed;
          watch.start();
          timer = async.Timer.new(period['-'](elapsed), dart.fn(() => {
            timer = null;
            startPeriodicTimer();
            sendEvent();
          }, VoidToNull()));
        }, VoidToNull()), onCancel: dart.fn(() => {
          if (timer != null) timer.cancel();
          timer = null;
          return async.Future._nullFuture;
        }, VoidTo_FutureOfNull())});
      return controller.stream;
    }
    static eventTransformed(source, mapSink) {
      return new (_BoundSinkStreamOfdynamic$T()).new(source, mapSink);
    }
    static castFrom(S, T, source) {
      return new (_internal.CastStream$(S, T)).new(source);
    }
    get isBroadcast() {
      return false;
    }
    asBroadcastStream(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      return new (_AsBroadcastStreamOfT()).new(this, onListen, onCancel);
    }
    where(test) {
      return new (_WhereStreamOfT()).new(this, test);
    }
    map(S, convert) {
      return new (async._MapStream$(T, S)).new(this, convert);
    }
    asyncMap(E, convert) {
      let controller = null;
      let subscription = null;
      const onListen = (function() {
        let add = dart.bind(controller, 'add');
        if (!(async._StreamController$(E).is(controller) || async._BroadcastStreamController.is(controller))) dart.assertFailed();
        let addError = dart.bind(controller, _addError);
        subscription = this.listen(dart.fn(event => {
          let newValue = null;
          try {
            newValue = convert(event);
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            controller.addError(e, s);
            return;
          }
          if (async.Future$(E).is(newValue)) {
            subscription.pause();
            newValue.then(dart.void, add, {onError: addError}).whenComplete(dart.bind(subscription, 'resume'));
          } else {
            controller.add(E._check(newValue));
          }
        }, TToNull()), {onError: addError, onDone: dart.bind(controller, 'close')});
      }).bind(this);
      dart.fn(onListen, VoidTovoid());
      if (dart.test(this.isBroadcast)) {
        controller = async._StreamControllerBase$(E)._check(async.StreamController$(E).broadcast({onListen: onListen, onCancel: dart.fn(() => {
            subscription.cancel();
          }, VoidToNull()), sync: true}));
      } else {
        controller = async._StreamControllerBase$(E)._check(async.StreamController$(E).new({onListen: onListen, onPause: dart.fn(() => {
            subscription.pause();
          }, VoidToNull()), onResume: dart.fn(() => {
            subscription.resume();
          }, VoidToNull()), onCancel: dart.fn(() => subscription.cancel(), VoidToFuture()), sync: true}));
      }
      return controller.stream;
    }
    asyncExpand(E, convert) {
      let controller = null;
      let subscription = null;
      const onListen = (function() {
        if (!(async._StreamController.is(controller) || async._BroadcastStreamController.is(controller))) dart.assertFailed();
        subscription = this.listen(dart.fn(event => {
          let newStream = null;
          try {
            newStream = convert(event);
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            controller.addError(e, s);
            return;
          }
          if (newStream != null) {
            subscription.pause();
            controller.addStream(newStream).whenComplete(dart.bind(subscription, 'resume'));
          }
        }, TToNull()), {onError: dart.bind(controller, _addError), onDone: dart.bind(controller, 'close')});
      }).bind(this);
      dart.fn(onListen, VoidTovoid());
      if (dart.test(this.isBroadcast)) {
        controller = async._StreamControllerBase$(E)._check(async.StreamController$(E).broadcast({onListen: onListen, onCancel: dart.fn(() => {
            subscription.cancel();
          }, VoidToNull()), sync: true}));
      } else {
        controller = async._StreamControllerBase$(E)._check(async.StreamController$(E).new({onListen: onListen, onPause: dart.fn(() => {
            subscription.pause();
          }, VoidToNull()), onResume: dart.fn(() => {
            subscription.resume();
          }, VoidToNull()), onCancel: dart.fn(() => subscription.cancel(), VoidToFuture()), sync: true}));
      }
      return controller.stream;
    }
    handleError(onError, opts) {
      let test = opts && 'test' in opts ? opts.test : null;
      return new (_HandleErrorStreamOfT()).new(this, onError, test);
    }
    expand(S, convert) {
      return new (async._ExpandStream$(T, S)).new(this, convert);
    }
    pipe(streamConsumer) {
      StreamConsumerOfT()._check(streamConsumer);
      return streamConsumer.addStream(this).then(dart.dynamic, dart.fn(_ => streamConsumer.close(), dynamicToFuture()));
    }
    transform(S, streamTransformer) {
      async.StreamTransformer$(T, S)._check(streamTransformer);
      return streamTransformer.bind(this);
    }
    reduce(combine) {
      TAndTToT()._check(combine);
      let result = new (_FutureOfT()).new();
      let seenFirst = false;
      let value = null;
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        if (seenFirst) {
          async._runUserCode(T, dart.fn(() => combine(value, element), VoidToT()), dart.fn(newValue => {
            value = newValue;
          }, TToNull()), async._cancelAndErrorClosure(subscription, result));
        } else {
          value = element;
          seenFirst = true;
        }
      }, TToNull()), {onError: dart.bind(result, _completeError), onDone: dart.fn(() => {
          if (!seenFirst) {
            try {
              dart.throw(_internal.IterableElementError.noElement());
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              async._completeWithErrorCallback(result, e, s);
            }
          } else {
            result[_complete](value);
          }
        }, VoidToNull()), cancelOnError: true});
      return result;
    }
    fold(S, initialValue, combine) {
      let result = new (async._Future$(S)).new();
      let value = initialValue;
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        async._runUserCode(S, dart.fn(() => combine(value, element), dart.fnType(S, [])), dart.fn(newValue => {
          value = newValue;
        }, dart.fnType(core.Null, [S])), async._cancelAndErrorClosure(subscription, result));
      }, TToNull()), {onError: dart.bind(result, _completeError), onDone: dart.fn(() => {
          result[_complete](value);
        }, VoidToNull()), cancelOnError: true});
      return result;
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let result = new (_FutureOfString()).new();
      let buffer = new core.StringBuffer.new();
      let subscription = null;
      let first = true;
      subscription = this.listen(dart.fn(element => {
        if (!first) {
          buffer.write(separator);
        }
        first = false;
        try {
          buffer.write(element);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async._cancelAndErrorWithReplacement(subscription, result, e, s);
        }
      }, TToNull()), {onError: dart.fn(e => {
          result[_completeError](e);
        }, dynamicToNull()), onDone: dart.fn(() => {
          result[_complete](buffer.toString());
        }, VoidToNull()), cancelOnError: true});
      return result;
    }
    contains(needle) {
      let future = new (_FutureOfbool()).new();
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        async._runUserCode(core.bool, dart.fn(() => dart.equals(element, needle), VoidTobool()), dart.fn(isMatch => {
          if (dart.test(isMatch)) {
            async._cancelAndValue(subscription, future, true);
          }
        }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](false);
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    forEach(action) {
      let future = new async._Future.new();
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        async._runUserCode(dart.dynamic, dart.fn(() => action(element), VoidTovoid()), dart.fn(_ => {
        }, dynamicToNull()), async._cancelAndErrorClosure(subscription, future));
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](null);
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    every(test) {
      let future = new (_FutureOfbool()).new();
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        async._runUserCode(core.bool, dart.fn(() => test(element), VoidTobool()), dart.fn(isMatch => {
          if (!dart.test(isMatch)) {
            async._cancelAndValue(subscription, future, false);
          }
        }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](true);
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    any(test) {
      let future = new (_FutureOfbool()).new();
      let subscription = null;
      subscription = this.listen(dart.fn(element => {
        async._runUserCode(core.bool, dart.fn(() => test(element), VoidTobool()), dart.fn(isMatch => {
          if (dart.test(isMatch)) {
            async._cancelAndValue(subscription, future, true);
          }
        }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](false);
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    get length() {
      let future = new (_FutureOfint()).new();
      let count = 0;
      this.listen(dart.fn(_ => {
        count++;
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](count);
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    get isEmpty() {
      let future = new (_FutureOfbool()).new();
      let subscription = null;
      subscription = this.listen(dart.fn(_ => {
        async._cancelAndValue(subscription, future, false);
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](true);
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    cast(R) {
      return async.Stream.castFrom(T, R, this);
    }
    toList() {
      let result = JSArrayOfT().of([]);
      let future = new (_FutureOfListOfT()).new();
      this.listen(dart.fn(data => {
        result[$add](data);
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](result);
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    toSet() {
      let result = new (_HashSetOfT()).new();
      let future = new (_FutureOfSetOfT()).new();
      this.listen(dart.fn(data => {
        result.add(data);
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_complete](result);
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    drain(E, futureValue) {
      if (futureValue === void 0) futureValue = null;
      return async.Future$(E)._check(this.listen(null, {cancelOnError: true}).asFuture(E, futureValue));
    }
    take(count) {
      return new (_TakeStreamOfT()).new(this, count);
    }
    takeWhile(test) {
      return new (_TakeWhileStreamOfT()).new(this, test);
    }
    skip(count) {
      return new (_SkipStreamOfT()).new(this, count);
    }
    skipWhile(test) {
      return new (_SkipWhileStreamOfT()).new(this, test);
    }
    distinct(equals) {
      if (equals === void 0) equals = null;
      return new (_DistinctStreamOfT()).new(this, equals);
    }
    get first() {
      let future = new (_FutureOfT()).new();
      let subscription = null;
      subscription = this.listen(dart.fn(value => {
        async._cancelAndValue(subscription, future, value);
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._completeWithErrorCallback(future, e, s);
          }
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    get last() {
      let future = new (_FutureOfT()).new();
      let result = null;
      let foundResult = false;
      this.listen(dart.fn(value => {
        foundResult = true;
        result = value;
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          if (foundResult) {
            future[_complete](result);
            return;
          }
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._completeWithErrorCallback(future, e, s);
          }
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    get single() {
      let future = new (_FutureOfT()).new();
      let result = null;
      let foundResult = false;
      let subscription = null;
      subscription = this.listen(dart.fn(value => {
        if (foundResult) {
          try {
            dart.throw(_internal.IterableElementError.tooMany());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._cancelAndErrorWithReplacement(subscription, future, e, s);
          }
          return;
        }
        foundResult = true;
        result = value;
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          if (foundResult) {
            future[_complete](result);
            return;
          }
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._completeWithErrorCallback(future, e, s);
          }
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToT()._check(orElse);
      let future = new (_FutureOfT()).new();
      let subscription = null;
      subscription = this.listen(dart.fn(value => {
        async._runUserCode(core.bool, dart.fn(() => test(value), VoidTobool()), dart.fn(isMatch => {
          if (dart.test(isMatch)) {
            async._cancelAndValue(subscription, future, value);
          }
        }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          if (orElse != null) {
            async._runUserCode(T, orElse, dart.bind(future, _complete), dart.bind(future, _completeError));
            return;
          }
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._completeWithErrorCallback(future, e, s);
          }
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToT()._check(orElse);
      let future = new (_FutureOfT()).new();
      let result = null;
      let foundResult = false;
      let subscription = null;
      subscription = this.listen(dart.fn(value => {
        async._runUserCode(core.bool, dart.fn(() => true === test(value), VoidTobool()), dart.fn(isMatch => {
          if (dart.test(isMatch)) {
            foundResult = true;
            result = value;
          }
        }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          if (foundResult) {
            future[_complete](result);
            return;
          }
          if (orElse != null) {
            async._runUserCode(T, orElse, dart.bind(future, _complete), dart.bind(future, _completeError));
            return;
          }
          try {
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._completeWithErrorCallback(future, e, s);
          }
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    singleWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToT()._check(orElse);
      let future = new (_FutureOfT()).new();
      let result = null;
      let foundResult = false;
      let subscription = null;
      subscription = this.listen(dart.fn(value => {
        async._runUserCode(core.bool, dart.fn(() => true === test(value), VoidTobool()), dart.fn(isMatch => {
          if (dart.test(isMatch)) {
            if (foundResult) {
              try {
                dart.throw(_internal.IterableElementError.tooMany());
              } catch (e$) {
                let e = dart.getThrown(e$);
                let s = dart.stackTrace(e$);
                async._cancelAndErrorWithReplacement(subscription, future, e, s);
              }
              return;
            }
            foundResult = true;
            result = value;
          }
        }, boolToNull()), async._cancelAndErrorClosure(subscription, future));
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          if (foundResult) {
            future[_complete](result);
            return;
          }
          try {
            if (orElse != null) {
              async._runUserCode(T, orElse, dart.bind(future, _complete), dart.bind(future, _completeError));
              return;
            }
            dart.throw(_internal.IterableElementError.noElement());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._completeWithErrorCallback(future, e, s);
          }
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    elementAt(index) {
      core.ArgumentError.checkNotNull(index, "index");
      core.RangeError.checkNotNegative(index, "index");
      let future = new (_FutureOfT()).new();
      let subscription = null;
      let elementIndex = 0;
      subscription = this.listen(dart.fn(value => {
        if (index === elementIndex) {
          async._cancelAndValue(subscription, future, value);
          return;
        }
        elementIndex = elementIndex + 1;
      }, TToNull()), {onError: dart.bind(future, _completeError), onDone: dart.fn(() => {
          future[_completeError](core.RangeError.index(index, this, "index", null, elementIndex));
        }, VoidToNull()), cancelOnError: true});
      return future;
    }
    timeout(timeLimit, opts) {
      let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
      let controller = null;
      let subscription = null;
      let timer = null;
      let zone = null;
      let timeout = null;
      function onData(event) {
        timer.cancel();
        controller.add(event);
        timer = zone.createTimer(timeLimit, timeout);
      }
      dart.fn(onData, TTovoid());
      function onError(error, stackTrace) {
        timer.cancel();
        if (!(async._StreamController.is(controller) || async._BroadcastStreamController.is(controller))) dart.assertFailed();
        controller[_addError](error, stackTrace);
        timer = zone.createTimer(timeLimit, timeout);
      }
      dart.fn(onError, dynamicAndStackTraceTovoid());
      function onDone() {
        timer.cancel();
        controller.close();
      }
      dart.fn(onDone, VoidTovoid());
      const onListen = (function() {
        zone = async.Zone.current;
        if (onTimeout == null) {
          timeout = dart.fn(() => {
            controller.addError(new async.TimeoutException.new("No stream event", timeLimit), null);
          }, VoidToNull());
        } else {
          let registeredOnTimeout = zone.registerUnaryCallback(dart.dynamic, EventSinkOfT(), onTimeout);
          let wrapper = new (_ControllerEventSinkWrapperOfT()).new(null);
          timeout = dart.fn(() => {
            wrapper[_sink] = controller;
            zone.runUnaryGuarded(_ControllerEventSinkWrapperOfT(), registeredOnTimeout, wrapper);
            wrapper[_sink] = null;
          }, VoidToNull());
        }
        subscription = this.listen(onData, {onError: onError, onDone: onDone});
        timer = zone.createTimer(timeLimit, timeout);
      }).bind(this);
      dart.fn(onListen, VoidTovoid());
      function onCancel() {
        timer.cancel();
        let result = subscription.cancel();
        subscription = null;
        return result;
      }
      dart.fn(onCancel, VoidToFuture());
      controller = dart.test(this.isBroadcast) ? new (_SyncBroadcastStreamControllerOfT()).new(onListen, onCancel) : new (_SyncStreamControllerOfT()).new(onListen, dart.fn(() => {
        timer.cancel();
        subscription.pause();
      }, VoidToNull()), dart.fn(() => {
        subscription.resume();
        timer = zone.createTimer(timeLimit, timeout);
      }, VoidToNull()), onCancel);
      return controller.stream;
    }
  }
  (Stream.new = function() {
  }).prototype = Stream.prototype;
  (Stream._internal = function() {
  }).prototype = Stream.prototype;
  dart.addTypeTests(Stream);
  Stream.prototype[dart.isStream] = true;
  dart.setMethodSignature(Stream, () => ({
    __proto__: dart.getMethods(Stream.__proto__),
    asBroadcastStream: dart.fnType(async.Stream$(T), [], {onListen: dart.fnType(dart.void, [async.StreamSubscription$(T)]), onCancel: dart.fnType(dart.void, [async.StreamSubscription$(T)])}),
    where: dart.fnType(async.Stream$(T), [dart.fnType(core.bool, [T])]),
    map: dart.gFnType(S => [async.Stream$(S), [dart.fnType(S, [T])]]),
    asyncMap: dart.gFnType(E => [async.Stream$(E), [dart.fnType(async.FutureOr$(E), [T])]]),
    asyncExpand: dart.gFnType(E => [async.Stream$(E), [dart.fnType(async.Stream$(E), [T])]]),
    handleError: dart.fnType(async.Stream$(T), [core.Function], {test: dart.fnType(core.bool, [dart.dynamic])}),
    expand: dart.gFnType(S => [async.Stream$(S), [dart.fnType(core.Iterable$(S), [T])]]),
    pipe: dart.fnType(async.Future, [core.Object]),
    transform: dart.gFnType(S => [async.Stream$(S), [core.Object]]),
    reduce: dart.fnType(async.Future$(T), [core.Object]),
    fold: dart.gFnType(S => [async.Future$(S), [S, dart.fnType(S, [S, T])]]),
    join: dart.fnType(async.Future$(core.String), [], [core.String]),
    contains: dart.fnType(async.Future$(core.bool), [core.Object]),
    forEach: dart.fnType(async.Future, [dart.fnType(dart.void, [T])]),
    every: dart.fnType(async.Future$(core.bool), [dart.fnType(core.bool, [T])]),
    any: dart.fnType(async.Future$(core.bool), [dart.fnType(core.bool, [T])]),
    cast: dart.gFnType(R => [async.Stream$(R), []]),
    toList: dart.fnType(async.Future$(core.List$(T)), []),
    toSet: dart.fnType(async.Future$(core.Set$(T)), []),
    drain: dart.gFnType(E => [async.Future$(E), [], [E]]),
    take: dart.fnType(async.Stream$(T), [core.int]),
    takeWhile: dart.fnType(async.Stream$(T), [dart.fnType(core.bool, [T])]),
    skip: dart.fnType(async.Stream$(T), [core.int]),
    skipWhile: dart.fnType(async.Stream$(T), [dart.fnType(core.bool, [T])]),
    distinct: dart.fnType(async.Stream$(T), [], [dart.fnType(core.bool, [T, T])]),
    firstWhere: dart.fnType(async.Future$(T), [dart.fnType(core.bool, [T])], {orElse: core.Object}),
    lastWhere: dart.fnType(async.Future$(T), [dart.fnType(core.bool, [T])], {orElse: core.Object}),
    singleWhere: dart.fnType(async.Future$(T), [dart.fnType(core.bool, [T])], {orElse: core.Object}),
    elementAt: dart.fnType(async.Future$(T), [core.int]),
    timeout: dart.fnType(async.Stream$(T), [core.Duration], {onTimeout: dart.fnType(dart.void, [async.EventSink$(T)])})
  }));
  dart.setGetterSignature(Stream, () => ({
    __proto__: dart.getGetters(Stream.__proto__),
    isBroadcast: core.bool,
    length: async.Future$(core.int),
    isEmpty: async.Future$(core.bool),
    first: async.Future$(T),
    last: async.Future$(T),
    single: async.Future$(T)
  }));
  return Stream;
});
async.Stream = async.Stream$();
dart.addTypeTests(async.Stream, dart.isStream);
const _is_CastStream_default = Symbol('_is_CastStream_default');
_internal.CastStream$ = dart.generic((S, T) => {
  let CastStreamSubscriptionOfS$T = () => (CastStreamSubscriptionOfS$T = dart.constFn(_internal.CastStreamSubscription$(S, T)))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  class CastStream extends async.Stream$(T) {
    get isBroadcast() {
      return this[_source].isBroadcast;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      let _ = new (CastStreamSubscriptionOfS$T()).new(this[_source].listen(null, {onDone: onDone, cancelOnError: cancelOnError}));
      _.onData(onData);
      _.onError(onError);
      return _;
    }
    cast(R) {
      return new (_internal.CastStream$(S, R)).new(this[_source]);
    }
  }
  (CastStream.new = function(source) {
    this[_source] = source;
    CastStream.__proto__.new.call(this);
  }).prototype = CastStream.prototype;
  dart.addTypeTests(CastStream);
  CastStream.prototype[_is_CastStream_default] = true;
  dart.setMethodSignature(CastStream, () => ({
    __proto__: dart.getMethods(CastStream.__proto__),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    cast: dart.gFnType(R => [async.Stream$(R), []])
  }));
  dart.setGetterSignature(CastStream, () => ({
    __proto__: dart.getGetters(CastStream.__proto__),
    isBroadcast: core.bool
  }));
  dart.setFieldSignature(CastStream, () => ({
    __proto__: dart.getFields(CastStream.__proto__),
    [_source]: dart.finalFieldType(StreamOfS())
  }));
  return CastStream;
});
_internal.CastStream = _internal.CastStream$();
dart.addTypeTests(_internal.CastStream, _is_CastStream_default);
const _zone = Symbol('_zone');
const _handleData = Symbol('_handleData');
const _handleError = Symbol('_handleError');
const _onData = Symbol('_onData');
const _is_CastStreamSubscription_default = Symbol('_is_CastStreamSubscription_default');
_internal.CastStreamSubscription$ = dart.generic((S, T) => {
  let StreamSubscriptionOfS = () => (StreamSubscriptionOfS = dart.constFn(async.StreamSubscription$(S)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.fnType(dart.void, [T])))();
  class CastStreamSubscription extends core.Object {
    cancel() {
      return this[_source].cancel();
    }
    onData(handleData) {
      this[_handleData] = handleData == null ? null : this[_zone].registerUnaryCallback(dart.dynamic, T, handleData);
    }
    onError(handleError) {
      this[_source].onError(handleError);
      if (handleError == null) {
        this[_handleError] = null;
      } else if (NullAndNullTodynamic().is(handleError)) {
        this[_handleError] = this[_zone].registerBinaryCallback(dart.dynamic, core.Object, core.StackTrace, ObjectAndStackTraceTodynamic()._check(handleError));
      } else {
        this[_handleError] = this[_zone].registerUnaryCallback(dart.dynamic, core.Object, ObjectTodynamic()._check(handleError));
      }
    }
    onDone(handleDone) {
      this[_source].onDone(handleDone);
    }
    [_onData](data) {
      S._check(data);
      if (this[_handleData] == null) return;
      let targetData = null;
      try {
        targetData = T.as(data);
      } catch (e) {
        let error = dart.getThrown(e);
        let stack = dart.stackTrace(e);
        if (this[_handleError] == null) {
          this[_zone].handleUncaughtError(error, stack);
        } else if (NullAndNullTodynamic().is(this[_handleError])) {
          this[_zone].runBinaryGuarded(dart.dynamic, core.StackTrace, dynamicAndStackTraceTovoid()._check(this[_handleError]), error, stack);
        } else {
          this[_zone].runUnaryGuarded(dart.dynamic, dynamicTovoid()._check(this[_handleError]), error);
        }
        return;
      }
      this[_zone].runUnaryGuarded(T, this[_handleData], targetData);
    }
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      this[_source].pause(resumeSignal);
    }
    resume() {
      this[_source].resume();
    }
    get isPaused() {
      return this[_source].isPaused;
    }
    asFuture(E, futureValue) {
      if (futureValue === void 0) futureValue = null;
      return async.Future$(E)._check(this[_source].asFuture(E, futureValue));
    }
  }
  (CastStreamSubscription.new = function(source) {
    this[_zone] = async.Zone.current;
    this[_handleData] = null;
    this[_handleError] = null;
    this[_source] = source;
    this[_source].onData(dart.bind(this, _onData));
  }).prototype = CastStreamSubscription.prototype;
  CastStreamSubscription.prototype[dart.isStreamSubscription] = true;
  dart.addTypeTests(CastStreamSubscription);
  CastStreamSubscription.prototype[_is_CastStreamSubscription_default] = true;
  CastStreamSubscription[dart.implements] = () => [StreamSubscriptionOfT()];
  dart.setMethodSignature(CastStreamSubscription, () => ({
    __proto__: dart.getMethods(CastStreamSubscription.__proto__),
    cancel: dart.fnType(async.Future, []),
    onData: dart.fnType(dart.void, [dart.fnType(dart.void, [T])]),
    onError: dart.fnType(dart.void, [core.Function]),
    onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    [_onData]: dart.fnType(dart.void, [core.Object]),
    pause: dart.fnType(dart.void, [], [async.Future]),
    resume: dart.fnType(dart.void, []),
    asFuture: dart.gFnType(E => [async.Future$(E), [], [E]])
  }));
  dart.setGetterSignature(CastStreamSubscription, () => ({
    __proto__: dart.getGetters(CastStreamSubscription.__proto__),
    isPaused: core.bool
  }));
  dart.setFieldSignature(CastStreamSubscription, () => ({
    __proto__: dart.getFields(CastStreamSubscription.__proto__),
    [_source]: dart.finalFieldType(StreamSubscriptionOfS()),
    [_zone]: dart.finalFieldType(async.Zone),
    [_handleData]: dart.fieldType(TTovoid()),
    [_handleError]: dart.fieldType(core.Function)
  }));
  return CastStreamSubscription;
});
_internal.CastStreamSubscription = _internal.CastStreamSubscription$();
dart.addTypeTests(_internal.CastStreamSubscription, _is_CastStreamSubscription_default);
const _is_StreamTransformerBase_default = Symbol('_is_StreamTransformerBase_default');
async.StreamTransformerBase$ = dart.generic((S, T) => {
  let StreamTransformerOfS$T = () => (StreamTransformerOfS$T = dart.constFn(async.StreamTransformer$(S, T)))();
  class StreamTransformerBase extends core.Object {
    cast(RS, RT) {
      return async.StreamTransformer.castFrom(S, T, RS, RT, this);
    }
  }
  (StreamTransformerBase.new = function() {
  }).prototype = StreamTransformerBase.prototype;
  dart.addTypeTests(StreamTransformerBase);
  StreamTransformerBase.prototype[_is_StreamTransformerBase_default] = true;
  StreamTransformerBase[dart.implements] = () => [StreamTransformerOfS$T()];
  dart.setMethodSignature(StreamTransformerBase, () => ({
    __proto__: dart.getMethods(StreamTransformerBase.__proto__),
    cast: dart.gFnType((RS, RT) => [async.StreamTransformer$(RS, RT), []])
  }));
  return StreamTransformerBase;
});
async.StreamTransformerBase = async.StreamTransformerBase$();
dart.addTypeTests(async.StreamTransformerBase, _is_StreamTransformerBase_default);
const _is_CastStreamTransformer_default = Symbol('_is_CastStreamTransformer_default');
_internal.CastStreamTransformer$ = dart.generic((SS, ST, TS, TT) => {
  let StreamOfSS = () => (StreamOfSS = dart.constFn(async.Stream$(SS)))();
  let StreamTransformerOfSS$ST = () => (StreamTransformerOfSS$ST = dart.constFn(async.StreamTransformer$(SS, ST)))();
  let StreamOfTS = () => (StreamOfTS = dart.constFn(async.Stream$(TS)))();
  let StreamOfTT = () => (StreamOfTT = dart.constFn(async.Stream$(TT)))();
  class CastStreamTransformer extends async.StreamTransformerBase$(TS, TT) {
    cast(RS, RT) {
      return new (_internal.CastStreamTransformer$(SS, ST, RS, RT)).new(this[_source]);
    }
    bind(stream) {
      StreamOfTS()._check(stream);
      return StreamOfTT()._check(this[_source].bind(StreamOfSS()._check(stream.cast(SS))).cast(TT));
    }
  }
  (CastStreamTransformer.new = function(source) {
    this[_source] = source;
    CastStreamTransformer.__proto__.new.call(this);
  }).prototype = CastStreamTransformer.prototype;
  dart.addTypeTests(CastStreamTransformer);
  CastStreamTransformer.prototype[_is_CastStreamTransformer_default] = true;
  dart.setMethodSignature(CastStreamTransformer, () => ({
    __proto__: dart.getMethods(CastStreamTransformer.__proto__),
    cast: dart.gFnType((RS, RT) => [async.StreamTransformer$(RS, RT), []]),
    bind: dart.fnType(async.Stream$(TT), [core.Object])
  }));
  dart.setFieldSignature(CastStreamTransformer, () => ({
    __proto__: dart.getFields(CastStreamTransformer.__proto__),
    [_source]: dart.finalFieldType(StreamTransformerOfSS$ST())
  }));
  return CastStreamTransformer;
});
_internal.CastStreamTransformer = _internal.CastStreamTransformer$();
dart.addTypeTests(_internal.CastStreamTransformer, _is_CastStreamTransformer_default);
const _is_Converter_default = Symbol('_is_Converter_default');
convert.Converter$ = dart.generic((S, T) => {
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class Converter extends async.StreamTransformerBase$(S, T) {
    static castFrom(SS, ST, TS, TT, source) {
      return new (_internal.CastConverter$(SS, ST, TS, TT)).new(source);
    }
    fuse(TT, other) {
      convert.Converter$(T, TT)._check(other);
      return new (convert._FusedConverter$(S, T, TT)).new(this, other);
    }
    startChunkedConversion(sink) {
      SinkOfT()._check(sink);
      dart.throw(new core.UnsupportedError.new("This converter does not support chunked conversions: " + dart.str(this)));
    }
    bind(stream) {
      StreamOfS()._check(stream);
      return StreamOfT().eventTransformed(stream, dart.fn(sink => new convert._ConverterStreamEventSink.new(this, sink), EventSinkTo_ConverterStreamEventSink()));
    }
    cast(RS, RT) {
      return convert.Converter.castFrom(S, T, RS, RT, this);
    }
  }
  (Converter.new = function() {
    Converter.__proto__.new.call(this);
  }).prototype = Converter.prototype;
  dart.addTypeTests(Converter);
  Converter.prototype[_is_Converter_default] = true;
  dart.setMethodSignature(Converter, () => ({
    __proto__: dart.getMethods(Converter.__proto__),
    fuse: dart.gFnType(TT => [convert.Converter$(S, TT), [core.Object]]),
    startChunkedConversion: dart.fnType(core.Sink$(S), [core.Object]),
    bind: dart.fnType(async.Stream$(T), [core.Object]),
    cast: dart.gFnType((RS, RT) => [convert.Converter$(RS, RT), []])
  }));
  return Converter;
});
convert.Converter = convert.Converter$();
dart.addTypeTests(convert.Converter, _is_Converter_default);
const _is_CastConverter_default = Symbol('_is_CastConverter_default');
_internal.CastConverter$ = dart.generic((SS, ST, TS, TT) => {
  let StreamOfSS = () => (StreamOfSS = dart.constFn(async.Stream$(SS)))();
  let ConverterOfSS$ST = () => (ConverterOfSS$ST = dart.constFn(convert.Converter$(SS, ST)))();
  let StreamOfTS = () => (StreamOfTS = dart.constFn(async.Stream$(TS)))();
  let StreamOfTT = () => (StreamOfTT = dart.constFn(async.Stream$(TT)))();
  class CastConverter extends convert.Converter$(TS, TT) {
    convert(input) {
      TS._check(input);
      return TT.as(this[_source].convert(SS.as(input)));
    }
    bind(stream) {
      StreamOfTS()._check(stream);
      return StreamOfTT()._check(this[_source].bind(StreamOfSS()._check(stream.cast(SS))).cast(TT));
    }
    cast(RS, RT) {
      return new (_internal.CastConverter$(SS, ST, RS, RT)).new(this[_source]);
    }
  }
  (CastConverter.new = function(source) {
    this[_source] = source;
    CastConverter.__proto__.new.call(this);
  }).prototype = CastConverter.prototype;
  dart.addTypeTests(CastConverter);
  CastConverter.prototype[_is_CastConverter_default] = true;
  dart.setMethodSignature(CastConverter, () => ({
    __proto__: dart.getMethods(CastConverter.__proto__),
    convert: dart.fnType(TT, [core.Object]),
    bind: dart.fnType(async.Stream$(TT), [core.Object]),
    cast: dart.gFnType((RS, RT) => [convert.Converter$(RS, RT), []])
  }));
  dart.setFieldSignature(CastConverter, () => ({
    __proto__: dart.getFields(CastConverter.__proto__),
    [_source]: dart.finalFieldType(ConverterOfSS$ST())
  }));
  return CastConverter;
});
_internal.CastConverter = _internal.CastConverter$();
dart.addTypeTests(_internal.CastConverter, _is_CastConverter_default);
core.Iterable$ = dart.generic(E => {
  let EmptyIterableOfE = () => (EmptyIterableOfE = dart.constFn(_internal.EmptyIterable$(E)))();
  let _GeneratorIterableOfE = () => (_GeneratorIterableOfE = dart.constFn(core._GeneratorIterable$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
  let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
  class Iterable extends core.Object {
    static generate(count, generator) {
      if (generator === void 0) generator = null;
      if (dart.notNull(count) <= 0) return new (EmptyIterableOfE()).new();
      return new (_GeneratorIterableOfE()).new(count, generator);
    }
    static empty() {
      return new (EmptyIterableOfE()).new();
    }
    static castFrom(S, T, source) {
      return _internal.CastIterable$(S, T).new(source);
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this[$iterator]);
    }
    cast(R) {
      return core.Iterable.castFrom(E, R, this);
    }
    followedBy(other) {
      IterableOfE()._check(other);
      if (EfficientLengthIterableOfE().is(this)) {
        return FollowedByIterableOfE().firstEfficient(EfficientLengthIterableOfE()._check(this), other);
      }
      return new (FollowedByIterableOfE()).new(this, other);
    }
    map(T, f) {
      return _internal.MappedIterable$(E, T).new(this, f);
    }
    where(test) {
      return new (WhereIterableOfE()).new(this, test);
    }
    whereType(T) {
      return new (_internal.WhereTypeIterable$(T)).new(this);
    }
    expand(T, f) {
      return new (_internal.ExpandIterable$(E, T)).new(this, f);
    }
    contains(element) {
      for (let e of this) {
        if (dart.equals(e, element)) return true;
      }
      return false;
    }
    forEach(f) {
      for (let element of this)
        f(element);
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      let iterator = this[$iterator];
      if (!dart.test(iterator.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let value = iterator.current;
      while (dart.test(iterator.moveNext())) {
        value = combine(value, iterator.current);
      }
      return value;
    }
    fold(T, initialValue, combine) {
      let value = initialValue;
      for (let element of this)
        value = combine(value, element);
      return value;
    }
    every(test) {
      for (let element of this) {
        if (!dart.test(test(element))) return false;
      }
      return true;
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let iterator = this[$iterator];
      if (!dart.test(iterator.moveNext())) return "";
      let buffer = new core.StringBuffer.new();
      if (separator == null || separator === "") {
        do {
          buffer.write(dart.str(iterator.current));
        } while (dart.test(iterator.moveNext()));
      } else {
        buffer.write(dart.str(iterator.current));
        while (dart.test(iterator.moveNext())) {
          buffer.write(separator);
          buffer.write(dart.str(iterator.current));
        }
      }
      return buffer.toString();
    }
    any(test) {
      for (let element of this) {
        if (dart.test(test(element))) return true;
      }
      return false;
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      return ListOfE().from(this, {growable: growable});
    }
    toSet() {
      return SetOfE().from(this);
    }
    get length() {
      if (!!_internal.EfficientLengthIterable.is(this)) dart.assertFailed();
      let count = 0;
      let it = this[$iterator];
      while (dart.test(it.moveNext())) {
        count++;
      }
      return count;
    }
    get isEmpty() {
      return !dart.test(this[$iterator].moveNext());
    }
    get isNotEmpty() {
      return !dart.test(this[$isEmpty]);
    }
    take(count) {
      return TakeIterableOfE().new(this, count);
    }
    takeWhile(test) {
      return new (TakeWhileIterableOfE()).new(this, test);
    }
    skip(count) {
      return SkipIterableOfE().new(this, count);
    }
    skipWhile(test) {
      return new (SkipWhileIterableOfE()).new(this, test);
    }
    get first() {
      let it = this[$iterator];
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      return it.current;
    }
    get last() {
      let it = this[$iterator];
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let result = null;
      do {
        result = it.current;
      } while (dart.test(it.moveNext()));
      return result;
    }
    get single() {
      let it = this[$iterator];
      if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
      let result = it.current;
      if (dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.tooMany());
      return result;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      for (let element of this) {
        if (dart.test(test(element))) return element;
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          if (foundMatching) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    elementAt(index) {
      core.ArgumentError.checkNotNull(index, "index");
      core.RangeError.checkNotNegative(index, "index");
      let elementIndex = 0;
      for (let element of this) {
        if (index === elementIndex) return element;
        elementIndex++;
      }
      dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
    }
    toString() {
      return collection.IterableBase.iterableToShortString(this, "(", ")");
    }
  }
  (Iterable.new = function() {
  }).prototype = Iterable.prototype;
  dart.addTypeTests(Iterable);
  Iterable.prototype[dart.isIterable] = true;
  dart.setMethodSignature(Iterable, () => ({
    __proto__: dart.getMethods(Iterable.__proto__),
    cast: dart.gFnType(R => [core.Iterable$(R), []]),
    [$cast]: dart.gFnType(R => [core.Iterable$(R), []]),
    followedBy: dart.fnType(core.Iterable$(E), [core.Object]),
    [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
    map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    where: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    whereType: dart.gFnType(T => [core.Iterable$(T), []]),
    [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
    expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    reduce: dart.fnType(E, [core.Object]),
    [$reduce]: dart.fnType(E, [core.Object]),
    fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    every: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    join: dart.fnType(core.String, [], [core.String]),
    [$join]: dart.fnType(core.String, [], [core.String]),
    any: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    toList: dart.fnType(core.List$(E), [], {growable: core.bool}),
    [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
    toSet: dart.fnType(core.Set$(E), []),
    [$toSet]: dart.fnType(core.Set$(E), []),
    take: dart.fnType(core.Iterable$(E), [core.int]),
    [$take]: dart.fnType(core.Iterable$(E), [core.int]),
    takeWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    skip: dart.fnType(core.Iterable$(E), [core.int]),
    [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
    skipWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    elementAt: dart.fnType(E, [core.int]),
    [$elementAt]: dart.fnType(E, [core.int]),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, [])
  }));
  dart.setGetterSignature(Iterable, () => ({
    __proto__: dart.getGetters(Iterable.__proto__),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    first: E,
    [$first]: E,
    last: E,
    [$last]: E,
    single: E,
    [$single]: E
  }));
  dart.defineExtensionMethods(Iterable, [
    'cast',
    'followedBy',
    'map',
    'where',
    'whereType',
    'expand',
    'contains',
    'forEach',
    'reduce',
    'fold',
    'every',
    'join',
    'any',
    'toList',
    'toSet',
    'take',
    'takeWhile',
    'skip',
    'skipWhile',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'elementAt',
    'toString'
  ]);
  dart.defineExtensionAccessors(Iterable, [
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last',
    'single'
  ]);
  return Iterable;
});
core.Iterable = core.Iterable$();
dart.addTypeTests(core.Iterable, dart.isIterable);
const _is__CastIterableBase_default = Symbol('_is__CastIterableBase_default');
_internal._CastIterableBase$ = dart.generic((S, T) => {
  let CastIteratorOfS$T = () => (CastIteratorOfS$T = dart.constFn(_internal.CastIterator$(S, T)))();
  let CastIterableOfS$T = () => (CastIterableOfS$T = dart.constFn(_internal.CastIterable$(S, T)))();
  let STobool = () => (STobool = dart.constFn(dart.fnType(core.bool, [S])))();
  let VoidToS = () => (VoidToS = dart.constFn(dart.fnType(S, [])))();
  let VoidToT = () => (VoidToT = dart.constFn(dart.fnType(T, [])))();
  class _CastIterableBase extends core.Iterable$(T) {
    get iterator() {
      return new (CastIteratorOfS$T()).new(this[_source][$iterator]);
    }
    get length() {
      return this[_source][$length];
    }
    get isEmpty() {
      return this[_source][$isEmpty];
    }
    get isNotEmpty() {
      return this[_source][$isNotEmpty];
    }
    skip(count) {
      return CastIterableOfS$T().new(this[_source][$skip](count));
    }
    take(count) {
      return CastIterableOfS$T().new(this[_source][$take](count));
    }
    elementAt(index) {
      return T.as(this[_source][$elementAt](index));
    }
    get first() {
      return T.as(this[_source][$first]);
    }
    get last() {
      return T.as(this[_source][$last]);
    }
    get single() {
      return T.as(this[_source][$single]);
    }
    contains(other) {
      return this[_source][$contains](other);
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToT()._check(orElse);
      return T.as(this[_source][$lastWhere](dart.fn(element => test(T.as(element)), STobool()), {orElse: orElse == null ? null : dart.fn(() => S.as(orElse()), VoidToS())}));
    }
    toString() {
      return dart.toString(this[_source]);
    }
  }
  (_CastIterableBase.new = function() {
    _CastIterableBase.__proto__.new.call(this);
  }).prototype = _CastIterableBase.prototype;
  dart.addTypeTests(_CastIterableBase);
  _CastIterableBase.prototype[_is__CastIterableBase_default] = true;
  dart.setMethodSignature(_CastIterableBase, () => ({
    __proto__: dart.getMethods(_CastIterableBase.__proto__),
    skip: dart.fnType(core.Iterable$(T), [core.int]),
    [$skip]: dart.fnType(core.Iterable$(T), [core.int]),
    take: dart.fnType(core.Iterable$(T), [core.int]),
    [$take]: dart.fnType(core.Iterable$(T), [core.int]),
    elementAt: dart.fnType(T, [core.int]),
    [$elementAt]: dart.fnType(T, [core.int]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    lastWhere: dart.fnType(T, [dart.fnType(core.bool, [T])], {orElse: core.Object}),
    [$lastWhere]: dart.fnType(T, [dart.fnType(core.bool, [T])], {orElse: core.Object}),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, [])
  }));
  dart.setGetterSignature(_CastIterableBase, () => ({
    __proto__: dart.getGetters(_CastIterableBase.__proto__),
    iterator: core.Iterator$(T),
    [$iterator]: core.Iterator$(T),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    first: T,
    [$first]: T,
    last: T,
    [$last]: T,
    single: T,
    [$single]: T
  }));
  dart.defineExtensionMethods(_CastIterableBase, [
    'skip',
    'take',
    'elementAt',
    'contains',
    'lastWhere',
    'toString'
  ]);
  dart.defineExtensionAccessors(_CastIterableBase, [
    'iterator',
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last',
    'single'
  ]);
  return _CastIterableBase;
});
_internal._CastIterableBase = _internal._CastIterableBase$();
dart.addTypeTests(_internal._CastIterableBase, _is__CastIterableBase_default);
const _is_CastIterator_default = Symbol('_is_CastIterator_default');
_internal.CastIterator$ = dart.generic((S, T) => {
  let IteratorOfS = () => (IteratorOfS = dart.constFn(core.Iterator$(S)))();
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  class CastIterator extends core.Object {
    moveNext() {
      return this[_source].moveNext();
    }
    get current() {
      return T.as(this[_source].current);
    }
  }
  (CastIterator.new = function(source) {
    this[_source] = source;
  }).prototype = CastIterator.prototype;
  dart.addTypeTests(CastIterator);
  CastIterator.prototype[_is_CastIterator_default] = true;
  CastIterator[dart.implements] = () => [IteratorOfT()];
  dart.setMethodSignature(CastIterator, () => ({
    __proto__: dart.getMethods(CastIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(CastIterator, () => ({
    __proto__: dart.getGetters(CastIterator.__proto__),
    current: T
  }));
  dart.setFieldSignature(CastIterator, () => ({
    __proto__: dart.getFields(CastIterator.__proto__),
    [_source]: dart.fieldType(IteratorOfS())
  }));
  return CastIterator;
});
_internal.CastIterator = _internal.CastIterator$();
dart.addTypeTests(_internal.CastIterator, _is_CastIterator_default);
const _is_CastIterable_default = Symbol('_is_CastIterable_default');
_internal.CastIterable$ = dart.generic((S, T) => {
  let EfficientLengthIterableOfS = () => (EfficientLengthIterableOfS = dart.constFn(_internal.EfficientLengthIterable$(S)))();
  let _EfficientLengthCastIterableOfS$T = () => (_EfficientLengthCastIterableOfS$T = dart.constFn(_internal._EfficientLengthCastIterable$(S, T)))();
  let CastIterableOfS$T = () => (CastIterableOfS$T = dart.constFn(_internal.CastIterable$(S, T)))();
  let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
  class CastIterable extends _internal._CastIterableBase$(S, T) {
    static new(source) {
      if (EfficientLengthIterableOfS().is(source)) {
        return new (_EfficientLengthCastIterableOfS$T()).new(source);
      }
      return new (CastIterableOfS$T()).__(source);
    }
    cast(R) {
      return _internal.CastIterable$(S, R).new(this[_source]);
    }
  }
  (CastIterable.__ = function(source) {
    this[_source] = source;
    CastIterable.__proto__.new.call(this);
  }).prototype = CastIterable.prototype;
  dart.addTypeTests(CastIterable);
  CastIterable.prototype[_is_CastIterable_default] = true;
  dart.setMethodSignature(CastIterable, () => ({
    __proto__: dart.getMethods(CastIterable.__proto__),
    cast: dart.gFnType(R => [core.Iterable$(R), []]),
    [$cast]: dart.gFnType(R => [core.Iterable$(R), []])
  }));
  dart.setFieldSignature(CastIterable, () => ({
    __proto__: dart.getFields(CastIterable.__proto__),
    [_source]: dart.finalFieldType(IterableOfS())
  }));
  dart.defineExtensionMethods(CastIterable, ['cast']);
  return CastIterable;
});
_internal.CastIterable = _internal.CastIterable$();
dart.addTypeTests(_internal.CastIterable, _is_CastIterable_default);
const _is__EfficientLengthCastIterable_default = Symbol('_is__EfficientLengthCastIterable_default');
_internal._EfficientLengthCastIterable$ = dart.generic((S, T) => {
  let EfficientLengthIterableOfT = () => (EfficientLengthIterableOfT = dart.constFn(_internal.EfficientLengthIterable$(T)))();
  class _EfficientLengthCastIterable extends _internal.CastIterable$(S, T) {}
  (_EfficientLengthCastIterable.new = function(source) {
    _EfficientLengthCastIterable.__proto__.__.call(this, source);
  }).prototype = _EfficientLengthCastIterable.prototype;
  dart.addTypeTests(_EfficientLengthCastIterable);
  _EfficientLengthCastIterable.prototype[_is__EfficientLengthCastIterable_default] = true;
  _EfficientLengthCastIterable[dart.implements] = () => [EfficientLengthIterableOfT()];
  return _EfficientLengthCastIterable;
});
_internal._EfficientLengthCastIterable = _internal._EfficientLengthCastIterable$();
dart.addTypeTests(_internal._EfficientLengthCastIterable, _is__EfficientLengthCastIterable_default);
const _is__CastListBase_default = Symbol('_is__CastListBase_default');
_internal._CastListBase$ = dart.generic((S, T) => {
  let CastIterableOfT$S = () => (CastIterableOfT$S = dart.constFn(_internal.CastIterable$(T, S)))();
  let SAndSToint = () => (SAndSToint = dart.constFn(dart.fnType(core.int, [S, S])))();
  let STobool = () => (STobool = dart.constFn(dart.fnType(core.bool, [S])))();
  let CastIterableOfS$T = () => (CastIterableOfS$T = dart.constFn(_internal.CastIterable$(S, T)))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  const _CastIterableBase_ListMixin$ = class _CastIterableBase_ListMixin extends _internal._CastIterableBase$(S, T) {};
  (_CastIterableBase_ListMixin$.new = function() {
    _CastIterableBase_ListMixin$.__proto__.new.call(this);
  }).prototype = _CastIterableBase_ListMixin$.prototype;
  dart.applyMixin(_CastIterableBase_ListMixin$, collection.ListMixin$(T));
  class _CastListBase extends _CastIterableBase_ListMixin$ {
    _get(index) {
      return T.as(this[_source][$_get](index));
    }
    _set(index, value) {
      T._check(value);
      this[_source][$_set](index, S.as(value));
      return value;
    }
    set length(length) {
      this[_source][$length] = length;
    }
    get length() {
      return super.length;
    }
    add(value) {
      T._check(value);
      this[_source][$add](S.as(value));
    }
    addAll(values) {
      IterableOfT()._check(values);
      this[_source][$addAll](CastIterableOfT$S().new(values));
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      this[_source][$sort](compare == null ? null : dart.fn((v1, v2) => compare(T.as(v1), T.as(v2)), SAndSToint()));
    }
    shuffle(random) {
      if (random === void 0) random = null;
      this[_source][$shuffle](random);
    }
    insert(index, element) {
      T._check(element);
      this[_source][$insert](index, S.as(element));
    }
    insertAll(index, elements) {
      IterableOfT()._check(elements);
      this[_source][$insertAll](index, CastIterableOfT$S().new(elements));
    }
    setAll(index, elements) {
      IterableOfT()._check(elements);
      this[_source][$setAll](index, CastIterableOfT$S().new(elements));
    }
    remove(value) {
      return this[_source][$remove](value);
    }
    removeAt(index) {
      return T.as(this[_source][$removeAt](index));
    }
    removeLast() {
      return T.as(this[_source][$removeLast]());
    }
    removeWhere(test) {
      this[_source][$removeWhere](dart.fn(element => test(T.as(element)), STobool()));
    }
    retainWhere(test) {
      this[_source][$retainWhere](dart.fn(element => test(T.as(element)), STobool()));
    }
    getRange(start, end) {
      return CastIterableOfS$T().new(this[_source][$getRange](start, end));
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfT()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      this[_source][$setRange](start, end, CastIterableOfT$S().new(iterable), skipCount);
    }
    removeRange(start, end) {
      this[_source][$removeRange](start, end);
    }
    fillRange(start, end, fillValue) {
      if (fillValue === void 0) fillValue = null;
      T._check(fillValue);
      this[_source][$fillRange](start, end, S.as(fillValue));
    }
    replaceRange(start, end, replacement) {
      IterableOfT()._check(replacement);
      this[_source][$replaceRange](start, end, CastIterableOfT$S().new(replacement));
    }
  }
  (_CastListBase.new = function() {
    _CastListBase.__proto__.new.call(this);
  }).prototype = _CastListBase.prototype;
  dart.addTypeTests(_CastListBase);
  _CastListBase.prototype[_is__CastListBase_default] = true;
  dart.setMethodSignature(_CastListBase, () => ({
    __proto__: dart.getMethods(_CastListBase.__proto__),
    _get: dart.fnType(T, [core.int]),
    [$_get]: dart.fnType(T, [core.int]),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    add: dart.fnType(dart.void, [core.Object]),
    [$add]: dart.fnType(dart.void, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [T, T])]),
    [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [T, T])]),
    shuffle: dart.fnType(dart.void, [], [math.Random]),
    [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
    insert: dart.fnType(dart.void, [core.int, core.Object]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    insertAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
    setAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
    remove: dart.fnType(core.bool, [core.Object]),
    [$remove]: dart.fnType(core.bool, [core.Object]),
    removeAt: dart.fnType(T, [core.int]),
    [$removeAt]: dart.fnType(T, [core.int]),
    removeLast: dart.fnType(T, []),
    [$removeLast]: dart.fnType(T, []),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
    [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
    getRange: dart.fnType(core.Iterable$(T), [core.int, core.int]),
    [$getRange]: dart.fnType(core.Iterable$(T), [core.int, core.int]),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    removeRange: dart.fnType(dart.void, [core.int, core.int]),
    [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
    fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object])
  }));
  dart.setSetterSignature(_CastListBase, () => ({
    __proto__: dart.getSetters(_CastListBase.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.defineExtensionMethods(_CastListBase, [
    '_get',
    '_set',
    'add',
    'addAll',
    'sort',
    'shuffle',
    'insert',
    'insertAll',
    'setAll',
    'remove',
    'removeAt',
    'removeLast',
    'removeWhere',
    'retainWhere',
    'getRange',
    'setRange',
    'removeRange',
    'fillRange',
    'replaceRange'
  ]);
  dart.defineExtensionAccessors(_CastListBase, ['length']);
  return _CastListBase;
});
_internal._CastListBase = _internal._CastListBase$();
dart.addTypeTests(_internal._CastListBase, _is__CastListBase_default);
const _is_CastList_default = Symbol('_is_CastList_default');
_internal.CastList$ = dart.generic((S, T) => {
  let ListOfS = () => (ListOfS = dart.constFn(core.List$(S)))();
  class CastList extends _internal._CastListBase$(S, T) {
    cast(R) {
      return new (_internal.CastList$(S, R)).new(this[_source]);
    }
  }
  (CastList.new = function(source) {
    this[_source] = source;
    CastList.__proto__.new.call(this);
  }).prototype = CastList.prototype;
  dart.addTypeTests(CastList);
  CastList.prototype[_is_CastList_default] = true;
  dart.setMethodSignature(CastList, () => ({
    __proto__: dart.getMethods(CastList.__proto__),
    cast: dart.gFnType(R => [core.List$(R), []]),
    [$cast]: dart.gFnType(R => [core.List$(R), []])
  }));
  dart.setFieldSignature(CastList, () => ({
    __proto__: dart.getFields(CastList.__proto__),
    [_source]: dart.finalFieldType(ListOfS())
  }));
  dart.defineExtensionMethods(CastList, ['cast']);
  return CastList;
});
_internal.CastList = _internal.CastList$();
dart.addTypeTests(_internal.CastList, _is_CastList_default);
const _emptySet = Symbol('_emptySet');
const _conditionalAdd = Symbol('_conditionalAdd');
const _clone = Symbol('_clone');
const _is_CastSet_default = Symbol('_is_CastSet_default');
_internal.CastSet$ = dart.generic((S, T) => {
  let CastIterableOfT$S = () => (CastIterableOfT$S = dart.constFn(_internal.CastIterable$(T, S)))();
  let STobool = () => (STobool = dart.constFn(dart.fnType(core.bool, [S])))();
  let CastSetOfS$T = () => (CastSetOfS$T = dart.constFn(_internal.CastSet$(S, T)))();
  let SetOfS = () => (SetOfS = dart.constFn(core.Set$(S)))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  let _HashSetOfT = () => (_HashSetOfT = dart.constFn(collection._HashSet$(T)))();
  let SetOfT = () => (SetOfT = dart.constFn(core.Set$(T)))();
  class CastSet extends _internal._CastIterableBase$(S, T) {
    static _defaultEmptySet(R) {
      return new (collection._HashSet$(R)).new();
    }
    cast(R) {
      return new (_internal.CastSet$(S, R)).new(this[_source], this[_emptySet]);
    }
    add(value) {
      T._check(value);
      return this[_source].add(S.as(value));
    }
    addAll(elements) {
      IterableOfT()._check(elements);
      this[_source].addAll(CastIterableOfT$S().new(elements));
    }
    remove(object) {
      return this[_source].remove(object);
    }
    removeAll(objects) {
      this[_source].removeAll(objects);
    }
    retainAll(objects) {
      this[_source].retainAll(objects);
    }
    removeWhere(test) {
      this[_source].removeWhere(dart.fn(element => test(T.as(element)), STobool()));
    }
    retainWhere(test) {
      this[_source].retainWhere(dart.fn(element => test(T.as(element)), STobool()));
    }
    containsAll(objects) {
      return this[_source].containsAll(objects);
    }
    intersection(other) {
      if (this[_emptySet] != null) return this[_conditionalAdd](other, true);
      return new (CastSetOfS$T()).new(this[_source].intersection(other), null);
    }
    difference(other) {
      if (this[_emptySet] != null) return this[_conditionalAdd](other, false);
      return new (CastSetOfS$T()).new(this[_source].difference(other), null);
    }
    [_conditionalAdd](other, otherContains) {
      let result = this[_emptySet] == null ? new (_HashSetOfT()).new() : this[_emptySet](T);
      for (let element of this[_source]) {
        let castElement = T.as(element);
        if (otherContains == other.contains(castElement)) result.add(castElement);
      }
      return result;
    }
    union(other) {
      SetOfT()._check(other);
      let _ = this[_clone]();
      _.addAll(other);
      return _;
    }
    clear() {
      this[_source].clear();
    }
    [_clone]() {
      let result = this[_emptySet] == null ? new (_HashSetOfT()).new() : this[_emptySet](T);
      result.addAll(this);
      return result;
    }
    toSet() {
      return this[_clone]();
    }
    lookup(key) {
      return T.as(this[_source].lookup(key));
    }
  }
  (CastSet.new = function(source, emptySet) {
    this[_source] = source;
    this[_emptySet] = emptySet;
    CastSet.__proto__.new.call(this);
  }).prototype = CastSet.prototype;
  dart.addTypeTests(CastSet);
  CastSet.prototype[_is_CastSet_default] = true;
  CastSet[dart.implements] = () => [SetOfT()];
  dart.setMethodSignature(CastSet, () => ({
    __proto__: dart.getMethods(CastSet.__proto__),
    cast: dart.gFnType(R => [core.Set$(R), []]),
    [$cast]: dart.gFnType(R => [core.Set$(R), []]),
    add: dart.fnType(core.bool, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object]),
    removeAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
    retainAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
    containsAll: dart.fnType(core.bool, [core.Iterable$(core.Object)]),
    intersection: dart.fnType(core.Set$(T), [core.Set$(core.Object)]),
    difference: dart.fnType(core.Set$(T), [core.Set$(core.Object)]),
    [_conditionalAdd]: dart.fnType(core.Set$(T), [core.Set$(core.Object), core.bool]),
    union: dart.fnType(core.Set$(T), [core.Object]),
    clear: dart.fnType(dart.void, []),
    [_clone]: dart.fnType(core.Set$(T), []),
    toSet: dart.fnType(core.Set$(T), []),
    [$toSet]: dart.fnType(core.Set$(T), []),
    lookup: dart.fnType(T, [core.Object])
  }));
  dart.setFieldSignature(CastSet, () => ({
    __proto__: dart.getFields(CastSet.__proto__),
    [_source]: dart.finalFieldType(SetOfS()),
    [_emptySet]: dart.finalFieldType(VoidToSetOfR())
  }));
  dart.defineExtensionMethods(CastSet, ['cast', 'toSet']);
  return CastSet;
});
_internal.CastSet = _internal.CastSet$();
dart.addTypeTests(_internal.CastSet, _is_CastSet_default);
const _is_MapMixin_default = Symbol('_is_MapMixin_default');
collection.MapMixin$ = dart.generic((K, V) => {
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVToV = () => (KAndVToV = dart.constFn(dart.fnType(V, [K, V])))();
  let MapEntryOfK$V = () => (MapEntryOfK$V = dart.constFn(core.MapEntry$(K, V)))();
  let KToMapEntryOfK$V = () => (KToMapEntryOfK$V = dart.constFn(dart.fnType(MapEntryOfK$V(), [K])))();
  let IterableOfMapEntryOfK$V = () => (IterableOfMapEntryOfK$V = dart.constFn(core.Iterable$(MapEntryOfK$V())))();
  let JSArrayOfK = () => (JSArrayOfK = dart.constFn(_interceptors.JSArray$(K)))();
  let _MapBaseValueIterableOfK$V = () => (_MapBaseValueIterableOfK$V = dart.constFn(collection._MapBaseValueIterable$(K, V)))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
  let VToV = () => (VToV = dart.constFn(dart.fnType(V, [V])))();
  class MapMixin extends core.Object {
    cast(RK, RV) {
      return core.Map.castFrom(K, V, RK, RV, this);
    }
    forEach(action) {
      for (let key of this[$keys]) {
        action(key, this[$_get](key));
      }
    }
    addAll(other) {
      MapOfK$V()._check(other);
      for (let key of other[$keys]) {
        this[$_set](key, other[$_get](key));
      }
    }
    containsValue(value) {
      for (let key of this[$keys]) {
        if (dart.equals(this[$_get](key), value)) return true;
      }
      return false;
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      if (dart.test(this[$containsKey](key))) {
        return this[$_get](key);
      }
      return this[$_set](key, ifAbsent());
    }
    update(key, update, opts) {
      K._check(key);
      VToV()._check(update);
      let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
      VoidToV()._check(ifAbsent);
      if (dart.test(this[$containsKey](key))) {
        return this[$_set](key, update(this[$_get](key)));
      }
      if (ifAbsent != null) {
        return this[$_set](key, ifAbsent());
      }
      dart.throw(new core.ArgumentError.value(key, "key", "Key not in map."));
    }
    updateAll(update) {
      KAndVToV()._check(update);
      for (let key of this[$keys]) {
        this[$_set](key, update(key, this[$_get](key)));
      }
    }
    get entries() {
      return IterableOfMapEntryOfK$V()._check(this[$keys][$map](MapEntryOfK$V(), dart.fn(key => MapEntryOfK$V().new(key, this[$_get](key)), KToMapEntryOfK$V())));
    }
    map(K2, V2, transform) {
      let result = new (_js_helper.LinkedMap$(K2, V2)).new();
      for (let key of this[$keys]) {
        let entry = transform(key, this[$_get](key));
        result[$_set](entry.key, entry.value);
      }
      return result;
    }
    addEntries(newEntries) {
      IterableOfMapEntryOfK$V()._check(newEntries);
      for (let entry of newEntries) {
        this[$_set](entry.key, entry.value);
      }
    }
    removeWhere(test) {
      let keysToRemove = JSArrayOfK().of([]);
      for (let key of this[$keys]) {
        if (dart.test(test(key, this[$_get](key)))) keysToRemove[$add](key);
      }
      for (let key of keysToRemove) {
        this[$remove](key);
      }
    }
    containsKey(key) {
      return this[$keys][$contains](key);
    }
    get length() {
      return this[$keys][$length];
    }
    get isEmpty() {
      return this[$keys][$isEmpty];
    }
    get isNotEmpty() {
      return this[$keys][$isNotEmpty];
    }
    get values() {
      return new (_MapBaseValueIterableOfK$V()).new(this);
    }
    toString() {
      return collection.MapBase.mapToString(this);
    }
  }
  (MapMixin.new = function() {
  }).prototype = MapMixin.prototype;
  MapMixin.prototype[dart.isMap] = true;
  dart.addTypeTests(MapMixin);
  MapMixin.prototype[_is_MapMixin_default] = true;
  MapMixin[dart.implements] = () => [MapOfK$V()];
  dart.setMethodSignature(MapMixin, () => ({
    __proto__: dart.getMethods(MapMixin.__proto__),
    cast: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
    [$cast]: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    containsValue: dart.fnType(core.bool, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [core.Object]),
    putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
    update: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
    [$update]: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
    updateAll: dart.fnType(dart.void, [core.Object]),
    [$updateAll]: dart.fnType(dart.void, [core.Object]),
    map: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [K, V])]]),
    [$map]: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [K, V])]]),
    addEntries: dart.fnType(dart.void, [core.Object]),
    [$addEntries]: dart.fnType(dart.void, [core.Object]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
    containsKey: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, [])
  }));
  dart.setGetterSignature(MapMixin, () => ({
    __proto__: dart.getGetters(MapMixin.__proto__),
    entries: core.Iterable$(core.MapEntry$(K, V)),
    [$entries]: core.Iterable$(core.MapEntry$(K, V)),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    values: core.Iterable$(V),
    [$values]: core.Iterable$(V)
  }));
  dart.defineExtensionMethods(MapMixin, [
    'cast',
    'forEach',
    'addAll',
    'containsValue',
    'putIfAbsent',
    'update',
    'updateAll',
    'map',
    'addEntries',
    'removeWhere',
    'containsKey',
    'toString'
  ]);
  dart.defineExtensionAccessors(MapMixin, [
    'entries',
    'length',
    'isEmpty',
    'isNotEmpty',
    'values'
  ]);
  return MapMixin;
});
collection.MapMixin = collection.MapMixin$();
dart.addTypeTests(collection.MapMixin, _is_MapMixin_default);
const _is_MapBase_default = Symbol('_is_MapBase_default');
collection.MapBase$ = dart.generic((K, V) => {
  class MapBase extends collection.MapMixin$(K, V) {
    static mapToString(m) {
      if (dart.test(collection._isToStringVisiting(m))) {
        return "{...}";
      }
      let result = new core.StringBuffer.new();
      try {
        collection._toStringVisiting[$add](m);
        result.write("{");
        let first = true;
        m[$forEach](dart.fn((k, v) => {
          if (!first) {
            result.write(", ");
          }
          first = false;
          result.write(k);
          result.write(": ");
          result.write(v);
        }, dynamicAnddynamicToNull()));
        result.write("}");
      } finally {
        if (!core.identical(collection._toStringVisiting[$last], m)) dart.assertFailed();
        collection._toStringVisiting[$removeLast]();
      }
      return result.toString();
    }
    static _id(x) {
      return x;
    }
    static _fillMapWithMappedIterable(map, iterable, key, value) {
      let t = key;
      t == null ? key = dart.fn(collection.MapBase._id, dynamicTodynamic()) : t;
      let t$ = value;
      t$ == null ? value = dart.fn(collection.MapBase._id, dynamicTodynamic()) : t$;
      for (let element of iterable) {
        map[$_set](key(element), value(element));
      }
    }
    static _fillMapWithIterables(map, keys, values) {
      let keyIterator = keys[$iterator];
      let valueIterator = values[$iterator];
      let hasNextKey = keyIterator.moveNext();
      let hasNextValue = valueIterator.moveNext();
      while (dart.test(hasNextKey) && dart.test(hasNextValue)) {
        map[$_set](keyIterator.current, valueIterator.current);
        hasNextKey = keyIterator.moveNext();
        hasNextValue = valueIterator.moveNext();
      }
      if (dart.test(hasNextKey) || dart.test(hasNextValue)) {
        dart.throw(new core.ArgumentError.new("Iterables do not have same length."));
      }
    }
  }
  (MapBase.new = function() {
  }).prototype = MapBase.prototype;
  dart.addTypeTests(MapBase);
  MapBase.prototype[_is_MapBase_default] = true;
  return MapBase;
});
collection.MapBase = collection.MapBase$();
dart.addTypeTests(collection.MapBase, _is_MapBase_default);
const _is_CastMap_default = Symbol('_is_CastMap_default');
_internal.CastMap$ = dart.generic((SK, SV, K, V) => {
  let CastMapOfK$V$SK$SV = () => (CastMapOfK$V$SK$SV = dart.constFn(_internal.CastMap$(K, V, SK, SV)))();
  let SKAndSVToNull = () => (SKAndSVToNull = dart.constFn(dart.fnType(core.Null, [SK, SV])))();
  let CastIterableOfSK$K = () => (CastIterableOfSK$K = dart.constFn(_internal.CastIterable$(SK, K)))();
  let SKAndSVToSV = () => (SKAndSVToSV = dart.constFn(dart.fnType(SV, [SK, SV])))();
  let MapEntryOfSK$SV = () => (MapEntryOfSK$SV = dart.constFn(core.MapEntry$(SK, SV)))();
  let MapEntryOfSK$SVToMapEntryOfK$V = () => (MapEntryOfSK$SVToMapEntryOfK$V = dart.constFn(dart.fnType(MapEntryOfK$V(), [MapEntryOfSK$SV()])))();
  let SKAndSVTobool = () => (SKAndSVTobool = dart.constFn(dart.fnType(core.bool, [SK, SV])))();
  let MapOfSK$SV = () => (MapOfSK$SV = dart.constFn(core.Map$(SK, SV)))();
  let VoidToSV = () => (VoidToSV = dart.constFn(dart.fnType(SV, [])))();
  let CastIterableOfSV$V = () => (CastIterableOfSV$V = dart.constFn(_internal.CastIterable$(SV, V)))();
  let SVToSV = () => (SVToSV = dart.constFn(dart.fnType(SV, [SV])))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVToV = () => (KAndVToV = dart.constFn(dart.fnType(V, [K, V])))();
  let MapEntryOfK$V = () => (MapEntryOfK$V = dart.constFn(core.MapEntry$(K, V)))();
  let IterableOfMapEntryOfK$V = () => (IterableOfMapEntryOfK$V = dart.constFn(core.Iterable$(MapEntryOfK$V())))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
  let VToV = () => (VToV = dart.constFn(dart.fnType(V, [V])))();
  class CastMap extends collection.MapBase$(K, V) {
    cast(RK, RV) {
      return new (_internal.CastMap$(SK, SV, RK, RV)).new(this[_source]);
    }
    containsValue(value) {
      return this[_source][$containsValue](value);
    }
    containsKey(key) {
      return this[_source][$containsKey](key);
    }
    _get(key) {
      return V.as(this[_source][$_get](key));
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      this[_source][$_set](SK.as(key), SV.as(value));
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      return V.as(this[_source][$putIfAbsent](SK.as(key), ifAbsent == null ? null : dart.fn(() => SV.as(ifAbsent()), VoidToSV())));
    }
    addAll(other) {
      MapOfK$V()._check(other);
      this[_source][$addAll](new (CastMapOfK$V$SK$SV()).new(other));
    }
    remove(key) {
      return V.as(this[_source][$remove](key));
    }
    clear() {
      this[_source][$clear]();
    }
    forEach(f) {
      this[_source][$forEach](dart.fn((key, value) => {
        f(K.as(key), V.as(value));
      }, SKAndSVToNull()));
    }
    get keys() {
      return CastIterableOfSK$K().new(this[_source][$keys]);
    }
    get values() {
      return CastIterableOfSV$V().new(this[_source][$values]);
    }
    get length() {
      return this[_source][$length];
    }
    get isEmpty() {
      return this[_source][$isEmpty];
    }
    get isNotEmpty() {
      return this[_source][$isNotEmpty];
    }
    update(key, update, opts) {
      K._check(key);
      VToV()._check(update);
      let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
      VoidToV()._check(ifAbsent);
      return V.as(this[_source][$update](SK.as(key), dart.fn(value => SV.as(update(V.as(value))), SVToSV()), {ifAbsent: ifAbsent == null ? null : dart.fn(() => SV.as(ifAbsent()), VoidToSV())}));
    }
    updateAll(update) {
      KAndVToV()._check(update);
      this[_source][$updateAll](dart.fn((key, value) => SV.as(update(K.as(key), V.as(value))), SKAndSVToSV()));
    }
    get entries() {
      return IterableOfMapEntryOfK$V()._check(this[_source][$entries][$map](MapEntryOfK$V(), dart.fn(e => MapEntryOfK$V().new(K.as(e.key), V.as(e.value)), MapEntryOfSK$SVToMapEntryOfK$V())));
    }
    addEntries(entries) {
      IterableOfMapEntryOfK$V()._check(entries);
      for (let entry of entries) {
        this[_source][$_set](SK.as(entry.key), SV.as(entry.value));
      }
    }
    removeWhere(test) {
      this[_source][$removeWhere](dart.fn((key, value) => test(K.as(key), V.as(value)), SKAndSVTobool()));
    }
  }
  (CastMap.new = function(source) {
    this[_source] = source;
  }).prototype = CastMap.prototype;
  dart.addTypeTests(CastMap);
  CastMap.prototype[_is_CastMap_default] = true;
  dart.setMethodSignature(CastMap, () => ({
    __proto__: dart.getMethods(CastMap.__proto__),
    cast: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
    [$cast]: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
    containsValue: dart.fnType(core.bool, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [core.Object]),
    containsKey: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    _get: dart.fnType(V, [core.Object]),
    [$_get]: dart.fnType(V, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(V, [core.Object]),
    [$remove]: dart.fnType(V, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
    update: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
    [$update]: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
    updateAll: dart.fnType(dart.void, [core.Object]),
    [$updateAll]: dart.fnType(dart.void, [core.Object]),
    addEntries: dart.fnType(dart.void, [core.Object]),
    [$addEntries]: dart.fnType(dart.void, [core.Object]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])])
  }));
  dart.setGetterSignature(CastMap, () => ({
    __proto__: dart.getGetters(CastMap.__proto__),
    keys: core.Iterable$(K),
    [$keys]: core.Iterable$(K),
    values: core.Iterable$(V),
    [$values]: core.Iterable$(V),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    entries: core.Iterable$(core.MapEntry$(K, V)),
    [$entries]: core.Iterable$(core.MapEntry$(K, V))
  }));
  dart.setFieldSignature(CastMap, () => ({
    __proto__: dart.getFields(CastMap.__proto__),
    [_source]: dart.finalFieldType(MapOfSK$SV())
  }));
  dart.defineExtensionMethods(CastMap, [
    'cast',
    'containsValue',
    'containsKey',
    '_get',
    '_set',
    'putIfAbsent',
    'addAll',
    'remove',
    'clear',
    'forEach',
    'update',
    'updateAll',
    'addEntries',
    'removeWhere'
  ]);
  dart.defineExtensionAccessors(CastMap, [
    'keys',
    'values',
    'length',
    'isEmpty',
    'isNotEmpty',
    'entries'
  ]);
  return CastMap;
});
_internal.CastMap = _internal.CastMap$();
dart.addTypeTests(_internal.CastMap, _is_CastMap_default);
const _is_CastQueue_default = Symbol('_is_CastQueue_default');
_internal.CastQueue$ = dart.generic((S, T) => {
  let CastIterableOfT$S = () => (CastIterableOfT$S = dart.constFn(_internal.CastIterable$(T, S)))();
  let STobool = () => (STobool = dart.constFn(dart.fnType(core.bool, [S])))();
  let QueueOfS = () => (QueueOfS = dart.constFn(collection.Queue$(S)))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  let QueueOfT = () => (QueueOfT = dart.constFn(collection.Queue$(T)))();
  class CastQueue extends _internal._CastIterableBase$(S, T) {
    cast(R) {
      return new (_internal.CastQueue$(S, R)).new(this[_source]);
    }
    removeFirst() {
      return T.as(this[_source].removeFirst());
    }
    removeLast() {
      return T.as(this[_source].removeLast());
    }
    add(value) {
      T._check(value);
      this[_source].add(S.as(value));
    }
    addFirst(value) {
      T._check(value);
      this[_source].addFirst(S.as(value));
    }
    addLast(value) {
      T._check(value);
      this[_source].addLast(S.as(value));
    }
    remove(other) {
      return this[_source].remove(other);
    }
    addAll(elements) {
      IterableOfT()._check(elements);
      this[_source].addAll(CastIterableOfT$S().new(elements));
    }
    removeWhere(test) {
      this[_source].removeWhere(dart.fn(element => test(T.as(element)), STobool()));
    }
    retainWhere(test) {
      this[_source].retainWhere(dart.fn(element => test(T.as(element)), STobool()));
    }
    clear() {
      this[_source].clear();
    }
  }
  (CastQueue.new = function(source) {
    this[_source] = source;
    CastQueue.__proto__.new.call(this);
  }).prototype = CastQueue.prototype;
  dart.addTypeTests(CastQueue);
  CastQueue.prototype[_is_CastQueue_default] = true;
  CastQueue[dart.implements] = () => [QueueOfT()];
  dart.setMethodSignature(CastQueue, () => ({
    __proto__: dart.getMethods(CastQueue.__proto__),
    cast: dart.gFnType(R => [collection.Queue$(R), []]),
    [$cast]: dart.gFnType(R => [collection.Queue$(R), []]),
    removeFirst: dart.fnType(T, []),
    removeLast: dart.fnType(T, []),
    add: dart.fnType(dart.void, [core.Object]),
    addFirst: dart.fnType(dart.void, [core.Object]),
    addLast: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [T])]),
    clear: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(CastQueue, () => ({
    __proto__: dart.getFields(CastQueue.__proto__),
    [_source]: dart.finalFieldType(QueueOfS())
  }));
  dart.defineExtensionMethods(CastQueue, ['cast']);
  return CastQueue;
});
_internal.CastQueue = _internal.CastQueue$();
dart.addTypeTests(_internal.CastQueue, _is_CastQueue_default);
const _is_EfficientLengthIterable_default = Symbol('_is_EfficientLengthIterable_default');
_internal.EfficientLengthIterable$ = dart.generic(T => {
  class EfficientLengthIterable extends core.Iterable$(T) {}
  (EfficientLengthIterable.new = function() {
    EfficientLengthIterable.__proto__.new.call(this);
  }).prototype = EfficientLengthIterable.prototype;
  dart.addTypeTests(EfficientLengthIterable);
  EfficientLengthIterable.prototype[_is_EfficientLengthIterable_default] = true;
  return EfficientLengthIterable;
});
_internal.EfficientLengthIterable = _internal.EfficientLengthIterable$();
dart.addTypeTests(_internal.EfficientLengthIterable, _is_EfficientLengthIterable_default);
const _is_ListIterable_default = Symbol('_is_ListIterable_default');
_internal.ListIterable$ = dart.generic(E => {
  let ListIteratorOfE = () => (ListIteratorOfE = dart.constFn(_internal.ListIterator$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
  let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
  class ListIterable extends _internal.EfficientLengthIterable$(E) {
    get iterator() {
      return new (ListIteratorOfE()).new(this);
    }
    forEach(action) {
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        action(this.elementAt(i));
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
    }
    get isEmpty() {
      return this.length === 0;
    }
    get first() {
      if (this.length === 0) dart.throw(_internal.IterableElementError.noElement());
      return this.elementAt(0);
    }
    get last() {
      if (this.length === 0) dart.throw(_internal.IterableElementError.noElement());
      return this.elementAt(dart.notNull(this.length) - 1);
    }
    get single() {
      if (this.length === 0) dart.throw(_internal.IterableElementError.noElement());
      if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
      return this.elementAt(0);
    }
    contains(element) {
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        if (dart.equals(this.elementAt(i), element)) return true;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      return false;
    }
    every(test) {
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        if (!dart.test(test(this.elementAt(i)))) return false;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      return true;
    }
    any(test) {
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        if (dart.test(test(this.elementAt(i)))) return true;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      return false;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = this.elementAt(i);
        if (dart.test(test(element))) return element;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this.length;
      for (let i = dart.notNull(length) - 1; i >= 0; i--) {
        let element = this.elementAt(i);
        if (dart.test(test(element))) return element;
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let length = this.length;
      let match = null;
      let matchFound = false;
      for (let i = 0; i < dart.notNull(length); i++) {
        let element = this.elementAt(i);
        if (dart.test(test(element))) {
          if (matchFound) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          matchFound = true;
          match = element;
        }
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      if (matchFound) return match;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let length = this.length;
      if (!separator[$isEmpty]) {
        if (length === 0) return "";
        let first = dart.str(this.elementAt(0));
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
        let buffer = new core.StringBuffer.new(first);
        for (let i = 1; i < dart.notNull(length); i++) {
          buffer.write(separator);
          buffer.write(this.elementAt(i));
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return buffer.toString();
      } else {
        let buffer = new core.StringBuffer.new();
        for (let i = 0; i < dart.notNull(length); i++) {
          buffer.write(this.elementAt(i));
          if (length != this.length) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
        }
        return buffer.toString();
      }
    }
    where(test) {
      return super.where(test);
    }
    map(T, f) {
      return new (_internal.MappedListIterable$(E, T)).new(this, f);
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      let length = this.length;
      if (length === 0) dart.throw(_internal.IterableElementError.noElement());
      let value = this.elementAt(0);
      for (let i = 1; i < dart.notNull(length); i++) {
        value = combine(value, this.elementAt(i));
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      return value;
    }
    fold(T, initialValue, combine) {
      let value = initialValue;
      let length = this.length;
      for (let i = 0; i < dart.notNull(length); i++) {
        value = combine(value, this.elementAt(i));
        if (length != this.length) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
      return value;
    }
    skip(count) {
      return new (SubListIterableOfE()).new(this, count, null);
    }
    skipWhile(test) {
      return super.skipWhile(test);
    }
    take(count) {
      return new (SubListIterableOfE()).new(this, 0, count);
    }
    takeWhile(test) {
      return super.takeWhile(test);
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let result = null;
      if (dart.test(growable)) {
        result = JSArrayOfE().of([]);
        result[$length] = this.length;
      } else {
        result = ListOfE().new(this.length);
      }
      for (let i = 0; i < dart.notNull(this.length); i++) {
        result[$_set](i, this.elementAt(i));
      }
      return result;
    }
    toSet() {
      let result = new (_HashSetOfE()).new();
      for (let i = 0; i < dart.notNull(this.length); i++) {
        result.add(this.elementAt(i));
      }
      return result;
    }
  }
  (ListIterable.new = function() {
    ListIterable.__proto__.new.call(this);
  }).prototype = ListIterable.prototype;
  dart.addTypeTests(ListIterable);
  ListIterable.prototype[_is_ListIterable_default] = true;
  dart.setMethodSignature(ListIterable, () => ({
    __proto__: dart.getMethods(ListIterable.__proto__),
    firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    reduce: dart.fnType(E, [core.Object]),
    [$reduce]: dart.fnType(E, [core.Object])
  }));
  dart.setGetterSignature(ListIterable, () => ({
    __proto__: dart.getGetters(ListIterable.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.defineExtensionMethods(ListIterable, [
    'forEach',
    'contains',
    'every',
    'any',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'join',
    'where',
    'map',
    'reduce',
    'fold',
    'skip',
    'skipWhile',
    'take',
    'takeWhile',
    'toList',
    'toSet'
  ]);
  dart.defineExtensionAccessors(ListIterable, [
    'iterator',
    'isEmpty',
    'first',
    'last',
    'single'
  ]);
  return ListIterable;
});
_internal.ListIterable = _internal.ListIterable$();
dart.addTypeTests(_internal.ListIterable, _is_ListIterable_default);
const _iterable$ = Symbol('_iterable');
const _start = Symbol('_start');
const _endOrLength = Symbol('_endOrLength');
const _endIndex = Symbol('_endIndex');
const _startIndex = Symbol('_startIndex');
const _is_SubListIterable_default = Symbol('_is_SubListIterable_default');
_internal.SubListIterable$ = dart.generic(E => {
  let EmptyIterableOfE = () => (EmptyIterableOfE = dart.constFn(_internal.EmptyIterable$(E)))();
  let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class SubListIterable extends _internal.ListIterable$(E) {
    get [_endIndex]() {
      let length = this[_iterable$][$length];
      if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) > dart.notNull(length)) return length;
      return this[_endOrLength];
    }
    get [_startIndex]() {
      let length = this[_iterable$][$length];
      if (dart.notNull(this[_start]) > dart.notNull(length)) return length;
      return this[_start];
    }
    get length() {
      let length = this[_iterable$][$length];
      if (dart.notNull(this[_start]) >= dart.notNull(length)) return 0;
      if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) >= dart.notNull(length)) {
        return dart.notNull(length) - dart.notNull(this[_start]);
      }
      return dart.notNull(this[_endOrLength]) - dart.notNull(this[_start]);
    }
    elementAt(index) {
      let realIndex = dart.notNull(this[_startIndex]) + dart.notNull(index);
      if (dart.notNull(index) < 0 || realIndex >= dart.notNull(this[_endIndex])) {
        dart.throw(core.RangeError.index(index, this, "index"));
      }
      return this[_iterable$][$elementAt](realIndex);
    }
    skip(count) {
      core.RangeError.checkNotNegative(count, "count");
      let newStart = dart.notNull(this[_start]) + dart.notNull(count);
      if (this[_endOrLength] != null && newStart >= dart.notNull(this[_endOrLength])) {
        return new (EmptyIterableOfE()).new();
      }
      return new (SubListIterableOfE()).new(this[_iterable$], newStart, this[_endOrLength]);
    }
    take(count) {
      core.RangeError.checkNotNegative(count, "count");
      if (this[_endOrLength] == null) {
        return new (SubListIterableOfE()).new(this[_iterable$], this[_start], dart.notNull(this[_start]) + dart.notNull(count));
      } else {
        let newEnd = dart.notNull(this[_start]) + dart.notNull(count);
        if (dart.notNull(this[_endOrLength]) < newEnd) return this;
        return new (SubListIterableOfE()).new(this[_iterable$], this[_start], newEnd);
      }
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let start = this[_start];
      let end = this[_iterable$][$length];
      if (this[_endOrLength] != null && dart.notNull(this[_endOrLength]) < dart.notNull(end)) end = this[_endOrLength];
      let length = dart.notNull(end) - dart.notNull(start);
      if (length < 0) length = 0;
      let result = dart.test(growable) ? (() => {
        let _ = JSArrayOfE().of([]);
        _[$length] = length;
        return _;
      })() : ListOfE().new(length);
      for (let i = 0; i < length; i++) {
        result[$_set](i, this[_iterable$][$elementAt](dart.notNull(start) + i));
        if (dart.notNull(this[_iterable$][$length]) < dart.notNull(end)) dart.throw(new core.ConcurrentModificationError.new(this));
      }
      return result;
    }
  }
  (SubListIterable.new = function(iterable, start, endOrLength) {
    this[_iterable$] = iterable;
    this[_start] = start;
    this[_endOrLength] = endOrLength;
    SubListIterable.__proto__.new.call(this);
    core.RangeError.checkNotNegative(this[_start], "start");
    if (this[_endOrLength] != null) {
      core.RangeError.checkNotNegative(this[_endOrLength], "end");
      if (dart.notNull(this[_start]) > dart.notNull(this[_endOrLength])) {
        dart.throw(new core.RangeError.range(this[_start], 0, this[_endOrLength], "start"));
      }
    }
  }).prototype = SubListIterable.prototype;
  dart.addTypeTests(SubListIterable);
  SubListIterable.prototype[_is_SubListIterable_default] = true;
  dart.setMethodSignature(SubListIterable, () => ({
    __proto__: dart.getMethods(SubListIterable.__proto__),
    elementAt: dart.fnType(E, [core.int]),
    [$elementAt]: dart.fnType(E, [core.int])
  }));
  dart.setGetterSignature(SubListIterable, () => ({
    __proto__: dart.getGetters(SubListIterable.__proto__),
    [_endIndex]: core.int,
    [_startIndex]: core.int,
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(SubListIterable, () => ({
    __proto__: dart.getFields(SubListIterable.__proto__),
    [_iterable$]: dart.finalFieldType(IterableOfE()),
    [_start]: dart.finalFieldType(core.int),
    [_endOrLength]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(SubListIterable, ['elementAt', 'skip', 'take', 'toList']);
  dart.defineExtensionAccessors(SubListIterable, ['length']);
  return SubListIterable;
});
_internal.SubListIterable = _internal.SubListIterable$();
dart.addTypeTests(_internal.SubListIterable, _is_SubListIterable_default);
const _length$ = Symbol('_length');
const _index$ = Symbol('_index');
const _current$ = Symbol('_current');
const _is_ListIterator_default = Symbol('_is_ListIterator_default');
_internal.ListIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class ListIterator extends core.Object {
    get current() {
      return this[_current$];
    }
    moveNext() {
      let length = this[_iterable$][$length];
      if (this[_length$] != length) {
        dart.throw(new core.ConcurrentModificationError.new(this[_iterable$]));
      }
      if (dart.notNull(this[_index$]) >= dart.notNull(length)) {
        this[_current$] = null;
        return false;
      }
      this[_current$] = this[_iterable$][$elementAt](this[_index$]);
      this[_index$] = dart.notNull(this[_index$]) + 1;
      return true;
    }
  }
  (ListIterator.new = function(iterable) {
    this[_current$] = null;
    this[_iterable$] = iterable;
    this[_length$] = iterable[$length];
    this[_index$] = 0;
  }).prototype = ListIterator.prototype;
  dart.addTypeTests(ListIterator);
  ListIterator.prototype[_is_ListIterator_default] = true;
  ListIterator[dart.implements] = () => [IteratorOfE()];
  dart.setMethodSignature(ListIterator, () => ({
    __proto__: dart.getMethods(ListIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(ListIterator, () => ({
    __proto__: dart.getGetters(ListIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(ListIterator, () => ({
    __proto__: dart.getFields(ListIterator.__proto__),
    [_iterable$]: dart.finalFieldType(IterableOfE()),
    [_length$]: dart.finalFieldType(core.int),
    [_index$]: dart.fieldType(core.int),
    [_current$]: dart.fieldType(E)
  }));
  return ListIterator;
});
_internal.ListIterator = _internal.ListIterator$();
dart.addTypeTests(_internal.ListIterator, _is_ListIterator_default);
const _f = Symbol('_f');
const _is_MappedIterable_default = Symbol('_is_MappedIterable_default');
_internal.MappedIterable$ = dart.generic((S, T) => {
  let EfficientLengthMappedIterableOfS$T = () => (EfficientLengthMappedIterableOfS$T = dart.constFn(_internal.EfficientLengthMappedIterable$(S, T)))();
  let MappedIterableOfS$T = () => (MappedIterableOfS$T = dart.constFn(_internal.MappedIterable$(S, T)))();
  let MappedIteratorOfS$T = () => (MappedIteratorOfS$T = dart.constFn(_internal.MappedIterator$(S, T)))();
  let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
  let SToT = () => (SToT = dart.constFn(dart.fnType(T, [S])))();
  class MappedIterable extends core.Iterable$(T) {
    static new(iterable, func) {
      if (_internal.EfficientLengthIterable.is(iterable)) {
        return new (EfficientLengthMappedIterableOfS$T()).new(iterable, func);
      }
      return new (MappedIterableOfS$T()).__(iterable, func);
    }
    get iterator() {
      return new (MappedIteratorOfS$T()).new(this[_iterable$][$iterator], this[_f]);
    }
    get length() {
      return this[_iterable$][$length];
    }
    get isEmpty() {
      return this[_iterable$][$isEmpty];
    }
    get first() {
      return this[_f](this[_iterable$][$first]);
    }
    get last() {
      return this[_f](this[_iterable$][$last]);
    }
    get single() {
      return this[_f](this[_iterable$][$single]);
    }
    elementAt(index) {
      return this[_f](this[_iterable$][$elementAt](index));
    }
  }
  (MappedIterable.__ = function(iterable, f) {
    this[_iterable$] = iterable;
    this[_f] = f;
    MappedIterable.__proto__.new.call(this);
  }).prototype = MappedIterable.prototype;
  dart.addTypeTests(MappedIterable);
  MappedIterable.prototype[_is_MappedIterable_default] = true;
  dart.setMethodSignature(MappedIterable, () => ({
    __proto__: dart.getMethods(MappedIterable.__proto__),
    elementAt: dart.fnType(T, [core.int]),
    [$elementAt]: dart.fnType(T, [core.int])
  }));
  dart.setGetterSignature(MappedIterable, () => ({
    __proto__: dart.getGetters(MappedIterable.__proto__),
    iterator: core.Iterator$(T),
    [$iterator]: core.Iterator$(T),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    first: T,
    [$first]: T,
    last: T,
    [$last]: T,
    single: T,
    [$single]: T
  }));
  dart.setFieldSignature(MappedIterable, () => ({
    __proto__: dart.getFields(MappedIterable.__proto__),
    [_iterable$]: dart.finalFieldType(IterableOfS()),
    [_f]: dart.finalFieldType(SToT())
  }));
  dart.defineExtensionMethods(MappedIterable, ['elementAt']);
  dart.defineExtensionAccessors(MappedIterable, [
    'iterator',
    'length',
    'isEmpty',
    'first',
    'last',
    'single'
  ]);
  return MappedIterable;
});
_internal.MappedIterable = _internal.MappedIterable$();
dart.addTypeTests(_internal.MappedIterable, _is_MappedIterable_default);
const _is_EfficientLengthMappedIterable_default = Symbol('_is_EfficientLengthMappedIterable_default');
_internal.EfficientLengthMappedIterable$ = dart.generic((S, T) => {
  let EfficientLengthIterableOfT = () => (EfficientLengthIterableOfT = dart.constFn(_internal.EfficientLengthIterable$(T)))();
  class EfficientLengthMappedIterable extends _internal.MappedIterable$(S, T) {}
  (EfficientLengthMappedIterable.new = function(iterable, func) {
    EfficientLengthMappedIterable.__proto__.__.call(this, iterable, func);
  }).prototype = EfficientLengthMappedIterable.prototype;
  dart.addTypeTests(EfficientLengthMappedIterable);
  EfficientLengthMappedIterable.prototype[_is_EfficientLengthMappedIterable_default] = true;
  EfficientLengthMappedIterable[dart.implements] = () => [EfficientLengthIterableOfT()];
  return EfficientLengthMappedIterable;
});
_internal.EfficientLengthMappedIterable = _internal.EfficientLengthMappedIterable$();
dart.addTypeTests(_internal.EfficientLengthMappedIterable, _is_EfficientLengthMappedIterable_default);
const _iterator = Symbol('_iterator');
const _is_Iterator_default = Symbol('_is_Iterator_default');
core.Iterator$ = dart.generic(E => {
  class Iterator extends core.Object {}
  (Iterator.new = function() {
  }).prototype = Iterator.prototype;
  dart.addTypeTests(Iterator);
  Iterator.prototype[_is_Iterator_default] = true;
  return Iterator;
});
core.Iterator = core.Iterator$();
dart.addTypeTests(core.Iterator, _is_Iterator_default);
const _is_MappedIterator_default = Symbol('_is_MappedIterator_default');
_internal.MappedIterator$ = dart.generic((S, T) => {
  let IteratorOfS = () => (IteratorOfS = dart.constFn(core.Iterator$(S)))();
  let SToT = () => (SToT = dart.constFn(dart.fnType(T, [S])))();
  class MappedIterator extends core.Iterator$(T) {
    moveNext() {
      if (dart.test(this[_iterator].moveNext())) {
        this[_current$] = this[_f](this[_iterator].current);
        return true;
      }
      this[_current$] = null;
      return false;
    }
    get current() {
      return this[_current$];
    }
  }
  (MappedIterator.new = function(iterator, f) {
    this[_current$] = null;
    this[_iterator] = iterator;
    this[_f] = f;
  }).prototype = MappedIterator.prototype;
  dart.addTypeTests(MappedIterator);
  MappedIterator.prototype[_is_MappedIterator_default] = true;
  dart.setMethodSignature(MappedIterator, () => ({
    __proto__: dart.getMethods(MappedIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(MappedIterator, () => ({
    __proto__: dart.getGetters(MappedIterator.__proto__),
    current: T
  }));
  dart.setFieldSignature(MappedIterator, () => ({
    __proto__: dart.getFields(MappedIterator.__proto__),
    [_current$]: dart.fieldType(T),
    [_iterator]: dart.finalFieldType(IteratorOfS()),
    [_f]: dart.finalFieldType(SToT())
  }));
  return MappedIterator;
});
_internal.MappedIterator = _internal.MappedIterator$();
dart.addTypeTests(_internal.MappedIterator, _is_MappedIterator_default);
const _is_MappedListIterable_default = Symbol('_is_MappedListIterable_default');
_internal.MappedListIterable$ = dart.generic((S, T) => {
  let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
  let SToT = () => (SToT = dart.constFn(dart.fnType(T, [S])))();
  class MappedListIterable extends _internal.ListIterable$(T) {
    get length() {
      return this[_source][$length];
    }
    elementAt(index) {
      return this[_f](this[_source][$elementAt](index));
    }
  }
  (MappedListIterable.new = function(source, f) {
    this[_source] = source;
    this[_f] = f;
    MappedListIterable.__proto__.new.call(this);
  }).prototype = MappedListIterable.prototype;
  dart.addTypeTests(MappedListIterable);
  MappedListIterable.prototype[_is_MappedListIterable_default] = true;
  dart.setMethodSignature(MappedListIterable, () => ({
    __proto__: dart.getMethods(MappedListIterable.__proto__),
    elementAt: dart.fnType(T, [core.int]),
    [$elementAt]: dart.fnType(T, [core.int])
  }));
  dart.setGetterSignature(MappedListIterable, () => ({
    __proto__: dart.getGetters(MappedListIterable.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(MappedListIterable, () => ({
    __proto__: dart.getFields(MappedListIterable.__proto__),
    [_source]: dart.finalFieldType(IterableOfS()),
    [_f]: dart.finalFieldType(SToT())
  }));
  dart.defineExtensionMethods(MappedListIterable, ['elementAt']);
  dart.defineExtensionAccessors(MappedListIterable, ['length']);
  return MappedListIterable;
});
_internal.MappedListIterable = _internal.MappedListIterable$();
dart.addTypeTests(_internal.MappedListIterable, _is_MappedListIterable_default);
const _is_WhereIterable_default = Symbol('_is_WhereIterable_default');
_internal.WhereIterable$ = dart.generic(E => {
  let WhereIteratorOfE = () => (WhereIteratorOfE = dart.constFn(_internal.WhereIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
  class WhereIterable extends core.Iterable$(E) {
    get iterator() {
      return new (WhereIteratorOfE()).new(this[_iterable$][$iterator], this[_f]);
    }
    map(T, f) {
      return new (_internal.MappedIterable$(E, T)).__(this, f);
    }
  }
  (WhereIterable.new = function(iterable, f) {
    this[_iterable$] = iterable;
    this[_f] = f;
    WhereIterable.__proto__.new.call(this);
  }).prototype = WhereIterable.prototype;
  dart.addTypeTests(WhereIterable);
  WhereIterable.prototype[_is_WhereIterable_default] = true;
  dart.setGetterSignature(WhereIterable, () => ({
    __proto__: dart.getGetters(WhereIterable.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.setFieldSignature(WhereIterable, () => ({
    __proto__: dart.getFields(WhereIterable.__proto__),
    [_iterable$]: dart.finalFieldType(IterableOfE()),
    [_f]: dart.finalFieldType(ETobool())
  }));
  dart.defineExtensionMethods(WhereIterable, ['map']);
  dart.defineExtensionAccessors(WhereIterable, ['iterator']);
  return WhereIterable;
});
_internal.WhereIterable = _internal.WhereIterable$();
dart.addTypeTests(_internal.WhereIterable, _is_WhereIterable_default);
const _is_WhereIterator_default = Symbol('_is_WhereIterator_default');
_internal.WhereIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
  class WhereIterator extends core.Iterator$(E) {
    moveNext() {
      while (dart.test(this[_iterator].moveNext())) {
        if (dart.test(this[_f](this[_iterator].current))) {
          return true;
        }
      }
      return false;
    }
    get current() {
      return this[_iterator].current;
    }
  }
  (WhereIterator.new = function(iterator, f) {
    this[_iterator] = iterator;
    this[_f] = f;
  }).prototype = WhereIterator.prototype;
  dart.addTypeTests(WhereIterator);
  WhereIterator.prototype[_is_WhereIterator_default] = true;
  dart.setMethodSignature(WhereIterator, () => ({
    __proto__: dart.getMethods(WhereIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(WhereIterator, () => ({
    __proto__: dart.getGetters(WhereIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(WhereIterator, () => ({
    __proto__: dart.getFields(WhereIterator.__proto__),
    [_iterator]: dart.finalFieldType(IteratorOfE()),
    [_f]: dart.finalFieldType(ETobool())
  }));
  return WhereIterator;
});
_internal.WhereIterator = _internal.WhereIterator$();
dart.addTypeTests(_internal.WhereIterator, _is_WhereIterator_default);
const _is_ExpandIterable_default = Symbol('_is_ExpandIterable_default');
_internal.ExpandIterable$ = dart.generic((S, T) => {
  let ExpandIteratorOfS$T = () => (ExpandIteratorOfS$T = dart.constFn(_internal.ExpandIterator$(S, T)))();
  let IterableOfS = () => (IterableOfS = dart.constFn(core.Iterable$(S)))();
  let SToIterableOfT = () => (SToIterableOfT = dart.constFn(dart.fnType(IterableOfT(), [S])))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  class ExpandIterable extends core.Iterable$(T) {
    get iterator() {
      return new (ExpandIteratorOfS$T()).new(this[_iterable$][$iterator], this[_f]);
    }
  }
  (ExpandIterable.new = function(iterable, f) {
    this[_iterable$] = iterable;
    this[_f] = f;
    ExpandIterable.__proto__.new.call(this);
  }).prototype = ExpandIterable.prototype;
  dart.addTypeTests(ExpandIterable);
  ExpandIterable.prototype[_is_ExpandIterable_default] = true;
  dart.setGetterSignature(ExpandIterable, () => ({
    __proto__: dart.getGetters(ExpandIterable.__proto__),
    iterator: core.Iterator$(T),
    [$iterator]: core.Iterator$(T)
  }));
  dart.setFieldSignature(ExpandIterable, () => ({
    __proto__: dart.getFields(ExpandIterable.__proto__),
    [_iterable$]: dart.finalFieldType(IterableOfS()),
    [_f]: dart.finalFieldType(SToIterableOfT())
  }));
  dart.defineExtensionAccessors(ExpandIterable, ['iterator']);
  return ExpandIterable;
});
_internal.ExpandIterable = _internal.ExpandIterable$();
dart.addTypeTests(_internal.ExpandIterable, _is_ExpandIterable_default);
const _currentExpansion = Symbol('_currentExpansion');
const _is_ExpandIterator_default = Symbol('_is_ExpandIterator_default');
_internal.ExpandIterator$ = dart.generic((S, T) => {
  let IteratorOfS = () => (IteratorOfS = dart.constFn(core.Iterator$(S)))();
  let SToIterableOfT = () => (SToIterableOfT = dart.constFn(dart.fnType(IterableOfT(), [S])))();
  let EmptyIteratorOfT = () => (EmptyIteratorOfT = dart.constFn(_internal.EmptyIterator$(T)))();
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  class ExpandIterator extends core.Object {
    get current() {
      return this[_current$];
    }
    moveNext() {
      if (this[_currentExpansion] == null) return false;
      while (!dart.test(this[_currentExpansion].moveNext())) {
        this[_current$] = null;
        if (dart.test(this[_iterator].moveNext())) {
          this[_currentExpansion] = null;
          this[_currentExpansion] = this[_f](this[_iterator].current)[$iterator];
        } else {
          return false;
        }
      }
      this[_current$] = this[_currentExpansion].current;
      return true;
    }
  }
  (ExpandIterator.new = function(iterator, f) {
    this[_currentExpansion] = dart.const(new (EmptyIteratorOfT()).new());
    this[_current$] = null;
    this[_iterator] = iterator;
    this[_f] = f;
  }).prototype = ExpandIterator.prototype;
  dart.addTypeTests(ExpandIterator);
  ExpandIterator.prototype[_is_ExpandIterator_default] = true;
  ExpandIterator[dart.implements] = () => [IteratorOfT()];
  dart.setMethodSignature(ExpandIterator, () => ({
    __proto__: dart.getMethods(ExpandIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(ExpandIterator, () => ({
    __proto__: dart.getGetters(ExpandIterator.__proto__),
    current: T
  }));
  dart.setFieldSignature(ExpandIterator, () => ({
    __proto__: dart.getFields(ExpandIterator.__proto__),
    [_iterator]: dart.finalFieldType(IteratorOfS()),
    [_f]: dart.finalFieldType(SToIterableOfT()),
    [_currentExpansion]: dart.fieldType(IteratorOfT()),
    [_current$]: dart.fieldType(T)
  }));
  return ExpandIterator;
});
_internal.ExpandIterator = _internal.ExpandIterator$();
dart.addTypeTests(_internal.ExpandIterator, _is_ExpandIterator_default);
const _takeCount = Symbol('_takeCount');
const _is_TakeIterable_default = Symbol('_is_TakeIterable_default');
_internal.TakeIterable$ = dart.generic(E => {
  let EfficientLengthTakeIterableOfE = () => (EfficientLengthTakeIterableOfE = dart.constFn(_internal.EfficientLengthTakeIterable$(E)))();
  let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
  let TakeIteratorOfE = () => (TakeIteratorOfE = dart.constFn(_internal.TakeIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class TakeIterable extends core.Iterable$(E) {
    static new(iterable, takeCount) {
      core.ArgumentError.checkNotNull(takeCount, "takeCount");
      core.RangeError.checkNotNegative(takeCount, "takeCount");
      if (_internal.EfficientLengthIterable.is(iterable)) {
        return new (EfficientLengthTakeIterableOfE()).new(iterable, takeCount);
      }
      return new (TakeIterableOfE()).__(iterable, takeCount);
    }
    get iterator() {
      return new (TakeIteratorOfE()).new(this[_iterable$][$iterator], this[_takeCount]);
    }
  }
  (TakeIterable.__ = function(iterable, takeCount) {
    this[_iterable$] = iterable;
    this[_takeCount] = takeCount;
    TakeIterable.__proto__.new.call(this);
  }).prototype = TakeIterable.prototype;
  dart.addTypeTests(TakeIterable);
  TakeIterable.prototype[_is_TakeIterable_default] = true;
  dart.setGetterSignature(TakeIterable, () => ({
    __proto__: dart.getGetters(TakeIterable.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.setFieldSignature(TakeIterable, () => ({
    __proto__: dart.getFields(TakeIterable.__proto__),
    [_iterable$]: dart.finalFieldType(IterableOfE()),
    [_takeCount]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionAccessors(TakeIterable, ['iterator']);
  return TakeIterable;
});
_internal.TakeIterable = _internal.TakeIterable$();
dart.addTypeTests(_internal.TakeIterable, _is_TakeIterable_default);
const _is_EfficientLengthTakeIterable_default = Symbol('_is_EfficientLengthTakeIterable_default');
_internal.EfficientLengthTakeIterable$ = dart.generic(E => {
  let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
  class EfficientLengthTakeIterable extends _internal.TakeIterable$(E) {
    get length() {
      let iterableLength = this[_iterable$][$length];
      if (dart.notNull(iterableLength) > dart.notNull(this[_takeCount])) return this[_takeCount];
      return iterableLength;
    }
  }
  (EfficientLengthTakeIterable.new = function(iterable, takeCount) {
    EfficientLengthTakeIterable.__proto__.__.call(this, iterable, takeCount);
  }).prototype = EfficientLengthTakeIterable.prototype;
  dart.addTypeTests(EfficientLengthTakeIterable);
  EfficientLengthTakeIterable.prototype[_is_EfficientLengthTakeIterable_default] = true;
  EfficientLengthTakeIterable[dart.implements] = () => [EfficientLengthIterableOfE()];
  dart.defineExtensionAccessors(EfficientLengthTakeIterable, ['length']);
  return EfficientLengthTakeIterable;
});
_internal.EfficientLengthTakeIterable = _internal.EfficientLengthTakeIterable$();
dart.addTypeTests(_internal.EfficientLengthTakeIterable, _is_EfficientLengthTakeIterable_default);
const _remaining = Symbol('_remaining');
const _is_TakeIterator_default = Symbol('_is_TakeIterator_default');
_internal.TakeIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class TakeIterator extends core.Iterator$(E) {
    moveNext() {
      this[_remaining] = dart.notNull(this[_remaining]) - 1;
      if (dart.notNull(this[_remaining]) >= 0) {
        return this[_iterator].moveNext();
      }
      this[_remaining] = -1;
      return false;
    }
    get current() {
      if (dart.notNull(this[_remaining]) < 0) return null;
      return this[_iterator].current;
    }
  }
  (TakeIterator.new = function(iterator, remaining) {
    this[_iterator] = iterator;
    this[_remaining] = remaining;
    if (!(dart.notNull(this[_remaining]) >= 0)) dart.assertFailed();
  }).prototype = TakeIterator.prototype;
  dart.addTypeTests(TakeIterator);
  TakeIterator.prototype[_is_TakeIterator_default] = true;
  dart.setMethodSignature(TakeIterator, () => ({
    __proto__: dart.getMethods(TakeIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(TakeIterator, () => ({
    __proto__: dart.getGetters(TakeIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(TakeIterator, () => ({
    __proto__: dart.getFields(TakeIterator.__proto__),
    [_iterator]: dart.finalFieldType(IteratorOfE()),
    [_remaining]: dart.fieldType(core.int)
  }));
  return TakeIterator;
});
_internal.TakeIterator = _internal.TakeIterator$();
dart.addTypeTests(_internal.TakeIterator, _is_TakeIterator_default);
const _is_TakeWhileIterable_default = Symbol('_is_TakeWhileIterable_default');
_internal.TakeWhileIterable$ = dart.generic(E => {
  let TakeWhileIteratorOfE = () => (TakeWhileIteratorOfE = dart.constFn(_internal.TakeWhileIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
  class TakeWhileIterable extends core.Iterable$(E) {
    get iterator() {
      return new (TakeWhileIteratorOfE()).new(this[_iterable$][$iterator], this[_f]);
    }
  }
  (TakeWhileIterable.new = function(iterable, f) {
    this[_iterable$] = iterable;
    this[_f] = f;
    TakeWhileIterable.__proto__.new.call(this);
  }).prototype = TakeWhileIterable.prototype;
  dart.addTypeTests(TakeWhileIterable);
  TakeWhileIterable.prototype[_is_TakeWhileIterable_default] = true;
  dart.setGetterSignature(TakeWhileIterable, () => ({
    __proto__: dart.getGetters(TakeWhileIterable.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.setFieldSignature(TakeWhileIterable, () => ({
    __proto__: dart.getFields(TakeWhileIterable.__proto__),
    [_iterable$]: dart.finalFieldType(IterableOfE()),
    [_f]: dart.finalFieldType(ETobool())
  }));
  dart.defineExtensionAccessors(TakeWhileIterable, ['iterator']);
  return TakeWhileIterable;
});
_internal.TakeWhileIterable = _internal.TakeWhileIterable$();
dart.addTypeTests(_internal.TakeWhileIterable, _is_TakeWhileIterable_default);
const _isFinished = Symbol('_isFinished');
const _is_TakeWhileIterator_default = Symbol('_is_TakeWhileIterator_default');
_internal.TakeWhileIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
  class TakeWhileIterator extends core.Iterator$(E) {
    moveNext() {
      if (dart.test(this[_isFinished])) return false;
      if (!dart.test(this[_iterator].moveNext()) || !dart.test(this[_f](this[_iterator].current))) {
        this[_isFinished] = true;
        return false;
      }
      return true;
    }
    get current() {
      if (dart.test(this[_isFinished])) return null;
      return this[_iterator].current;
    }
  }
  (TakeWhileIterator.new = function(iterator, f) {
    this[_isFinished] = false;
    this[_iterator] = iterator;
    this[_f] = f;
  }).prototype = TakeWhileIterator.prototype;
  dart.addTypeTests(TakeWhileIterator);
  TakeWhileIterator.prototype[_is_TakeWhileIterator_default] = true;
  dart.setMethodSignature(TakeWhileIterator, () => ({
    __proto__: dart.getMethods(TakeWhileIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(TakeWhileIterator, () => ({
    __proto__: dart.getGetters(TakeWhileIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(TakeWhileIterator, () => ({
    __proto__: dart.getFields(TakeWhileIterator.__proto__),
    [_iterator]: dart.finalFieldType(IteratorOfE()),
    [_f]: dart.finalFieldType(ETobool()),
    [_isFinished]: dart.fieldType(core.bool)
  }));
  return TakeWhileIterator;
});
_internal.TakeWhileIterator = _internal.TakeWhileIterator$();
dart.addTypeTests(_internal.TakeWhileIterator, _is_TakeWhileIterator_default);
const _skipCount = Symbol('_skipCount');
const _is_SkipIterable_default = Symbol('_is_SkipIterable_default');
_internal.SkipIterable$ = dart.generic(E => {
  let EfficientLengthSkipIterableOfE = () => (EfficientLengthSkipIterableOfE = dart.constFn(_internal.EfficientLengthSkipIterable$(E)))();
  let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
  let SkipIteratorOfE = () => (SkipIteratorOfE = dart.constFn(_internal.SkipIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class SkipIterable extends core.Iterable$(E) {
    static new(iterable, count) {
      if (_internal.EfficientLengthIterable.is(iterable)) {
        return EfficientLengthSkipIterableOfE().new(iterable, count);
      }
      return new (SkipIterableOfE()).__(iterable, _internal._checkCount(count));
    }
    skip(count) {
      return new (SkipIterableOfE()).__(this[_iterable$], dart.notNull(this[_skipCount]) + dart.notNull(_internal._checkCount(count)));
    }
    get iterator() {
      return new (SkipIteratorOfE()).new(this[_iterable$][$iterator], this[_skipCount]);
    }
  }
  (SkipIterable.__ = function(iterable, skipCount) {
    this[_iterable$] = iterable;
    this[_skipCount] = skipCount;
    SkipIterable.__proto__.new.call(this);
  }).prototype = SkipIterable.prototype;
  dart.addTypeTests(SkipIterable);
  SkipIterable.prototype[_is_SkipIterable_default] = true;
  dart.setGetterSignature(SkipIterable, () => ({
    __proto__: dart.getGetters(SkipIterable.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.setFieldSignature(SkipIterable, () => ({
    __proto__: dart.getFields(SkipIterable.__proto__),
    [_iterable$]: dart.finalFieldType(IterableOfE()),
    [_skipCount]: dart.finalFieldType(core.int)
  }));
  dart.defineExtensionMethods(SkipIterable, ['skip']);
  dart.defineExtensionAccessors(SkipIterable, ['iterator']);
  return SkipIterable;
});
_internal.SkipIterable = _internal.SkipIterable$();
dart.addTypeTests(_internal.SkipIterable, _is_SkipIterable_default);
const _is_EfficientLengthSkipIterable_default = Symbol('_is_EfficientLengthSkipIterable_default');
_internal.EfficientLengthSkipIterable$ = dart.generic(E => {
  let EfficientLengthSkipIterableOfE = () => (EfficientLengthSkipIterableOfE = dart.constFn(_internal.EfficientLengthSkipIterable$(E)))();
  let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
  class EfficientLengthSkipIterable extends _internal.SkipIterable$(E) {
    static new(iterable, count) {
      return new (EfficientLengthSkipIterableOfE()).__(iterable, _internal._checkCount(count));
    }
    get length() {
      let length = dart.notNull(this[_iterable$][$length]) - dart.notNull(this[_skipCount]);
      if (length >= 0) return length;
      return 0;
    }
    skip(count) {
      return new (EfficientLengthSkipIterableOfE()).__(this[_iterable$], dart.notNull(this[_skipCount]) + dart.notNull(_internal._checkCount(count)));
    }
  }
  (EfficientLengthSkipIterable.__ = function(iterable, count) {
    EfficientLengthSkipIterable.__proto__.__.call(this, iterable, count);
  }).prototype = EfficientLengthSkipIterable.prototype;
  dart.addTypeTests(EfficientLengthSkipIterable);
  EfficientLengthSkipIterable.prototype[_is_EfficientLengthSkipIterable_default] = true;
  EfficientLengthSkipIterable[dart.implements] = () => [EfficientLengthIterableOfE()];
  dart.defineExtensionMethods(EfficientLengthSkipIterable, ['skip']);
  dart.defineExtensionAccessors(EfficientLengthSkipIterable, ['length']);
  return EfficientLengthSkipIterable;
});
_internal.EfficientLengthSkipIterable = _internal.EfficientLengthSkipIterable$();
dart.addTypeTests(_internal.EfficientLengthSkipIterable, _is_EfficientLengthSkipIterable_default);
_internal._checkCount = function(count) {
  core.ArgumentError.checkNotNull(count, "count");
  core.RangeError.checkNotNegative(count, "count");
  return count;
};
const _is_SkipIterator_default = Symbol('_is_SkipIterator_default');
_internal.SkipIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class SkipIterator extends core.Iterator$(E) {
    moveNext() {
      for (let i = 0; i < dart.notNull(this[_skipCount]); i++)
        this[_iterator].moveNext();
      this[_skipCount] = 0;
      return this[_iterator].moveNext();
    }
    get current() {
      return this[_iterator].current;
    }
  }
  (SkipIterator.new = function(iterator, skipCount) {
    this[_iterator] = iterator;
    this[_skipCount] = skipCount;
    if (!(dart.notNull(this[_skipCount]) >= 0)) dart.assertFailed();
  }).prototype = SkipIterator.prototype;
  dart.addTypeTests(SkipIterator);
  SkipIterator.prototype[_is_SkipIterator_default] = true;
  dart.setMethodSignature(SkipIterator, () => ({
    __proto__: dart.getMethods(SkipIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(SkipIterator, () => ({
    __proto__: dart.getGetters(SkipIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(SkipIterator, () => ({
    __proto__: dart.getFields(SkipIterator.__proto__),
    [_iterator]: dart.finalFieldType(IteratorOfE()),
    [_skipCount]: dart.fieldType(core.int)
  }));
  return SkipIterator;
});
_internal.SkipIterator = _internal.SkipIterator$();
dart.addTypeTests(_internal.SkipIterator, _is_SkipIterator_default);
const _is_SkipWhileIterable_default = Symbol('_is_SkipWhileIterable_default');
_internal.SkipWhileIterable$ = dart.generic(E => {
  let SkipWhileIteratorOfE = () => (SkipWhileIteratorOfE = dart.constFn(_internal.SkipWhileIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
  class SkipWhileIterable extends core.Iterable$(E) {
    get iterator() {
      return new (SkipWhileIteratorOfE()).new(this[_iterable$][$iterator], this[_f]);
    }
  }
  (SkipWhileIterable.new = function(iterable, f) {
    this[_iterable$] = iterable;
    this[_f] = f;
    SkipWhileIterable.__proto__.new.call(this);
  }).prototype = SkipWhileIterable.prototype;
  dart.addTypeTests(SkipWhileIterable);
  SkipWhileIterable.prototype[_is_SkipWhileIterable_default] = true;
  dart.setGetterSignature(SkipWhileIterable, () => ({
    __proto__: dart.getGetters(SkipWhileIterable.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.setFieldSignature(SkipWhileIterable, () => ({
    __proto__: dart.getFields(SkipWhileIterable.__proto__),
    [_iterable$]: dart.finalFieldType(IterableOfE()),
    [_f]: dart.finalFieldType(ETobool())
  }));
  dart.defineExtensionAccessors(SkipWhileIterable, ['iterator']);
  return SkipWhileIterable;
});
_internal.SkipWhileIterable = _internal.SkipWhileIterable$();
dart.addTypeTests(_internal.SkipWhileIterable, _is_SkipWhileIterable_default);
const _hasSkipped = Symbol('_hasSkipped');
const _is_SkipWhileIterator_default = Symbol('_is_SkipWhileIterator_default');
_internal.SkipWhileIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let ETobool = () => (ETobool = dart.constFn(dart.fnType(core.bool, [E])))();
  class SkipWhileIterator extends core.Iterator$(E) {
    moveNext() {
      if (!dart.test(this[_hasSkipped])) {
        this[_hasSkipped] = true;
        while (dart.test(this[_iterator].moveNext())) {
          if (!dart.test(this[_f](this[_iterator].current))) return true;
        }
      }
      return this[_iterator].moveNext();
    }
    get current() {
      return this[_iterator].current;
    }
  }
  (SkipWhileIterator.new = function(iterator, f) {
    this[_hasSkipped] = false;
    this[_iterator] = iterator;
    this[_f] = f;
  }).prototype = SkipWhileIterator.prototype;
  dart.addTypeTests(SkipWhileIterator);
  SkipWhileIterator.prototype[_is_SkipWhileIterator_default] = true;
  dart.setMethodSignature(SkipWhileIterator, () => ({
    __proto__: dart.getMethods(SkipWhileIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(SkipWhileIterator, () => ({
    __proto__: dart.getGetters(SkipWhileIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(SkipWhileIterator, () => ({
    __proto__: dart.getFields(SkipWhileIterator.__proto__),
    [_iterator]: dart.finalFieldType(IteratorOfE()),
    [_f]: dart.finalFieldType(ETobool()),
    [_hasSkipped]: dart.fieldType(core.bool)
  }));
  return SkipWhileIterator;
});
_internal.SkipWhileIterator = _internal.SkipWhileIterator$();
dart.addTypeTests(_internal.SkipWhileIterator, _is_SkipWhileIterator_default);
const _is_EmptyIterable_default = Symbol('_is_EmptyIterable_default');
_internal.EmptyIterable$ = dart.generic(E => {
  let EmptyIteratorOfE = () => (EmptyIteratorOfE = dart.constFn(_internal.EmptyIterator$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
  class EmptyIterable extends _internal.EfficientLengthIterable$(E) {
    get iterator() {
      return dart.const(new (EmptyIteratorOfE()).new());
    }
    forEach(action) {}
    get isEmpty() {
      return true;
    }
    get length() {
      return 0;
    }
    get first() {
      dart.throw(_internal.IterableElementError.noElement());
    }
    get last() {
      dart.throw(_internal.IterableElementError.noElement());
    }
    get single() {
      dart.throw(_internal.IterableElementError.noElement());
    }
    elementAt(index) {
      dart.throw(new core.RangeError.range(index, 0, 0, "index"));
    }
    contains(element) {
      return false;
    }
    every(test) {
      return true;
    }
    any(test) {
      return false;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    join(separator) {
      if (separator === void 0) separator = "";
      return "";
    }
    where(test) {
      return this;
    }
    map(T, f) {
      return new (_internal.EmptyIterable$(T)).new();
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      dart.throw(_internal.IterableElementError.noElement());
    }
    fold(T, initialValue, combine) {
      return initialValue;
    }
    skip(count) {
      core.RangeError.checkNotNegative(count, "count");
      return this;
    }
    skipWhile(test) {
      return this;
    }
    take(count) {
      core.RangeError.checkNotNegative(count, "count");
      return this;
    }
    takeWhile(test) {
      return this;
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      return dart.test(growable) ? JSArrayOfE().of([]) : ListOfE().new(0);
    }
    toSet() {
      return new (_HashSetOfE()).new();
    }
  }
  (EmptyIterable.new = function() {
    EmptyIterable.__proto__.new.call(this);
  }).prototype = EmptyIterable.prototype;
  dart.addTypeTests(EmptyIterable);
  EmptyIterable.prototype[_is_EmptyIterable_default] = true;
  dart.setMethodSignature(EmptyIterable, () => ({
    __proto__: dart.getMethods(EmptyIterable.__proto__),
    firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    reduce: dart.fnType(E, [core.Object]),
    [$reduce]: dart.fnType(E, [core.Object])
  }));
  dart.setGetterSignature(EmptyIterable, () => ({
    __proto__: dart.getGetters(EmptyIterable.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E),
    length: core.int,
    [$length]: core.int
  }));
  dart.defineExtensionMethods(EmptyIterable, [
    'forEach',
    'elementAt',
    'contains',
    'every',
    'any',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'join',
    'where',
    'map',
    'reduce',
    'fold',
    'skip',
    'skipWhile',
    'take',
    'takeWhile',
    'toList',
    'toSet'
  ]);
  dart.defineExtensionAccessors(EmptyIterable, [
    'iterator',
    'isEmpty',
    'length',
    'first',
    'last',
    'single'
  ]);
  return EmptyIterable;
});
_internal.EmptyIterable = _internal.EmptyIterable$();
dart.addTypeTests(_internal.EmptyIterable, _is_EmptyIterable_default);
const _is_EmptyIterator_default = Symbol('_is_EmptyIterator_default');
_internal.EmptyIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class EmptyIterator extends core.Object {
    moveNext() {
      return false;
    }
    get current() {
      return null;
    }
  }
  (EmptyIterator.new = function() {
  }).prototype = EmptyIterator.prototype;
  dart.addTypeTests(EmptyIterator);
  EmptyIterator.prototype[_is_EmptyIterator_default] = true;
  EmptyIterator[dart.implements] = () => [IteratorOfE()];
  dart.setMethodSignature(EmptyIterator, () => ({
    __proto__: dart.getMethods(EmptyIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(EmptyIterator, () => ({
    __proto__: dart.getGetters(EmptyIterator.__proto__),
    current: E
  }));
  return EmptyIterator;
});
_internal.EmptyIterator = _internal.EmptyIterator$();
dart.addTypeTests(_internal.EmptyIterator, _is_EmptyIterator_default);
const _first = Symbol('_first');
const _second = Symbol('_second');
const _is_FollowedByIterable_default = Symbol('_is_FollowedByIterable_default');
_internal.FollowedByIterable$ = dart.generic(E => {
  let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
  let EfficientLengthFollowedByIterableOfE = () => (EfficientLengthFollowedByIterableOfE = dart.constFn(_internal.EfficientLengthFollowedByIterable$(E)))();
  let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
  let FollowedByIteratorOfE = () => (FollowedByIteratorOfE = dart.constFn(_internal.FollowedByIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class FollowedByIterable extends core.Iterable$(E) {
    static firstEfficient(first, second) {
      if (EfficientLengthIterableOfE().is(second)) {
        return new (EfficientLengthFollowedByIterableOfE()).new(first, second);
      }
      return new (FollowedByIterableOfE()).new(first, second);
    }
    get iterator() {
      return new (FollowedByIteratorOfE()).new(this[_first], this[_second]);
    }
    get length() {
      return dart.notNull(this[_first][$length]) + dart.notNull(this[_second][$length]);
    }
    get isEmpty() {
      return dart.test(this[_first][$isEmpty]) && dart.test(this[_second][$isEmpty]);
    }
    get isNotEmpty() {
      return dart.test(this[_first][$isNotEmpty]) || dart.test(this[_second][$isNotEmpty]);
    }
    contains(value) {
      return dart.test(this[_first][$contains](value)) || dart.test(this[_second][$contains](value));
    }
    get first() {
      let iterator = this[_first][$iterator];
      if (dart.test(iterator.moveNext())) return iterator.current;
      return this[_second][$first];
    }
    get last() {
      let iterator = this[_second][$iterator];
      if (dart.test(iterator.moveNext())) {
        let last = iterator.current;
        while (dart.test(iterator.moveNext()))
          last = iterator.current;
        return last;
      }
      return this[_first][$last];
    }
  }
  (FollowedByIterable.new = function(first, second) {
    this[_first] = first;
    this[_second] = second;
    FollowedByIterable.__proto__.new.call(this);
  }).prototype = FollowedByIterable.prototype;
  dart.addTypeTests(FollowedByIterable);
  FollowedByIterable.prototype[_is_FollowedByIterable_default] = true;
  dart.setGetterSignature(FollowedByIterable, () => ({
    __proto__: dart.getGetters(FollowedByIterable.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.setFieldSignature(FollowedByIterable, () => ({
    __proto__: dart.getFields(FollowedByIterable.__proto__),
    [_first]: dart.finalFieldType(IterableOfE()),
    [_second]: dart.finalFieldType(IterableOfE())
  }));
  dart.defineExtensionMethods(FollowedByIterable, ['contains']);
  dart.defineExtensionAccessors(FollowedByIterable, [
    'iterator',
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last'
  ]);
  return FollowedByIterable;
});
_internal.FollowedByIterable = _internal.FollowedByIterable$();
dart.addTypeTests(_internal.FollowedByIterable, _is_FollowedByIterable_default);
const _is_EfficientLengthFollowedByIterable_default = Symbol('_is_EfficientLengthFollowedByIterable_default');
_internal.EfficientLengthFollowedByIterable$ = dart.generic(E => {
  let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
  let EfficientLengthFollowedByIterableOfE = () => (EfficientLengthFollowedByIterableOfE = dart.constFn(_internal.EfficientLengthFollowedByIterable$(E)))();
  class EfficientLengthFollowedByIterable extends _internal.FollowedByIterable$(E) {
    skip(count) {
      let firstLength = this[_first][$length];
      if (dart.notNull(count) >= dart.notNull(firstLength)) return this[_second][$skip](dart.notNull(count) - dart.notNull(firstLength));
      return new (EfficientLengthFollowedByIterableOfE()).new(EfficientLengthIterableOfE()._check(this[_first][$skip](count)), EfficientLengthIterableOfE()._check(this[_second]));
    }
    take(count) {
      let firstLength = this[_first][$length];
      if (dart.notNull(count) <= dart.notNull(firstLength)) return this[_first][$take](count);
      return new (EfficientLengthFollowedByIterableOfE()).new(EfficientLengthIterableOfE()._check(this[_first]), EfficientLengthIterableOfE()._check(this[_second][$take](dart.notNull(count) - dart.notNull(firstLength))));
    }
    elementAt(index) {
      let firstLength = this[_first][$length];
      if (dart.notNull(index) < dart.notNull(firstLength)) return this[_first][$elementAt](index);
      return this[_second][$elementAt](dart.notNull(index) - dart.notNull(firstLength));
    }
    get first() {
      if (dart.test(this[_first][$isNotEmpty])) return this[_first][$first];
      return this[_second][$first];
    }
    get last() {
      if (dart.test(this[_second][$isNotEmpty])) return this[_second][$last];
      return this[_first][$last];
    }
  }
  (EfficientLengthFollowedByIterable.new = function(first, second) {
    EfficientLengthFollowedByIterable.__proto__.new.call(this, first, second);
  }).prototype = EfficientLengthFollowedByIterable.prototype;
  dart.addTypeTests(EfficientLengthFollowedByIterable);
  EfficientLengthFollowedByIterable.prototype[_is_EfficientLengthFollowedByIterable_default] = true;
  EfficientLengthFollowedByIterable[dart.implements] = () => [EfficientLengthIterableOfE()];
  dart.defineExtensionMethods(EfficientLengthFollowedByIterable, ['skip', 'take', 'elementAt']);
  dart.defineExtensionAccessors(EfficientLengthFollowedByIterable, ['first', 'last']);
  return EfficientLengthFollowedByIterable;
});
_internal.EfficientLengthFollowedByIterable = _internal.EfficientLengthFollowedByIterable$();
dart.addTypeTests(_internal.EfficientLengthFollowedByIterable, _is_EfficientLengthFollowedByIterable_default);
const _nextIterable = Symbol('_nextIterable');
const _currentIterator = Symbol('_currentIterator');
const _is_FollowedByIterator_default = Symbol('_is_FollowedByIterator_default');
_internal.FollowedByIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class FollowedByIterator extends core.Object {
    moveNext() {
      if (dart.test(this[_currentIterator].moveNext())) return true;
      if (this[_nextIterable] != null) {
        this[_currentIterator] = this[_nextIterable][$iterator];
        this[_nextIterable] = null;
        return this[_currentIterator].moveNext();
      }
      return false;
    }
    get current() {
      return this[_currentIterator].current;
    }
  }
  (FollowedByIterator.new = function(first, nextIterable) {
    this[_nextIterable] = nextIterable;
    this[_currentIterator] = first[$iterator];
  }).prototype = FollowedByIterator.prototype;
  dart.addTypeTests(FollowedByIterator);
  FollowedByIterator.prototype[_is_FollowedByIterator_default] = true;
  FollowedByIterator[dart.implements] = () => [IteratorOfE()];
  dart.setMethodSignature(FollowedByIterator, () => ({
    __proto__: dart.getMethods(FollowedByIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(FollowedByIterator, () => ({
    __proto__: dart.getGetters(FollowedByIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(FollowedByIterator, () => ({
    __proto__: dart.getFields(FollowedByIterator.__proto__),
    [_currentIterator]: dart.fieldType(IteratorOfE()),
    [_nextIterable]: dart.fieldType(IterableOfE())
  }));
  return FollowedByIterator;
});
_internal.FollowedByIterator = _internal.FollowedByIterator$();
dart.addTypeTests(_internal.FollowedByIterator, _is_FollowedByIterator_default);
const _is_WhereTypeIterable_default = Symbol('_is_WhereTypeIterable_default');
_internal.WhereTypeIterable$ = dart.generic(T => {
  let WhereTypeIteratorOfT = () => (WhereTypeIteratorOfT = dart.constFn(_internal.WhereTypeIterator$(T)))();
  class WhereTypeIterable extends core.Iterable$(T) {
    get iterator() {
      return new (WhereTypeIteratorOfT()).new(this[_source][$iterator]);
    }
  }
  (WhereTypeIterable.new = function(source) {
    this[_source] = source;
    WhereTypeIterable.__proto__.new.call(this);
  }).prototype = WhereTypeIterable.prototype;
  dart.addTypeTests(WhereTypeIterable);
  WhereTypeIterable.prototype[_is_WhereTypeIterable_default] = true;
  dart.setGetterSignature(WhereTypeIterable, () => ({
    __proto__: dart.getGetters(WhereTypeIterable.__proto__),
    iterator: core.Iterator$(T),
    [$iterator]: core.Iterator$(T)
  }));
  dart.setFieldSignature(WhereTypeIterable, () => ({
    __proto__: dart.getFields(WhereTypeIterable.__proto__),
    [_source]: dart.finalFieldType(IterableOfObject())
  }));
  dart.defineExtensionAccessors(WhereTypeIterable, ['iterator']);
  return WhereTypeIterable;
});
_internal.WhereTypeIterable = _internal.WhereTypeIterable$();
dart.addTypeTests(_internal.WhereTypeIterable, _is_WhereTypeIterable_default);
const _is_WhereTypeIterator_default = Symbol('_is_WhereTypeIterator_default');
_internal.WhereTypeIterator$ = dart.generic(T => {
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  class WhereTypeIterator extends core.Object {
    moveNext() {
      while (dart.test(this[_source].moveNext())) {
        if (T.is(this[_source].current)) return true;
      }
      return false;
    }
    get current() {
      return T._check(this[_source].current);
    }
  }
  (WhereTypeIterator.new = function(source) {
    this[_source] = source;
  }).prototype = WhereTypeIterator.prototype;
  dart.addTypeTests(WhereTypeIterator);
  WhereTypeIterator.prototype[_is_WhereTypeIterator_default] = true;
  WhereTypeIterator[dart.implements] = () => [IteratorOfT()];
  dart.setMethodSignature(WhereTypeIterator, () => ({
    __proto__: dart.getMethods(WhereTypeIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(WhereTypeIterator, () => ({
    __proto__: dart.getGetters(WhereTypeIterator.__proto__),
    current: T
  }));
  dart.setFieldSignature(WhereTypeIterator, () => ({
    __proto__: dart.getFields(WhereTypeIterator.__proto__),
    [_source]: dart.finalFieldType(IteratorOfObject())
  }));
  return WhereTypeIterator;
});
_internal.WhereTypeIterator = _internal.WhereTypeIterator$();
dart.addTypeTests(_internal.WhereTypeIterator, _is_WhereTypeIterator_default);
_internal.IterableElementError = class IterableElementError extends core.Object {
  static noElement() {
    return new core.StateError.new("No element");
  }
  static tooMany() {
    return new core.StateError.new("Too many elements");
  }
  static tooFew() {
    return new core.StateError.new("Too few elements");
  }
};
(_internal.IterableElementError.new = function() {
}).prototype = _internal.IterableElementError.prototype;
dart.addTypeTests(_internal.IterableElementError);
const _is_FixedLengthListMixin_default = Symbol('_is_FixedLengthListMixin_default');
_internal.FixedLengthListMixin$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class FixedLengthListMixin extends core.Object {
    set length(newLength) {
      dart.throw(new core.UnsupportedError.new("Cannot change the length of a fixed-length list"));
    }
    add(value) {
      E._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot add to a fixed-length list"));
    }
    insert(index, value) {
      E._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot add to a fixed-length list"));
    }
    insertAll(at, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot add to a fixed-length list"));
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot add to a fixed-length list"));
    }
    remove(element) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
    }
    removeWhere(test) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
    }
    retainWhere(test) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
    }
    clear() {
      dart.throw(new core.UnsupportedError.new("Cannot clear a fixed-length list"));
    }
    removeAt(index) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
    }
    removeLast() {
      dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
    }
    removeRange(start, end) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
    }
    replaceRange(start, end, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot remove from a fixed-length list"));
    }
  }
  (FixedLengthListMixin.new = function() {
  }).prototype = FixedLengthListMixin.prototype;
  dart.addTypeTests(FixedLengthListMixin);
  FixedLengthListMixin.prototype[_is_FixedLengthListMixin_default] = true;
  dart.setMethodSignature(FixedLengthListMixin, () => ({
    __proto__: dart.getMethods(FixedLengthListMixin.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    [$add]: dart.fnType(dart.void, [core.Object]),
    insert: dart.fnType(dart.void, [core.int, core.Object]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    insertAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object]),
    [$remove]: dart.fnType(core.bool, [core.Object]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    removeAt: dart.fnType(E, [core.int]),
    [$removeAt]: dart.fnType(E, [core.int]),
    removeLast: dart.fnType(E, []),
    [$removeLast]: dart.fnType(E, []),
    removeRange: dart.fnType(dart.void, [core.int, core.int]),
    [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
    replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object])
  }));
  dart.setSetterSignature(FixedLengthListMixin, () => ({
    __proto__: dart.getSetters(FixedLengthListMixin.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.defineExtensionMethods(FixedLengthListMixin, [
    'add',
    'insert',
    'insertAll',
    'addAll',
    'remove',
    'removeWhere',
    'retainWhere',
    'clear',
    'removeAt',
    'removeLast',
    'removeRange',
    'replaceRange'
  ]);
  dart.defineExtensionAccessors(FixedLengthListMixin, ['length']);
  return FixedLengthListMixin;
});
_internal.FixedLengthListMixin = _internal.FixedLengthListMixin$();
dart.addTypeTests(_internal.FixedLengthListMixin, _is_FixedLengthListMixin_default);
const _is_FixedLengthListBase_default = Symbol('_is_FixedLengthListBase_default');
_internal.FixedLengthListBase$ = dart.generic(E => {
  const ListBase_FixedLengthListMixin$ = class ListBase_FixedLengthListMixin extends collection.ListBase$(E) {};
  (ListBase_FixedLengthListMixin$.new = function() {
  }).prototype = ListBase_FixedLengthListMixin$.prototype;
  dart.applyMixin(ListBase_FixedLengthListMixin$, _internal.FixedLengthListMixin$(E));
  class FixedLengthListBase extends ListBase_FixedLengthListMixin$ {}
  (FixedLengthListBase.new = function() {
  }).prototype = FixedLengthListBase.prototype;
  dart.addTypeTests(FixedLengthListBase);
  FixedLengthListBase.prototype[_is_FixedLengthListBase_default] = true;
  return FixedLengthListBase;
});
_internal.FixedLengthListBase = _internal.FixedLengthListBase$();
dart.addTypeTests(_internal.FixedLengthListBase, _is_FixedLengthListBase_default);
const _backedList = Symbol('_backedList');
_internal._ListIndicesIterable = class _ListIndicesIterable extends _internal.ListIterable$(core.int) {
  get length() {
    return this[_backedList][$length];
  }
  elementAt(index) {
    core.RangeError.checkValidIndex(index, this);
    return index;
  }
};
(_internal._ListIndicesIterable.new = function(backedList) {
  this[_backedList] = backedList;
  _internal._ListIndicesIterable.__proto__.new.call(this);
}).prototype = _internal._ListIndicesIterable.prototype;
dart.addTypeTests(_internal._ListIndicesIterable);
dart.setMethodSignature(_internal._ListIndicesIterable, () => ({
  __proto__: dart.getMethods(_internal._ListIndicesIterable.__proto__),
  elementAt: dart.fnType(core.int, [core.int]),
  [$elementAt]: dart.fnType(core.int, [core.int])
}));
dart.setGetterSignature(_internal._ListIndicesIterable, () => ({
  __proto__: dart.getGetters(_internal._ListIndicesIterable.__proto__),
  length: core.int,
  [$length]: core.int
}));
dart.setFieldSignature(_internal._ListIndicesIterable, () => ({
  __proto__: dart.getFields(_internal._ListIndicesIterable.__proto__),
  [_backedList]: dart.fieldType(core.List)
}));
dart.defineExtensionMethods(_internal._ListIndicesIterable, ['elementAt']);
dart.defineExtensionAccessors(_internal._ListIndicesIterable, ['length']);
const _values = Symbol('_values');
const _is__UnmodifiableMapMixin_default = Symbol('_is__UnmodifiableMapMixin_default');
collection._UnmodifiableMapMixin$ = dart.generic((K, V) => {
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let MapEntryOfK$V = () => (MapEntryOfK$V = dart.constFn(core.MapEntry$(K, V)))();
  let IterableOfMapEntryOfK$V = () => (IterableOfMapEntryOfK$V = dart.constFn(core.Iterable$(MapEntryOfK$V())))();
  let KAndVToV = () => (KAndVToV = dart.constFn(dart.fnType(V, [K, V])))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
  let VToV = () => (VToV = dart.constFn(dart.fnType(V, [V])))();
  class _UnmodifiableMapMixin extends core.Object {
    _set(key, value) {
      K._check(key);
      V._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
      return value;
    }
    addAll(other) {
      MapOfK$V()._check(other);
      dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
    }
    addEntries(entries) {
      IterableOfMapEntryOfK$V()._check(entries);
      dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
    }
    clear() {
      dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
    }
    remove(key) {
      dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
    }
    removeWhere(test) {
      dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
    }
    update(key, update, opts) {
      K._check(key);
      VToV()._check(update);
      let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
      VoidToV()._check(ifAbsent);
      dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
    }
    updateAll(update) {
      KAndVToV()._check(update);
      dart.throw(new core.UnsupportedError.new("Cannot modify unmodifiable map"));
    }
  }
  (_UnmodifiableMapMixin.new = function() {
  }).prototype = _UnmodifiableMapMixin.prototype;
  _UnmodifiableMapMixin.prototype[dart.isMap] = true;
  dart.addTypeTests(_UnmodifiableMapMixin);
  _UnmodifiableMapMixin.prototype[_is__UnmodifiableMapMixin_default] = true;
  _UnmodifiableMapMixin[dart.implements] = () => [MapOfK$V()];
  dart.setMethodSignature(_UnmodifiableMapMixin, () => ({
    __proto__: dart.getMethods(_UnmodifiableMapMixin.__proto__),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    addEntries: dart.fnType(dart.void, [core.Object]),
    [$addEntries]: dart.fnType(dart.void, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    remove: dart.fnType(V, [core.Object]),
    [$remove]: dart.fnType(V, [core.Object]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
    putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
    update: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
    [$update]: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
    updateAll: dart.fnType(dart.void, [core.Object]),
    [$updateAll]: dart.fnType(dart.void, [core.Object])
  }));
  dart.defineExtensionMethods(_UnmodifiableMapMixin, [
    '_set',
    'addAll',
    'addEntries',
    'clear',
    'remove',
    'removeWhere',
    'putIfAbsent',
    'update',
    'updateAll'
  ]);
  return _UnmodifiableMapMixin;
});
collection._UnmodifiableMapMixin = collection._UnmodifiableMapMixin$();
dart.addTypeTests(collection._UnmodifiableMapMixin, _is__UnmodifiableMapMixin_default);
const _is_UnmodifiableMapBase_default = Symbol('_is_UnmodifiableMapBase_default');
collection.UnmodifiableMapBase$ = dart.generic((K, V) => {
  const MapBase__UnmodifiableMapMixin$ = class MapBase__UnmodifiableMapMixin extends collection.MapBase$(K, V) {};
  (MapBase__UnmodifiableMapMixin$.new = function() {
  }).prototype = MapBase__UnmodifiableMapMixin$.prototype;
  dart.applyMixin(MapBase__UnmodifiableMapMixin$, collection._UnmodifiableMapMixin$(K, V));
  class UnmodifiableMapBase extends MapBase__UnmodifiableMapMixin$ {}
  (UnmodifiableMapBase.new = function() {
  }).prototype = UnmodifiableMapBase.prototype;
  dart.addTypeTests(UnmodifiableMapBase);
  UnmodifiableMapBase.prototype[_is_UnmodifiableMapBase_default] = true;
  return UnmodifiableMapBase;
});
collection.UnmodifiableMapBase = collection.UnmodifiableMapBase$();
dart.addTypeTests(collection.UnmodifiableMapBase, _is_UnmodifiableMapBase_default);
const _is_ListMapView_default = Symbol('_is_ListMapView_default');
_internal.ListMapView$ = dart.generic(E => {
  let SubListIterableOfE = () => (SubListIterableOfE = dart.constFn(_internal.SubListIterable$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  class ListMapView extends collection.UnmodifiableMapBase$(core.int, E) {
    _get(key) {
      return dart.test(this.containsKey(key)) ? this[_values][$_get](core.int._check(key)) : null;
    }
    get length() {
      return this[_values][$length];
    }
    get values() {
      return new (SubListIterableOfE()).new(this[_values], 0, null);
    }
    get keys() {
      return new _internal._ListIndicesIterable.new(this[_values]);
    }
    get isEmpty() {
      return this[_values][$isEmpty];
    }
    get isNotEmpty() {
      return this[_values][$isNotEmpty];
    }
    containsValue(value) {
      return this[_values][$contains](value);
    }
    containsKey(key) {
      return core.int.is(key) && dart.notNull(key) >= 0 && dart.notNull(key) < dart.notNull(this.length);
    }
    forEach(f) {
      let length = this[_values][$length];
      for (let i = 0; i < dart.notNull(length); i++) {
        f(i, this[_values][$_get](i));
        if (length != this[_values][$length]) {
          dart.throw(new core.ConcurrentModificationError.new(this[_values]));
        }
      }
    }
  }
  (ListMapView.new = function(values) {
    this[_values] = values;
  }).prototype = ListMapView.prototype;
  dart.addTypeTests(ListMapView);
  ListMapView.prototype[_is_ListMapView_default] = true;
  dart.setMethodSignature(ListMapView, () => ({
    __proto__: dart.getMethods(ListMapView.__proto__),
    _get: dart.fnType(E, [core.Object]),
    [$_get]: dart.fnType(E, [core.Object]),
    containsValue: dart.fnType(core.bool, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [core.Object]),
    containsKey: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.int, E])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.int, E])])
  }));
  dart.setGetterSignature(ListMapView, () => ({
    __proto__: dart.getGetters(ListMapView.__proto__),
    length: core.int,
    [$length]: core.int,
    values: core.Iterable$(E),
    [$values]: core.Iterable$(E),
    keys: core.Iterable$(core.int),
    [$keys]: core.Iterable$(core.int),
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool
  }));
  dart.setFieldSignature(ListMapView, () => ({
    __proto__: dart.getFields(ListMapView.__proto__),
    [_values]: dart.fieldType(ListOfE())
  }));
  dart.defineExtensionMethods(ListMapView, ['_get', 'containsValue', 'containsKey', 'forEach']);
  dart.defineExtensionAccessors(ListMapView, [
    'length',
    'values',
    'keys',
    'isEmpty',
    'isNotEmpty'
  ]);
  return ListMapView;
});
_internal.ListMapView = _internal.ListMapView$();
dart.addTypeTests(_internal.ListMapView, _is_ListMapView_default);
const _is_ReversedListIterable_default = Symbol('_is_ReversedListIterable_default');
_internal.ReversedListIterable$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class ReversedListIterable extends _internal.ListIterable$(E) {
    get length() {
      return this[_source][$length];
    }
    elementAt(index) {
      return this[_source][$elementAt](dart.notNull(this[_source][$length]) - 1 - dart.notNull(index));
    }
  }
  (ReversedListIterable.new = function(source) {
    this[_source] = source;
    ReversedListIterable.__proto__.new.call(this);
  }).prototype = ReversedListIterable.prototype;
  dart.addTypeTests(ReversedListIterable);
  ReversedListIterable.prototype[_is_ReversedListIterable_default] = true;
  dart.setMethodSignature(ReversedListIterable, () => ({
    __proto__: dart.getMethods(ReversedListIterable.__proto__),
    elementAt: dart.fnType(E, [core.int]),
    [$elementAt]: dart.fnType(E, [core.int])
  }));
  dart.setGetterSignature(ReversedListIterable, () => ({
    __proto__: dart.getGetters(ReversedListIterable.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(ReversedListIterable, () => ({
    __proto__: dart.getFields(ReversedListIterable.__proto__),
    [_source]: dart.fieldType(IterableOfE())
  }));
  dart.defineExtensionMethods(ReversedListIterable, ['elementAt']);
  dart.defineExtensionAccessors(ReversedListIterable, ['length']);
  return ReversedListIterable;
});
_internal.ReversedListIterable = _internal.ReversedListIterable$();
dart.addTypeTests(_internal.ReversedListIterable, _is_ReversedListIterable_default);
_internal.UnmodifiableListError = class UnmodifiableListError extends core.Object {
  static add() {
    return new core.UnsupportedError.new("Cannot add to unmodifiable List");
  }
  static change() {
    return new core.UnsupportedError.new("Cannot change the content of an unmodifiable List");
  }
  static length() {
    return new core.UnsupportedError.new("Cannot change length of unmodifiable List");
  }
  static remove() {
    return new core.UnsupportedError.new("Cannot remove from unmodifiable List");
  }
};
(_internal.UnmodifiableListError.new = function() {
}).prototype = _internal.UnmodifiableListError.prototype;
dart.addTypeTests(_internal.UnmodifiableListError);
_internal.NonGrowableListError = class NonGrowableListError extends core.Object {
  static add() {
    return new core.UnsupportedError.new("Cannot add to non-growable List");
  }
  static length() {
    return new core.UnsupportedError.new("Cannot change length of non-growable List");
  }
  static remove() {
    return new core.UnsupportedError.new("Cannot remove from non-growable List");
  }
};
(_internal.NonGrowableListError.new = function() {
}).prototype = _internal.NonGrowableListError.prototype;
dart.addTypeTests(_internal.NonGrowableListError);
_internal.makeListFixedLength = function(E, growableList) {
  _interceptors.JSArray.markFixedList(growableList);
  return growableList;
};
_internal.makeFixedListUnmodifiable = function(E, fixedLengthList) {
  _interceptors.JSArray.markUnmodifiableList(fixedLengthList);
  return fixedLengthList;
};
dart.defineLazy(_internal, {
  /*_internal.printToZone*/get printToZone() {
    return null;
  },
  set printToZone(_) {}
});
_internal.printToConsole = function(line) {
  _js_primitives.printString(dart.str(line));
};
_internal.Sort = class Sort extends core.Object {
  static sort(E, a, compare) {
    _internal.Sort._doSort(E, a, 0, dart.notNull(a[$length]) - 1, compare);
  }
  static sortRange(E, a, from, to, compare) {
    if (dart.notNull(from) < 0 || dart.notNull(to) > dart.notNull(a[$length]) || dart.notNull(to) < dart.notNull(from)) {
      dart.throw("OutOfRange");
    }
    _internal.Sort._doSort(E, a, from, dart.notNull(to) - 1, compare);
  }
  static _doSort(E, a, left, right, compare) {
    if (dart.notNull(right) - dart.notNull(left) <= 32) {
      _internal.Sort._insertionSort(E, a, left, right, compare);
    } else {
      _internal.Sort._dualPivotQuicksort(E, a, left, right, compare);
    }
  }
  static _insertionSort(E, a, left, right, compare) {
    for (let i = dart.notNull(left) + 1; i <= dart.notNull(right); i++) {
      let el = a[$_get](i);
      let j = i;
      while (j > dart.notNull(left) && dart.notNull(compare(a[$_get](j - 1), el)) > 0) {
        a[$_set](j, a[$_get](j - 1));
        j--;
      }
      a[$_set](j, el);
    }
  }
  static _dualPivotQuicksort(E, a, left, right, compare) {
    if (!(dart.notNull(right) - dart.notNull(left) > 32)) dart.assertFailed();
    let sixth = ((dart.notNull(right) - dart.notNull(left) + 1) / 6)[$truncate]();
    let index1 = dart.notNull(left) + sixth;
    let index5 = dart.notNull(right) - sixth;
    let index3 = ((dart.notNull(left) + dart.notNull(right)) / 2)[$truncate]();
    let index2 = index3 - sixth;
    let index4 = index3 + sixth;
    let el1 = a[$_get](index1);
    let el2 = a[$_get](index2);
    let el3 = a[$_get](index3);
    let el4 = a[$_get](index4);
    let el5 = a[$_get](index5);
    if (dart.notNull(compare(el1, el2)) > 0) {
      let t = el1;
      el1 = el2;
      el2 = t;
    }
    if (dart.notNull(compare(el4, el5)) > 0) {
      let t = el4;
      el4 = el5;
      el5 = t;
    }
    if (dart.notNull(compare(el1, el3)) > 0) {
      let t = el1;
      el1 = el3;
      el3 = t;
    }
    if (dart.notNull(compare(el2, el3)) > 0) {
      let t = el2;
      el2 = el3;
      el3 = t;
    }
    if (dart.notNull(compare(el1, el4)) > 0) {
      let t = el1;
      el1 = el4;
      el4 = t;
    }
    if (dart.notNull(compare(el3, el4)) > 0) {
      let t = el3;
      el3 = el4;
      el4 = t;
    }
    if (dart.notNull(compare(el2, el5)) > 0) {
      let t = el2;
      el2 = el5;
      el5 = t;
    }
    if (dart.notNull(compare(el2, el3)) > 0) {
      let t = el2;
      el2 = el3;
      el3 = t;
    }
    if (dart.notNull(compare(el4, el5)) > 0) {
      let t = el4;
      el4 = el5;
      el5 = t;
    }
    let pivot1 = el2;
    let pivot2 = el4;
    a[$_set](index1, el1);
    a[$_set](index3, el3);
    a[$_set](index5, el5);
    a[$_set](index2, a[$_get](left));
    a[$_set](index4, a[$_get](right));
    let less = dart.notNull(left) + 1;
    let great = dart.notNull(right) - 1;
    let pivots_are_equal = compare(pivot1, pivot2) === 0;
    if (pivots_are_equal) {
      let pivot = pivot1;
      for (let k = less; k <= great; k++) {
        let ak = a[$_get](k);
        let comp = compare(ak, pivot);
        if (comp === 0) continue;
        if (dart.notNull(comp) < 0) {
          if (k !== less) {
            a[$_set](k, a[$_get](less));
            a[$_set](less, ak);
          }
          less++;
        } else {
          while (true) {
            comp = compare(a[$_get](great), pivot);
            if (dart.notNull(comp) > 0) {
              great--;
              continue;
            } else if (dart.notNull(comp) < 0) {
              a[$_set](k, a[$_get](less));
              a[$_set](less++, a[$_get](great));
              a[$_set](great--, ak);
              break;
            } else {
              a[$_set](k, a[$_get](great));
              a[$_set](great--, ak);
              break;
            }
          }
        }
      }
    } else {
      for (let k = less; k <= great; k++) {
        let ak = a[$_get](k);
        let comp_pivot1 = compare(ak, pivot1);
        if (dart.notNull(comp_pivot1) < 0) {
          if (k !== less) {
            a[$_set](k, a[$_get](less));
            a[$_set](less, ak);
          }
          less++;
        } else {
          let comp_pivot2 = compare(ak, pivot2);
          if (dart.notNull(comp_pivot2) > 0) {
            while (true) {
              let comp = compare(a[$_get](great), pivot2);
              if (dart.notNull(comp) > 0) {
                great--;
                if (great < k) break;
                continue;
              } else {
                comp = compare(a[$_get](great), pivot1);
                if (dart.notNull(comp) < 0) {
                  a[$_set](k, a[$_get](less));
                  a[$_set](less++, a[$_get](great));
                  a[$_set](great--, ak);
                } else {
                  a[$_set](k, a[$_get](great));
                  a[$_set](great--, ak);
                }
                break;
              }
            }
          }
        }
      }
    }
    a[$_set](left, a[$_get](less - 1));
    a[$_set](less - 1, pivot1);
    a[$_set](right, a[$_get](great + 1));
    a[$_set](great + 1, pivot2);
    _internal.Sort._doSort(E, a, left, less - 2, compare);
    _internal.Sort._doSort(E, a, great + 2, right, compare);
    if (pivots_are_equal) {
      return;
    }
    if (less < index1 && great > index5) {
      while (compare(a[$_get](less), pivot1) === 0) {
        less++;
      }
      while (compare(a[$_get](great), pivot2) === 0) {
        great--;
      }
      for (let k = less; k <= great; k++) {
        let ak = a[$_get](k);
        let comp_pivot1 = compare(ak, pivot1);
        if (comp_pivot1 === 0) {
          if (k !== less) {
            a[$_set](k, a[$_get](less));
            a[$_set](less, ak);
          }
          less++;
        } else {
          let comp_pivot2 = compare(ak, pivot2);
          if (comp_pivot2 === 0) {
            while (true) {
              let comp = compare(a[$_get](great), pivot2);
              if (comp === 0) {
                great--;
                if (great < k) break;
                continue;
              } else {
                comp = compare(a[$_get](great), pivot1);
                if (dart.notNull(comp) < 0) {
                  a[$_set](k, a[$_get](less));
                  a[$_set](less++, a[$_get](great));
                  a[$_set](great--, ak);
                } else {
                  a[$_set](k, a[$_get](great));
                  a[$_set](great--, ak);
                }
                break;
              }
            }
          }
        }
      }
      _internal.Sort._doSort(E, a, less, great, compare);
    } else {
      _internal.Sort._doSort(E, a, less, great, compare);
    }
  }
};
(_internal.Sort.new = function() {
}).prototype = _internal.Sort.prototype;
dart.addTypeTests(_internal.Sort);
dart.defineLazy(_internal.Sort, {
  /*_internal.Sort._INSERTION_SORT_THRESHOLD*/get _INSERTION_SORT_THRESHOLD() {
    return 32;
  }
});
const _name = Symbol('_name');
_internal.Symbol = class Symbol extends core.Object {
  _equals(other) {
    return _internal.Symbol.is(other) && this[_name] == other[_name];
  }
  get hashCode() {
    let hash = this._hashCode;
    if (hash != null) return hash;
    let arbitraryPrime = 664597;
    hash = 536870911 & arbitraryPrime * dart.hashCode(this[_name]);
    this._hashCode = hash;
    return hash;
  }
  toString() {
    return "Symbol(\"" + dart.str(this[_name]) + "\")";
  }
  static getName(symbol) {
    return symbol[_name];
  }
  static validatePublicSymbol(name) {
    if (name[$isEmpty] || dart.test(_internal.Symbol.publicSymbolPattern.hasMatch(name))) return name;
    if (name[$startsWith]("_")) {
      dart.throw(new core.ArgumentError.new("\"" + dart.str(name) + "\" is a private identifier"));
    }
    dart.throw(new core.ArgumentError.new("\"" + dart.str(name) + "\" is not a valid (qualified) symbol name"));
  }
  static isValidSymbol(name) {
    return name[$isEmpty] || dart.test(_internal.Symbol.symbolPattern.hasMatch(name));
  }
  static computeUnmangledName(symbol) {
    return symbol[_name];
  }
};
(_internal.Symbol.new = function(name) {
  this[_name] = name;
}).prototype = _internal.Symbol.prototype;
(_internal.Symbol.unvalidated = function(name) {
  this[_name] = name;
}).prototype = _internal.Symbol.prototype;
(_internal.Symbol.validated = function(name) {
  this[_name] = _internal.Symbol.validatePublicSymbol(name);
}).prototype = _internal.Symbol.prototype;
dart.addTypeTests(_internal.Symbol);
_internal.Symbol[dart.implements] = () => [core.Symbol];
dart.setFieldSignature(_internal.Symbol, () => ({
  __proto__: dart.getFields(_internal.Symbol.__proto__),
  [_name]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(_internal.Symbol, ['_equals', 'toString']);
dart.defineExtensionAccessors(_internal.Symbol, ['hashCode']);
dart.defineLazy(_internal.Symbol, {
  /*_internal.Symbol.reservedWordRE*/get reservedWordRE() {
    return "(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|" + "e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|" + "ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|" + "v(?:ar|oid)|w(?:hile|ith))";
  },
  /*_internal.Symbol.publicIdentifierRE*/get publicIdentifierRE() {
    return "(?!" + "(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|v(?:ar|oid)|w(?:hile|ith))" + "\\b(?!\\$))[a-zA-Z$][\\w$]*";
  },
  /*_internal.Symbol.identifierRE*/get identifierRE() {
    return "(?!" + "(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|v(?:ar|oid)|w(?:hile|ith))" + "\\b(?!\\$))[a-zA-Z$_][\\w$]*";
  },
  /*_internal.Symbol.operatorRE*/get operatorRE() {
    return "(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)";
  },
  /*_internal.Symbol.publicSymbolPattern*/get publicSymbolPattern() {
    return core.RegExp.new("^(?:" + "(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)" + "$|" + "(?!(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|v(?:ar|oid)|w(?:hile|ith))\\b(?!\\$))[a-zA-Z$][\\w$]*" + "(?:=?$|[.](?!$)))+?$");
  },
  /*_internal.Symbol.symbolPattern*/get symbolPattern() {
    return core.RegExp.new("^(?:" + "(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)" + "$|" + "(?!(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|v(?:ar|oid)|w(?:hile|ith))\\b(?!\\$))[a-zA-Z$_][\\w$]*" + "(?:=?$|[.](?!$)))+?$");
  }
});
const _next = Symbol('_next');
const _previous = Symbol('_previous');
const _list = Symbol('_list');
const _is_IterableBase_default = Symbol('_is_IterableBase_default');
collection.IterableBase$ = dart.generic(E => {
  class IterableBase extends core.Iterable$(E) {
    static iterableToShortString(iterable, leftDelimiter, rightDelimiter) {
      if (leftDelimiter === void 0) leftDelimiter = "(";
      if (rightDelimiter === void 0) rightDelimiter = ")";
      if (dart.test(collection._isToStringVisiting(iterable))) {
        if (leftDelimiter === "(" && rightDelimiter === ")") {
          return "(...)";
        }
        return dart.str(leftDelimiter) + "..." + dart.str(rightDelimiter);
      }
      let parts = JSArrayOfString().of([]);
      collection._toStringVisiting[$add](iterable);
      try {
        collection._iterablePartsToStrings(iterable, parts);
      } finally {
        if (!core.identical(collection._toStringVisiting[$last], iterable)) dart.assertFailed();
        collection._toStringVisiting[$removeLast]();
      }
      return (() => {
        let _ = new core.StringBuffer.new(leftDelimiter);
        _.writeAll(parts, ", ");
        _.write(rightDelimiter);
        return _;
      })().toString();
    }
    static iterableToFullString(iterable, leftDelimiter, rightDelimiter) {
      if (leftDelimiter === void 0) leftDelimiter = "(";
      if (rightDelimiter === void 0) rightDelimiter = ")";
      if (dart.test(collection._isToStringVisiting(iterable))) {
        return dart.str(leftDelimiter) + "..." + dart.str(rightDelimiter);
      }
      let buffer = new core.StringBuffer.new(leftDelimiter);
      collection._toStringVisiting[$add](iterable);
      try {
        buffer.writeAll(iterable, ", ");
      } finally {
        if (!core.identical(collection._toStringVisiting[$last], iterable)) dart.assertFailed();
        collection._toStringVisiting[$removeLast]();
      }
      buffer.write(rightDelimiter);
      return buffer.toString();
    }
  }
  (IterableBase.new = function() {
    IterableBase.__proto__.new.call(this);
  }).prototype = IterableBase.prototype;
  dart.addTypeTests(IterableBase);
  IterableBase.prototype[_is_IterableBase_default] = true;
  return IterableBase;
});
collection.IterableBase = collection.IterableBase$();
dart.addTypeTests(collection.IterableBase, _is_IterableBase_default);
const _is_LinkedList_default = Symbol('_is_LinkedList_default');
_internal.LinkedList$ = dart.generic(T => {
  let _LinkedListIteratorOfT = () => (_LinkedListIteratorOfT = dart.constFn(_internal._LinkedListIterator$(T)))();
  class LinkedList extends collection.IterableBase$(T) {
    get first() {
      return this[first];
    }
    set first(value) {
      this[first] = T._check(value);
    }
    get last() {
      return this[last];
    }
    set last(value) {
      this[last] = T._check(value);
    }
    get length() {
      return this[length];
    }
    set length(value) {
      this[length] = value;
    }
    get isEmpty() {
      return this.length === 0;
    }
    add(newLast) {
      T._check(newLast);
      if (!(newLast[_next] == null && newLast[_previous] == null)) dart.assertFailed();
      if (this.last != null) {
        if (!(this.last[_next] == null)) dart.assertFailed();
        this.last[_next] = newLast;
      } else {
        this.first = newLast;
      }
      newLast[_previous] = this.last;
      this.last = newLast;
      this.last[_list] = this;
      this.length = dart.notNull(this.length) + 1;
    }
    addFirst(newFirst) {
      T._check(newFirst);
      if (this.first != null) {
        if (!(this.first[_previous] == null)) dart.assertFailed();
        this.first[_previous] = newFirst;
      } else {
        this.last = newFirst;
      }
      newFirst[_next] = this.first;
      this.first = newFirst;
      this.first[_list] = this;
      this.length = dart.notNull(this.length) + 1;
    }
    remove(node) {
      T._check(node);
      if (!dart.equals(node[_list], this)) return;
      this.length = dart.notNull(this.length) - 1;
      if (node[_previous] == null) {
        if (!(node == this.first)) dart.assertFailed();
        this.first = node[_next];
      } else {
        node[_previous][_next] = node[_next];
      }
      if (node[_next] == null) {
        if (!(node == this.last)) dart.assertFailed();
        this.last = node[_previous];
      } else {
        node[_next][_previous] = node[_previous];
      }
      node[_next] = node[_previous] = null;
      node[_list] = null;
    }
    get iterator() {
      return new (_LinkedListIteratorOfT()).new(this);
    }
  }
  (LinkedList.new = function() {
    this[first] = null;
    this[last] = null;
    this[length] = 0;
    LinkedList.__proto__.new.call(this);
  }).prototype = LinkedList.prototype;
  dart.addTypeTests(LinkedList);
  LinkedList.prototype[_is_LinkedList_default] = true;
  const first = Symbol("LinkedList.first");
  const last = Symbol("LinkedList.last");
  const length = Symbol("LinkedList.length");
  dart.setMethodSignature(LinkedList, () => ({
    __proto__: dart.getMethods(LinkedList.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addFirst: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(dart.void, [core.Object])
  }));
  dart.setGetterSignature(LinkedList, () => ({
    __proto__: dart.getGetters(LinkedList.__proto__),
    iterator: core.Iterator$(T),
    [$iterator]: core.Iterator$(T)
  }));
  dart.setFieldSignature(LinkedList, () => ({
    __proto__: dart.getFields(LinkedList.__proto__),
    first: dart.fieldType(T),
    last: dart.fieldType(T),
    length: dart.fieldType(core.int)
  }));
  dart.defineExtensionAccessors(LinkedList, [
    'isEmpty',
    'iterator',
    'first',
    'last',
    'length'
  ]);
  return LinkedList;
});
_internal.LinkedList = _internal.LinkedList$();
dart.addTypeTests(_internal.LinkedList, _is_LinkedList_default);
const _is_LinkedListEntry_default = Symbol('_is_LinkedListEntry_default');
_internal.LinkedListEntry$ = dart.generic(T => {
  let LinkedListOfT = () => (LinkedListOfT = dart.constFn(_internal.LinkedList$(T)))();
  class LinkedListEntry extends core.Object {
    unlink() {
      if (this[_list] == null) return;
      this[_list].remove(T._check(this));
    }
  }
  (LinkedListEntry.new = function() {
    this[_next] = null;
    this[_previous] = null;
    this[_list] = null;
  }).prototype = LinkedListEntry.prototype;
  dart.addTypeTests(LinkedListEntry);
  LinkedListEntry.prototype[_is_LinkedListEntry_default] = true;
  dart.setMethodSignature(LinkedListEntry, () => ({
    __proto__: dart.getMethods(LinkedListEntry.__proto__),
    unlink: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(LinkedListEntry, () => ({
    __proto__: dart.getFields(LinkedListEntry.__proto__),
    [_next]: dart.fieldType(T),
    [_previous]: dart.fieldType(T),
    [_list]: dart.fieldType(LinkedListOfT())
  }));
  return LinkedListEntry;
});
_internal.LinkedListEntry = _internal.LinkedListEntry$();
dart.addTypeTests(_internal.LinkedListEntry, _is_LinkedListEntry_default);
const _is__LinkedListIterator_default = Symbol('_is__LinkedListIterator_default');
_internal._LinkedListIterator$ = dart.generic(T => {
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  let LinkedListOfT = () => (LinkedListOfT = dart.constFn(_internal.LinkedList$(T)))();
  class _LinkedListIterator extends core.Object {
    moveNext() {
      if (this.current == null) {
        if (this[_list] == null) return false;
        if (!(dart.notNull(this[_list].length) > 0)) dart.assertFailed();
        this.current = this[_list].first;
        this[_list] = null;
        return true;
      }
      this.current = this.current[_next];
      return this.current != null;
    }
  }
  (_LinkedListIterator.new = function(list) {
    this.current = null;
    this[_list] = list;
    if (this[_list].length === 0) this[_list] = null;
  }).prototype = _LinkedListIterator.prototype;
  dart.addTypeTests(_LinkedListIterator);
  _LinkedListIterator.prototype[_is__LinkedListIterator_default] = true;
  _LinkedListIterator[dart.implements] = () => [IteratorOfT()];
  dart.setMethodSignature(_LinkedListIterator, () => ({
    __proto__: dart.getMethods(_LinkedListIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setFieldSignature(_LinkedListIterator, () => ({
    __proto__: dart.getFields(_LinkedListIterator.__proto__),
    current: dart.fieldType(T),
    [_list]: dart.fieldType(LinkedListOfT())
  }));
  return _LinkedListIterator;
});
_internal._LinkedListIterator = _internal._LinkedListIterator$();
dart.addTypeTests(_internal._LinkedListIterator, _is__LinkedListIterator_default);
_isolate_helper.startRootIsolate = function(main, args) {
  if (args == null) args = JSArrayOfString().of([]);
  if (core.List.is(args)) {
    if (!ListOfString().is(args)) args = ListOfString().from(core.Iterable._check(args));
    if (typeof main == "function") {
      main(args, null);
    } else {
      dart.dcall(main, [args]);
    }
  } else {
    dart.throw(new core.ArgumentError.new("Arguments to main must be a List: " + dart.str(args)));
  }
};
dart.defineLazy(_isolate_helper, {
  /*_isolate_helper.global*/get global() {
    return dart.global;
  }
});
const _once = Symbol('_once');
const _handle = Symbol('_handle');
const _tick = Symbol('_tick');
_isolate_helper.TimerImpl = class TimerImpl extends core.Object {
  get tick() {
    return this[_tick];
  }
  cancel() {
    if (dart.test(_isolate_helper.hasTimer())) {
      if (this[_handle] == null) return;
      dart.removeAsyncCallback();
      if (dart.test(this[_once])) {
        _isolate_helper.global.clearTimeout(this[_handle]);
      } else {
        _isolate_helper.global.clearInterval(this[_handle]);
      }
      this[_handle] = null;
    } else {
      dart.throw(new core.UnsupportedError.new("Canceling a timer."));
    }
  }
  get isActive() {
    return this[_handle] != null;
  }
};
(_isolate_helper.TimerImpl.new = function(milliseconds, callback) {
  this[_handle] = null;
  this[_tick] = 0;
  this[_once] = true;
  if (dart.test(_isolate_helper.hasTimer())) {
    const internalCallback = (function() {
      this[_handle] = null;
      dart.removeAsyncCallback();
      this[_tick] = 1;
      callback();
    }).bind(this);
    dart.fn(internalCallback, VoidTovoid());
    dart.addAsyncCallback();
    this[_handle] = _isolate_helper.global.setTimeout(internalCallback, milliseconds);
  } else {
    dart.throw(new core.UnsupportedError.new("`setTimeout()` not found."));
  }
}).prototype = _isolate_helper.TimerImpl.prototype;
(_isolate_helper.TimerImpl.periodic = function(milliseconds, callback) {
  this[_handle] = null;
  this[_tick] = 0;
  this[_once] = false;
  if (dart.test(_isolate_helper.hasTimer())) {
    dart.addAsyncCallback();
    let start = Date.now();
    this[_handle] = _isolate_helper.global.setInterval(dart.fn(() => {
      let tick = dart.notNull(this[_tick]) + 1;
      if (dart.notNull(milliseconds) > 0) {
        let duration = Date.now() - start;
        if (duration > (tick + 1) * dart.notNull(milliseconds)) {
          tick = (duration / dart.notNull(milliseconds))[$truncate]();
        }
      }
      this[_tick] = tick;
      callback(this);
    }, VoidToNull()), milliseconds);
  } else {
    dart.throw(new core.UnsupportedError.new("Periodic timer."));
  }
}).prototype = _isolate_helper.TimerImpl.prototype;
dart.addTypeTests(_isolate_helper.TimerImpl);
_isolate_helper.TimerImpl[dart.implements] = () => [async.Timer];
dart.setMethodSignature(_isolate_helper.TimerImpl, () => ({
  __proto__: dart.getMethods(_isolate_helper.TimerImpl.__proto__),
  cancel: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(_isolate_helper.TimerImpl, () => ({
  __proto__: dart.getGetters(_isolate_helper.TimerImpl.__proto__),
  tick: core.int,
  isActive: core.bool
}));
dart.setFieldSignature(_isolate_helper.TimerImpl, () => ({
  __proto__: dart.getFields(_isolate_helper.TimerImpl.__proto__),
  [_once]: dart.finalFieldType(core.bool),
  [_handle]: dart.fieldType(core.int),
  [_tick]: dart.fieldType(core.int)
}));
_isolate_helper.hasTimer = function() {
  return _isolate_helper.global.setTimeout != null;
};
_js_helper._Patch = class _Patch extends core.Object {};
(_js_helper._Patch.new = function() {
}).prototype = _js_helper._Patch.prototype;
dart.addTypeTests(_js_helper._Patch);
dart.defineLazy(_js_helper, {
  /*_js_helper.patch*/get patch() {
    return dart.const(new _js_helper._Patch.new());
  }
});
const _jsIterator = Symbol('_jsIterator');
const _current$0 = Symbol('_current');
const _is_DartIterator_default = Symbol('_is_DartIterator_default');
_js_helper.DartIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class DartIterator extends core.Object {
    get current() {
      return this[_current$0];
    }
    moveNext() {
      let ret = this[_jsIterator].next();
      this[_current$0] = ret.value;
      return !ret.done;
    }
  }
  (DartIterator.new = function(jsIterator) {
    this[_current$0] = null;
    this[_jsIterator] = jsIterator;
  }).prototype = DartIterator.prototype;
  dart.addTypeTests(DartIterator);
  DartIterator.prototype[_is_DartIterator_default] = true;
  DartIterator[dart.implements] = () => [IteratorOfE()];
  dart.setMethodSignature(DartIterator, () => ({
    __proto__: dart.getMethods(DartIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(DartIterator, () => ({
    __proto__: dart.getGetters(DartIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(DartIterator, () => ({
    __proto__: dart.getFields(DartIterator.__proto__),
    [_jsIterator]: dart.finalFieldType(dart.dynamic),
    [_current$0]: dart.fieldType(E)
  }));
  return DartIterator;
});
_js_helper.DartIterator = _js_helper.DartIterator$();
dart.addTypeTests(_js_helper.DartIterator, _is_DartIterator_default);
const _initGenerator = Symbol('_initGenerator');
const _is_SyncIterable_default = Symbol('_is_SyncIterable_default');
_js_helper.SyncIterable$ = dart.generic(E => {
  let DartIteratorOfE = () => (DartIteratorOfE = dart.constFn(_js_helper.DartIterator$(E)))();
  class SyncIterable extends collection.IterableBase$(E) {
    [Symbol.iterator]() {
      return this[_initGenerator]();
    }
    get iterator() {
      return new (DartIteratorOfE()).new(this[_initGenerator]());
    }
  }
  (SyncIterable.new = function(initGenerator) {
    this[_initGenerator] = initGenerator;
    SyncIterable.__proto__.new.call(this);
  }).prototype = SyncIterable.prototype;
  dart.addTypeTests(SyncIterable);
  SyncIterable.prototype[_is_SyncIterable_default] = true;
  dart.setMethodSignature(SyncIterable, () => ({
    __proto__: dart.getMethods(SyncIterable.__proto__),
    [Symbol.iterator]: dart.fnType(dart.dynamic, [])
  }));
  dart.setGetterSignature(SyncIterable, () => ({
    __proto__: dart.getGetters(SyncIterable.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.setFieldSignature(SyncIterable, () => ({
    __proto__: dart.getFields(SyncIterable.__proto__),
    [_initGenerator]: dart.finalFieldType(VoidTodynamic())
  }));
  dart.defineExtensionAccessors(SyncIterable, ['iterator']);
  return SyncIterable;
});
_js_helper.SyncIterable = _js_helper.SyncIterable$();
dart.addTypeTests(_js_helper.SyncIterable, _is_SyncIterable_default);
_js_helper.Primitives = class Primitives extends core.Object {
  static _parseIntError(source, handleError) {
    if (handleError == null) dart.throw(new core.FormatException.new(source));
    return handleError(source);
  }
  static parseInt(source, _radix, handleError) {
    if (source == null) dart.argumentError(source);
    let re = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i;
    let match = re.exec(source);
    let digitsIndex = 1;
    let hexIndex = 2;
    let decimalIndex = 3;
    if (match == null) {
      return _js_helper.Primitives._parseIntError(source, handleError);
    }
    let decimalMatch = match[$_get](decimalIndex);
    if (_radix == null) {
      if (decimalMatch != null) {
        return parseInt(source, 10);
      }
      if (match[$_get](hexIndex) != null) {
        return parseInt(source, 16);
      }
      return _js_helper.Primitives._parseIntError(source, handleError);
    }
    let radix = _radix;
    if (radix < 2 || radix > 36) {
      dart.throw(new core.RangeError.range(radix, 2, 36, "radix"));
    }
    if (radix === 10 && decimalMatch != null) {
      return parseInt(source, 10);
    }
    if (radix < 10 || decimalMatch == null) {
      let maxCharCode = null;
      if (radix <= 10) {
        maxCharCode = 48 - 1 + radix;
      } else {
        maxCharCode = 97 - 10 - 1 + radix;
      }
      if (!(typeof match[$_get](digitsIndex) == 'string')) dart.assertFailed();
      let digitsPart = match[digitsIndex];
      for (let i = 0; i < digitsPart.length; i++) {
        let characterCode = (digitsPart[$codeUnitAt](i) | 32) >>> 0;
        if (characterCode > dart.notNull(maxCharCode)) {
          return _js_helper.Primitives._parseIntError(source, handleError);
        }
      }
    }
    return parseInt(source, radix);
  }
  static _parseDoubleError(source, handleError) {
    if (handleError == null) {
      dart.throw(new core.FormatException.new("Invalid double", source));
    }
    return handleError(source);
  }
  static parseDouble(source, handleError) {
    if (source == null) dart.argumentError(source);
    if (!/^\s*[+-]?(?:Infinity|NaN|(?:\.\d+|\d+(?:\.\d*)?)(?:[eE][+-]?\d+)?)\s*$/.test(source)) {
      return _js_helper.Primitives._parseDoubleError(source, handleError);
    }
    let result = parseFloat(source);
    if (result[$isNaN]) {
      let trimmed = source[$trim]();
      if (trimmed === "NaN" || trimmed === "+NaN" || trimmed === "-NaN") {
        return result;
      }
      return _js_helper.Primitives._parseDoubleError(source, handleError);
    }
    return result;
  }
  static dateNow() {
    return Date.now();
  }
  static initTicker() {
    if (_js_helper.Primitives.timerFrequency != null) return;
    _js_helper.Primitives.timerFrequency = 1000;
    _js_helper.Primitives.timerTicks = dart.fn(_js_helper.Primitives.dateNow, VoidToint());
    if (typeof window == "undefined") return;
    let jsWindow = window;
    if (jsWindow == null) return;
    let performance = jsWindow.performance;
    if (performance == null) return;
    if (typeof performance.now != "function") return;
    _js_helper.Primitives.timerFrequency = 1000000;
    _js_helper.Primitives.timerTicks = dart.fn(() => (1000 * performance.now())[$floor](), VoidToint());
  }
  static get isD8() {
    return typeof version == "function" && typeof os == "object" && "system" in os;
  }
  static get isJsshell() {
    return typeof version == "function" && typeof system == "function";
  }
  static currentUri() {
    if (!!dart.global.location) {
      return dart.global.location.href;
    }
    return "";
  }
  static _fromCharCodeApply(array) {
    let kMaxApply = 500;
    let end = dart.notNull(array[$length]);
    if (end <= kMaxApply) {
      return String.fromCharCode.apply(null, array);
    }
    let result = "";
    for (let i = 0; i < end; i = i + kMaxApply) {
      let chunkEnd = i + kMaxApply < end ? i + kMaxApply : end;
      result = result + String.fromCharCode.apply(null, array.slice(i, chunkEnd));
    }
    return result;
  }
  static stringFromCodePoints(codePoints) {
    let a = JSArrayOfint().of([]);
    for (let i of codePoints) {
      if (i == null) dart.argumentError(i);
      {
        if (i <= 65535) {
          a[$add](i);
        } else if (i <= 1114111) {
          a[$add](55296 + (i - 65536 >> 10 & 1023));
          a[$add](56320 + (i & 1023));
        } else {
          dart.throw(_js_helper.argumentErrorValue(i));
        }
      }
    }
    return _js_helper.Primitives._fromCharCodeApply(a);
  }
  static stringFromCharCodes(charCodes) {
    for (let i of charCodes) {
      if (i == null) dart.argumentError(i);
      {
        if (i < 0) dart.throw(_js_helper.argumentErrorValue(i));
        if (i > 65535) return _js_helper.Primitives.stringFromCodePoints(charCodes);
      }
    }
    return _js_helper.Primitives._fromCharCodeApply(charCodes);
  }
  static stringFromNativeUint8List(charCodes, start, end) {
    if (start == null) dart.argumentError(start);
    if (end == null) dart.argumentError(end);
    let kMaxApply = 500;
    if (end <= kMaxApply && start === 0 && end === charCodes[$length]) {
      return String.fromCharCode.apply(null, charCodes);
    }
    let result = "";
    for (let i = start; i < end; i = i + kMaxApply) {
      let chunkEnd = i + kMaxApply < end ? i + kMaxApply : end;
      result = result + String.fromCharCode.apply(null, charCodes.subarray(i, chunkEnd));
    }
    return result;
  }
  static stringFromCharCode(charCode) {
    if (charCode == null) dart.argumentError(charCode);
    if (0 <= charCode) {
      if (charCode <= 65535) {
        return String.fromCharCode(charCode);
      }
      if (charCode <= 1114111) {
        let bits = charCode - 65536;
        let low = 56320 | bits & 1023;
        let high = (55296 | bits[$rightShift](10)) >>> 0;
        return String.fromCharCode(high, low);
      }
    }
    dart.throw(new core.RangeError.range(charCode, 0, 1114111));
  }
  static stringConcatUnchecked(string1, string2) {
    return _foreign_helper.JS_STRING_CONCAT(string1, string2);
  }
  static flattenString(str) {
    return str.charCodeAt(0) == 0 ? str : str;
  }
  static getTimeZoneName(receiver) {
    let d = _js_helper.Primitives.lazyAsJsDate(receiver);
    let match = /\((.*)\)/.exec(d.toString());
    if (match != null) return core.String._check(match[$_get](1));
    match = /^[A-Z,a-z]{3}\s[A-Z,a-z]{3}\s\d+\s\d{2}:\d{2}:\d{2}\s([A-Z]{3,5})\s\d{4}$/.exec(d.toString());
    if (match != null) return core.String._check(match[$_get](1));
    match = /(?:GMT|UTC)[+-]\d{4}/.exec(d.toString());
    if (match != null) return core.String._check(match[$_get](0));
    return "";
  }
  static getTimeZoneOffsetInMinutes(receiver) {
    return -_js_helper.Primitives.lazyAsJsDate(receiver).getTimezoneOffset();
  }
  static valueFromDecomposedDate(years, month, day, hours, minutes, seconds, milliseconds, isUtc) {
    if (years == null) dart.argumentError(years);
    if (month == null) dart.argumentError(month);
    if (day == null) dart.argumentError(day);
    if (hours == null) dart.argumentError(hours);
    if (minutes == null) dart.argumentError(minutes);
    if (seconds == null) dart.argumentError(seconds);
    if (milliseconds == null) dart.argumentError(milliseconds);
    if (isUtc == null) dart.argumentError(isUtc);
    let MAX_MILLISECONDS_SINCE_EPOCH = 8640000000000000;
    let jsMonth = month - 1;
    let value = null;
    if (isUtc) {
      value = Date.UTC(years, jsMonth, day, hours, minutes, seconds, milliseconds);
    } else {
      value = new Date(years, jsMonth, day, hours, minutes, seconds, milliseconds).valueOf();
    }
    if (value[$isNaN] || dart.notNull(value) < -MAX_MILLISECONDS_SINCE_EPOCH || dart.notNull(value) > MAX_MILLISECONDS_SINCE_EPOCH) {
      return null;
    }
    if (years <= 0 || years < 100) return _js_helper.Primitives.patchUpY2K(value, years, isUtc);
    return value;
  }
  static patchUpY2K(value, years, isUtc) {
    let date = new Date(value);
    if (dart.dtest(isUtc)) {
      date.setUTCFullYear(years);
    } else {
      date.setFullYear(years);
    }
    return date.valueOf();
  }
  static lazyAsJsDate(receiver) {
    if (receiver.date === void 0) {
      receiver.date = new Date(receiver.millisecondsSinceEpoch);
    }
    return receiver.date;
  }
  static getYear(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCFullYear() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getFullYear() + 0;
  }
  static getMonth(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCMonth() + 1 : _js_helper.Primitives.lazyAsJsDate(receiver).getMonth() + 1;
  }
  static getDay(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCDate() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getDate() + 0;
  }
  static getHours(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCHours() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getHours() + 0;
  }
  static getMinutes(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCMinutes() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getMinutes() + 0;
  }
  static getSeconds(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCSeconds() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getSeconds() + 0;
  }
  static getMilliseconds(receiver) {
    return dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCMilliseconds() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getMilliseconds() + 0;
  }
  static getWeekday(receiver) {
    let weekday = dart.test(receiver.isUtc) ? _js_helper.Primitives.lazyAsJsDate(receiver).getUTCDay() + 0 : _js_helper.Primitives.lazyAsJsDate(receiver).getDay() + 0;
    return (weekday + 6)[$modulo](7) + 1;
  }
  static valueFromDateString(str) {
    if (!(typeof str == 'string')) dart.throw(_js_helper.argumentErrorValue(str));
    let value = Date.parse(str);
    if (value[$isNaN]) dart.throw(_js_helper.argumentErrorValue(str));
    return value;
  }
  static getProperty(object, key) {
    if (object == null || typeof object == 'boolean' || typeof object == 'number' || typeof object == 'string') {
      dart.throw(_js_helper.argumentErrorValue(object));
    }
    return object[key];
  }
  static setProperty(object, key, value) {
    if (object == null || typeof object == 'boolean' || typeof object == 'number' || typeof object == 'string') {
      dart.throw(_js_helper.argumentErrorValue(object));
    }
    object[key] = value;
  }
};
(_js_helper.Primitives.new = function() {
}).prototype = _js_helper.Primitives.prototype;
dart.addTypeTests(_js_helper.Primitives);
dart.defineLazy(_js_helper.Primitives, {
  /*_js_helper.Primitives.DOLLAR_CHAR_VALUE*/get DOLLAR_CHAR_VALUE() {
    return 36;
  },
  /*_js_helper.Primitives.timerFrequency*/get timerFrequency() {
    return null;
  },
  set timerFrequency(_) {},
  /*_js_helper.Primitives.timerTicks*/get timerTicks() {
    return null;
  },
  set timerTicks(_) {}
});
_js_helper.diagnoseIndexError = function(indexable, index) {
  let length = core.int._check(dart.dload(indexable, 'length'));
  if (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(length)) {
    return core.RangeError.index(index, indexable, "index", null, length);
  }
  return new core.RangeError.value(index, "index");
};
_js_helper.diagnoseRangeError = function(start, end, length) {
  if (start == null) {
    return new core.ArgumentError.value(start, "start");
  }
  if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(length)) {
    return new core.RangeError.range(start, 0, length, "start");
  }
  if (end != null) {
    if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) > dart.notNull(length)) {
      return new core.RangeError.range(end, start, length, "end");
    }
  }
  return new core.ArgumentError.value(end, "end");
};
_js_helper.stringLastIndexOfUnchecked = function(receiver, element, start) {
  return receiver.lastIndexOf(element, start);
};
_js_helper.argumentErrorValue = function(object) {
  return new core.ArgumentError.value(object);
};
_js_helper.throwArgumentErrorValue = function(value) {
  dart.throw(_js_helper.argumentErrorValue(value));
};
_js_helper.checkInt = function(value) {
  if (!core.int.is(value)) dart.throw(_js_helper.argumentErrorValue(value));
  return value;
};
_js_helper.throwRuntimeError = function(message) {
  dart.throw(new _js_helper.RuntimeError.new(message));
};
_js_helper.throwAbstractClassInstantiationError = function(className) {
  dart.throw(new core.AbstractClassInstantiationError.new(core.String._check(className)));
};
_js_helper.throwConcurrentModificationError = function(collection) {
  dart.throw(new core.ConcurrentModificationError.new(collection));
};
const _message = Symbol('_message');
const _method = Symbol('_method');
const _receiver = Symbol('_receiver');
core.Error = class Error extends core.Object {
  static safeToString(object) {
    if (typeof object == 'number' || typeof object == 'boolean' || null == object) {
      return dart.toString(object);
    }
    if (typeof object == 'string') {
      return core.Error._stringToSafeString(object);
    }
    return core.Error._objectToString(object);
  }
  static _stringToSafeString(string) {
    return JSON.stringify(string);
  }
  static _objectToString(object) {
    return "Instance of '" + dart.typeName(dart.getReifiedType(object)) + "'";
  }
  get stackTrace() {
    return dart.stackTraceForError(this);
  }
};
(core.Error.new = function() {
}).prototype = core.Error.prototype;
dart.addTypeTests(core.Error);
dart.setGetterSignature(core.Error, () => ({
  __proto__: dart.getGetters(core.Error.__proto__),
  stackTrace: core.StackTrace,
  [$stackTrace]: core.StackTrace
}));
dart.defineExtensionAccessors(core.Error, ['stackTrace']);
_js_helper.JsNoSuchMethodError = class JsNoSuchMethodError extends core.Error {
  toString() {
    if (this[_method] == null) return "NoSuchMethodError: " + dart.str(this[_message]);
    if (this[_receiver] == null) {
      return "NoSuchMethodError: method not found: '" + dart.str(this[_method]) + "' (" + dart.str(this[_message]) + ")";
    }
    return "NoSuchMethodError: " + ("method not found: '" + dart.str(this[_method]) + "' on '" + dart.str(this[_receiver]) + "' (" + dart.str(this[_message]) + ")");
  }
};
(_js_helper.JsNoSuchMethodError.new = function(message, match) {
  this[_message] = message;
  this[_method] = match == null ? null : match.method;
  this[_receiver] = match == null ? null : match.receiver;
  _js_helper.JsNoSuchMethodError.__proto__.new.call(this);
}).prototype = _js_helper.JsNoSuchMethodError.prototype;
dart.addTypeTests(_js_helper.JsNoSuchMethodError);
_js_helper.JsNoSuchMethodError[dart.implements] = () => [core.NoSuchMethodError];
dart.setFieldSignature(_js_helper.JsNoSuchMethodError, () => ({
  __proto__: dart.getFields(_js_helper.JsNoSuchMethodError.__proto__),
  [_message]: dart.finalFieldType(core.String),
  [_method]: dart.finalFieldType(core.String),
  [_receiver]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(_js_helper.JsNoSuchMethodError, ['toString']);
_js_helper.UnknownJsTypeError = class UnknownJsTypeError extends core.Error {
  toString() {
    return this[_message][$isEmpty] ? "Error" : "Error: " + dart.str(this[_message]);
  }
};
(_js_helper.UnknownJsTypeError.new = function(message) {
  this[_message] = message;
  _js_helper.UnknownJsTypeError.__proto__.new.call(this);
}).prototype = _js_helper.UnknownJsTypeError.prototype;
dart.addTypeTests(_js_helper.UnknownJsTypeError);
dart.setFieldSignature(_js_helper.UnknownJsTypeError, () => ({
  __proto__: dart.getFields(_js_helper.UnknownJsTypeError.__proto__),
  [_message]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(_js_helper.UnknownJsTypeError, ['toString']);
_js_helper.fillLiteralMap = function(keyValuePairs, result) {
  let index = 0;
  let length = _js_helper.getLength(keyValuePairs);
  while (index < dart.notNull(length)) {
    let key = _js_helper.getIndex(keyValuePairs, index++);
    let value = _js_helper.getIndex(keyValuePairs, index++);
    result[$_set](key, value);
  }
  return result;
};
_js_helper.jsHasOwnProperty = function(jsObject, property) {
  return jsObject.hasOwnProperty(property);
};
_js_helper.jsPropertyAccess = function(jsObject, property) {
  return jsObject[property];
};
_js_helper.getFallThroughError = function() {
  return new _js_helper.FallThroughErrorImplementation.new();
};
_js_helper.Creates = class Creates extends core.Object {};
(_js_helper.Creates.new = function(types) {
  this.types = types;
}).prototype = _js_helper.Creates.prototype;
dart.addTypeTests(_js_helper.Creates);
dart.setFieldSignature(_js_helper.Creates, () => ({
  __proto__: dart.getFields(_js_helper.Creates.__proto__),
  types: dart.finalFieldType(core.String)
}));
_js_helper.Returns = class Returns extends core.Object {};
(_js_helper.Returns.new = function(types) {
  this.types = types;
}).prototype = _js_helper.Returns.prototype;
dart.addTypeTests(_js_helper.Returns);
dart.setFieldSignature(_js_helper.Returns, () => ({
  __proto__: dart.getFields(_js_helper.Returns.__proto__),
  types: dart.finalFieldType(core.String)
}));
_js_helper.JSName = class JSName extends core.Object {};
(_js_helper.JSName.new = function(name) {
  this.name = name;
}).prototype = _js_helper.JSName.prototype;
dart.addTypeTests(_js_helper.JSName);
dart.setFieldSignature(_js_helper.JSName, () => ({
  __proto__: dart.getFields(_js_helper.JSName.__proto__),
  name: dart.finalFieldType(core.String)
}));
const _is_JavaScriptIndexingBehavior_default = Symbol('_is_JavaScriptIndexingBehavior_default');
_js_helper.JavaScriptIndexingBehavior$ = dart.generic(E => {
  class JavaScriptIndexingBehavior extends core.Object {}
  (JavaScriptIndexingBehavior.new = function() {
  }).prototype = JavaScriptIndexingBehavior.prototype;
  dart.addTypeTests(JavaScriptIndexingBehavior);
  JavaScriptIndexingBehavior.prototype[_is_JavaScriptIndexingBehavior_default] = true;
  return JavaScriptIndexingBehavior;
});
_js_helper.JavaScriptIndexingBehavior = _js_helper.JavaScriptIndexingBehavior$();
dart.addTypeTests(_js_helper.JavaScriptIndexingBehavior, _is_JavaScriptIndexingBehavior_default);
_js_helper.TypeErrorImpl = class TypeErrorImpl extends core.Error {
  toString() {
    return this.message;
  }
};
(_js_helper.TypeErrorImpl.new = function(message) {
  this.message = message;
  _js_helper.TypeErrorImpl.__proto__.new.call(this);
}).prototype = _js_helper.TypeErrorImpl.prototype;
dart.addTypeTests(_js_helper.TypeErrorImpl);
_js_helper.TypeErrorImpl[dart.implements] = () => [core.TypeError];
dart.setFieldSignature(_js_helper.TypeErrorImpl, () => ({
  __proto__: dart.getFields(_js_helper.TypeErrorImpl.__proto__),
  message: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(_js_helper.TypeErrorImpl, ['toString']);
_js_helper.CastErrorImpl = class CastErrorImpl extends core.Error {
  toString() {
    return this.message;
  }
};
(_js_helper.CastErrorImpl.new = function(message) {
  this.message = message;
  _js_helper.CastErrorImpl.__proto__.new.call(this);
}).prototype = _js_helper.CastErrorImpl.prototype;
dart.addTypeTests(_js_helper.CastErrorImpl);
_js_helper.CastErrorImpl[dart.implements] = () => [core.CastError];
dart.setFieldSignature(_js_helper.CastErrorImpl, () => ({
  __proto__: dart.getFields(_js_helper.CastErrorImpl.__proto__),
  message: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(_js_helper.CastErrorImpl, ['toString']);
core.FallThroughError = class FallThroughError extends core.Error {
  toString() {
    return super.toString();
  }
};
(core.FallThroughError.new = function() {
  core.FallThroughError.__proto__.new.call(this);
}).prototype = core.FallThroughError.prototype;
(core.FallThroughError._create = function(url, line) {
  core.FallThroughError.__proto__.new.call(this);
}).prototype = core.FallThroughError.prototype;
dart.addTypeTests(core.FallThroughError);
dart.defineExtensionMethods(core.FallThroughError, ['toString']);
_js_helper.FallThroughErrorImplementation = class FallThroughErrorImplementation extends core.FallThroughError {
  toString() {
    return "Switch case fall-through.";
  }
};
(_js_helper.FallThroughErrorImplementation.new = function() {
  _js_helper.FallThroughErrorImplementation.__proto__.new.call(this);
}).prototype = _js_helper.FallThroughErrorImplementation.prototype;
dart.addTypeTests(_js_helper.FallThroughErrorImplementation);
dart.defineExtensionMethods(_js_helper.FallThroughErrorImplementation, ['toString']);
_js_helper.RuntimeError = class RuntimeError extends core.Error {
  toString() {
    return "RuntimeError: " + dart.str(this.message);
  }
};
(_js_helper.RuntimeError.new = function(message) {
  this.message = message;
  _js_helper.RuntimeError.__proto__.new.call(this);
}).prototype = _js_helper.RuntimeError.prototype;
dart.addTypeTests(_js_helper.RuntimeError);
dart.setFieldSignature(_js_helper.RuntimeError, () => ({
  __proto__: dart.getFields(_js_helper.RuntimeError.__proto__),
  message: dart.finalFieldType(dart.dynamic)
}));
dart.defineExtensionMethods(_js_helper.RuntimeError, ['toString']);
core.AssertionError = class AssertionError extends core.Error {
  get message() {
    return this[message$];
  }
  set message(value) {
    super.message = value;
  }
  toString() {
    return "Assertion failed";
  }
};
(core.AssertionError.new = function(message) {
  if (message === void 0) message = null;
  this[message$] = message;
  core.AssertionError.__proto__.new.call(this);
}).prototype = core.AssertionError.prototype;
dart.addTypeTests(core.AssertionError);
const message$ = Symbol("AssertionError.message");
dart.setFieldSignature(core.AssertionError, () => ({
  __proto__: dart.getFields(core.AssertionError.__proto__),
  message: dart.finalFieldType(core.Object)
}));
dart.defineExtensionMethods(core.AssertionError, ['toString']);
_js_helper.AssertionErrorImpl = class AssertionErrorImpl extends core.AssertionError {
  toString() {
    return "Assertion failed: " + dart.notNull(this.message != null ? core.Error.safeToString(this.message) : "is not true");
  }
};
(_js_helper.AssertionErrorImpl.new = function(message) {
  _js_helper.AssertionErrorImpl.__proto__.new.call(this, message);
}).prototype = _js_helper.AssertionErrorImpl.prototype;
dart.addTypeTests(_js_helper.AssertionErrorImpl);
dart.defineExtensionMethods(_js_helper.AssertionErrorImpl, ['toString']);
_js_helper.random64 = function() {
  let int32a = Math.random() * 0x100000000 >>> 0;
  let int32b = Math.random() * 0x100000000 >>> 0;
  return int32a + int32b * 4294967296;
};
_js_helper.BooleanConversionAssertionError = class BooleanConversionAssertionError extends core.AssertionError {
  toString() {
    return "Failed assertion: boolean expression must not be null";
  }
};
(_js_helper.BooleanConversionAssertionError.new = function() {
  _js_helper.BooleanConversionAssertionError.__proto__.new.call(this);
}).prototype = _js_helper.BooleanConversionAssertionError.prototype;
dart.addTypeTests(_js_helper.BooleanConversionAssertionError);
dart.defineExtensionMethods(_js_helper.BooleanConversionAssertionError, ['toString']);
_js_helper.registerGlobalObject = function(object) {
  try {
    if (dart.test(dart.polyfill(object))) {
      dart.applyAllExtensions(object);
    }
  } catch (e$) {
    let e = dart.getThrown(e$);
  }
};
_js_helper.applyExtension = function(name, nativeObject) {
  dart.applyExtension(name, nativeObject);
};
const _name$ = Symbol('_name');
const _nativeSymbol = Symbol('_nativeSymbol');
_js_helper.PrivateSymbol = class PrivateSymbol extends core.Object {
  static getName(symbol) {
    return _js_helper.PrivateSymbol.as(symbol)[_name$];
  }
  static getNativeSymbol(symbol) {
    if (_js_helper.PrivateSymbol.is(symbol)) return symbol[_nativeSymbol];
    return null;
  }
  _equals(other) {
    return _js_helper.PrivateSymbol.is(other) && this[_name$] == other[_name$] && core.identical(this[_nativeSymbol], other[_nativeSymbol]);
  }
  get hashCode() {
    return dart.hashCode(this[_name$]);
  }
  toString() {
    return "Symbol(\"" + dart.str(this[_name$]) + "\")";
  }
};
(_js_helper.PrivateSymbol.new = function(name, nativeSymbol) {
  this[_name$] = name;
  this[_nativeSymbol] = nativeSymbol;
}).prototype = _js_helper.PrivateSymbol.prototype;
dart.addTypeTests(_js_helper.PrivateSymbol);
_js_helper.PrivateSymbol[dart.implements] = () => [core.Symbol];
dart.setFieldSignature(_js_helper.PrivateSymbol, () => ({
  __proto__: dart.getFields(_js_helper.PrivateSymbol.__proto__),
  [_name$]: dart.finalFieldType(core.String),
  [_nativeSymbol]: dart.finalFieldType(core.Object)
}));
dart.defineExtensionMethods(_js_helper.PrivateSymbol, ['_equals', 'toString']);
dart.defineExtensionAccessors(_js_helper.PrivateSymbol, ['hashCode']);
_js_helper.ForceInline = class ForceInline extends core.Object {};
(_js_helper.ForceInline.new = function() {
}).prototype = _js_helper.ForceInline.prototype;
dart.addTypeTests(_js_helper.ForceInline);
_js_helper._NotNull = class _NotNull extends core.Object {};
(_js_helper._NotNull.new = function() {
}).prototype = _js_helper._NotNull.prototype;
dart.addTypeTests(_js_helper._NotNull);
dart.defineLazy(_js_helper, {
  /*_js_helper.notNull*/get notNull() {
    return dart.const(new _js_helper._NotNull.new());
  }
});
_js_helper.NoReifyGeneric = class NoReifyGeneric extends core.Object {};
(_js_helper.NoReifyGeneric.new = function() {
}).prototype = _js_helper.NoReifyGeneric.prototype;
dart.addTypeTests(_js_helper.NoReifyGeneric);
_js_helper.ReifyFunctionTypes = class ReifyFunctionTypes extends core.Object {};
(_js_helper.ReifyFunctionTypes.new = function(value) {
  this.value = value;
}).prototype = _js_helper.ReifyFunctionTypes.prototype;
dart.addTypeTests(_js_helper.ReifyFunctionTypes);
dart.setFieldSignature(_js_helper.ReifyFunctionTypes, () => ({
  __proto__: dart.getFields(_js_helper.ReifyFunctionTypes.__proto__),
  value: dart.finalFieldType(core.bool)
}));
_js_helper._NullCheck = class _NullCheck extends core.Object {};
(_js_helper._NullCheck.new = function() {
}).prototype = _js_helper._NullCheck.prototype;
dart.addTypeTests(_js_helper._NullCheck);
dart.defineLazy(_js_helper, {
  /*_js_helper.nullCheck*/get nullCheck() {
    return dart.const(new _js_helper._NullCheck.new());
  }
});
_js_helper.NoThrows = class NoThrows extends core.Object {};
(_js_helper.NoThrows.new = function() {
}).prototype = _js_helper.NoThrows.prototype;
dart.addTypeTests(_js_helper.NoThrows);
_js_helper.NoInline = class NoInline extends core.Object {};
(_js_helper.NoInline.new = function() {
}).prototype = _js_helper.NoInline.prototype;
dart.addTypeTests(_js_helper.NoInline);
_js_helper.Native = class Native extends core.Object {};
(_js_helper.Native.new = function(name) {
  this.name = name;
}).prototype = _js_helper.Native.prototype;
dart.addTypeTests(_js_helper.Native);
dart.setFieldSignature(_js_helper.Native, () => ({
  __proto__: dart.getFields(_js_helper.Native.__proto__),
  name: dart.finalFieldType(core.String)
}));
_js_helper.JsPeerInterface = class JsPeerInterface extends core.Object {};
(_js_helper.JsPeerInterface.new = function(opts) {
  let name = opts && 'name' in opts ? opts.name : null;
  this.name = name;
}).prototype = _js_helper.JsPeerInterface.prototype;
dart.addTypeTests(_js_helper.JsPeerInterface);
dart.setFieldSignature(_js_helper.JsPeerInterface, () => ({
  __proto__: dart.getFields(_js_helper.JsPeerInterface.__proto__),
  name: dart.finalFieldType(core.String)
}));
_js_helper.SupportJsExtensionMethods = class SupportJsExtensionMethods extends core.Object {};
(_js_helper.SupportJsExtensionMethods.new = function() {
}).prototype = _js_helper.SupportJsExtensionMethods.prototype;
dart.addTypeTests(_js_helper.SupportJsExtensionMethods);
const _modifications = Symbol('_modifications');
const _map = Symbol('_map');
const _is_InternalMap_default = Symbol('_is_InternalMap_default');
_js_helper.InternalMap$ = dart.generic((K, V) => {
  let LinkedHashMapOfK$V = () => (LinkedHashMapOfK$V = dart.constFn(collection.LinkedHashMap$(K, V)))();
  let HashMapOfK$V = () => (HashMapOfK$V = dart.constFn(collection.HashMap$(K, V)))();
  class InternalMap extends collection.MapBase$(K, V) {
    forEach(action) {
      let modifications = this[_modifications];
      for (let entry of this[_map].entries()) {
        action(entry[0], entry[1]);
        if (modifications !== this[_modifications]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
      }
    }
  }
  (InternalMap.new = function() {
  }).prototype = InternalMap.prototype;
  dart.addTypeTests(InternalMap);
  InternalMap.prototype[_is_InternalMap_default] = true;
  InternalMap[dart.implements] = () => [LinkedHashMapOfK$V(), HashMapOfK$V()];
  dart.defineExtensionMethods(InternalMap, ['forEach']);
  return InternalMap;
});
_js_helper.InternalMap = _js_helper.InternalMap$();
dart.addTypeTests(_js_helper.InternalMap, _is_InternalMap_default);
const _keyMap = Symbol('_keyMap');
const _is_LinkedMap_default = Symbol('_is_LinkedMap_default');
_js_helper.LinkedMap$ = dart.generic((K, V) => {
  let _JSMapIterableOfK = () => (_JSMapIterableOfK = dart.constFn(_js_helper._JSMapIterable$(K)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVToNull = () => (KAndVToNull = dart.constFn(dart.fnType(core.Null, [K, V])))();
  let _JSMapIterableOfV = () => (_JSMapIterableOfV = dart.constFn(_js_helper._JSMapIterable$(V)))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
  class LinkedMap extends _js_helper.InternalMap$(K, V) {
    get length() {
      return this[_map].size;
    }
    get isEmpty() {
      return this[_map].size == 0;
    }
    get isNotEmpty() {
      return this[_map].size != 0;
    }
    get keys() {
      return new (_JSMapIterableOfK()).new(this, true);
    }
    get values() {
      return new (_JSMapIterableOfV()).new(this, false);
    }
    containsKey(key) {
      if (key == null) {
        key = null;
      } else if (key[$_equals] !== dart.identityEquals) {
        let k = key;
        let buckets = this[_keyMap].get(k[$hashCode] & 0x3ffffff);
        if (buckets != null) {
          for (let i = 0, n = buckets.length; i < n; i++) {
            k = buckets[i];
            if (k[$_equals](key)) return true;
          }
        }
        return false;
      }
      return this[_map].has(key);
    }
    containsValue(value) {
      for (let v of this[_map].values()) {
        if (dart.equals(v, value)) return true;
      }
      return false;
    }
    addAll(other) {
      MapOfK$V()._check(other);
      let map = this[_map];
      let length = map.size;
      other[$forEach](dart.fn((key, value) => {
        if (key == null) {
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          key = _js_helper.putLinkedMapKey(key, this[_keyMap]);
        }
        this[_map].set(key, value);
      }, KAndVToNull()));
      if (length !== map.size) {
        this[_modifications] = this[_modifications] + 1 & 67108863;
      }
    }
    _get(key) {
      if (key == null) {
        key = null;
      } else if (key[$_equals] !== dart.identityEquals) {
        let k = key;
        let buckets = this[_keyMap].get(k[$hashCode] & 0x3ffffff);
        if (buckets != null) {
          for (let i = 0, n = buckets.length; i < n; i++) {
            k = buckets[i];
            if (k[$_equals](key)) return this[_map].get(k);
          }
        }
        return null;
      }
      return this[_map].get(key);
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      if (key == null) {
        key = null;
      } else if (key[$_equals] !== dart.identityEquals) {
        key = _js_helper.putLinkedMapKey(key, this[_keyMap]);
      }
      let map = this[_map];
      let length = map.size;
      map.set(key, value);
      if (length !== map.size) {
        this[_modifications] = this[_modifications] + 1 & 67108863;
      }
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      let map = this[_map];
      if (key == null) {
        key = null;
        if (map.has(null)) return map.get(null);
      } else if (key[$_equals] !== dart.identityEquals) {
        let k = key;
        let hash = k[$hashCode] & 0x3ffffff;
        let buckets = this[_keyMap].get(hash);
        if (buckets == null) {
          this[_keyMap].set(hash, [key]);
        } else {
          for (let i = 0, n = buckets.length; i < n; i++) {
            k = buckets[i];
            if (k[$_equals](key)) return map.get(k);
          }
          buckets.push(key);
        }
      } else if (map.has(key)) {
        return map.get(key);
      }
      let value = ifAbsent();
      map.set(key, value);
      this[_modifications] = this[_modifications] + 1 & 67108863;
      return value;
    }
    remove(key) {
      if (key == null) {
        key = null;
      } else if (key[$_equals] !== dart.identityEquals) {
        let k = key;
        let hash = k[$hashCode] & 0x3ffffff;
        let buckets = this[_keyMap].get(hash);
        if (buckets == null) return null;
        for (let i = 0, n = buckets.length;;) {
          k = buckets[i];
          if (k[$_equals](key)) {
            key = k;
            if (n === 1) {
              this[_keyMap].delete(hash);
            } else {
              buckets.splice(i, 1);
            }
            break;
          }
          if (++i >= n) return null;
        }
      }
      let map = this[_map];
      let value = map.get(key);
      if (map.delete(key)) {
        this[_modifications] = this[_modifications] + 1 & 67108863;
      }
      return value;
    }
    clear() {
      let map = this[_map];
      if (map.size > 0) {
        map.clear();
        this[_keyMap].clear();
        this[_modifications] = this[_modifications] + 1 & 67108863;
      }
    }
  }
  (LinkedMap.new = function() {
    this[_map] = new Map();
    this[_keyMap] = new Map();
    this[_modifications] = 0;
  }).prototype = LinkedMap.prototype;
  (LinkedMap.from = function(entries) {
    this[_map] = new Map();
    this[_keyMap] = new Map();
    this[_modifications] = 0;
    let map = this[_map];
    let keyMap = this[_keyMap];
    for (let i = 0, n = entries.length; i < n; i = i + 2) {
      let key = entries[i];
      let value = entries[i + 1];
      if (key == null) {
        key = null;
      } else if (key[$_equals] !== dart.identityEquals) {
        key = _js_helper.putLinkedMapKey(key, keyMap);
      }
      map.set(key, value);
    }
  }).prototype = LinkedMap.prototype;
  dart.addTypeTests(LinkedMap);
  LinkedMap.prototype[_is_LinkedMap_default] = true;
  dart.setMethodSignature(LinkedMap, () => ({
    __proto__: dart.getMethods(LinkedMap.__proto__),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    _get: dart.fnType(V, [core.Object]),
    [$_get]: dart.fnType(V, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
    remove: dart.fnType(V, [core.Object]),
    [$remove]: dart.fnType(V, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(LinkedMap, () => ({
    __proto__: dart.getGetters(LinkedMap.__proto__),
    keys: core.Iterable$(K),
    [$keys]: core.Iterable$(K)
  }));
  dart.setFieldSignature(LinkedMap, () => ({
    __proto__: dart.getFields(LinkedMap.__proto__),
    [_map]: dart.finalFieldType(dart.dynamic),
    [_keyMap]: dart.finalFieldType(dart.dynamic),
    [_modifications]: dart.fieldType(core.int)
  }));
  dart.defineExtensionMethods(LinkedMap, [
    'containsKey',
    'containsValue',
    'addAll',
    '_get',
    '_set',
    'putIfAbsent',
    'remove',
    'clear'
  ]);
  dart.defineExtensionAccessors(LinkedMap, [
    'length',
    'isEmpty',
    'isNotEmpty',
    'keys',
    'values'
  ]);
  return LinkedMap;
});
_js_helper.LinkedMap = _js_helper.LinkedMap$();
dart.addTypeTests(_js_helper.LinkedMap, _is_LinkedMap_default);
_js_helper.putLinkedMapKey = function(key, keyMap) {
  let hash = key[$hashCode] & 0x3ffffff;
  let buckets = keyMap.get(hash);
  if (buckets == null) {
    keyMap.set(hash, [key]);
    return key;
  }
  for (let i = 0, n = buckets.length; i < n; i++) {
    let k = buckets[i];
    if (k[$_equals](key)) return k;
  }
  buckets.push(key);
  return key;
};
const _is_ImmutableMap_default = Symbol('_is_ImmutableMap_default');
_js_helper.ImmutableMap$ = dart.generic((K, V) => {
  class ImmutableMap extends _js_helper.LinkedMap$(K, V) {
    _set(key, value) {
      dart.throw(_js_helper.ImmutableMap._unsupported());
      return value;
    }
    addAll(other) {
      return dart.throw(_js_helper.ImmutableMap._unsupported());
    }
    clear() {
      return dart.throw(_js_helper.ImmutableMap._unsupported());
    }
    remove(key) {
      return dart.throw(_js_helper.ImmutableMap._unsupported());
    }
    putIfAbsent(key, ifAbsent) {
      return dart.throw(_js_helper.ImmutableMap._unsupported());
    }
    static _unsupported() {
      return new core.UnsupportedError.new("Cannot modify unmodifiable map");
    }
  }
  (ImmutableMap.from = function(entries) {
    ImmutableMap.__proto__.from.call(this, entries);
  }).prototype = ImmutableMap.prototype;
  dart.addTypeTests(ImmutableMap);
  ImmutableMap.prototype[_is_ImmutableMap_default] = true;
  dart.setMethodSignature(ImmutableMap, () => ({
    __proto__: dart.getMethods(ImmutableMap.__proto__),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    putIfAbsent: dart.fnType(V, [core.Object, dart.fnType(core.Object, [])]),
    [$putIfAbsent]: dart.fnType(V, [core.Object, dart.fnType(core.Object, [])])
  }));
  dart.defineExtensionMethods(ImmutableMap, [
    '_set',
    'addAll',
    'clear',
    'remove',
    'putIfAbsent'
  ]);
  return ImmutableMap;
});
_js_helper.ImmutableMap = _js_helper.ImmutableMap$();
dart.addTypeTests(_js_helper.ImmutableMap, _is_ImmutableMap_default);
const _is_IdentityMap_default = Symbol('_is_IdentityMap_default');
_js_helper.IdentityMap$ = dart.generic((K, V) => {
  let _JSMapIterableOfK = () => (_JSMapIterableOfK = dart.constFn(_js_helper._JSMapIterable$(K)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVToNull = () => (KAndVToNull = dart.constFn(dart.fnType(core.Null, [K, V])))();
  let _JSMapIterableOfV = () => (_JSMapIterableOfV = dart.constFn(_js_helper._JSMapIterable$(V)))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
  class IdentityMap extends _js_helper.InternalMap$(K, V) {
    get length() {
      return this[_map].size;
    }
    get isEmpty() {
      return this[_map].size == 0;
    }
    get isNotEmpty() {
      return this[_map].size != 0;
    }
    get keys() {
      return new (_JSMapIterableOfK()).new(this, true);
    }
    get values() {
      return new (_JSMapIterableOfV()).new(this, false);
    }
    containsKey(key) {
      return this[_map].has(key);
    }
    containsValue(value) {
      for (let v of this[_map].values()) {
        if (dart.equals(v, value)) return true;
      }
      return false;
    }
    addAll(other) {
      MapOfK$V()._check(other);
      if (dart.test(other[$isNotEmpty])) {
        let map = this[_map];
        other[$forEach](dart.fn((key, value) => {
          map.set(key, value);
        }, KAndVToNull()));
        this[_modifications] = this[_modifications] + 1 & 67108863;
      }
    }
    _get(key) {
      return this[_map].get(key);
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      let map = this[_map];
      let length = map.size;
      map.set(key, value);
      if (length !== map.size) {
        this[_modifications] = this[_modifications] + 1 & 67108863;
      }
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      if (this[_map].has(key)) return this[_map].get(key);
      let value = ifAbsent();
      this[_map].set(key, value);
      this[_modifications] = this[_modifications] + 1 & 67108863;
      return value;
    }
    remove(key) {
      let value = this[_map].get(key);
      if (this[_map].delete(key)) {
        this[_modifications] = this[_modifications] + 1 & 67108863;
      }
      return value;
    }
    clear() {
      if (this[_map].size > 0) {
        this[_map].clear();
        this[_modifications] = this[_modifications] + 1 & 67108863;
      }
    }
  }
  (IdentityMap.new = function() {
    this[_map] = new Map();
    this[_modifications] = 0;
  }).prototype = IdentityMap.prototype;
  (IdentityMap.from = function(entries) {
    this[_map] = new Map();
    this[_modifications] = 0;
    let map = this[_map];
    for (let i = 0, n = entries.length; i < n; i = i + 2) {
      map.set(entries[i], entries[i + 1]);
    }
  }).prototype = IdentityMap.prototype;
  dart.addTypeTests(IdentityMap);
  IdentityMap.prototype[_is_IdentityMap_default] = true;
  dart.setMethodSignature(IdentityMap, () => ({
    __proto__: dart.getMethods(IdentityMap.__proto__),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    _get: dart.fnType(V, [core.Object]),
    [$_get]: dart.fnType(V, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
    remove: dart.fnType(V, [core.Object]),
    [$remove]: dart.fnType(V, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(IdentityMap, () => ({
    __proto__: dart.getGetters(IdentityMap.__proto__),
    keys: core.Iterable$(K),
    [$keys]: core.Iterable$(K)
  }));
  dart.setFieldSignature(IdentityMap, () => ({
    __proto__: dart.getFields(IdentityMap.__proto__),
    [_map]: dart.finalFieldType(dart.dynamic),
    [_modifications]: dart.fieldType(core.int)
  }));
  dart.defineExtensionMethods(IdentityMap, [
    'containsKey',
    'containsValue',
    'addAll',
    '_get',
    '_set',
    'putIfAbsent',
    'remove',
    'clear'
  ]);
  dart.defineExtensionAccessors(IdentityMap, [
    'length',
    'isEmpty',
    'isNotEmpty',
    'keys',
    'values'
  ]);
  return IdentityMap;
});
_js_helper.IdentityMap = _js_helper.IdentityMap$();
dart.addTypeTests(_js_helper.IdentityMap, _is_IdentityMap_default);
const _isKeys = Symbol('_isKeys');
const _is__JSMapIterable_default = Symbol('_is__JSMapIterable_default');
_js_helper._JSMapIterable$ = dart.generic(E => {
  let DartIteratorOfE = () => (DartIteratorOfE = dart.constFn(_js_helper.DartIterator$(E)))();
  class _JSMapIterable extends _internal.EfficientLengthIterable$(E) {
    get length() {
      return this[_map].length;
    }
    get isEmpty() {
      return this[_map].isEmpty;
    }
    [Symbol.iterator]() {
      let map = this[_map];
      let iterator = this[_isKeys] ? map[_map].keys() : map[_map].values();
      let modifications = map[_modifications];
      return {
        next() {
          if (modifications != map[_modifications]) {
            throw new core.ConcurrentModificationError.new(map);
          }
          return iterator.next();
        }
      };
    }
    get iterator() {
      return new (DartIteratorOfE()).new(this[Symbol.iterator]());
    }
    contains(element) {
      return this[_isKeys] ? this[_map].containsKey(element) : this[_map].containsValue(element);
    }
    forEach(f) {
      for (let entry of this)
        f(entry);
    }
  }
  (_JSMapIterable.new = function(map, isKeys) {
    this[_map] = map;
    this[_isKeys] = isKeys;
    _JSMapIterable.__proto__.new.call(this);
  }).prototype = _JSMapIterable.prototype;
  dart.addTypeTests(_JSMapIterable);
  _JSMapIterable.prototype[_is__JSMapIterable_default] = true;
  dart.setMethodSignature(_JSMapIterable, () => ({
    __proto__: dart.getMethods(_JSMapIterable.__proto__),
    [Symbol.iterator]: dart.fnType(dart.dynamic, [])
  }));
  dart.setGetterSignature(_JSMapIterable, () => ({
    __proto__: dart.getGetters(_JSMapIterable.__proto__),
    length: core.int,
    [$length]: core.int,
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.setFieldSignature(_JSMapIterable, () => ({
    __proto__: dart.getFields(_JSMapIterable.__proto__),
    [_map]: dart.finalFieldType(_js_helper.InternalMap),
    [_isKeys]: dart.finalFieldType(core.bool)
  }));
  dart.defineExtensionMethods(_JSMapIterable, ['contains', 'forEach']);
  dart.defineExtensionAccessors(_JSMapIterable, ['length', 'isEmpty', 'iterator']);
  return _JSMapIterable;
});
_js_helper._JSMapIterable = _js_helper._JSMapIterable$();
dart.addTypeTests(_js_helper._JSMapIterable, _is__JSMapIterable_default);
const _validKey = Symbol('_validKey');
const _equals = Symbol('_equals');
const _hashCode = Symbol('_hashCode');
const _is_CustomHashMap_default = Symbol('_is_CustomHashMap_default');
_js_helper.CustomHashMap$ = dart.generic((K, V) => {
  let _JSMapIterableOfK = () => (_JSMapIterableOfK = dart.constFn(_js_helper._JSMapIterable$(K)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVToNull = () => (KAndVToNull = dart.constFn(dart.fnType(core.Null, [K, V])))();
  let KAndKTobool = () => (KAndKTobool = dart.constFn(dart.fnType(core.bool, [K, K])))();
  let KToint = () => (KToint = dart.constFn(dart.fnType(core.int, [K])))();
  let _JSMapIterableOfV = () => (_JSMapIterableOfV = dart.constFn(_js_helper._JSMapIterable$(V)))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
  class CustomHashMap extends _js_helper.InternalMap$(K, V) {
    get length() {
      return this[_map].size;
    }
    get isEmpty() {
      return this[_map].size == 0;
    }
    get isNotEmpty() {
      return this[_map].size != 0;
    }
    get keys() {
      return new (_JSMapIterableOfK()).new(this, true);
    }
    get values() {
      return new (_JSMapIterableOfV()).new(this, false);
    }
    containsKey(key) {
      if (K.is(key)) {
        let buckets = this[_keyMap].get(this[_hashCode](key) & 0x3ffffff);
        if (buckets != null) {
          let equals = this[_equals];
          for (let i = 0, n = buckets.length; i < n; i++) {
            let k = buckets[i];
            if (dart.test(equals(k, key))) return true;
          }
        }
      }
      return false;
    }
    containsValue(value) {
      for (let v of this[_map].values()) {
        if (dart.equals(value, v)) return true;
      }
      return false;
    }
    addAll(other) {
      MapOfK$V()._check(other);
      other[$forEach](dart.fn((key, value) => {
        this._set(key, value);
      }, KAndVToNull()));
    }
    _get(key) {
      if (K.is(key)) {
        let buckets = this[_keyMap].get(this[_hashCode](key) & 0x3ffffff);
        if (buckets != null) {
          let equals = this[_equals];
          for (let i = 0, n = buckets.length; i < n; i++) {
            let k = buckets[i];
            if (dart.test(equals(k, key))) return this[_map].get(k);
          }
        }
      }
      return null;
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      let keyMap = this[_keyMap];
      let hash = this[_hashCode](key) & 0x3ffffff;
      let buckets = keyMap.get(hash);
      if (buckets == null) {
        keyMap.set(hash, [key]);
      } else {
        let equals = this[_equals];
        for (let i = 0, n = buckets.length;;) {
          let k = buckets[i];
          if (dart.test(equals(k, key))) {
            key = k;
            break;
          }
          if (++i >= n) {
            buckets.push(key);
            break;
          }
        }
      }
      this[_map].set(key, value);
      this[_modifications] = this[_modifications] + 1 & 67108863;
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      let keyMap = this[_keyMap];
      let hash = this[_hashCode](key) & 0x3ffffff;
      let buckets = keyMap.get(hash);
      if (buckets == null) {
        keyMap.set(hash, [key]);
      } else {
        let equals = this[_equals];
        for (let i = 0, n = buckets.length; i < n; i++) {
          let k = buckets[i];
          if (dart.test(equals(k, key))) return this[_map].get(k);
        }
        buckets.push(key);
      }
      let value = ifAbsent();
      this[_map].set(key, value);
      this[_modifications] = this[_modifications] + 1 & 67108863;
      return value;
    }
    remove(key) {
      if (K.is(key)) {
        let hash = this[_hashCode](key) & 0x3ffffff;
        let keyMap = this[_keyMap];
        let buckets = keyMap.get(hash);
        if (buckets == null) return null;
        let equals = this[_equals];
        for (let i = 0, n = buckets.length; i < n; i++) {
          let k = buckets[i];
          if (dart.test(equals(k, key))) {
            if (n === 1) {
              keyMap.delete(hash);
            } else {
              buckets.splice(i, 1);
            }
            let map = this[_map];
            let value = map.get(k);
            map.delete(k);
            this[_modifications] = this[_modifications] + 1 & 67108863;
            return value;
          }
        }
      }
      return null;
    }
    clear() {
      let map = this[_map];
      if (map.size > 0) {
        map.clear();
        this[_keyMap].clear();
        this[_modifications] = this[_modifications] + 1 & 67108863;
      }
    }
  }
  (CustomHashMap.new = function(equals, hashCode) {
    this[_map] = new Map();
    this[_keyMap] = new Map();
    this[_modifications] = 0;
    this[_equals] = equals;
    this[_hashCode] = hashCode;
  }).prototype = CustomHashMap.prototype;
  dart.addTypeTests(CustomHashMap);
  CustomHashMap.prototype[_is_CustomHashMap_default] = true;
  dart.setMethodSignature(CustomHashMap, () => ({
    __proto__: dart.getMethods(CustomHashMap.__proto__),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    _get: dart.fnType(V, [core.Object]),
    [$_get]: dart.fnType(V, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
    remove: dart.fnType(V, [core.Object]),
    [$remove]: dart.fnType(V, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(CustomHashMap, () => ({
    __proto__: dart.getGetters(CustomHashMap.__proto__),
    keys: core.Iterable$(K),
    [$keys]: core.Iterable$(K)
  }));
  dart.setFieldSignature(CustomHashMap, () => ({
    __proto__: dart.getFields(CustomHashMap.__proto__),
    [_map]: dart.finalFieldType(dart.dynamic),
    [_keyMap]: dart.finalFieldType(dart.dynamic),
    [_modifications]: dart.fieldType(core.int),
    [_equals]: dart.finalFieldType(KAndKTobool()),
    [_hashCode]: dart.finalFieldType(KToint())
  }));
  dart.defineExtensionMethods(CustomHashMap, [
    'containsKey',
    'containsValue',
    'addAll',
    '_get',
    '_set',
    'putIfAbsent',
    'remove',
    'clear'
  ]);
  dart.defineExtensionAccessors(CustomHashMap, [
    'length',
    'isEmpty',
    'isNotEmpty',
    'keys',
    'values'
  ]);
  return CustomHashMap;
});
_js_helper.CustomHashMap = _js_helper.CustomHashMap$();
dart.addTypeTests(_js_helper.CustomHashMap, _is_CustomHashMap_default);
const _is_CustomKeyHashMap_default = Symbol('_is_CustomKeyHashMap_default');
_js_helper.CustomKeyHashMap$ = dart.generic((K, V) => {
  class CustomKeyHashMap extends _js_helper.CustomHashMap$(K, V) {
    containsKey(key) {
      if (!dart.test(this[_validKey](key))) return false;
      return super.containsKey(key);
    }
    _get(key) {
      if (!dart.test(this[_validKey](key))) return null;
      return super._get(key);
    }
    remove(key) {
      if (!dart.test(this[_validKey](key))) return null;
      return super.remove(key);
    }
  }
  (CustomKeyHashMap.new = function(equals, hashCode, validKey) {
    this[_validKey] = validKey;
    CustomKeyHashMap.__proto__.new.call(this, equals, hashCode);
  }).prototype = CustomKeyHashMap.prototype;
  dart.addTypeTests(CustomKeyHashMap);
  CustomKeyHashMap.prototype[_is_CustomKeyHashMap_default] = true;
  dart.setFieldSignature(CustomKeyHashMap, () => ({
    __proto__: dart.getFields(CustomKeyHashMap.__proto__),
    [_validKey]: dart.finalFieldType(ObjectTobool())
  }));
  dart.defineExtensionMethods(CustomKeyHashMap, ['containsKey', '_get', 'remove']);
  return CustomKeyHashMap;
});
_js_helper.CustomKeyHashMap = _js_helper.CustomKeyHashMap$();
dart.addTypeTests(_js_helper.CustomKeyHashMap, _is_CustomKeyHashMap_default);
_js_helper.convertDartClosureToJS = function(F, closure, arity) {
  return closure;
};
_js_helper.setNativeSubclassDispatchRecord = function(proto, interceptor) {
};
_js_helper.findDispatchTagForInterceptorClass = function(interceptorClassConstructor) {
};
_js_helper.makeLeafDispatchRecord = function(interceptor) {
};
const _nativeRegExp = Symbol('_nativeRegExp');
_js_helper.regExpGetNative = function(regexp) {
  return regexp[_nativeRegExp];
};
const _nativeGlobalVersion = Symbol('_nativeGlobalVersion');
_js_helper.regExpGetGlobalNative = function(regexp) {
  let nativeRegexp = regexp[_nativeGlobalVersion];
  nativeRegexp.lastIndex = 0;
  return nativeRegexp;
};
const _nativeAnchoredVersion = Symbol('_nativeAnchoredVersion');
_js_helper.regExpCaptureCount = function(regexp) {
  let nativeAnchoredRegExp = regexp[_nativeAnchoredVersion];
  let match = nativeAnchoredRegExp.exec('');
  return match.length - 2;
};
const _nativeGlobalRegExp = Symbol('_nativeGlobalRegExp');
const _nativeAnchoredRegExp = Symbol('_nativeAnchoredRegExp');
const _isMultiLine = Symbol('_isMultiLine');
const _isCaseSensitive = Symbol('_isCaseSensitive');
const _execGlobal = Symbol('_execGlobal');
const _execAnchored = Symbol('_execAnchored');
_js_helper.JSSyntaxRegExp = class JSSyntaxRegExp extends core.Object {
  toString() {
    return "RegExp/" + dart.str(this.pattern) + "/";
  }
  get [_nativeGlobalVersion]() {
    if (this[_nativeGlobalRegExp] != null) return this[_nativeGlobalRegExp];
    return this[_nativeGlobalRegExp] = _js_helper.JSSyntaxRegExp.makeNative(this.pattern, this[_isMultiLine], this[_isCaseSensitive], true);
  }
  get [_nativeAnchoredVersion]() {
    if (this[_nativeAnchoredRegExp] != null) return this[_nativeAnchoredRegExp];
    return this[_nativeAnchoredRegExp] = _js_helper.JSSyntaxRegExp.makeNative(dart.str(this.pattern) + "|()", this[_isMultiLine], this[_isCaseSensitive], true);
  }
  get [_isMultiLine]() {
    return this[_nativeRegExp].multiline;
  }
  get [_isCaseSensitive]() {
    return !this[_nativeRegExp].ignoreCase;
  }
  static makeNative(source, multiLine, caseSensitive, global) {
    if (source == null) dart.argumentError(source);
    let m = dart.test(multiLine) ? "m" : "";
    let i = dart.test(caseSensitive) ? "" : "i";
    let g = dart.test(global) ? "g" : "";
    let regexp = (function() {
      try {
        return new RegExp(source, m + i + g);
      } catch (e) {
        return e;
      }
    })();
    if (regexp instanceof RegExp) return regexp;
    let errorMessage = String(regexp);
    dart.throw(new core.FormatException.new("Illegal RegExp pattern: " + source + ", " + errorMessage));
  }
  firstMatch(string) {
    if (string == null) dart.argumentError(string);
    let m = this[_nativeRegExp].exec(string);
    if (m == null) return null;
    return new _js_helper._MatchImplementation.new(this, JSArrayOfString().of(m));
  }
  hasMatch(string) {
    if (string == null) dart.argumentError(string);
    return this[_nativeRegExp].test(string);
  }
  stringMatch(string) {
    let match = this.firstMatch(string);
    if (match != null) return match.group(0);
    return null;
  }
  allMatches(string, start) {
    if (string == null) dart.argumentError(string);
    if (start === void 0) start = 0;
    if (start == null) dart.argumentError(start);
    if (start < 0 || start > string.length) {
      dart.throw(new core.RangeError.range(start, 0, string.length));
    }
    return new _js_helper._AllMatchesIterable.new(this, string, start);
  }
  [_execGlobal](string, start) {
    let regexp = this[_nativeGlobalVersion];
    regexp.lastIndex = start;
    let match = regexp.exec(string);
    if (match == null) return null;
    return new _js_helper._MatchImplementation.new(this, JSArrayOfString().of(match));
  }
  [_execAnchored](string, start) {
    let regexp = this[_nativeAnchoredVersion];
    regexp.lastIndex = start;
    let match = regexp.exec(string);
    if (match == null) return null;
    if (match[$_get](dart.notNull(match[$length]) - 1) != null) return null;
    match[$length] = dart.notNull(match[$length]) - 1;
    return new _js_helper._MatchImplementation.new(this, JSArrayOfString().of(match));
  }
  matchAsPrefix(string, start) {
    if (start === void 0) start = 0;
    if (dart.notNull(start) < 0 || dart.notNull(start) > string.length) {
      dart.throw(new core.RangeError.range(start, 0, string.length));
    }
    return this[_execAnchored](string, start);
  }
  get isMultiLine() {
    return this[_isMultiLine];
  }
  get isCaseSensitive() {
    return this[_isCaseSensitive];
  }
};
(_js_helper.JSSyntaxRegExp.new = function(source, opts) {
  let multiLine = opts && 'multiLine' in opts ? opts.multiLine : false;
  let caseSensitive = opts && 'caseSensitive' in opts ? opts.caseSensitive : true;
  this[_nativeGlobalRegExp] = null;
  this[_nativeAnchoredRegExp] = null;
  this.pattern = source;
  this[_nativeRegExp] = _js_helper.JSSyntaxRegExp.makeNative(source, multiLine, caseSensitive, false);
}).prototype = _js_helper.JSSyntaxRegExp.prototype;
dart.addTypeTests(_js_helper.JSSyntaxRegExp);
_js_helper.JSSyntaxRegExp[dart.implements] = () => [core.RegExp];
dart.setMethodSignature(_js_helper.JSSyntaxRegExp, () => ({
  __proto__: dart.getMethods(_js_helper.JSSyntaxRegExp.__proto__),
  firstMatch: dart.fnType(core.Match, [core.String]),
  hasMatch: dart.fnType(core.bool, [core.String]),
  stringMatch: dart.fnType(core.String, [core.String]),
  allMatches: dart.fnType(core.Iterable$(core.Match), [core.String], [core.int]),
  [$allMatches]: dart.fnType(core.Iterable$(core.Match), [core.String], [core.int]),
  [_execGlobal]: dart.fnType(core.Match, [core.String, core.int]),
  [_execAnchored]: dart.fnType(core.Match, [core.String, core.int]),
  matchAsPrefix: dart.fnType(core.Match, [core.String], [core.int]),
  [$matchAsPrefix]: dart.fnType(core.Match, [core.String], [core.int])
}));
dart.setGetterSignature(_js_helper.JSSyntaxRegExp, () => ({
  __proto__: dart.getGetters(_js_helper.JSSyntaxRegExp.__proto__),
  [_nativeGlobalVersion]: dart.dynamic,
  [_nativeAnchoredVersion]: dart.dynamic,
  [_isMultiLine]: core.bool,
  [_isCaseSensitive]: core.bool,
  isMultiLine: core.bool,
  isCaseSensitive: core.bool
}));
dart.setFieldSignature(_js_helper.JSSyntaxRegExp, () => ({
  __proto__: dart.getFields(_js_helper.JSSyntaxRegExp.__proto__),
  pattern: dart.finalFieldType(core.String),
  [_nativeRegExp]: dart.finalFieldType(dart.dynamic),
  [_nativeGlobalRegExp]: dart.fieldType(dart.dynamic),
  [_nativeAnchoredRegExp]: dart.fieldType(dart.dynamic)
}));
dart.defineExtensionMethods(_js_helper.JSSyntaxRegExp, ['toString', 'allMatches', 'matchAsPrefix']);
const _match = Symbol('_match');
_js_helper._MatchImplementation = class _MatchImplementation extends core.Object {
  get input() {
    return this[_match].input;
  }
  get start() {
    return this[_match].index;
  }
  get end() {
    return dart.notNull(this.start) + this[_match][$_get](0).length;
  }
  group(index) {
    return this[_match][$_get](index);
  }
  _get(index) {
    return this.group(index);
  }
  get groupCount() {
    return dart.notNull(this[_match][$length]) - 1;
  }
  groups(groups) {
    let out = JSArrayOfString().of([]);
    for (let i of groups) {
      out[$add](this.group(i));
    }
    return out;
  }
};
(_js_helper._MatchImplementation.new = function(pattern, match) {
  this.pattern = pattern;
  this[_match] = match;
  if (!(typeof this[_match].input == 'string')) dart.assertFailed();
  if (!core.int.is(this[_match].index)) dart.assertFailed();
}).prototype = _js_helper._MatchImplementation.prototype;
dart.addTypeTests(_js_helper._MatchImplementation);
_js_helper._MatchImplementation[dart.implements] = () => [core.Match];
dart.setMethodSignature(_js_helper._MatchImplementation, () => ({
  __proto__: dart.getMethods(_js_helper._MatchImplementation.__proto__),
  group: dart.fnType(core.String, [core.int]),
  _get: dart.fnType(core.String, [core.int]),
  groups: dart.fnType(core.List$(core.String), [core.List$(core.int)])
}));
dart.setGetterSignature(_js_helper._MatchImplementation, () => ({
  __proto__: dart.getGetters(_js_helper._MatchImplementation.__proto__),
  input: core.String,
  start: core.int,
  end: core.int,
  groupCount: core.int
}));
dart.setFieldSignature(_js_helper._MatchImplementation, () => ({
  __proto__: dart.getFields(_js_helper._MatchImplementation.__proto__),
  pattern: dart.finalFieldType(core.Pattern),
  [_match]: dart.finalFieldType(ListOfString())
}));
const _re = Symbol('_re');
const _string$ = Symbol('_string');
const _start$ = Symbol('_start');
core.Match = class Match extends core.Object {};
(core.Match.new = function() {
}).prototype = core.Match.prototype;
dart.addTypeTests(core.Match);
_js_helper._AllMatchesIterable = class _AllMatchesIterable extends collection.IterableBase$(core.Match) {
  get iterator() {
    return new _js_helper._AllMatchesIterator.new(this[_re], this[_string$], this[_start$]);
  }
};
(_js_helper._AllMatchesIterable.new = function(re, string, start) {
  this[_re] = re;
  this[_string$] = string;
  this[_start$] = start;
  _js_helper._AllMatchesIterable.__proto__.new.call(this);
}).prototype = _js_helper._AllMatchesIterable.prototype;
dart.addTypeTests(_js_helper._AllMatchesIterable);
dart.setGetterSignature(_js_helper._AllMatchesIterable, () => ({
  __proto__: dart.getGetters(_js_helper._AllMatchesIterable.__proto__),
  iterator: core.Iterator$(core.Match),
  [$iterator]: core.Iterator$(core.Match)
}));
dart.setFieldSignature(_js_helper._AllMatchesIterable, () => ({
  __proto__: dart.getFields(_js_helper._AllMatchesIterable.__proto__),
  [_re]: dart.finalFieldType(_js_helper.JSSyntaxRegExp),
  [_string$]: dart.finalFieldType(core.String),
  [_start$]: dart.finalFieldType(core.int)
}));
dart.defineExtensionAccessors(_js_helper._AllMatchesIterable, ['iterator']);
const _regExp = Symbol('_regExp');
const _nextIndex = Symbol('_nextIndex');
_js_helper._AllMatchesIterator = class _AllMatchesIterator extends core.Object {
  get current() {
    return this[_current$0];
  }
  moveNext() {
    if (this[_string$] == null) return false;
    if (dart.notNull(this[_nextIndex]) <= this[_string$].length) {
      let match = this[_regExp][_execGlobal](this[_string$], this[_nextIndex]);
      if (match != null) {
        this[_current$0] = match;
        let nextIndex = match.end;
        if (match.start == nextIndex) {
          nextIndex = dart.notNull(nextIndex) + 1;
        }
        this[_nextIndex] = nextIndex;
        return true;
      }
    }
    this[_current$0] = null;
    this[_string$] = null;
    return false;
  }
};
(_js_helper._AllMatchesIterator.new = function(regExp, string, nextIndex) {
  this[_current$0] = null;
  this[_regExp] = regExp;
  this[_string$] = string;
  this[_nextIndex] = nextIndex;
}).prototype = _js_helper._AllMatchesIterator.prototype;
dart.addTypeTests(_js_helper._AllMatchesIterator);
_js_helper._AllMatchesIterator[dart.implements] = () => [IteratorOfMatch()];
dart.setMethodSignature(_js_helper._AllMatchesIterator, () => ({
  __proto__: dart.getMethods(_js_helper._AllMatchesIterator.__proto__),
  moveNext: dart.fnType(core.bool, [])
}));
dart.setGetterSignature(_js_helper._AllMatchesIterator, () => ({
  __proto__: dart.getGetters(_js_helper._AllMatchesIterator.__proto__),
  current: core.Match
}));
dart.setFieldSignature(_js_helper._AllMatchesIterator, () => ({
  __proto__: dart.getFields(_js_helper._AllMatchesIterator.__proto__),
  [_regExp]: dart.finalFieldType(_js_helper.JSSyntaxRegExp),
  [_string$]: dart.fieldType(core.String),
  [_nextIndex]: dart.fieldType(core.int),
  [_current$0]: dart.fieldType(core.Match)
}));
_js_helper.firstMatchAfter = function(regExp, string, start) {
  return regExp[_execGlobal](string, start);
};
_js_helper.stringIndexOfStringUnchecked = function(receiver, other, startIndex) {
  return receiver.indexOf(other, startIndex);
};
_js_helper.substring1Unchecked = function(receiver, startIndex) {
  return receiver.substring(startIndex);
};
_js_helper.substring2Unchecked = function(receiver, startIndex, endIndex) {
  return receiver.substring(startIndex, endIndex);
};
_js_helper.stringContainsStringUnchecked = function(receiver, other, startIndex) {
  return _js_helper.stringIndexOfStringUnchecked(receiver, other, startIndex) >= 0;
};
_js_helper.StringMatch = class StringMatch extends core.Object {
  get end() {
    return dart.notNull(this.start) + this.pattern.length;
  }
  _get(g) {
    return this.group(g);
  }
  get groupCount() {
    return 0;
  }
  group(group_) {
    if (group_ !== 0) {
      dart.throw(new core.RangeError.value(group_));
    }
    return this.pattern;
  }
  groups(groups_) {
    let result = JSArrayOfString().of([]);
    for (let g of groups_) {
      result[$add](this.group(g));
    }
    return result;
  }
};
(_js_helper.StringMatch.new = function(start, input, pattern) {
  this.start = start;
  this.input = input;
  this.pattern = pattern;
}).prototype = _js_helper.StringMatch.prototype;
dart.addTypeTests(_js_helper.StringMatch);
_js_helper.StringMatch[dart.implements] = () => [core.Match];
dart.setMethodSignature(_js_helper.StringMatch, () => ({
  __proto__: dart.getMethods(_js_helper.StringMatch.__proto__),
  _get: dart.fnType(core.String, [core.int]),
  group: dart.fnType(core.String, [core.int]),
  groups: dart.fnType(core.List$(core.String), [core.List$(core.int)])
}));
dart.setGetterSignature(_js_helper.StringMatch, () => ({
  __proto__: dart.getGetters(_js_helper.StringMatch.__proto__),
  end: core.int,
  groupCount: core.int
}));
dart.setFieldSignature(_js_helper.StringMatch, () => ({
  __proto__: dart.getFields(_js_helper.StringMatch.__proto__),
  start: dart.finalFieldType(core.int),
  input: dart.finalFieldType(core.String),
  pattern: dart.finalFieldType(core.String)
}));
_js_helper.allMatchesInStringUnchecked = function(pattern, string, startIndex) {
  return new _js_helper._StringAllMatchesIterable.new(string, pattern, startIndex);
};
const _input = Symbol('_input');
const _pattern = Symbol('_pattern');
const _index$0 = Symbol('_index');
_js_helper._StringAllMatchesIterable = class _StringAllMatchesIterable extends core.Iterable$(core.Match) {
  get iterator() {
    return new _js_helper._StringAllMatchesIterator.new(this[_input], this[_pattern], this[_index$0]);
  }
  get first() {
    let index = _js_helper.stringIndexOfStringUnchecked(this[_input], this[_pattern], this[_index$0]);
    if (index >= 0) {
      return new _js_helper.StringMatch.new(index, this[_input], this[_pattern]);
    }
    dart.throw(_internal.IterableElementError.noElement());
  }
};
(_js_helper._StringAllMatchesIterable.new = function(input, pattern, index) {
  this[_input] = input;
  this[_pattern] = pattern;
  this[_index$0] = index;
  _js_helper._StringAllMatchesIterable.__proto__.new.call(this);
}).prototype = _js_helper._StringAllMatchesIterable.prototype;
dart.addTypeTests(_js_helper._StringAllMatchesIterable);
dart.setGetterSignature(_js_helper._StringAllMatchesIterable, () => ({
  __proto__: dart.getGetters(_js_helper._StringAllMatchesIterable.__proto__),
  iterator: core.Iterator$(core.Match),
  [$iterator]: core.Iterator$(core.Match),
  first: core.Match,
  [$first]: core.Match
}));
dart.setFieldSignature(_js_helper._StringAllMatchesIterable, () => ({
  __proto__: dart.getFields(_js_helper._StringAllMatchesIterable.__proto__),
  [_input]: dart.finalFieldType(core.String),
  [_pattern]: dart.finalFieldType(core.String),
  [_index$0]: dart.finalFieldType(core.int)
}));
dart.defineExtensionAccessors(_js_helper._StringAllMatchesIterable, ['iterator', 'first']);
_js_helper._StringAllMatchesIterator = class _StringAllMatchesIterator extends core.Object {
  moveNext() {
    if (dart.notNull(this[_index$0]) + this[_pattern].length > this[_input].length) {
      this[_current$0] = null;
      return false;
    }
    let index = _js_helper.stringIndexOfStringUnchecked(this[_input], this[_pattern], this[_index$0]);
    if (index < 0) {
      this[_index$0] = this[_input].length + 1;
      this[_current$0] = null;
      return false;
    }
    let end = index + this[_pattern].length;
    this[_current$0] = new _js_helper.StringMatch.new(index, this[_input], this[_pattern]);
    if (end === this[_index$0]) end++;
    this[_index$0] = end;
    return true;
  }
  get current() {
    return this[_current$0];
  }
};
(_js_helper._StringAllMatchesIterator.new = function(input, pattern, index) {
  this[_current$0] = null;
  this[_input] = input;
  this[_pattern] = pattern;
  this[_index$0] = index;
}).prototype = _js_helper._StringAllMatchesIterator.prototype;
dart.addTypeTests(_js_helper._StringAllMatchesIterator);
_js_helper._StringAllMatchesIterator[dart.implements] = () => [IteratorOfMatch()];
dart.setMethodSignature(_js_helper._StringAllMatchesIterator, () => ({
  __proto__: dart.getMethods(_js_helper._StringAllMatchesIterator.__proto__),
  moveNext: dart.fnType(core.bool, [])
}));
dart.setGetterSignature(_js_helper._StringAllMatchesIterator, () => ({
  __proto__: dart.getGetters(_js_helper._StringAllMatchesIterator.__proto__),
  current: core.Match
}));
dart.setFieldSignature(_js_helper._StringAllMatchesIterator, () => ({
  __proto__: dart.getFields(_js_helper._StringAllMatchesIterator.__proto__),
  [_input]: dart.finalFieldType(core.String),
  [_pattern]: dart.finalFieldType(core.String),
  [_index$0]: dart.fieldType(core.int),
  [_current$0]: dart.fieldType(core.Match)
}));
_js_helper.stringContainsUnchecked = function(receiver, other, startIndex) {
  if (typeof other == 'string') {
    return _js_helper.stringContainsStringUnchecked(receiver, other, startIndex);
  } else if (_js_helper.JSSyntaxRegExp.is(other)) {
    return other.hasMatch(receiver[$substring](startIndex));
  } else {
    let substr = receiver[$substring](startIndex);
    return core.bool._check(dart.dload(dart.dsend(other, 'allMatches', [substr]), 'isNotEmpty'));
  }
};
_js_helper.stringReplaceJS = function(receiver, replacer, replacement) {
  replacement = replacement.replace(/\$/g, "$$$$");
  return receiver.replace(replacer, replacement);
};
_js_helper.stringReplaceFirstRE = function(receiver, regexp, replacement, startIndex) {
  let match = regexp[_execGlobal](receiver, startIndex);
  if (match == null) return receiver;
  let start = match.start;
  let end = match.end;
  return _js_helper.stringReplaceRangeUnchecked(receiver, start, end, replacement);
};
_js_helper.quoteStringForRegExp = function(string) {
  return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&");
};
_js_helper.stringReplaceAllUnchecked = function(receiver, pattern, replacement) {
  if (pattern == null) dart.argumentError(pattern);
  if (replacement == null) dart.argumentError(replacement);
  if (typeof pattern == 'string') {
    if (pattern === "") {
      if (receiver === "") {
        return replacement;
      } else {
        let result = new core.StringBuffer.new();
        let length = receiver.length;
        result.write(replacement);
        for (let i = 0; i < length; i++) {
          result.write(receiver[$_get](i));
          result.write(replacement);
        }
        return result.toString();
      }
    } else {
      let quoted = _js_helper.quoteStringForRegExp(pattern);
      let replacer = new RegExp(quoted, 'g');
      return _js_helper.stringReplaceJS(receiver, replacer, replacement);
    }
  } else if (_js_helper.JSSyntaxRegExp.is(pattern)) {
    let re = _js_helper.regExpGetGlobalNative(pattern);
    return _js_helper.stringReplaceJS(receiver, re, replacement);
  } else {
    dart.throw("String.replaceAll(Pattern) UNIMPLEMENTED");
  }
};
_js_helper._matchString = function(match) {
  return match._get(0);
};
_js_helper._stringIdentity = function(string) {
  return string;
};
_js_helper.stringReplaceAllFuncUnchecked = function(receiver, pattern, onMatch, onNonMatch) {
  if (pattern == null) dart.argumentError(pattern);
  if (onMatch == null) onMatch = dart.fn(_js_helper._matchString, MatchToString());
  if (onNonMatch == null) onNonMatch = dart.fn(_js_helper._stringIdentity, StringToString());
  if (typeof pattern == 'string') {
    return _js_helper.stringReplaceAllStringFuncUnchecked(receiver, pattern, onMatch, onNonMatch);
  }
  let buffer = new core.StringBuffer.new();
  let startIndex = 0;
  for (let match of pattern[$allMatches](receiver)) {
    buffer.write(onNonMatch(receiver[$substring](startIndex, match.start)));
    buffer.write(onMatch(match));
    startIndex = match.end;
  }
  buffer.write(onNonMatch(receiver[$substring](startIndex)));
  return buffer.toString();
};
_js_helper.stringReplaceAllEmptyFuncUnchecked = function(receiver, onMatch, onNonMatch) {
  let buffer = new core.StringBuffer.new();
  let length = receiver.length;
  let i = 0;
  buffer.write(onNonMatch(""));
  while (i < length) {
    buffer.write(onMatch(new _js_helper.StringMatch.new(i, receiver, "")));
    let code = receiver[$codeUnitAt](i);
    if ((code & ~1023) === 55296 && length > i + 1) {
      code = receiver[$codeUnitAt](i + 1);
      if ((code & ~1023) === 56320) {
        buffer.write(onNonMatch(receiver[$substring](i, i + 2)));
        i = i + 2;
        continue;
      }
    }
    buffer.write(onNonMatch(receiver[$_get](i)));
    i++;
  }
  buffer.write(onMatch(new _js_helper.StringMatch.new(i, receiver, "")));
  buffer.write(onNonMatch(""));
  return buffer.toString();
};
_js_helper.stringReplaceAllStringFuncUnchecked = function(receiver, pattern, onMatch, onNonMatch) {
  let patternLength = pattern.length;
  if (patternLength === 0) {
    return _js_helper.stringReplaceAllEmptyFuncUnchecked(receiver, onMatch, onNonMatch);
  }
  let length = receiver.length;
  let buffer = new core.StringBuffer.new();
  let startIndex = 0;
  while (startIndex < length) {
    let position = _js_helper.stringIndexOfStringUnchecked(receiver, pattern, startIndex);
    if (position === -1) {
      break;
    }
    buffer.write(onNonMatch(receiver[$substring](startIndex, position)));
    buffer.write(onMatch(new _js_helper.StringMatch.new(position, receiver, pattern)));
    startIndex = position + patternLength;
  }
  buffer.write(onNonMatch(receiver[$substring](startIndex)));
  return buffer.toString();
};
_js_helper.stringReplaceFirstUnchecked = function(receiver, pattern, replacement, startIndex) {
  if (pattern == null) dart.argumentError(pattern);
  if (typeof pattern == 'string') {
    let index = _js_helper.stringIndexOfStringUnchecked(receiver, pattern, startIndex);
    if (index < 0) return receiver;
    let end = index + pattern.length;
    return _js_helper.stringReplaceRangeUnchecked(receiver, index, end, replacement);
  }
  if (_js_helper.JSSyntaxRegExp.is(pattern)) {
    return startIndex === 0 ? _js_helper.stringReplaceJS(receiver, _js_helper.regExpGetNative(pattern), replacement) : _js_helper.stringReplaceFirstRE(receiver, pattern, replacement, startIndex);
  }
  let matches = pattern[$allMatches](receiver, startIndex)[$iterator];
  if (!dart.test(matches.moveNext())) return receiver;
  let match = matches.current;
  return receiver[$replaceRange](match.start, match.end, replacement);
};
_js_helper.stringReplaceFirstMappedUnchecked = function(receiver, pattern, replace, startIndex) {
  let matches = pattern[$allMatches](receiver, startIndex)[$iterator];
  if (!dart.test(matches.moveNext())) return receiver;
  let match = matches.current;
  let replacement = dart.str(replace(match));
  return receiver[$replaceRange](match.start, match.end, replacement);
};
_js_helper.stringJoinUnchecked = function(array, separator) {
  return array.join(separator);
};
_js_helper.stringReplaceRangeUnchecked = function(receiver, start, end, replacement) {
  let prefix = receiver.substring(0, start);
  let suffix = receiver.substring(end);
  return prefix + dart.str(replacement) + suffix;
};
_js_helper.getRuntimeType = function(object) {
  return dart.getReifiedType(object);
};
_js_helper.getIndex = function(array, index) {
  if (!dart.test(_js_helper.isJsArray(array))) dart.assertFailed();
  return array[index];
};
_js_helper.getLength = function(array) {
  if (!dart.test(_js_helper.isJsArray(array))) dart.assertFailed();
  return array.length;
};
_js_helper.isJsArray = function(value) {
  return _interceptors.JSArray.is(value);
};
_js_mirrors.getName = function(symbol) {
  if (_js_helper.PrivateSymbol.is(symbol)) {
    return _js_helper.PrivateSymbol.getName(symbol);
  } else {
    return _internal.Symbol.getName(_internal.Symbol.as(symbol));
  }
};
_js_mirrors.getSymbol = function(name, library) {
  return dart.throw(new core.UnimplementedError.new("MirrorSystem.getSymbol unimplemented"));
};
dart.defineLazy(_js_mirrors, {
  /*_js_mirrors.currentJsMirrorSystem*/get currentJsMirrorSystem() {
    return new _js_mirrors.JsMirrorSystem.new();
  },
  /*_js_mirrors._typeMirror*/get _typeMirror() {
    return Symbol("_typeMirror");
  }
});
_js_mirrors.reflect = function(reflectee) {
  if (core.Function.is(reflectee)) {
    return new _js_mirrors.JsClosureMirror.__(reflectee);
  } else {
    return new _js_mirrors.JsInstanceMirror.__(reflectee);
  }
};
_js_mirrors.reflectType = function(key) {
  let unwrapped = dart.unwrapType(key);
  let property = Object.getOwnPropertyDescriptor(unwrapped, _js_mirrors._typeMirror);
  if (property != null) {
    return property.value;
  }
  let mirror = new _js_mirrors.JsClassMirror.__(key);
  unwrapped[_js_mirrors._typeMirror] = mirror;
  return mirror;
};
_js_mirrors._getESSymbol = function(symbol) {
  return _js_helper.PrivateSymbol.getNativeSymbol(symbol);
};
_js_mirrors._getMember = function(symbol) {
  let privateSymbol = _js_mirrors._getESSymbol(symbol);
  if (privateSymbol != null) {
    return privateSymbol;
  }
  let name = _js_mirrors.getName(symbol);
  switch (name) {
    case "[]":
    {
      name = "_get";
      break;
    }
    case "[]=":
    {
      name = "_set";
      break;
    }
    case "unary-":
    {
      name = "_negate";
      break;
    }
    case "constructor":
    case "prototype":
    {
      name = "_" + dart.str(name);
      break;
    }
  }
  return name;
};
_js_mirrors._getNameForESSymbol = function(member) {
  if (!(typeof member == "symbol")) dart.assertFailed();
  let str = dart.toString(member);
  if (!(str[$startsWith]("Symbol(") && str[$endsWith](")"))) dart.assertFailed();
  return str[$substring](7, str.length - 1);
};
_js_mirrors._getSymbolForESSymbol = function(member) {
  let name = _js_mirrors._getNameForESSymbol(member);
  return new _js_helper.PrivateSymbol.new(name, member);
};
_js_mirrors._getSymbolForMember = function(member) {
  if (typeof member == 'string') {
    return core.Symbol.new(member);
  } else {
    let name = _js_mirrors._getNameForESSymbol(member);
    return new _js_helper.PrivateSymbol.new(name, member);
  }
};
_js_mirrors._toDartMap = function(data) {
  if (data == null) return new (LinkedMapOfSymbol$dynamic()).new();
  let map = new (LinkedMapOfSymbol$dynamic()).new();
  let publicMembers = Object.getOwnPropertyNames(data);
  for (let member of core.Iterable._check(publicMembers)) {
    let symbol = core.Symbol.new(core.String._check(member));
    map[$_set](symbol, data[member]);
  }
  let privateMembers = Object.getOwnPropertySymbols(data);
  for (let member of core.Iterable._check(privateMembers)) {
    let symbol = _js_mirrors._getSymbolForESSymbol(member);
    map[$_set](symbol, data[member]);
  }
  return map;
};
_js_mirrors._runtimeType = function(obj) {
  return dart.wrapType(dart.getReifiedType(obj));
};
_js_mirrors._unimplemented = function(t, i) {
  dart.throw(new core.UnimplementedError.new(dart.str(t) + "." + dart.str(_js_mirrors.getName(i.memberName)) + " unimplemented"));
};
_js_mirrors._toJsMap = function(map) {
  if (map == null) return null;
  let obj = {};
  map[$forEach](dart.fn((key, value) => {
    obj[_js_mirrors.getName(key)] = value;
  }, SymbolAnddynamicToNull()));
  return obj;
};
let const$3;
_js_mirrors.JsMirrorSystem = class JsMirrorSystem extends core.Object {
  get libraries() {
    return const$3 || (const$3 = dart.constMap(core.Uri, mirrors.LibraryMirror, []));
  }
  noSuchMethod(i) {
    _js_mirrors._unimplemented(this.runtimeType, i);
  }
  findLibrary(libraryName) {
    return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('findLibrary', [libraryName], {isMethod: true})));
  }
  get isolate() {
    return mirrors.IsolateMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('isolate', [], {isGetter: true})));
  }
  get dynamicType() {
    return mirrors.TypeMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('dynamicType', [], {isGetter: true})));
  }
  get voidType() {
    return mirrors.TypeMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('voidType', [], {isGetter: true})));
  }
};
(_js_mirrors.JsMirrorSystem.new = function() {
}).prototype = _js_mirrors.JsMirrorSystem.prototype;
dart.addTypeTests(_js_mirrors.JsMirrorSystem);
_js_mirrors.JsMirrorSystem[dart.implements] = () => [mirrors.MirrorSystem];
dart.setMethodSignature(_js_mirrors.JsMirrorSystem, () => ({
  __proto__: dart.getMethods(_js_mirrors.JsMirrorSystem.__proto__),
  findLibrary: dart.fnType(mirrors.LibraryMirror, [core.Symbol])
}));
dart.setGetterSignature(_js_mirrors.JsMirrorSystem, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsMirrorSystem.__proto__),
  libraries: core.Map$(core.Uri, mirrors.LibraryMirror),
  isolate: mirrors.IsolateMirror,
  dynamicType: mirrors.TypeMirror,
  voidType: mirrors.TypeMirror
}));
dart.defineExtensionMethods(_js_mirrors.JsMirrorSystem, ['noSuchMethod']);
_js_mirrors.JsMirror = class JsMirror extends core.Object {
  noSuchMethod(i) {
    _js_mirrors._unimplemented(this.runtimeType, i);
  }
};
(_js_mirrors.JsMirror.new = function() {
}).prototype = _js_mirrors.JsMirror.prototype;
dart.addTypeTests(_js_mirrors.JsMirror);
_js_mirrors.JsMirror[dart.implements] = () => [mirrors.Mirror];
dart.defineExtensionMethods(_js_mirrors.JsMirror, ['noSuchMethod']);
_js_mirrors.JsCombinatorMirror = class JsCombinatorMirror extends _js_mirrors.JsMirror {
  get identifiers() {
    return ListOfSymbol()._check(this.noSuchMethod(new dart.InvocationImpl.new('identifiers', [], {isGetter: true})));
  }
  get isShow() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isShow', [], {isGetter: true})));
  }
  get isHide() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isHide', [], {isGetter: true})));
  }
};
(_js_mirrors.JsCombinatorMirror.new = function() {
}).prototype = _js_mirrors.JsCombinatorMirror.prototype;
dart.addTypeTests(_js_mirrors.JsCombinatorMirror);
_js_mirrors.JsCombinatorMirror[dart.implements] = () => [mirrors.CombinatorMirror];
dart.setGetterSignature(_js_mirrors.JsCombinatorMirror, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsCombinatorMirror.__proto__),
  identifiers: core.List$(core.Symbol),
  isShow: core.bool,
  isHide: core.bool
}));
_js_mirrors.JsDeclarationMirror = class JsDeclarationMirror extends _js_mirrors.JsMirror {
  get simpleName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('simpleName', [], {isGetter: true})));
  }
  get qualifiedName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('qualifiedName', [], {isGetter: true})));
  }
  get owner() {
    return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('owner', [], {isGetter: true})));
  }
  get isPrivate() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isPrivate', [], {isGetter: true})));
  }
  get isTopLevel() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isTopLevel', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
  }
  get metadata() {
    return ListOfInstanceMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('metadata', [], {isGetter: true})));
  }
};
(_js_mirrors.JsDeclarationMirror.new = function() {
}).prototype = _js_mirrors.JsDeclarationMirror.prototype;
dart.addTypeTests(_js_mirrors.JsDeclarationMirror);
_js_mirrors.JsDeclarationMirror[dart.implements] = () => [mirrors.DeclarationMirror];
dart.setGetterSignature(_js_mirrors.JsDeclarationMirror, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsDeclarationMirror.__proto__),
  simpleName: core.Symbol,
  qualifiedName: core.Symbol,
  owner: mirrors.DeclarationMirror,
  isPrivate: core.bool,
  isTopLevel: core.bool,
  location: mirrors.SourceLocation,
  metadata: core.List$(mirrors.InstanceMirror)
}));
_js_mirrors.JsIsolateMirror = class JsIsolateMirror extends _js_mirrors.JsMirror {
  loadUri(uri) {
    return FutureOfLibraryMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('loadUri', [uri], {isMethod: true})));
  }
  get debugName() {
    return core.String._check(this.noSuchMethod(new dart.InvocationImpl.new('debugName', [], {isGetter: true})));
  }
  get isCurrent() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isCurrent', [], {isGetter: true})));
  }
  get rootLibrary() {
    return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('rootLibrary', [], {isGetter: true})));
  }
};
(_js_mirrors.JsIsolateMirror.new = function() {
}).prototype = _js_mirrors.JsIsolateMirror.prototype;
dart.addTypeTests(_js_mirrors.JsIsolateMirror);
_js_mirrors.JsIsolateMirror[dart.implements] = () => [mirrors.IsolateMirror];
dart.setMethodSignature(_js_mirrors.JsIsolateMirror, () => ({
  __proto__: dart.getMethods(_js_mirrors.JsIsolateMirror.__proto__),
  loadUri: dart.fnType(async.Future$(mirrors.LibraryMirror), [core.Uri])
}));
dart.setGetterSignature(_js_mirrors.JsIsolateMirror, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsIsolateMirror.__proto__),
  debugName: core.String,
  isCurrent: core.bool,
  rootLibrary: mirrors.LibraryMirror
}));
_js_mirrors.JsLibraryDependencyMirror = class JsLibraryDependencyMirror extends _js_mirrors.JsMirror {
  loadLibrary() {
    return FutureOfLibraryMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('loadLibrary', [], {isMethod: true})));
  }
  get isImport() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isImport', [], {isGetter: true})));
  }
  get isExport() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isExport', [], {isGetter: true})));
  }
  get isDeferred() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isDeferred', [], {isGetter: true})));
  }
  get sourceLibrary() {
    return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('sourceLibrary', [], {isGetter: true})));
  }
  get targetLibrary() {
    return mirrors.LibraryMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('targetLibrary', [], {isGetter: true})));
  }
  get prefix() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('prefix', [], {isGetter: true})));
  }
  get combinators() {
    return ListOfCombinatorMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('combinators', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
  }
  get metadata() {
    return ListOfInstanceMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('metadata', [], {isGetter: true})));
  }
};
(_js_mirrors.JsLibraryDependencyMirror.new = function() {
}).prototype = _js_mirrors.JsLibraryDependencyMirror.prototype;
dart.addTypeTests(_js_mirrors.JsLibraryDependencyMirror);
_js_mirrors.JsLibraryDependencyMirror[dart.implements] = () => [mirrors.LibraryDependencyMirror];
dart.setMethodSignature(_js_mirrors.JsLibraryDependencyMirror, () => ({
  __proto__: dart.getMethods(_js_mirrors.JsLibraryDependencyMirror.__proto__),
  loadLibrary: dart.fnType(async.Future$(mirrors.LibraryMirror), [])
}));
dart.setGetterSignature(_js_mirrors.JsLibraryDependencyMirror, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsLibraryDependencyMirror.__proto__),
  isImport: core.bool,
  isExport: core.bool,
  isDeferred: core.bool,
  sourceLibrary: mirrors.LibraryMirror,
  targetLibrary: mirrors.LibraryMirror,
  prefix: core.Symbol,
  combinators: core.List$(mirrors.CombinatorMirror),
  location: mirrors.SourceLocation,
  metadata: core.List$(mirrors.InstanceMirror)
}));
_js_mirrors.JsObjectMirror = class JsObjectMirror extends _js_mirrors.JsMirror {
  invoke(memberName, positionalArguments, namedArguments) {
    if (namedArguments === void 0) namedArguments = null;
    return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('invoke', [memberName, positionalArguments, namedArguments], {isMethod: true})));
  }
  getField(fieldName) {
    return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('getField', [fieldName], {isMethod: true})));
  }
  setField(fieldName, value) {
    return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('setField', [fieldName, value], {isMethod: true})));
  }
  delegate(invocation) {
    return this.noSuchMethod(new dart.InvocationImpl.new('delegate', [invocation], {isMethod: true}));
  }
};
(_js_mirrors.JsObjectMirror.new = function() {
}).prototype = _js_mirrors.JsObjectMirror.prototype;
dart.addTypeTests(_js_mirrors.JsObjectMirror);
_js_mirrors.JsObjectMirror[dart.implements] = () => [mirrors.ObjectMirror];
dart.setMethodSignature(_js_mirrors.JsObjectMirror, () => ({
  __proto__: dart.getMethods(_js_mirrors.JsObjectMirror.__proto__),
  invoke: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core.Symbol, dart.dynamic)]),
  getField: dart.fnType(mirrors.InstanceMirror, [core.Symbol]),
  setField: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.Object]),
  delegate: dart.fnType(dart.dynamic, [core.Invocation])
}));
_js_mirrors.JsInstanceMirror = class JsInstanceMirror extends _js_mirrors.JsObjectMirror {
  get hasReflectee() {
    return true;
  }
  get type() {
    if (this.reflectee == null) return mirrors.reflectClass(dart.wrapType(core.Null));
    return mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._runtimeType(this.reflectee))));
  }
  _equals(other) {
    return _js_mirrors.JsInstanceMirror.is(other) && core.identical(this.reflectee, other.reflectee);
  }
  get hashCode() {
    return (dart.notNull(core.identityHashCode(this.reflectee)) ^ 909522486) >>> 0;
  }
  getField(symbol) {
    let name = _js_mirrors._getMember(symbol);
    let field = dart.dloadMirror(this.reflectee, name);
    return _js_mirrors.reflect(field);
  }
  setField(symbol, value) {
    let name = _js_mirrors._getMember(symbol);
    dart.dputMirror(this.reflectee, name, value);
    return _js_mirrors.reflect(value);
  }
  invoke(symbol, args, namedArgs) {
    if (namedArgs === void 0) namedArgs = null;
    let name = _js_mirrors._getMember(symbol);
    let result = dart.callMethod(this.reflectee, name, null, args, _js_mirrors._toJsMap(namedArgs), name);
    return _js_mirrors.reflect(result);
  }
  toString() {
    return "InstanceMirror on '" + dart.str(this.reflectee) + "'";
  }
  delegate(invocation) {
    return this.noSuchMethod(new dart.InvocationImpl.new('delegate', [invocation], {isMethod: true}));
  }
};
(_js_mirrors.JsInstanceMirror.__ = function(reflectee) {
  this.reflectee = reflectee;
}).prototype = _js_mirrors.JsInstanceMirror.prototype;
dart.addTypeTests(_js_mirrors.JsInstanceMirror);
_js_mirrors.JsInstanceMirror[dart.implements] = () => [mirrors.InstanceMirror];
dart.setMethodSignature(_js_mirrors.JsInstanceMirror, () => ({
  __proto__: dart.getMethods(_js_mirrors.JsInstanceMirror.__proto__),
  _equals: dart.fnType(core.bool, [core.Object]),
  [$_equals]: dart.fnType(core.bool, [core.Object]),
  getField: dart.fnType(mirrors.InstanceMirror, [core.Symbol]),
  setField: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.Object]),
  invoke: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core.Symbol, dart.dynamic)]),
  delegate: dart.fnType(dart.dynamic, [core.Invocation])
}));
dart.setGetterSignature(_js_mirrors.JsInstanceMirror, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsInstanceMirror.__proto__),
  hasReflectee: core.bool,
  type: mirrors.ClassMirror
}));
dart.setFieldSignature(_js_mirrors.JsInstanceMirror, () => ({
  __proto__: dart.getFields(_js_mirrors.JsInstanceMirror.__proto__),
  reflectee: dart.finalFieldType(dart.dynamic)
}));
dart.defineExtensionMethods(_js_mirrors.JsInstanceMirror, ['_equals', 'toString']);
dart.defineExtensionAccessors(_js_mirrors.JsInstanceMirror, ['hashCode']);
_js_mirrors.JsClosureMirror = class JsClosureMirror extends _js_mirrors.JsInstanceMirror {
  apply(args, namedArgs) {
    if (namedArgs === void 0) namedArgs = null;
    let result = dart.dcall(this.reflectee, args, _js_mirrors._toJsMap(namedArgs));
    return _js_mirrors.reflect(result);
  }
  delegate(invocation) {
    return this.noSuchMethod(new dart.InvocationImpl.new('delegate', [invocation], {isMethod: true}));
  }
  get function() {
    return mirrors.MethodMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('function', [], {isGetter: true})));
  }
};
(_js_mirrors.JsClosureMirror.__ = function(reflectee) {
  _js_mirrors.JsClosureMirror.__proto__.__.call(this, reflectee);
}).prototype = _js_mirrors.JsClosureMirror.prototype;
dart.addTypeTests(_js_mirrors.JsClosureMirror);
_js_mirrors.JsClosureMirror[dart.implements] = () => [mirrors.ClosureMirror];
dart.setMethodSignature(_js_mirrors.JsClosureMirror, () => ({
  __proto__: dart.getMethods(_js_mirrors.JsClosureMirror.__proto__),
  apply: dart.fnType(mirrors.InstanceMirror, [core.List], [core.Map$(core.Symbol, dart.dynamic)]),
  delegate: dart.fnType(dart.dynamic, [core.Invocation])
}));
dart.setGetterSignature(_js_mirrors.JsClosureMirror, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsClosureMirror.__proto__),
  function: mirrors.MethodMirror
}));
const _cls = Symbol('_cls');
const _raw = Symbol('_raw');
const _originalDeclaration = Symbol('_originalDeclaration');
const _mixin = Symbol('_mixin');
const _typeArguments = Symbol('_typeArguments');
const _metadata$ = Symbol('_metadata');
const _declarations = Symbol('_declarations');
let const$4;
let const$5;
_js_mirrors.JsClassMirror = class JsClassMirror extends _js_mirrors.JsMirror {
  get metadata() {
    if (this[_metadata$] == null) {
      let unwrapped = dart.unwrapType(this[_cls]);
      let fn = Object.hasOwnProperty.call(unwrapped, dart.metadata) ? unwrapped[dart.metadata] : null;
      this[_metadata$] = fn == null ? const$5 || (const$5 = dart.constList([], mirrors.InstanceMirror)) : ListOfInstanceMirror().unmodifiable(core.Iterable._check(dart.dsend(dart.dcall(fn, []), 'map', [dart.fn(i => _js_mirrors.reflect(i), dynamicToInstanceMirror())])));
    }
    return this[_metadata$];
  }
  get declarations() {
    if (this[_declarations] == null) {
      this[_declarations] = new (LinkedMapOfSymbol$DeclarationMirror()).new();
      let unwrapped = dart.unwrapType(this[_cls]);
      let constructors = _js_mirrors._toDartMap(dart.getConstructors(unwrapped));
      constructors[$forEach](dart.fn((symbol, ft) => {
        let name = _js_mirrors.getName(symbol);
        this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
      }, SymbolAnddynamicToNull()));
      if (dart.test(constructors[$isEmpty])) {
        let name = "new";
        let ft = dart.fnType(dart.unwrapType(this[_cls]), []);
        let symbol = core.Symbol.new(name);
        this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
      }
      let fields = _js_mirrors._toDartMap(dart.getFields(unwrapped));
      fields[$forEach](dart.fn((symbol, t) => {
        this[_declarations][$_set](symbol, new _js_mirrors.JsVariableMirror._fromField(symbol, t));
      }, SymbolAnddynamicToNull()));
      let methods = _js_mirrors._toDartMap(dart.getMethods(unwrapped));
      methods[$forEach](dart.fn((symbol, ft) => {
        let name = _js_mirrors.getName(symbol);
        this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
      }, SymbolAnddynamicToNull()));
      function getterType(type) {
        if (type instanceof Array) {
          let array = type.slice();
          type = array[0];
          array[0] = dart.fnType(type, []);
          return array;
        } else {
          return dart.fnType(type, []);
        }
      }
      dart.fn(getterType, dynamicTodynamic());
      let getters = _js_mirrors._toDartMap(dart.getGetters(unwrapped));
      getters[$forEach](dart.fn((symbol, type) => {
        this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, getterType(type)));
      }, SymbolAnddynamicToNull()));
      function setterType(type) {
        if (type instanceof Array) {
          let array = type.slice();
          type = array[0];
          array[0] = dart.fnType(dart.void, [type]);
          return array;
        } else {
          return dart.fnType(dart.void, [type]);
        }
      }
      dart.fn(setterType, dynamicTodynamic());
      let setters = _js_mirrors._toDartMap(dart.getSetters(unwrapped));
      setters[$forEach](dart.fn((symbol, type) => {
        let name = dart.notNull(_js_mirrors.getName(symbol)) + "=";
        symbol = new _js_helper.PrivateSymbol.new(name, _js_mirrors._getESSymbol(symbol));
        this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, setterType(type)));
      }, SymbolAnddynamicToNull()));
      let staticFields = _js_mirrors._toDartMap(dart.getStaticFields(unwrapped));
      staticFields[$forEach](dart.fn((symbol, t) => {
        this[_declarations][$_set](symbol, new _js_mirrors.JsVariableMirror._fromField(symbol, t));
      }, SymbolAnddynamicToNull()));
      let statics = _js_mirrors._toDartMap(dart.getStaticMethods(unwrapped));
      statics[$forEach](dart.fn((symbol, ft) => {
        this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
      }, SymbolAnddynamicToNull()));
      let staticGetters = _js_mirrors._toDartMap(dart.getStaticGetters(unwrapped));
      staticGetters[$forEach](dart.fn((symbol, type) => {
        this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, getterType(type)));
      }, SymbolAnddynamicToNull()));
      let staticSetters = _js_mirrors._toDartMap(dart.getStaticSetters(unwrapped));
      staticSetters[$forEach](dart.fn((symbol, type) => {
        this[_declarations][$_set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, setterType(type)));
      }, SymbolAnddynamicToNull()));
      this[_declarations] = MapOfSymbol$DeclarationMirror().unmodifiable(this[_declarations]);
    }
    return this[_declarations];
  }
  newInstance(constructorName, args, namedArgs) {
    if (namedArgs === void 0) namedArgs = null;
    let name = _js_mirrors.getName(constructorName);
    if (!(namedArgs == null || dart.test(namedArgs[$isEmpty]))) dart.assertFailed();
    if (name === "") name = "new";
    let cls = dart.unwrapType(this[_cls]);
    let ctr = cls[name];
    let instance = cls.prototype == ctr.prototype ? new ctr(...args) : ctr(...args);
    return _js_mirrors.reflect(instance);
  }
  getField(symbol) {
    let name = _js_mirrors.getName(symbol);
    return _js_mirrors.reflect(dart.unwrapType(this[_cls])[name]);
  }
  setField(symbol, value) {
    let name = _js_mirrors.getName(symbol);
    dart.unwrapType(this[_cls])[name] = value;
    return _js_mirrors.reflect(value);
  }
  invoke(symbol, args, namedArgs) {
    if (namedArgs === void 0) namedArgs = null;
    let name = _js_mirrors.getName(symbol);
    if (namedArgs != null) {
      args = core.List.from(args);
      args[$add](_js_mirrors._toJsMap(namedArgs));
    }
    let result = dart.unwrapType(this[_cls])[name](...args);
    return _js_mirrors.reflect(result);
  }
  get superinterfaces() {
    let interfaceThunk = dart.unwrapType(this[_cls])[dart.implements];
    if (interfaceThunk == null) {
      return JSArrayOfClassMirror().of([]);
    } else {
      let interfaces = interfaceThunk();
      return ListOfClassMirror()._check(IterableOfTypeMirror()._check(interfaces[$map](mirrors.TypeMirror, dart.fn(t => _js_mirrors.reflectType(t), TypeToTypeMirror())))[$toList]());
    }
  }
  get hasReflectedType() {
    return true;
  }
  get reflectedType() {
    return this[_cls];
  }
  get isOriginalDeclaration() {
    return this[_raw] == null;
  }
  get typeArguments() {
    return this[_typeArguments];
  }
  get originalDeclaration() {
    if (this[_raw] == null) {
      return this;
    }
    if (this[_originalDeclaration] != null) {
      return this[_originalDeclaration];
    }
    this[_originalDeclaration] = new _js_mirrors.JsClassMirror.__(dart.wrapType(this[_raw]()), {instantiated: false});
    return this[_originalDeclaration];
  }
  get superclass() {
    if (dart.equals(this[_cls], dart.wrapType(core.Object))) {
      return null;
    } else {
      return mirrors.ClassMirror._check(_js_mirrors.reflectType(dart.wrapType(dart.unwrapType(this[_cls]).__proto__)));
    }
  }
  get mixin() {
    if (this[_mixin] != null) {
      return this[_mixin];
    }
    let mixin = dart.getMixin(dart.unwrapType(this[_cls]));
    if (mixin == null) {
      this[_mixin] = this;
      return this[_mixin];
    }
    this[_mixin] = mirrors.ClassMirror._check(_js_mirrors.reflectType(dart.wrapType(mixin)));
    return this[_mixin];
  }
  toString() {
    return "ClassMirror on '" + dart.str(this[_cls]) + "'";
  }
  get qualifiedName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('qualifiedName', [], {isGetter: true})));
  }
  get owner() {
    return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('owner', [], {isGetter: true})));
  }
  get isPrivate() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isPrivate', [], {isGetter: true})));
  }
  get isTopLevel() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isTopLevel', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
  }
  isSubtypeOf(other) {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isSubtypeOf', [other], {isMethod: true})));
  }
  isAssignableTo(other) {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isAssignableTo', [other], {isMethod: true})));
  }
  get typeVariables() {
    return ListOfTypeVariableMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('typeVariables', [], {isGetter: true})));
  }
  delegate(invocation) {
    return this.noSuchMethod(new dart.InvocationImpl.new('delegate', [invocation], {isMethod: true}));
  }
  isSubclassOf(other) {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isSubclassOf', [other], {isMethod: true})));
  }
  get isAbstract() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isAbstract', [], {isGetter: true})));
  }
  get isEnum() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isEnum', [], {isGetter: true})));
  }
  get instanceMembers() {
    return MapOfSymbol$MethodMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('instanceMembers', [], {isGetter: true})));
  }
  get staticMembers() {
    return MapOfSymbol$MethodMirror()._check(this.noSuchMethod(new dart.InvocationImpl.new('staticMembers', [], {isGetter: true})));
  }
};
(_js_mirrors.JsClassMirror.__ = function(cls, opts) {
  let instantiated = opts && 'instantiated' in opts ? opts.instantiated : true;
  this[_originalDeclaration] = null;
  this[_mixin] = null;
  this[_typeArguments] = null;
  this[_metadata$] = null;
  this[_declarations] = null;
  this[_cls] = cls;
  this[_raw] = dart.test(instantiated) ? dart.getGenericClass(dart.unwrapType(cls)) : null;
  this.simpleName = core.Symbol.new(dart.unwrapType(cls).name);
  let typeArgs = dart.getGenericArgs(dart.unwrapType(this[_cls]));
  if (typeArgs == null) {
    this[_typeArguments] = const$4 || (const$4 = dart.constList([], mirrors.TypeMirror));
  } else {
    this[_typeArguments] = ListOfTypeMirror().unmodifiable(typeArgs[$map](dart.dynamic, dart.fn(t => _js_mirrors.reflectType(dart.wrapType(t)), dynamicToTypeMirror())));
  }
}).prototype = _js_mirrors.JsClassMirror.prototype;
dart.addTypeTests(_js_mirrors.JsClassMirror);
_js_mirrors.JsClassMirror[dart.implements] = () => [mirrors.ClassMirror];
dart.setMethodSignature(_js_mirrors.JsClassMirror, () => ({
  __proto__: dart.getMethods(_js_mirrors.JsClassMirror.__proto__),
  newInstance: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core.Symbol, dart.dynamic)]),
  getField: dart.fnType(mirrors.InstanceMirror, [core.Symbol]),
  setField: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.Object]),
  invoke: dart.fnType(mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core.Symbol, dart.dynamic)]),
  isSubtypeOf: dart.fnType(core.bool, [mirrors.TypeMirror]),
  isAssignableTo: dart.fnType(core.bool, [mirrors.TypeMirror]),
  delegate: dart.fnType(dart.dynamic, [core.Invocation]),
  isSubclassOf: dart.fnType(core.bool, [mirrors.ClassMirror])
}));
dart.setGetterSignature(_js_mirrors.JsClassMirror, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsClassMirror.__proto__),
  metadata: core.List$(mirrors.InstanceMirror),
  declarations: core.Map$(core.Symbol, mirrors.DeclarationMirror),
  superinterfaces: core.List$(mirrors.ClassMirror),
  hasReflectedType: core.bool,
  reflectedType: core.Type,
  isOriginalDeclaration: core.bool,
  typeArguments: core.List$(mirrors.TypeMirror),
  originalDeclaration: mirrors.TypeMirror,
  superclass: mirrors.ClassMirror,
  mixin: mirrors.ClassMirror,
  qualifiedName: core.Symbol,
  owner: mirrors.DeclarationMirror,
  isPrivate: core.bool,
  isTopLevel: core.bool,
  location: mirrors.SourceLocation,
  typeVariables: core.List$(mirrors.TypeVariableMirror),
  isAbstract: core.bool,
  isEnum: core.bool,
  instanceMembers: core.Map$(core.Symbol, mirrors.MethodMirror),
  staticMembers: core.Map$(core.Symbol, mirrors.MethodMirror)
}));
dart.setFieldSignature(_js_mirrors.JsClassMirror, () => ({
  __proto__: dart.getFields(_js_mirrors.JsClassMirror.__proto__),
  [_cls]: dart.finalFieldType(core.Type),
  simpleName: dart.finalFieldType(core.Symbol),
  [_raw]: dart.finalFieldType(dart.dynamic),
  [_originalDeclaration]: dart.fieldType(mirrors.ClassMirror),
  [_mixin]: dart.fieldType(mirrors.ClassMirror),
  [_typeArguments]: dart.fieldType(ListOfTypeMirror()),
  [_metadata$]: dart.fieldType(ListOfInstanceMirror()),
  [_declarations]: dart.fieldType(MapOfSymbol$DeclarationMirror())
}));
dart.defineExtensionMethods(_js_mirrors.JsClassMirror, ['toString']);
const _symbol = Symbol('_symbol');
const _name$0 = Symbol('_name');
_js_mirrors.JsVariableMirror = class JsVariableMirror extends _js_mirrors.JsMirror {
  get simpleName() {
    return this[_symbol];
  }
  toString() {
    return "VariableMirror on '" + dart.str(this[_name$0]) + "'";
  }
  get qualifiedName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('qualifiedName', [], {isGetter: true})));
  }
  get owner() {
    return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('owner', [], {isGetter: true})));
  }
  get isPrivate() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isPrivate', [], {isGetter: true})));
  }
  get isTopLevel() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isTopLevel', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
  }
  get isConst() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isConst', [], {isGetter: true})));
  }
};
(_js_mirrors.JsVariableMirror.__ = function(symbol, t, annotations, opts) {
  let isFinal = opts && 'isFinal' in opts ? opts.isFinal : false;
  this.isStatic = false;
  this.isFinal = isFinal;
  this[_symbol] = symbol;
  this[_name$0] = _js_mirrors.getName(symbol);
  this.type = _js_mirrors.reflectType(t);
  this.metadata = ListOfInstanceMirror().unmodifiable((() => {
    let t = annotations;
    let l = t == null ? null : t[$map](dart.dynamic, dart.fn(_js_mirrors.reflect, dynamicToInstanceMirror()));
    return l != null ? l : [];
  })());
}).prototype = _js_mirrors.JsVariableMirror.prototype;
(_js_mirrors.JsVariableMirror._fromField = function(symbol, fieldInfo) {
  _js_mirrors.JsVariableMirror.__.call(this, symbol, dart.wrapType(fieldInfo.type), fieldInfo.metadata, {isFinal: fieldInfo.isFinal});
}).prototype = _js_mirrors.JsVariableMirror.prototype;
dart.addTypeTests(_js_mirrors.JsVariableMirror);
_js_mirrors.JsVariableMirror[dart.implements] = () => [mirrors.VariableMirror];
dart.setGetterSignature(_js_mirrors.JsVariableMirror, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsVariableMirror.__proto__),
  simpleName: core.Symbol,
  qualifiedName: core.Symbol,
  owner: mirrors.DeclarationMirror,
  isPrivate: core.bool,
  isTopLevel: core.bool,
  location: mirrors.SourceLocation,
  isConst: core.bool
}));
dart.setFieldSignature(_js_mirrors.JsVariableMirror, () => ({
  __proto__: dart.getFields(_js_mirrors.JsVariableMirror.__proto__),
  [_symbol]: dart.finalFieldType(core.Symbol),
  [_name$0]: dart.finalFieldType(core.String),
  type: dart.finalFieldType(mirrors.TypeMirror),
  metadata: dart.finalFieldType(ListOfInstanceMirror()),
  isFinal: dart.finalFieldType(core.bool),
  isStatic: dart.finalFieldType(core.bool)
}));
dart.defineExtensionMethods(_js_mirrors.JsVariableMirror, ['toString']);
_js_mirrors.JsParameterMirror = class JsParameterMirror extends _js_mirrors.JsVariableMirror {
  toString() {
    return "ParameterMirror on '" + dart.str(this[_name$0]) + "'";
  }
  get qualifiedName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('qualifiedName', [], {isGetter: true})));
  }
  get owner() {
    return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('owner', [], {isGetter: true})));
  }
  get isPrivate() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isPrivate', [], {isGetter: true})));
  }
  get isTopLevel() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isTopLevel', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
  }
  get isConst() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isConst', [], {isGetter: true})));
  }
  get isOptional() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isOptional', [], {isGetter: true})));
  }
  get isNamed() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isNamed', [], {isGetter: true})));
  }
  get hasDefaultValue() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('hasDefaultValue', [], {isGetter: true})));
  }
  get defaultValue() {
    return mirrors.InstanceMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('defaultValue', [], {isGetter: true})));
  }
};
(_js_mirrors.JsParameterMirror.__ = function(member, t, annotations) {
  _js_mirrors.JsParameterMirror.__proto__.__.call(this, member, t, annotations);
}).prototype = _js_mirrors.JsParameterMirror.prototype;
dart.addTypeTests(_js_mirrors.JsParameterMirror);
_js_mirrors.JsParameterMirror[dart.implements] = () => [mirrors.ParameterMirror];
dart.setGetterSignature(_js_mirrors.JsParameterMirror, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsParameterMirror.__proto__),
  qualifiedName: core.Symbol,
  owner: mirrors.DeclarationMirror,
  isPrivate: core.bool,
  isTopLevel: core.bool,
  location: mirrors.SourceLocation,
  isConst: core.bool,
  isOptional: core.bool,
  isNamed: core.bool,
  hasDefaultValue: core.bool,
  defaultValue: mirrors.InstanceMirror
}));
dart.defineExtensionMethods(_js_mirrors.JsParameterMirror, ['toString']);
const _params = Symbol('_params');
const _createParameterMirrorList = Symbol('_createParameterMirrorList');
let const$6;
let const$7;
let const$8;
_js_mirrors.JsMethodMirror = class JsMethodMirror extends _js_mirrors.JsMirror {
  get isSetter() {
    return this[_name$0][$endsWith]("=");
  }
  get isPrivate() {
    return this[_name$0][$startsWith]("_");
  }
  get simpleName() {
    return this[_symbol];
  }
  get constructorName() {
    return dart.test(this.isConstructor) ? this[_symbol] : null;
  }
  get parameters() {
    return this[_params];
  }
  get metadata() {
    return this[_metadata$];
  }
  [_createParameterMirrorList](ftype) {
    if (ftype == null) {
      this[_params] = const$6 || (const$6 = dart.constList([], mirrors.ParameterMirror));
      this[_metadata$] = const$7 || (const$7 = dart.constList([], mirrors.InstanceMirror));
      return;
    }
    if (!core.Function.is(ftype) && core.List.is(ftype)) {
      this[_metadata$] = ListOfInstanceMirror().unmodifiable(core.Iterable._check(dart.dsend(dart.dsend(ftype, 'skip', [1]), 'map', [dart.fn(a => _js_mirrors.reflect(a), dynamicToInstanceMirror())])));
      ftype = dart.dindex(ftype, 0);
    } else {
      this[_metadata$] = const$8 || (const$8 = dart.constList([], mirrors.InstanceMirror));
    }
    ftype = dart.getFunctionTypeMirror(dart.AbstractFunctionType._check(ftype));
    let args = core.List._check(dart.dload(ftype, 'args'));
    let opts = core.List._check(dart.dload(ftype, 'optionals'));
    let params = ListOfParameterMirror().new(dart.notNull(args[$length]) + dart.notNull(opts[$length]));
    for (let i = 0; i < dart.notNull(args[$length]); ++i) {
      let type = args[$_get](i);
      let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i);
      let param = new _js_mirrors.JsParameterMirror.__(core.Symbol.new(""), dart.wrapType(type), core.List._check(metadata));
      params[$_set](i, param);
    }
    for (let i = 0; i < dart.notNull(opts[$length]); ++i) {
      let type = opts[$_get](i);
      let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(args[$length]) + i);
      let param = new _js_mirrors.JsParameterMirror.__(core.Symbol.new(""), dart.wrapType(type), core.List._check(metadata));
      params[$_set](i + dart.notNull(args[$length]), param);
    }
    this[_params] = ListOfParameterMirror().unmodifiable(params);
  }
  toString() {
    return "MethodMirror on '" + dart.str(this[_name$0]) + "'";
  }
  get qualifiedName() {
    return core.Symbol._check(this.noSuchMethod(new dart.InvocationImpl.new('qualifiedName', [], {isGetter: true})));
  }
  get owner() {
    return mirrors.DeclarationMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('owner', [], {isGetter: true})));
  }
  get isTopLevel() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isTopLevel', [], {isGetter: true})));
  }
  get location() {
    return mirrors.SourceLocation._check(this.noSuchMethod(new dart.InvocationImpl.new('location', [], {isGetter: true})));
  }
  get returnType() {
    return mirrors.TypeMirror._check(this.noSuchMethod(new dart.InvocationImpl.new('returnType', [], {isGetter: true})));
  }
  get source() {
    return core.String._check(this.noSuchMethod(new dart.InvocationImpl.new('source', [], {isGetter: true})));
  }
  get isAbstract() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isAbstract', [], {isGetter: true})));
  }
  get isSynthetic() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isSynthetic', [], {isGetter: true})));
  }
  get isRegularMethod() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isRegularMethod', [], {isGetter: true})));
  }
  get isOperator() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isOperator', [], {isGetter: true})));
  }
  get isGetter() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isGetter', [], {isGetter: true})));
  }
  get isConstConstructor() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isConstConstructor', [], {isGetter: true})));
  }
  get isGenerativeConstructor() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isGenerativeConstructor', [], {isGetter: true})));
  }
  get isRedirectingConstructor() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isRedirectingConstructor', [], {isGetter: true})));
  }
  get isFactoryConstructor() {
    return core.bool._check(this.noSuchMethod(new dart.InvocationImpl.new('isFactoryConstructor', [], {isGetter: true})));
  }
};
(_js_mirrors.JsMethodMirror._constructor = function(cls, symbol, ftype) {
  this[_params] = null;
  this[_metadata$] = null;
  this.isFinal = false;
  this[_symbol] = symbol;
  this[_name$0] = _js_mirrors.getName(symbol);
  this.isConstructor = true;
  this.isStatic = false;
  this[_createParameterMirrorList](ftype);
}).prototype = _js_mirrors.JsMethodMirror.prototype;
(_js_mirrors.JsMethodMirror._instanceMethod = function(cls, symbol, ftype) {
  this[_params] = null;
  this[_metadata$] = null;
  this.isFinal = false;
  this[_symbol] = symbol;
  this[_name$0] = _js_mirrors.getName(symbol);
  this.isConstructor = false;
  this.isStatic = false;
  this[_createParameterMirrorList](ftype);
}).prototype = _js_mirrors.JsMethodMirror.prototype;
(_js_mirrors.JsMethodMirror._staticMethod = function(cls, symbol, ftype) {
  this[_params] = null;
  this[_metadata$] = null;
  this.isFinal = false;
  this[_symbol] = symbol;
  this[_name$0] = _js_mirrors.getName(symbol);
  this.isConstructor = false;
  this.isStatic = true;
  this[_createParameterMirrorList](ftype);
}).prototype = _js_mirrors.JsMethodMirror.prototype;
dart.addTypeTests(_js_mirrors.JsMethodMirror);
_js_mirrors.JsMethodMirror[dart.implements] = () => [mirrors.MethodMirror];
dart.setMethodSignature(_js_mirrors.JsMethodMirror, () => ({
  __proto__: dart.getMethods(_js_mirrors.JsMethodMirror.__proto__),
  [_createParameterMirrorList]: dart.fnType(dart.void, [dart.dynamic])
}));
dart.setGetterSignature(_js_mirrors.JsMethodMirror, () => ({
  __proto__: dart.getGetters(_js_mirrors.JsMethodMirror.__proto__),
  isSetter: core.bool,
  isPrivate: core.bool,
  simpleName: core.Symbol,
  constructorName: core.Symbol,
  parameters: core.List$(mirrors.ParameterMirror),
  metadata: core.List$(mirrors.InstanceMirror),
  qualifiedName: core.Symbol,
  owner: mirrors.DeclarationMirror,
  isTopLevel: core.bool,
  location: mirrors.SourceLocation,
  returnType: mirrors.TypeMirror,
  source: core.String,
  isAbstract: core.bool,
  isSynthetic: core.bool,
  isRegularMethod: core.bool,
  isOperator: core.bool,
  isGetter: core.bool,
  isConstConstructor: core.bool,
  isGenerativeConstructor: core.bool,
  isRedirectingConstructor: core.bool,
  isFactoryConstructor: core.bool
}));
dart.setFieldSignature(_js_mirrors.JsMethodMirror, () => ({
  __proto__: dart.getFields(_js_mirrors.JsMethodMirror.__proto__),
  [_symbol]: dart.finalFieldType(core.Symbol),
  [_name$0]: dart.finalFieldType(core.String),
  [_params]: dart.fieldType(ListOfParameterMirror()),
  [_metadata$]: dart.fieldType(ListOfInstanceMirror()),
  isConstructor: dart.finalFieldType(core.bool),
  isStatic: dart.finalFieldType(core.bool),
  isFinal: dart.finalFieldType(core.bool)
}));
dart.defineExtensionMethods(_js_mirrors.JsMethodMirror, ['toString']);
_js_primitives.printString = function(string) {
  if (typeof dartPrint == "function") {
    dartPrint(string);
    return;
  }
  if (typeof console == "object" && typeof console.log != "undefined") {
    console.log(string);
    return;
  }
  if (typeof window == "object") {
    return;
  }
  if (typeof print == "function") {
    print(string);
    return;
  }
  throw "Unable to print message: " + String(string);
};
_metadata.SupportedBrowser = class SupportedBrowser extends core.Object {};
(_metadata.SupportedBrowser.new = function(browserName, minimumVersion) {
  if (minimumVersion === void 0) minimumVersion = null;
  this.browserName = browserName;
  this.minimumVersion = minimumVersion;
}).prototype = _metadata.SupportedBrowser.prototype;
dart.addTypeTests(_metadata.SupportedBrowser);
dart.setFieldSignature(_metadata.SupportedBrowser, () => ({
  __proto__: dart.getFields(_metadata.SupportedBrowser.__proto__),
  browserName: dart.finalFieldType(core.String),
  minimumVersion: dart.finalFieldType(core.String)
}));
dart.defineLazy(_metadata.SupportedBrowser, {
  /*_metadata.SupportedBrowser.CHROME*/get CHROME() {
    return "Chrome";
  },
  /*_metadata.SupportedBrowser.FIREFOX*/get FIREFOX() {
    return "Firefox";
  },
  /*_metadata.SupportedBrowser.IE*/get IE() {
    return "Internet Explorer";
  },
  /*_metadata.SupportedBrowser.OPERA*/get OPERA() {
    return "Opera";
  },
  /*_metadata.SupportedBrowser.SAFARI*/get SAFARI() {
    return "Safari";
  }
});
_metadata.Experimental = class Experimental extends core.Object {};
(_metadata.Experimental.new = function() {
}).prototype = _metadata.Experimental.prototype;
dart.addTypeTests(_metadata.Experimental);
_metadata.DomName = class DomName extends core.Object {};
(_metadata.DomName.new = function(name) {
  this.name = name;
}).prototype = _metadata.DomName.prototype;
dart.addTypeTests(_metadata.DomName);
dart.setFieldSignature(_metadata.DomName, () => ({
  __proto__: dart.getFields(_metadata.DomName.__proto__),
  name: dart.finalFieldType(core.String)
}));
_metadata.DocsEditable = class DocsEditable extends core.Object {};
(_metadata.DocsEditable.new = function() {
}).prototype = _metadata.DocsEditable.prototype;
dart.addTypeTests(_metadata.DocsEditable);
_metadata.Unstable = class Unstable extends core.Object {};
(_metadata.Unstable.new = function() {
}).prototype = _metadata.Unstable.prototype;
dart.addTypeTests(_metadata.Unstable);
_native_typed_data.NativeByteBuffer = class NativeByteBuffer extends core.Object {
  get [$lengthInBytes]() {
    return this.byteLength;
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.ByteBuffer);
  }
  [$asUint8List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeUint8List.view(this, offsetInBytes, length);
  }
  [$asInt8List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeInt8List.view(this, offsetInBytes, length);
  }
  [$asUint8ClampedList](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeUint8ClampedList.view(this, offsetInBytes, length);
  }
  [$asUint16List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeUint16List.view(this, offsetInBytes, length);
  }
  [$asInt16List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeInt16List.view(this, offsetInBytes, length);
  }
  [$asUint32List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeUint32List.view(this, offsetInBytes, length);
  }
  [$asInt32List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeInt32List.view(this, offsetInBytes, length);
  }
  [$asUint64List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    dart.throw(new core.UnsupportedError.new("Uint64List not supported by dart2js."));
  }
  [$asInt64List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    dart.throw(new core.UnsupportedError.new("Int64List not supported by dart2js."));
  }
  [$asInt32x4List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    let storage = _native_typed_data.NativeInt32List._check(this[$asInt32List](offsetInBytes, length != null ? dart.notNull(length) * 4 : null));
    return new _native_typed_data.NativeInt32x4List._externalStorage(storage);
  }
  [$asFloat32List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeFloat32List.view(this, offsetInBytes, length);
  }
  [$asFloat64List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeFloat64List.view(this, offsetInBytes, length);
  }
  [$asFloat32x4List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    let storage = _native_typed_data.NativeFloat32List._check(this[$asFloat32List](offsetInBytes, length != null ? dart.notNull(length) * 4 : null));
    return new _native_typed_data.NativeFloat32x4List._externalStorage(storage);
  }
  [$asFloat64x2List](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    let storage = _native_typed_data.NativeFloat64List._check(this[$asFloat64List](offsetInBytes, length != null ? dart.notNull(length) * 2 : null));
    return new _native_typed_data.NativeFloat64x2List._externalStorage(storage);
  }
  [$asByteData](offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return _native_typed_data.NativeByteData.view(this, offsetInBytes, length);
  }
};
(_native_typed_data.NativeByteBuffer.new = function() {
}).prototype = _native_typed_data.NativeByteBuffer.prototype;
dart.addTypeTests(_native_typed_data.NativeByteBuffer);
_native_typed_data.NativeByteBuffer[dart.implements] = () => [typed_data.ByteBuffer];
dart.setMethodSignature(_native_typed_data.NativeByteBuffer, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeByteBuffer.__proto__),
  [$asUint8List]: dart.fnType(typed_data.Uint8List, [], [core.int, core.int]),
  [$asInt8List]: dart.fnType(typed_data.Int8List, [], [core.int, core.int]),
  [$asUint8ClampedList]: dart.fnType(typed_data.Uint8ClampedList, [], [core.int, core.int]),
  [$asUint16List]: dart.fnType(typed_data.Uint16List, [], [core.int, core.int]),
  [$asInt16List]: dart.fnType(typed_data.Int16List, [], [core.int, core.int]),
  [$asUint32List]: dart.fnType(typed_data.Uint32List, [], [core.int, core.int]),
  [$asInt32List]: dart.fnType(typed_data.Int32List, [], [core.int, core.int]),
  [$asUint64List]: dart.fnType(typed_data.Uint64List, [], [core.int, core.int]),
  [$asInt64List]: dart.fnType(typed_data.Int64List, [], [core.int, core.int]),
  [$asInt32x4List]: dart.fnType(typed_data.Int32x4List, [], [core.int, core.int]),
  [$asFloat32List]: dart.fnType(typed_data.Float32List, [], [core.int, core.int]),
  [$asFloat64List]: dart.fnType(typed_data.Float64List, [], [core.int, core.int]),
  [$asFloat32x4List]: dart.fnType(typed_data.Float32x4List, [], [core.int, core.int]),
  [$asFloat64x2List]: dart.fnType(typed_data.Float64x2List, [], [core.int, core.int]),
  [$asByteData]: dart.fnType(typed_data.ByteData, [], [core.int, core.int])
}));
dart.setGetterSignature(_native_typed_data.NativeByteBuffer, () => ({
  __proto__: dart.getGetters(_native_typed_data.NativeByteBuffer.__proto__),
  [$lengthInBytes]: core.int
}));
dart.registerExtension("ArrayBuffer", _native_typed_data.NativeByteBuffer);
const _storage = Symbol('_storage');
typed_data.Float32x4 = class Float32x4 extends core.Object {
  static new(x, y, z, w) {
    return new _native_typed_data.NativeFloat32x4.new(x, y, z, w);
  }
  static splat(v) {
    return new _native_typed_data.NativeFloat32x4.splat(v);
  }
  static zero() {
    return new _native_typed_data.NativeFloat32x4.zero();
  }
  static fromInt32x4Bits(x) {
    return _native_typed_data.NativeFloat32x4.fromInt32x4Bits(x);
  }
  static fromFloat64x2(v) {
    return new _native_typed_data.NativeFloat32x4.fromFloat64x2(v);
  }
};
(typed_data.Float32x4[dart.mixinNew] = function() {
}).prototype = typed_data.Float32x4.prototype;
dart.addTypeTests(typed_data.Float32x4);
dart.defineLazy(typed_data.Float32x4, {
  /*typed_data.Float32x4.xxxx*/get xxxx() {
    return 0;
  },
  /*typed_data.Float32x4.xxxy*/get xxxy() {
    return 64;
  },
  /*typed_data.Float32x4.xxxz*/get xxxz() {
    return 128;
  },
  /*typed_data.Float32x4.xxxw*/get xxxw() {
    return 192;
  },
  /*typed_data.Float32x4.xxyx*/get xxyx() {
    return 16;
  },
  /*typed_data.Float32x4.xxyy*/get xxyy() {
    return 80;
  },
  /*typed_data.Float32x4.xxyz*/get xxyz() {
    return 144;
  },
  /*typed_data.Float32x4.xxyw*/get xxyw() {
    return 208;
  },
  /*typed_data.Float32x4.xxzx*/get xxzx() {
    return 32;
  },
  /*typed_data.Float32x4.xxzy*/get xxzy() {
    return 96;
  },
  /*typed_data.Float32x4.xxzz*/get xxzz() {
    return 160;
  },
  /*typed_data.Float32x4.xxzw*/get xxzw() {
    return 224;
  },
  /*typed_data.Float32x4.xxwx*/get xxwx() {
    return 48;
  },
  /*typed_data.Float32x4.xxwy*/get xxwy() {
    return 112;
  },
  /*typed_data.Float32x4.xxwz*/get xxwz() {
    return 176;
  },
  /*typed_data.Float32x4.xxww*/get xxww() {
    return 240;
  },
  /*typed_data.Float32x4.xyxx*/get xyxx() {
    return 4;
  },
  /*typed_data.Float32x4.xyxy*/get xyxy() {
    return 68;
  },
  /*typed_data.Float32x4.xyxz*/get xyxz() {
    return 132;
  },
  /*typed_data.Float32x4.xyxw*/get xyxw() {
    return 196;
  },
  /*typed_data.Float32x4.xyyx*/get xyyx() {
    return 20;
  },
  /*typed_data.Float32x4.xyyy*/get xyyy() {
    return 84;
  },
  /*typed_data.Float32x4.xyyz*/get xyyz() {
    return 148;
  },
  /*typed_data.Float32x4.xyyw*/get xyyw() {
    return 212;
  },
  /*typed_data.Float32x4.xyzx*/get xyzx() {
    return 36;
  },
  /*typed_data.Float32x4.xyzy*/get xyzy() {
    return 100;
  },
  /*typed_data.Float32x4.xyzz*/get xyzz() {
    return 164;
  },
  /*typed_data.Float32x4.xyzw*/get xyzw() {
    return 228;
  },
  /*typed_data.Float32x4.xywx*/get xywx() {
    return 52;
  },
  /*typed_data.Float32x4.xywy*/get xywy() {
    return 116;
  },
  /*typed_data.Float32x4.xywz*/get xywz() {
    return 180;
  },
  /*typed_data.Float32x4.xyww*/get xyww() {
    return 244;
  },
  /*typed_data.Float32x4.xzxx*/get xzxx() {
    return 8;
  },
  /*typed_data.Float32x4.xzxy*/get xzxy() {
    return 72;
  },
  /*typed_data.Float32x4.xzxz*/get xzxz() {
    return 136;
  },
  /*typed_data.Float32x4.xzxw*/get xzxw() {
    return 200;
  },
  /*typed_data.Float32x4.xzyx*/get xzyx() {
    return 24;
  },
  /*typed_data.Float32x4.xzyy*/get xzyy() {
    return 88;
  },
  /*typed_data.Float32x4.xzyz*/get xzyz() {
    return 152;
  },
  /*typed_data.Float32x4.xzyw*/get xzyw() {
    return 216;
  },
  /*typed_data.Float32x4.xzzx*/get xzzx() {
    return 40;
  },
  /*typed_data.Float32x4.xzzy*/get xzzy() {
    return 104;
  },
  /*typed_data.Float32x4.xzzz*/get xzzz() {
    return 168;
  },
  /*typed_data.Float32x4.xzzw*/get xzzw() {
    return 232;
  },
  /*typed_data.Float32x4.xzwx*/get xzwx() {
    return 56;
  },
  /*typed_data.Float32x4.xzwy*/get xzwy() {
    return 120;
  },
  /*typed_data.Float32x4.xzwz*/get xzwz() {
    return 184;
  },
  /*typed_data.Float32x4.xzww*/get xzww() {
    return 248;
  },
  /*typed_data.Float32x4.xwxx*/get xwxx() {
    return 12;
  },
  /*typed_data.Float32x4.xwxy*/get xwxy() {
    return 76;
  },
  /*typed_data.Float32x4.xwxz*/get xwxz() {
    return 140;
  },
  /*typed_data.Float32x4.xwxw*/get xwxw() {
    return 204;
  },
  /*typed_data.Float32x4.xwyx*/get xwyx() {
    return 28;
  },
  /*typed_data.Float32x4.xwyy*/get xwyy() {
    return 92;
  },
  /*typed_data.Float32x4.xwyz*/get xwyz() {
    return 156;
  },
  /*typed_data.Float32x4.xwyw*/get xwyw() {
    return 220;
  },
  /*typed_data.Float32x4.xwzx*/get xwzx() {
    return 44;
  },
  /*typed_data.Float32x4.xwzy*/get xwzy() {
    return 108;
  },
  /*typed_data.Float32x4.xwzz*/get xwzz() {
    return 172;
  },
  /*typed_data.Float32x4.xwzw*/get xwzw() {
    return 236;
  },
  /*typed_data.Float32x4.xwwx*/get xwwx() {
    return 60;
  },
  /*typed_data.Float32x4.xwwy*/get xwwy() {
    return 124;
  },
  /*typed_data.Float32x4.xwwz*/get xwwz() {
    return 188;
  },
  /*typed_data.Float32x4.xwww*/get xwww() {
    return 252;
  },
  /*typed_data.Float32x4.yxxx*/get yxxx() {
    return 1;
  },
  /*typed_data.Float32x4.yxxy*/get yxxy() {
    return 65;
  },
  /*typed_data.Float32x4.yxxz*/get yxxz() {
    return 129;
  },
  /*typed_data.Float32x4.yxxw*/get yxxw() {
    return 193;
  },
  /*typed_data.Float32x4.yxyx*/get yxyx() {
    return 17;
  },
  /*typed_data.Float32x4.yxyy*/get yxyy() {
    return 81;
  },
  /*typed_data.Float32x4.yxyz*/get yxyz() {
    return 145;
  },
  /*typed_data.Float32x4.yxyw*/get yxyw() {
    return 209;
  },
  /*typed_data.Float32x4.yxzx*/get yxzx() {
    return 33;
  },
  /*typed_data.Float32x4.yxzy*/get yxzy() {
    return 97;
  },
  /*typed_data.Float32x4.yxzz*/get yxzz() {
    return 161;
  },
  /*typed_data.Float32x4.yxzw*/get yxzw() {
    return 225;
  },
  /*typed_data.Float32x4.yxwx*/get yxwx() {
    return 49;
  },
  /*typed_data.Float32x4.yxwy*/get yxwy() {
    return 113;
  },
  /*typed_data.Float32x4.yxwz*/get yxwz() {
    return 177;
  },
  /*typed_data.Float32x4.yxww*/get yxww() {
    return 241;
  },
  /*typed_data.Float32x4.yyxx*/get yyxx() {
    return 5;
  },
  /*typed_data.Float32x4.yyxy*/get yyxy() {
    return 69;
  },
  /*typed_data.Float32x4.yyxz*/get yyxz() {
    return 133;
  },
  /*typed_data.Float32x4.yyxw*/get yyxw() {
    return 197;
  },
  /*typed_data.Float32x4.yyyx*/get yyyx() {
    return 21;
  },
  /*typed_data.Float32x4.yyyy*/get yyyy() {
    return 85;
  },
  /*typed_data.Float32x4.yyyz*/get yyyz() {
    return 149;
  },
  /*typed_data.Float32x4.yyyw*/get yyyw() {
    return 213;
  },
  /*typed_data.Float32x4.yyzx*/get yyzx() {
    return 37;
  },
  /*typed_data.Float32x4.yyzy*/get yyzy() {
    return 101;
  },
  /*typed_data.Float32x4.yyzz*/get yyzz() {
    return 165;
  },
  /*typed_data.Float32x4.yyzw*/get yyzw() {
    return 229;
  },
  /*typed_data.Float32x4.yywx*/get yywx() {
    return 53;
  },
  /*typed_data.Float32x4.yywy*/get yywy() {
    return 117;
  },
  /*typed_data.Float32x4.yywz*/get yywz() {
    return 181;
  },
  /*typed_data.Float32x4.yyww*/get yyww() {
    return 245;
  },
  /*typed_data.Float32x4.yzxx*/get yzxx() {
    return 9;
  },
  /*typed_data.Float32x4.yzxy*/get yzxy() {
    return 73;
  },
  /*typed_data.Float32x4.yzxz*/get yzxz() {
    return 137;
  },
  /*typed_data.Float32x4.yzxw*/get yzxw() {
    return 201;
  },
  /*typed_data.Float32x4.yzyx*/get yzyx() {
    return 25;
  },
  /*typed_data.Float32x4.yzyy*/get yzyy() {
    return 89;
  },
  /*typed_data.Float32x4.yzyz*/get yzyz() {
    return 153;
  },
  /*typed_data.Float32x4.yzyw*/get yzyw() {
    return 217;
  },
  /*typed_data.Float32x4.yzzx*/get yzzx() {
    return 41;
  },
  /*typed_data.Float32x4.yzzy*/get yzzy() {
    return 105;
  },
  /*typed_data.Float32x4.yzzz*/get yzzz() {
    return 169;
  },
  /*typed_data.Float32x4.yzzw*/get yzzw() {
    return 233;
  },
  /*typed_data.Float32x4.yzwx*/get yzwx() {
    return 57;
  },
  /*typed_data.Float32x4.yzwy*/get yzwy() {
    return 121;
  },
  /*typed_data.Float32x4.yzwz*/get yzwz() {
    return 185;
  },
  /*typed_data.Float32x4.yzww*/get yzww() {
    return 249;
  },
  /*typed_data.Float32x4.ywxx*/get ywxx() {
    return 13;
  },
  /*typed_data.Float32x4.ywxy*/get ywxy() {
    return 77;
  },
  /*typed_data.Float32x4.ywxz*/get ywxz() {
    return 141;
  },
  /*typed_data.Float32x4.ywxw*/get ywxw() {
    return 205;
  },
  /*typed_data.Float32x4.ywyx*/get ywyx() {
    return 29;
  },
  /*typed_data.Float32x4.ywyy*/get ywyy() {
    return 93;
  },
  /*typed_data.Float32x4.ywyz*/get ywyz() {
    return 157;
  },
  /*typed_data.Float32x4.ywyw*/get ywyw() {
    return 221;
  },
  /*typed_data.Float32x4.ywzx*/get ywzx() {
    return 45;
  },
  /*typed_data.Float32x4.ywzy*/get ywzy() {
    return 109;
  },
  /*typed_data.Float32x4.ywzz*/get ywzz() {
    return 173;
  },
  /*typed_data.Float32x4.ywzw*/get ywzw() {
    return 237;
  },
  /*typed_data.Float32x4.ywwx*/get ywwx() {
    return 61;
  },
  /*typed_data.Float32x4.ywwy*/get ywwy() {
    return 125;
  },
  /*typed_data.Float32x4.ywwz*/get ywwz() {
    return 189;
  },
  /*typed_data.Float32x4.ywww*/get ywww() {
    return 253;
  },
  /*typed_data.Float32x4.zxxx*/get zxxx() {
    return 2;
  },
  /*typed_data.Float32x4.zxxy*/get zxxy() {
    return 66;
  },
  /*typed_data.Float32x4.zxxz*/get zxxz() {
    return 130;
  },
  /*typed_data.Float32x4.zxxw*/get zxxw() {
    return 194;
  },
  /*typed_data.Float32x4.zxyx*/get zxyx() {
    return 18;
  },
  /*typed_data.Float32x4.zxyy*/get zxyy() {
    return 82;
  },
  /*typed_data.Float32x4.zxyz*/get zxyz() {
    return 146;
  },
  /*typed_data.Float32x4.zxyw*/get zxyw() {
    return 210;
  },
  /*typed_data.Float32x4.zxzx*/get zxzx() {
    return 34;
  },
  /*typed_data.Float32x4.zxzy*/get zxzy() {
    return 98;
  },
  /*typed_data.Float32x4.zxzz*/get zxzz() {
    return 162;
  },
  /*typed_data.Float32x4.zxzw*/get zxzw() {
    return 226;
  },
  /*typed_data.Float32x4.zxwx*/get zxwx() {
    return 50;
  },
  /*typed_data.Float32x4.zxwy*/get zxwy() {
    return 114;
  },
  /*typed_data.Float32x4.zxwz*/get zxwz() {
    return 178;
  },
  /*typed_data.Float32x4.zxww*/get zxww() {
    return 242;
  },
  /*typed_data.Float32x4.zyxx*/get zyxx() {
    return 6;
  },
  /*typed_data.Float32x4.zyxy*/get zyxy() {
    return 70;
  },
  /*typed_data.Float32x4.zyxz*/get zyxz() {
    return 134;
  },
  /*typed_data.Float32x4.zyxw*/get zyxw() {
    return 198;
  },
  /*typed_data.Float32x4.zyyx*/get zyyx() {
    return 22;
  },
  /*typed_data.Float32x4.zyyy*/get zyyy() {
    return 86;
  },
  /*typed_data.Float32x4.zyyz*/get zyyz() {
    return 150;
  },
  /*typed_data.Float32x4.zyyw*/get zyyw() {
    return 214;
  },
  /*typed_data.Float32x4.zyzx*/get zyzx() {
    return 38;
  },
  /*typed_data.Float32x4.zyzy*/get zyzy() {
    return 102;
  },
  /*typed_data.Float32x4.zyzz*/get zyzz() {
    return 166;
  },
  /*typed_data.Float32x4.zyzw*/get zyzw() {
    return 230;
  },
  /*typed_data.Float32x4.zywx*/get zywx() {
    return 54;
  },
  /*typed_data.Float32x4.zywy*/get zywy() {
    return 118;
  },
  /*typed_data.Float32x4.zywz*/get zywz() {
    return 182;
  },
  /*typed_data.Float32x4.zyww*/get zyww() {
    return 246;
  },
  /*typed_data.Float32x4.zzxx*/get zzxx() {
    return 10;
  },
  /*typed_data.Float32x4.zzxy*/get zzxy() {
    return 74;
  },
  /*typed_data.Float32x4.zzxz*/get zzxz() {
    return 138;
  },
  /*typed_data.Float32x4.zzxw*/get zzxw() {
    return 202;
  },
  /*typed_data.Float32x4.zzyx*/get zzyx() {
    return 26;
  },
  /*typed_data.Float32x4.zzyy*/get zzyy() {
    return 90;
  },
  /*typed_data.Float32x4.zzyz*/get zzyz() {
    return 154;
  },
  /*typed_data.Float32x4.zzyw*/get zzyw() {
    return 218;
  },
  /*typed_data.Float32x4.zzzx*/get zzzx() {
    return 42;
  },
  /*typed_data.Float32x4.zzzy*/get zzzy() {
    return 106;
  },
  /*typed_data.Float32x4.zzzz*/get zzzz() {
    return 170;
  },
  /*typed_data.Float32x4.zzzw*/get zzzw() {
    return 234;
  },
  /*typed_data.Float32x4.zzwx*/get zzwx() {
    return 58;
  },
  /*typed_data.Float32x4.zzwy*/get zzwy() {
    return 122;
  },
  /*typed_data.Float32x4.zzwz*/get zzwz() {
    return 186;
  },
  /*typed_data.Float32x4.zzww*/get zzww() {
    return 250;
  },
  /*typed_data.Float32x4.zwxx*/get zwxx() {
    return 14;
  },
  /*typed_data.Float32x4.zwxy*/get zwxy() {
    return 78;
  },
  /*typed_data.Float32x4.zwxz*/get zwxz() {
    return 142;
  },
  /*typed_data.Float32x4.zwxw*/get zwxw() {
    return 206;
  },
  /*typed_data.Float32x4.zwyx*/get zwyx() {
    return 30;
  },
  /*typed_data.Float32x4.zwyy*/get zwyy() {
    return 94;
  },
  /*typed_data.Float32x4.zwyz*/get zwyz() {
    return 158;
  },
  /*typed_data.Float32x4.zwyw*/get zwyw() {
    return 222;
  },
  /*typed_data.Float32x4.zwzx*/get zwzx() {
    return 46;
  },
  /*typed_data.Float32x4.zwzy*/get zwzy() {
    return 110;
  },
  /*typed_data.Float32x4.zwzz*/get zwzz() {
    return 174;
  },
  /*typed_data.Float32x4.zwzw*/get zwzw() {
    return 238;
  },
  /*typed_data.Float32x4.zwwx*/get zwwx() {
    return 62;
  },
  /*typed_data.Float32x4.zwwy*/get zwwy() {
    return 126;
  },
  /*typed_data.Float32x4.zwwz*/get zwwz() {
    return 190;
  },
  /*typed_data.Float32x4.zwww*/get zwww() {
    return 254;
  },
  /*typed_data.Float32x4.wxxx*/get wxxx() {
    return 3;
  },
  /*typed_data.Float32x4.wxxy*/get wxxy() {
    return 67;
  },
  /*typed_data.Float32x4.wxxz*/get wxxz() {
    return 131;
  },
  /*typed_data.Float32x4.wxxw*/get wxxw() {
    return 195;
  },
  /*typed_data.Float32x4.wxyx*/get wxyx() {
    return 19;
  },
  /*typed_data.Float32x4.wxyy*/get wxyy() {
    return 83;
  },
  /*typed_data.Float32x4.wxyz*/get wxyz() {
    return 147;
  },
  /*typed_data.Float32x4.wxyw*/get wxyw() {
    return 211;
  },
  /*typed_data.Float32x4.wxzx*/get wxzx() {
    return 35;
  },
  /*typed_data.Float32x4.wxzy*/get wxzy() {
    return 99;
  },
  /*typed_data.Float32x4.wxzz*/get wxzz() {
    return 163;
  },
  /*typed_data.Float32x4.wxzw*/get wxzw() {
    return 227;
  },
  /*typed_data.Float32x4.wxwx*/get wxwx() {
    return 51;
  },
  /*typed_data.Float32x4.wxwy*/get wxwy() {
    return 115;
  },
  /*typed_data.Float32x4.wxwz*/get wxwz() {
    return 179;
  },
  /*typed_data.Float32x4.wxww*/get wxww() {
    return 243;
  },
  /*typed_data.Float32x4.wyxx*/get wyxx() {
    return 7;
  },
  /*typed_data.Float32x4.wyxy*/get wyxy() {
    return 71;
  },
  /*typed_data.Float32x4.wyxz*/get wyxz() {
    return 135;
  },
  /*typed_data.Float32x4.wyxw*/get wyxw() {
    return 199;
  },
  /*typed_data.Float32x4.wyyx*/get wyyx() {
    return 23;
  },
  /*typed_data.Float32x4.wyyy*/get wyyy() {
    return 87;
  },
  /*typed_data.Float32x4.wyyz*/get wyyz() {
    return 151;
  },
  /*typed_data.Float32x4.wyyw*/get wyyw() {
    return 215;
  },
  /*typed_data.Float32x4.wyzx*/get wyzx() {
    return 39;
  },
  /*typed_data.Float32x4.wyzy*/get wyzy() {
    return 103;
  },
  /*typed_data.Float32x4.wyzz*/get wyzz() {
    return 167;
  },
  /*typed_data.Float32x4.wyzw*/get wyzw() {
    return 231;
  },
  /*typed_data.Float32x4.wywx*/get wywx() {
    return 55;
  },
  /*typed_data.Float32x4.wywy*/get wywy() {
    return 119;
  },
  /*typed_data.Float32x4.wywz*/get wywz() {
    return 183;
  },
  /*typed_data.Float32x4.wyww*/get wyww() {
    return 247;
  },
  /*typed_data.Float32x4.wzxx*/get wzxx() {
    return 11;
  },
  /*typed_data.Float32x4.wzxy*/get wzxy() {
    return 75;
  },
  /*typed_data.Float32x4.wzxz*/get wzxz() {
    return 139;
  },
  /*typed_data.Float32x4.wzxw*/get wzxw() {
    return 203;
  },
  /*typed_data.Float32x4.wzyx*/get wzyx() {
    return 27;
  },
  /*typed_data.Float32x4.wzyy*/get wzyy() {
    return 91;
  },
  /*typed_data.Float32x4.wzyz*/get wzyz() {
    return 155;
  },
  /*typed_data.Float32x4.wzyw*/get wzyw() {
    return 219;
  },
  /*typed_data.Float32x4.wzzx*/get wzzx() {
    return 43;
  },
  /*typed_data.Float32x4.wzzy*/get wzzy() {
    return 107;
  },
  /*typed_data.Float32x4.wzzz*/get wzzz() {
    return 171;
  },
  /*typed_data.Float32x4.wzzw*/get wzzw() {
    return 235;
  },
  /*typed_data.Float32x4.wzwx*/get wzwx() {
    return 59;
  },
  /*typed_data.Float32x4.wzwy*/get wzwy() {
    return 123;
  },
  /*typed_data.Float32x4.wzwz*/get wzwz() {
    return 187;
  },
  /*typed_data.Float32x4.wzww*/get wzww() {
    return 251;
  },
  /*typed_data.Float32x4.wwxx*/get wwxx() {
    return 15;
  },
  /*typed_data.Float32x4.wwxy*/get wwxy() {
    return 79;
  },
  /*typed_data.Float32x4.wwxz*/get wwxz() {
    return 143;
  },
  /*typed_data.Float32x4.wwxw*/get wwxw() {
    return 207;
  },
  /*typed_data.Float32x4.wwyx*/get wwyx() {
    return 31;
  },
  /*typed_data.Float32x4.wwyy*/get wwyy() {
    return 95;
  },
  /*typed_data.Float32x4.wwyz*/get wwyz() {
    return 159;
  },
  /*typed_data.Float32x4.wwyw*/get wwyw() {
    return 223;
  },
  /*typed_data.Float32x4.wwzx*/get wwzx() {
    return 47;
  },
  /*typed_data.Float32x4.wwzy*/get wwzy() {
    return 111;
  },
  /*typed_data.Float32x4.wwzz*/get wwzz() {
    return 175;
  },
  /*typed_data.Float32x4.wwzw*/get wwzw() {
    return 239;
  },
  /*typed_data.Float32x4.wwwx*/get wwwx() {
    return 63;
  },
  /*typed_data.Float32x4.wwwy*/get wwwy() {
    return 127;
  },
  /*typed_data.Float32x4.wwwz*/get wwwz() {
    return 191;
  },
  /*typed_data.Float32x4.wwww*/get wwww() {
    return 255;
  }
});
const Object_ListMixin$ = class Object_ListMixin extends core.Object {};
(Object_ListMixin$.new = function() {
}).prototype = Object_ListMixin$.prototype;
dart.applyMixin(Object_ListMixin$, collection.ListMixin$(typed_data.Float32x4));
const Object_FixedLengthListMixin$ = class Object_FixedLengthListMixin extends Object_ListMixin$ {};
(Object_FixedLengthListMixin$.new = function() {
}).prototype = Object_FixedLengthListMixin$.prototype;
dart.applyMixin(Object_FixedLengthListMixin$, _internal.FixedLengthListMixin$(typed_data.Float32x4));
_native_typed_data.NativeFloat32x4List = class NativeFloat32x4List extends Object_FixedLengthListMixin$ {
  get runtimeType() {
    return dart.wrapType(typed_data.Float32x4List);
  }
  static fromList(list) {
    if (_native_typed_data.NativeFloat32x4List.is(list)) {
      return new _native_typed_data.NativeFloat32x4List._externalStorage(_native_typed_data.NativeFloat32List.fromList(list[_storage]));
    } else {
      return new _native_typed_data.NativeFloat32x4List._slowFromList(list);
    }
  }
  get buffer() {
    return this[_storage].buffer;
  }
  get lengthInBytes() {
    return this[_storage][$lengthInBytes];
  }
  get offsetInBytes() {
    return this[_storage][$offsetInBytes];
  }
  get elementSizeInBytes() {
    return typed_data.Float32x4List.bytesPerElement;
  }
  get length() {
    return (dart.notNull(this[_storage][$length]) / 4)[$truncate]();
  }
  set length(value) {
    super.length = value;
  }
  _get(index) {
    _native_typed_data._checkValidIndex(index, this, this.length);
    let _x = this[_storage][$_get](dart.notNull(index) * 4 + 0);
    let _y = this[_storage][$_get](dart.notNull(index) * 4 + 1);
    let _z = this[_storage][$_get](dart.notNull(index) * 4 + 2);
    let _w = this[_storage][$_get](dart.notNull(index) * 4 + 3);
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  _set(index, value) {
    typed_data.Float32x4._check(value);
    _native_typed_data._checkValidIndex(index, this, this.length);
    this[_storage][$_set](dart.notNull(index) * 4 + 0, value.x);
    this[_storage][$_set](dart.notNull(index) * 4 + 1, value.y);
    this[_storage][$_set](dart.notNull(index) * 4 + 2, value.z);
    this[_storage][$_set](dart.notNull(index) * 4 + 3, value.w);
    return value;
  }
  sublist(start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this.length);
    return new _native_typed_data.NativeFloat32x4List._externalStorage(_native_typed_data.NativeFloat32List._check(this[_storage][$sublist](dart.notNull(start) * 4, dart.notNull(end) * 4)));
  }
};
(_native_typed_data.NativeFloat32x4List.new = function(length) {
  this[_storage] = _native_typed_data.NativeFloat32List.new(dart.notNull(length) * 4);
}).prototype = _native_typed_data.NativeFloat32x4List.prototype;
(_native_typed_data.NativeFloat32x4List._externalStorage = function(storage) {
  this[_storage] = storage;
}).prototype = _native_typed_data.NativeFloat32x4List.prototype;
(_native_typed_data.NativeFloat32x4List._slowFromList = function(list) {
  this[_storage] = _native_typed_data.NativeFloat32List.new(dart.notNull(list[$length]) * 4);
  for (let i = 0; i < dart.notNull(list[$length]); i++) {
    let e = list[$_get](i);
    this[_storage][$_set](i * 4 + 0, e.x);
    this[_storage][$_set](i * 4 + 1, e.y);
    this[_storage][$_set](i * 4 + 2, e.z);
    this[_storage][$_set](i * 4 + 3, e.w);
  }
}).prototype = _native_typed_data.NativeFloat32x4List.prototype;
dart.addTypeTests(_native_typed_data.NativeFloat32x4List);
_native_typed_data.NativeFloat32x4List[dart.implements] = () => [typed_data.Float32x4List];
dart.setMethodSignature(_native_typed_data.NativeFloat32x4List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeFloat32x4List.__proto__),
  _get: dart.fnType(typed_data.Float32x4, [core.int]),
  [$_get]: dart.fnType(typed_data.Float32x4, [core.int]),
  _set: dart.fnType(dart.void, [core.int, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  sublist: dart.fnType(core.List$(typed_data.Float32x4), [core.int], [core.int]),
  [$sublist]: dart.fnType(core.List$(typed_data.Float32x4), [core.int], [core.int])
}));
dart.setGetterSignature(_native_typed_data.NativeFloat32x4List, () => ({
  __proto__: dart.getGetters(_native_typed_data.NativeFloat32x4List.__proto__),
  buffer: typed_data.ByteBuffer,
  [$buffer]: typed_data.ByteBuffer,
  lengthInBytes: core.int,
  [$lengthInBytes]: core.int,
  offsetInBytes: core.int,
  [$offsetInBytes]: core.int,
  elementSizeInBytes: core.int,
  [$elementSizeInBytes]: core.int,
  length: core.int,
  [$length]: core.int
}));
dart.setFieldSignature(_native_typed_data.NativeFloat32x4List, () => ({
  __proto__: dart.getFields(_native_typed_data.NativeFloat32x4List.__proto__),
  [_storage]: dart.finalFieldType(_native_typed_data.NativeFloat32List)
}));
dart.defineExtensionMethods(_native_typed_data.NativeFloat32x4List, ['_get', '_set', 'sublist']);
dart.defineExtensionAccessors(_native_typed_data.NativeFloat32x4List, [
  'runtimeType',
  'buffer',
  'lengthInBytes',
  'offsetInBytes',
  'elementSizeInBytes',
  'length'
]);
typed_data.Int32x4 = class Int32x4 extends core.Object {
  static new(x, y, z, w) {
    return new _native_typed_data.NativeInt32x4.new(x, y, z, w);
  }
  static bool(x, y, z, w) {
    return new _native_typed_data.NativeInt32x4.bool(x, y, z, w);
  }
  static fromFloat32x4Bits(x) {
    return _native_typed_data.NativeInt32x4.fromFloat32x4Bits(x);
  }
};
(typed_data.Int32x4[dart.mixinNew] = function() {
}).prototype = typed_data.Int32x4.prototype;
dart.addTypeTests(typed_data.Int32x4);
dart.defineLazy(typed_data.Int32x4, {
  /*typed_data.Int32x4.xxxx*/get xxxx() {
    return 0;
  },
  /*typed_data.Int32x4.xxxy*/get xxxy() {
    return 64;
  },
  /*typed_data.Int32x4.xxxz*/get xxxz() {
    return 128;
  },
  /*typed_data.Int32x4.xxxw*/get xxxw() {
    return 192;
  },
  /*typed_data.Int32x4.xxyx*/get xxyx() {
    return 16;
  },
  /*typed_data.Int32x4.xxyy*/get xxyy() {
    return 80;
  },
  /*typed_data.Int32x4.xxyz*/get xxyz() {
    return 144;
  },
  /*typed_data.Int32x4.xxyw*/get xxyw() {
    return 208;
  },
  /*typed_data.Int32x4.xxzx*/get xxzx() {
    return 32;
  },
  /*typed_data.Int32x4.xxzy*/get xxzy() {
    return 96;
  },
  /*typed_data.Int32x4.xxzz*/get xxzz() {
    return 160;
  },
  /*typed_data.Int32x4.xxzw*/get xxzw() {
    return 224;
  },
  /*typed_data.Int32x4.xxwx*/get xxwx() {
    return 48;
  },
  /*typed_data.Int32x4.xxwy*/get xxwy() {
    return 112;
  },
  /*typed_data.Int32x4.xxwz*/get xxwz() {
    return 176;
  },
  /*typed_data.Int32x4.xxww*/get xxww() {
    return 240;
  },
  /*typed_data.Int32x4.xyxx*/get xyxx() {
    return 4;
  },
  /*typed_data.Int32x4.xyxy*/get xyxy() {
    return 68;
  },
  /*typed_data.Int32x4.xyxz*/get xyxz() {
    return 132;
  },
  /*typed_data.Int32x4.xyxw*/get xyxw() {
    return 196;
  },
  /*typed_data.Int32x4.xyyx*/get xyyx() {
    return 20;
  },
  /*typed_data.Int32x4.xyyy*/get xyyy() {
    return 84;
  },
  /*typed_data.Int32x4.xyyz*/get xyyz() {
    return 148;
  },
  /*typed_data.Int32x4.xyyw*/get xyyw() {
    return 212;
  },
  /*typed_data.Int32x4.xyzx*/get xyzx() {
    return 36;
  },
  /*typed_data.Int32x4.xyzy*/get xyzy() {
    return 100;
  },
  /*typed_data.Int32x4.xyzz*/get xyzz() {
    return 164;
  },
  /*typed_data.Int32x4.xyzw*/get xyzw() {
    return 228;
  },
  /*typed_data.Int32x4.xywx*/get xywx() {
    return 52;
  },
  /*typed_data.Int32x4.xywy*/get xywy() {
    return 116;
  },
  /*typed_data.Int32x4.xywz*/get xywz() {
    return 180;
  },
  /*typed_data.Int32x4.xyww*/get xyww() {
    return 244;
  },
  /*typed_data.Int32x4.xzxx*/get xzxx() {
    return 8;
  },
  /*typed_data.Int32x4.xzxy*/get xzxy() {
    return 72;
  },
  /*typed_data.Int32x4.xzxz*/get xzxz() {
    return 136;
  },
  /*typed_data.Int32x4.xzxw*/get xzxw() {
    return 200;
  },
  /*typed_data.Int32x4.xzyx*/get xzyx() {
    return 24;
  },
  /*typed_data.Int32x4.xzyy*/get xzyy() {
    return 88;
  },
  /*typed_data.Int32x4.xzyz*/get xzyz() {
    return 152;
  },
  /*typed_data.Int32x4.xzyw*/get xzyw() {
    return 216;
  },
  /*typed_data.Int32x4.xzzx*/get xzzx() {
    return 40;
  },
  /*typed_data.Int32x4.xzzy*/get xzzy() {
    return 104;
  },
  /*typed_data.Int32x4.xzzz*/get xzzz() {
    return 168;
  },
  /*typed_data.Int32x4.xzzw*/get xzzw() {
    return 232;
  },
  /*typed_data.Int32x4.xzwx*/get xzwx() {
    return 56;
  },
  /*typed_data.Int32x4.xzwy*/get xzwy() {
    return 120;
  },
  /*typed_data.Int32x4.xzwz*/get xzwz() {
    return 184;
  },
  /*typed_data.Int32x4.xzww*/get xzww() {
    return 248;
  },
  /*typed_data.Int32x4.xwxx*/get xwxx() {
    return 12;
  },
  /*typed_data.Int32x4.xwxy*/get xwxy() {
    return 76;
  },
  /*typed_data.Int32x4.xwxz*/get xwxz() {
    return 140;
  },
  /*typed_data.Int32x4.xwxw*/get xwxw() {
    return 204;
  },
  /*typed_data.Int32x4.xwyx*/get xwyx() {
    return 28;
  },
  /*typed_data.Int32x4.xwyy*/get xwyy() {
    return 92;
  },
  /*typed_data.Int32x4.xwyz*/get xwyz() {
    return 156;
  },
  /*typed_data.Int32x4.xwyw*/get xwyw() {
    return 220;
  },
  /*typed_data.Int32x4.xwzx*/get xwzx() {
    return 44;
  },
  /*typed_data.Int32x4.xwzy*/get xwzy() {
    return 108;
  },
  /*typed_data.Int32x4.xwzz*/get xwzz() {
    return 172;
  },
  /*typed_data.Int32x4.xwzw*/get xwzw() {
    return 236;
  },
  /*typed_data.Int32x4.xwwx*/get xwwx() {
    return 60;
  },
  /*typed_data.Int32x4.xwwy*/get xwwy() {
    return 124;
  },
  /*typed_data.Int32x4.xwwz*/get xwwz() {
    return 188;
  },
  /*typed_data.Int32x4.xwww*/get xwww() {
    return 252;
  },
  /*typed_data.Int32x4.yxxx*/get yxxx() {
    return 1;
  },
  /*typed_data.Int32x4.yxxy*/get yxxy() {
    return 65;
  },
  /*typed_data.Int32x4.yxxz*/get yxxz() {
    return 129;
  },
  /*typed_data.Int32x4.yxxw*/get yxxw() {
    return 193;
  },
  /*typed_data.Int32x4.yxyx*/get yxyx() {
    return 17;
  },
  /*typed_data.Int32x4.yxyy*/get yxyy() {
    return 81;
  },
  /*typed_data.Int32x4.yxyz*/get yxyz() {
    return 145;
  },
  /*typed_data.Int32x4.yxyw*/get yxyw() {
    return 209;
  },
  /*typed_data.Int32x4.yxzx*/get yxzx() {
    return 33;
  },
  /*typed_data.Int32x4.yxzy*/get yxzy() {
    return 97;
  },
  /*typed_data.Int32x4.yxzz*/get yxzz() {
    return 161;
  },
  /*typed_data.Int32x4.yxzw*/get yxzw() {
    return 225;
  },
  /*typed_data.Int32x4.yxwx*/get yxwx() {
    return 49;
  },
  /*typed_data.Int32x4.yxwy*/get yxwy() {
    return 113;
  },
  /*typed_data.Int32x4.yxwz*/get yxwz() {
    return 177;
  },
  /*typed_data.Int32x4.yxww*/get yxww() {
    return 241;
  },
  /*typed_data.Int32x4.yyxx*/get yyxx() {
    return 5;
  },
  /*typed_data.Int32x4.yyxy*/get yyxy() {
    return 69;
  },
  /*typed_data.Int32x4.yyxz*/get yyxz() {
    return 133;
  },
  /*typed_data.Int32x4.yyxw*/get yyxw() {
    return 197;
  },
  /*typed_data.Int32x4.yyyx*/get yyyx() {
    return 21;
  },
  /*typed_data.Int32x4.yyyy*/get yyyy() {
    return 85;
  },
  /*typed_data.Int32x4.yyyz*/get yyyz() {
    return 149;
  },
  /*typed_data.Int32x4.yyyw*/get yyyw() {
    return 213;
  },
  /*typed_data.Int32x4.yyzx*/get yyzx() {
    return 37;
  },
  /*typed_data.Int32x4.yyzy*/get yyzy() {
    return 101;
  },
  /*typed_data.Int32x4.yyzz*/get yyzz() {
    return 165;
  },
  /*typed_data.Int32x4.yyzw*/get yyzw() {
    return 229;
  },
  /*typed_data.Int32x4.yywx*/get yywx() {
    return 53;
  },
  /*typed_data.Int32x4.yywy*/get yywy() {
    return 117;
  },
  /*typed_data.Int32x4.yywz*/get yywz() {
    return 181;
  },
  /*typed_data.Int32x4.yyww*/get yyww() {
    return 245;
  },
  /*typed_data.Int32x4.yzxx*/get yzxx() {
    return 9;
  },
  /*typed_data.Int32x4.yzxy*/get yzxy() {
    return 73;
  },
  /*typed_data.Int32x4.yzxz*/get yzxz() {
    return 137;
  },
  /*typed_data.Int32x4.yzxw*/get yzxw() {
    return 201;
  },
  /*typed_data.Int32x4.yzyx*/get yzyx() {
    return 25;
  },
  /*typed_data.Int32x4.yzyy*/get yzyy() {
    return 89;
  },
  /*typed_data.Int32x4.yzyz*/get yzyz() {
    return 153;
  },
  /*typed_data.Int32x4.yzyw*/get yzyw() {
    return 217;
  },
  /*typed_data.Int32x4.yzzx*/get yzzx() {
    return 41;
  },
  /*typed_data.Int32x4.yzzy*/get yzzy() {
    return 105;
  },
  /*typed_data.Int32x4.yzzz*/get yzzz() {
    return 169;
  },
  /*typed_data.Int32x4.yzzw*/get yzzw() {
    return 233;
  },
  /*typed_data.Int32x4.yzwx*/get yzwx() {
    return 57;
  },
  /*typed_data.Int32x4.yzwy*/get yzwy() {
    return 121;
  },
  /*typed_data.Int32x4.yzwz*/get yzwz() {
    return 185;
  },
  /*typed_data.Int32x4.yzww*/get yzww() {
    return 249;
  },
  /*typed_data.Int32x4.ywxx*/get ywxx() {
    return 13;
  },
  /*typed_data.Int32x4.ywxy*/get ywxy() {
    return 77;
  },
  /*typed_data.Int32x4.ywxz*/get ywxz() {
    return 141;
  },
  /*typed_data.Int32x4.ywxw*/get ywxw() {
    return 205;
  },
  /*typed_data.Int32x4.ywyx*/get ywyx() {
    return 29;
  },
  /*typed_data.Int32x4.ywyy*/get ywyy() {
    return 93;
  },
  /*typed_data.Int32x4.ywyz*/get ywyz() {
    return 157;
  },
  /*typed_data.Int32x4.ywyw*/get ywyw() {
    return 221;
  },
  /*typed_data.Int32x4.ywzx*/get ywzx() {
    return 45;
  },
  /*typed_data.Int32x4.ywzy*/get ywzy() {
    return 109;
  },
  /*typed_data.Int32x4.ywzz*/get ywzz() {
    return 173;
  },
  /*typed_data.Int32x4.ywzw*/get ywzw() {
    return 237;
  },
  /*typed_data.Int32x4.ywwx*/get ywwx() {
    return 61;
  },
  /*typed_data.Int32x4.ywwy*/get ywwy() {
    return 125;
  },
  /*typed_data.Int32x4.ywwz*/get ywwz() {
    return 189;
  },
  /*typed_data.Int32x4.ywww*/get ywww() {
    return 253;
  },
  /*typed_data.Int32x4.zxxx*/get zxxx() {
    return 2;
  },
  /*typed_data.Int32x4.zxxy*/get zxxy() {
    return 66;
  },
  /*typed_data.Int32x4.zxxz*/get zxxz() {
    return 130;
  },
  /*typed_data.Int32x4.zxxw*/get zxxw() {
    return 194;
  },
  /*typed_data.Int32x4.zxyx*/get zxyx() {
    return 18;
  },
  /*typed_data.Int32x4.zxyy*/get zxyy() {
    return 82;
  },
  /*typed_data.Int32x4.zxyz*/get zxyz() {
    return 146;
  },
  /*typed_data.Int32x4.zxyw*/get zxyw() {
    return 210;
  },
  /*typed_data.Int32x4.zxzx*/get zxzx() {
    return 34;
  },
  /*typed_data.Int32x4.zxzy*/get zxzy() {
    return 98;
  },
  /*typed_data.Int32x4.zxzz*/get zxzz() {
    return 162;
  },
  /*typed_data.Int32x4.zxzw*/get zxzw() {
    return 226;
  },
  /*typed_data.Int32x4.zxwx*/get zxwx() {
    return 50;
  },
  /*typed_data.Int32x4.zxwy*/get zxwy() {
    return 114;
  },
  /*typed_data.Int32x4.zxwz*/get zxwz() {
    return 178;
  },
  /*typed_data.Int32x4.zxww*/get zxww() {
    return 242;
  },
  /*typed_data.Int32x4.zyxx*/get zyxx() {
    return 6;
  },
  /*typed_data.Int32x4.zyxy*/get zyxy() {
    return 70;
  },
  /*typed_data.Int32x4.zyxz*/get zyxz() {
    return 134;
  },
  /*typed_data.Int32x4.zyxw*/get zyxw() {
    return 198;
  },
  /*typed_data.Int32x4.zyyx*/get zyyx() {
    return 22;
  },
  /*typed_data.Int32x4.zyyy*/get zyyy() {
    return 86;
  },
  /*typed_data.Int32x4.zyyz*/get zyyz() {
    return 150;
  },
  /*typed_data.Int32x4.zyyw*/get zyyw() {
    return 214;
  },
  /*typed_data.Int32x4.zyzx*/get zyzx() {
    return 38;
  },
  /*typed_data.Int32x4.zyzy*/get zyzy() {
    return 102;
  },
  /*typed_data.Int32x4.zyzz*/get zyzz() {
    return 166;
  },
  /*typed_data.Int32x4.zyzw*/get zyzw() {
    return 230;
  },
  /*typed_data.Int32x4.zywx*/get zywx() {
    return 54;
  },
  /*typed_data.Int32x4.zywy*/get zywy() {
    return 118;
  },
  /*typed_data.Int32x4.zywz*/get zywz() {
    return 182;
  },
  /*typed_data.Int32x4.zyww*/get zyww() {
    return 246;
  },
  /*typed_data.Int32x4.zzxx*/get zzxx() {
    return 10;
  },
  /*typed_data.Int32x4.zzxy*/get zzxy() {
    return 74;
  },
  /*typed_data.Int32x4.zzxz*/get zzxz() {
    return 138;
  },
  /*typed_data.Int32x4.zzxw*/get zzxw() {
    return 202;
  },
  /*typed_data.Int32x4.zzyx*/get zzyx() {
    return 26;
  },
  /*typed_data.Int32x4.zzyy*/get zzyy() {
    return 90;
  },
  /*typed_data.Int32x4.zzyz*/get zzyz() {
    return 154;
  },
  /*typed_data.Int32x4.zzyw*/get zzyw() {
    return 218;
  },
  /*typed_data.Int32x4.zzzx*/get zzzx() {
    return 42;
  },
  /*typed_data.Int32x4.zzzy*/get zzzy() {
    return 106;
  },
  /*typed_data.Int32x4.zzzz*/get zzzz() {
    return 170;
  },
  /*typed_data.Int32x4.zzzw*/get zzzw() {
    return 234;
  },
  /*typed_data.Int32x4.zzwx*/get zzwx() {
    return 58;
  },
  /*typed_data.Int32x4.zzwy*/get zzwy() {
    return 122;
  },
  /*typed_data.Int32x4.zzwz*/get zzwz() {
    return 186;
  },
  /*typed_data.Int32x4.zzww*/get zzww() {
    return 250;
  },
  /*typed_data.Int32x4.zwxx*/get zwxx() {
    return 14;
  },
  /*typed_data.Int32x4.zwxy*/get zwxy() {
    return 78;
  },
  /*typed_data.Int32x4.zwxz*/get zwxz() {
    return 142;
  },
  /*typed_data.Int32x4.zwxw*/get zwxw() {
    return 206;
  },
  /*typed_data.Int32x4.zwyx*/get zwyx() {
    return 30;
  },
  /*typed_data.Int32x4.zwyy*/get zwyy() {
    return 94;
  },
  /*typed_data.Int32x4.zwyz*/get zwyz() {
    return 158;
  },
  /*typed_data.Int32x4.zwyw*/get zwyw() {
    return 222;
  },
  /*typed_data.Int32x4.zwzx*/get zwzx() {
    return 46;
  },
  /*typed_data.Int32x4.zwzy*/get zwzy() {
    return 110;
  },
  /*typed_data.Int32x4.zwzz*/get zwzz() {
    return 174;
  },
  /*typed_data.Int32x4.zwzw*/get zwzw() {
    return 238;
  },
  /*typed_data.Int32x4.zwwx*/get zwwx() {
    return 62;
  },
  /*typed_data.Int32x4.zwwy*/get zwwy() {
    return 126;
  },
  /*typed_data.Int32x4.zwwz*/get zwwz() {
    return 190;
  },
  /*typed_data.Int32x4.zwww*/get zwww() {
    return 254;
  },
  /*typed_data.Int32x4.wxxx*/get wxxx() {
    return 3;
  },
  /*typed_data.Int32x4.wxxy*/get wxxy() {
    return 67;
  },
  /*typed_data.Int32x4.wxxz*/get wxxz() {
    return 131;
  },
  /*typed_data.Int32x4.wxxw*/get wxxw() {
    return 195;
  },
  /*typed_data.Int32x4.wxyx*/get wxyx() {
    return 19;
  },
  /*typed_data.Int32x4.wxyy*/get wxyy() {
    return 83;
  },
  /*typed_data.Int32x4.wxyz*/get wxyz() {
    return 147;
  },
  /*typed_data.Int32x4.wxyw*/get wxyw() {
    return 211;
  },
  /*typed_data.Int32x4.wxzx*/get wxzx() {
    return 35;
  },
  /*typed_data.Int32x4.wxzy*/get wxzy() {
    return 99;
  },
  /*typed_data.Int32x4.wxzz*/get wxzz() {
    return 163;
  },
  /*typed_data.Int32x4.wxzw*/get wxzw() {
    return 227;
  },
  /*typed_data.Int32x4.wxwx*/get wxwx() {
    return 51;
  },
  /*typed_data.Int32x4.wxwy*/get wxwy() {
    return 115;
  },
  /*typed_data.Int32x4.wxwz*/get wxwz() {
    return 179;
  },
  /*typed_data.Int32x4.wxww*/get wxww() {
    return 243;
  },
  /*typed_data.Int32x4.wyxx*/get wyxx() {
    return 7;
  },
  /*typed_data.Int32x4.wyxy*/get wyxy() {
    return 71;
  },
  /*typed_data.Int32x4.wyxz*/get wyxz() {
    return 135;
  },
  /*typed_data.Int32x4.wyxw*/get wyxw() {
    return 199;
  },
  /*typed_data.Int32x4.wyyx*/get wyyx() {
    return 23;
  },
  /*typed_data.Int32x4.wyyy*/get wyyy() {
    return 87;
  },
  /*typed_data.Int32x4.wyyz*/get wyyz() {
    return 151;
  },
  /*typed_data.Int32x4.wyyw*/get wyyw() {
    return 215;
  },
  /*typed_data.Int32x4.wyzx*/get wyzx() {
    return 39;
  },
  /*typed_data.Int32x4.wyzy*/get wyzy() {
    return 103;
  },
  /*typed_data.Int32x4.wyzz*/get wyzz() {
    return 167;
  },
  /*typed_data.Int32x4.wyzw*/get wyzw() {
    return 231;
  },
  /*typed_data.Int32x4.wywx*/get wywx() {
    return 55;
  },
  /*typed_data.Int32x4.wywy*/get wywy() {
    return 119;
  },
  /*typed_data.Int32x4.wywz*/get wywz() {
    return 183;
  },
  /*typed_data.Int32x4.wyww*/get wyww() {
    return 247;
  },
  /*typed_data.Int32x4.wzxx*/get wzxx() {
    return 11;
  },
  /*typed_data.Int32x4.wzxy*/get wzxy() {
    return 75;
  },
  /*typed_data.Int32x4.wzxz*/get wzxz() {
    return 139;
  },
  /*typed_data.Int32x4.wzxw*/get wzxw() {
    return 203;
  },
  /*typed_data.Int32x4.wzyx*/get wzyx() {
    return 27;
  },
  /*typed_data.Int32x4.wzyy*/get wzyy() {
    return 91;
  },
  /*typed_data.Int32x4.wzyz*/get wzyz() {
    return 155;
  },
  /*typed_data.Int32x4.wzyw*/get wzyw() {
    return 219;
  },
  /*typed_data.Int32x4.wzzx*/get wzzx() {
    return 43;
  },
  /*typed_data.Int32x4.wzzy*/get wzzy() {
    return 107;
  },
  /*typed_data.Int32x4.wzzz*/get wzzz() {
    return 171;
  },
  /*typed_data.Int32x4.wzzw*/get wzzw() {
    return 235;
  },
  /*typed_data.Int32x4.wzwx*/get wzwx() {
    return 59;
  },
  /*typed_data.Int32x4.wzwy*/get wzwy() {
    return 123;
  },
  /*typed_data.Int32x4.wzwz*/get wzwz() {
    return 187;
  },
  /*typed_data.Int32x4.wzww*/get wzww() {
    return 251;
  },
  /*typed_data.Int32x4.wwxx*/get wwxx() {
    return 15;
  },
  /*typed_data.Int32x4.wwxy*/get wwxy() {
    return 79;
  },
  /*typed_data.Int32x4.wwxz*/get wwxz() {
    return 143;
  },
  /*typed_data.Int32x4.wwxw*/get wwxw() {
    return 207;
  },
  /*typed_data.Int32x4.wwyx*/get wwyx() {
    return 31;
  },
  /*typed_data.Int32x4.wwyy*/get wwyy() {
    return 95;
  },
  /*typed_data.Int32x4.wwyz*/get wwyz() {
    return 159;
  },
  /*typed_data.Int32x4.wwyw*/get wwyw() {
    return 223;
  },
  /*typed_data.Int32x4.wwzx*/get wwzx() {
    return 47;
  },
  /*typed_data.Int32x4.wwzy*/get wwzy() {
    return 111;
  },
  /*typed_data.Int32x4.wwzz*/get wwzz() {
    return 175;
  },
  /*typed_data.Int32x4.wwzw*/get wwzw() {
    return 239;
  },
  /*typed_data.Int32x4.wwwx*/get wwwx() {
    return 63;
  },
  /*typed_data.Int32x4.wwwy*/get wwwy() {
    return 127;
  },
  /*typed_data.Int32x4.wwwz*/get wwwz() {
    return 191;
  },
  /*typed_data.Int32x4.wwww*/get wwww() {
    return 255;
  }
});
const Object_ListMixin$$ = class Object_ListMixin extends core.Object {};
(Object_ListMixin$$.new = function() {
}).prototype = Object_ListMixin$$.prototype;
dart.applyMixin(Object_ListMixin$$, collection.ListMixin$(typed_data.Int32x4));
const Object_FixedLengthListMixin$$ = class Object_FixedLengthListMixin extends Object_ListMixin$$ {};
(Object_FixedLengthListMixin$$.new = function() {
}).prototype = Object_FixedLengthListMixin$$.prototype;
dart.applyMixin(Object_FixedLengthListMixin$$, _internal.FixedLengthListMixin$(typed_data.Int32x4));
_native_typed_data.NativeInt32x4List = class NativeInt32x4List extends Object_FixedLengthListMixin$$ {
  get runtimeType() {
    return dart.wrapType(typed_data.Int32x4List);
  }
  static fromList(list) {
    if (_native_typed_data.NativeInt32x4List.is(list)) {
      return new _native_typed_data.NativeInt32x4List._externalStorage(_native_typed_data.NativeInt32List.fromList(list[_storage]));
    } else {
      return new _native_typed_data.NativeInt32x4List._slowFromList(list);
    }
  }
  get buffer() {
    return this[_storage][$buffer];
  }
  get lengthInBytes() {
    return this[_storage][$lengthInBytes];
  }
  get offsetInBytes() {
    return this[_storage][$offsetInBytes];
  }
  get elementSizeInBytes() {
    return typed_data.Int32x4List.bytesPerElement;
  }
  get length() {
    return (dart.notNull(this[_storage][$length]) / 4)[$truncate]();
  }
  set length(value) {
    super.length = value;
  }
  _get(index) {
    _native_typed_data._checkValidIndex(index, this, this.length);
    let _x = this[_storage][$_get](dart.notNull(index) * 4 + 0);
    let _y = this[_storage][$_get](dart.notNull(index) * 4 + 1);
    let _z = this[_storage][$_get](dart.notNull(index) * 4 + 2);
    let _w = this[_storage][$_get](dart.notNull(index) * 4 + 3);
    return new _native_typed_data.NativeInt32x4._truncated(_x, _y, _z, _w);
  }
  _set(index, value) {
    typed_data.Int32x4._check(value);
    _native_typed_data._checkValidIndex(index, this, this.length);
    this[_storage][$_set](dart.notNull(index) * 4 + 0, value.x);
    this[_storage][$_set](dart.notNull(index) * 4 + 1, value.y);
    this[_storage][$_set](dart.notNull(index) * 4 + 2, value.z);
    this[_storage][$_set](dart.notNull(index) * 4 + 3, value.w);
    return value;
  }
  sublist(start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this.length);
    return new _native_typed_data.NativeInt32x4List._externalStorage(typed_data.Int32List._check(this[_storage][$sublist](dart.notNull(start) * 4, dart.notNull(end) * 4)));
  }
};
(_native_typed_data.NativeInt32x4List.new = function(length) {
  this[_storage] = _native_typed_data.NativeInt32List.new(dart.notNull(length) * 4);
}).prototype = _native_typed_data.NativeInt32x4List.prototype;
(_native_typed_data.NativeInt32x4List._externalStorage = function(storage) {
  this[_storage] = storage;
}).prototype = _native_typed_data.NativeInt32x4List.prototype;
(_native_typed_data.NativeInt32x4List._slowFromList = function(list) {
  this[_storage] = _native_typed_data.NativeInt32List.new(dart.notNull(list[$length]) * 4);
  for (let i = 0; i < dart.notNull(list[$length]); i++) {
    let e = list[$_get](i);
    this[_storage][$_set](i * 4 + 0, e.x);
    this[_storage][$_set](i * 4 + 1, e.y);
    this[_storage][$_set](i * 4 + 2, e.z);
    this[_storage][$_set](i * 4 + 3, e.w);
  }
}).prototype = _native_typed_data.NativeInt32x4List.prototype;
dart.addTypeTests(_native_typed_data.NativeInt32x4List);
_native_typed_data.NativeInt32x4List[dart.implements] = () => [typed_data.Int32x4List];
dart.setMethodSignature(_native_typed_data.NativeInt32x4List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeInt32x4List.__proto__),
  _get: dart.fnType(typed_data.Int32x4, [core.int]),
  [$_get]: dart.fnType(typed_data.Int32x4, [core.int]),
  _set: dart.fnType(dart.void, [core.int, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  sublist: dart.fnType(core.List$(typed_data.Int32x4), [core.int], [core.int]),
  [$sublist]: dart.fnType(core.List$(typed_data.Int32x4), [core.int], [core.int])
}));
dart.setGetterSignature(_native_typed_data.NativeInt32x4List, () => ({
  __proto__: dart.getGetters(_native_typed_data.NativeInt32x4List.__proto__),
  buffer: typed_data.ByteBuffer,
  [$buffer]: typed_data.ByteBuffer,
  lengthInBytes: core.int,
  [$lengthInBytes]: core.int,
  offsetInBytes: core.int,
  [$offsetInBytes]: core.int,
  elementSizeInBytes: core.int,
  [$elementSizeInBytes]: core.int,
  length: core.int,
  [$length]: core.int
}));
dart.setFieldSignature(_native_typed_data.NativeInt32x4List, () => ({
  __proto__: dart.getFields(_native_typed_data.NativeInt32x4List.__proto__),
  [_storage]: dart.finalFieldType(typed_data.Int32List)
}));
dart.defineExtensionMethods(_native_typed_data.NativeInt32x4List, ['_get', '_set', 'sublist']);
dart.defineExtensionAccessors(_native_typed_data.NativeInt32x4List, [
  'runtimeType',
  'buffer',
  'lengthInBytes',
  'offsetInBytes',
  'elementSizeInBytes',
  'length'
]);
typed_data.Float64x2 = class Float64x2 extends core.Object {
  static new(x, y) {
    return new _native_typed_data.NativeFloat64x2.new(x, y);
  }
  static splat(v) {
    return new _native_typed_data.NativeFloat64x2.splat(v);
  }
  static zero() {
    return new _native_typed_data.NativeFloat64x2.zero();
  }
  static fromFloat32x4(v) {
    return new _native_typed_data.NativeFloat64x2.fromFloat32x4(v);
  }
};
(typed_data.Float64x2[dart.mixinNew] = function() {
}).prototype = typed_data.Float64x2.prototype;
dart.addTypeTests(typed_data.Float64x2);
const Object_ListMixin$$0 = class Object_ListMixin extends core.Object {};
(Object_ListMixin$$0.new = function() {
}).prototype = Object_ListMixin$$0.prototype;
dart.applyMixin(Object_ListMixin$$0, collection.ListMixin$(typed_data.Float64x2));
const Object_FixedLengthListMixin$$0 = class Object_FixedLengthListMixin extends Object_ListMixin$$0 {};
(Object_FixedLengthListMixin$$0.new = function() {
}).prototype = Object_FixedLengthListMixin$$0.prototype;
dart.applyMixin(Object_FixedLengthListMixin$$0, _internal.FixedLengthListMixin$(typed_data.Float64x2));
_native_typed_data.NativeFloat64x2List = class NativeFloat64x2List extends Object_FixedLengthListMixin$$0 {
  static fromList(list) {
    if (_native_typed_data.NativeFloat64x2List.is(list)) {
      return new _native_typed_data.NativeFloat64x2List._externalStorage(_native_typed_data.NativeFloat64List.fromList(list[_storage]));
    } else {
      return new _native_typed_data.NativeFloat64x2List._slowFromList(list);
    }
  }
  get runtimeType() {
    return dart.wrapType(typed_data.Float64x2List);
  }
  get buffer() {
    return this[_storage].buffer;
  }
  get lengthInBytes() {
    return this[_storage][$lengthInBytes];
  }
  get offsetInBytes() {
    return this[_storage][$offsetInBytes];
  }
  get elementSizeInBytes() {
    return typed_data.Float64x2List.bytesPerElement;
  }
  get length() {
    return (dart.notNull(this[_storage][$length]) / 2)[$truncate]();
  }
  set length(value) {
    super.length = value;
  }
  _get(index) {
    _native_typed_data._checkValidIndex(index, this, this.length);
    let _x = this[_storage][$_get](dart.notNull(index) * 2 + 0);
    let _y = this[_storage][$_get](dart.notNull(index) * 2 + 1);
    return typed_data.Float64x2.new(_x, _y);
  }
  _set(index, value) {
    typed_data.Float64x2._check(value);
    _native_typed_data._checkValidIndex(index, this, this.length);
    this[_storage][$_set](dart.notNull(index) * 2 + 0, value.x);
    this[_storage][$_set](dart.notNull(index) * 2 + 1, value.y);
    return value;
  }
  sublist(start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this.length);
    return new _native_typed_data.NativeFloat64x2List._externalStorage(_native_typed_data.NativeFloat64List._check(this[_storage][$sublist](dart.notNull(start) * 2, dart.notNull(end) * 2)));
  }
};
(_native_typed_data.NativeFloat64x2List.new = function(length) {
  this[_storage] = _native_typed_data.NativeFloat64List.new(dart.notNull(length) * 2);
}).prototype = _native_typed_data.NativeFloat64x2List.prototype;
(_native_typed_data.NativeFloat64x2List._externalStorage = function(storage) {
  this[_storage] = storage;
}).prototype = _native_typed_data.NativeFloat64x2List.prototype;
(_native_typed_data.NativeFloat64x2List._slowFromList = function(list) {
  this[_storage] = _native_typed_data.NativeFloat64List.new(dart.notNull(list[$length]) * 2);
  for (let i = 0; i < dart.notNull(list[$length]); i++) {
    let e = list[$_get](i);
    this[_storage][$_set](i * 2 + 0, e.x);
    this[_storage][$_set](i * 2 + 1, e.y);
  }
}).prototype = _native_typed_data.NativeFloat64x2List.prototype;
dart.addTypeTests(_native_typed_data.NativeFloat64x2List);
_native_typed_data.NativeFloat64x2List[dart.implements] = () => [typed_data.Float64x2List];
dart.setMethodSignature(_native_typed_data.NativeFloat64x2List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeFloat64x2List.__proto__),
  _get: dart.fnType(typed_data.Float64x2, [core.int]),
  [$_get]: dart.fnType(typed_data.Float64x2, [core.int]),
  _set: dart.fnType(dart.void, [core.int, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  sublist: dart.fnType(core.List$(typed_data.Float64x2), [core.int], [core.int]),
  [$sublist]: dart.fnType(core.List$(typed_data.Float64x2), [core.int], [core.int])
}));
dart.setGetterSignature(_native_typed_data.NativeFloat64x2List, () => ({
  __proto__: dart.getGetters(_native_typed_data.NativeFloat64x2List.__proto__),
  buffer: typed_data.ByteBuffer,
  [$buffer]: typed_data.ByteBuffer,
  lengthInBytes: core.int,
  [$lengthInBytes]: core.int,
  offsetInBytes: core.int,
  [$offsetInBytes]: core.int,
  elementSizeInBytes: core.int,
  [$elementSizeInBytes]: core.int,
  length: core.int,
  [$length]: core.int
}));
dart.setFieldSignature(_native_typed_data.NativeFloat64x2List, () => ({
  __proto__: dart.getFields(_native_typed_data.NativeFloat64x2List.__proto__),
  [_storage]: dart.finalFieldType(_native_typed_data.NativeFloat64List)
}));
dart.defineExtensionMethods(_native_typed_data.NativeFloat64x2List, ['_get', '_set', 'sublist']);
dart.defineExtensionAccessors(_native_typed_data.NativeFloat64x2List, [
  'runtimeType',
  'buffer',
  'lengthInBytes',
  'offsetInBytes',
  'elementSizeInBytes',
  'length'
]);
const _invalidPosition = Symbol('_invalidPosition');
const _checkPosition = Symbol('_checkPosition');
_native_typed_data.NativeTypedData = class NativeTypedData extends core.Object {
  get [$buffer]() {
    return this.buffer;
  }
  get [$lengthInBytes]() {
    return this.byteLength;
  }
  get [$offsetInBytes]() {
    return this.byteOffset;
  }
  get [$elementSizeInBytes]() {
    return this.BYTES_PER_ELEMENT;
  }
  [_invalidPosition](position, length, name) {
    if (!core.int.is(position)) {
      dart.throw(new core.ArgumentError.value(position, name, "Invalid list position"));
    } else {
      dart.throw(new core.RangeError.range(position, 0, length, name));
    }
  }
  [_checkPosition](position, length, name) {
    if (position >>> 0 !== position || position > dart.notNull(length)) {
      this[_invalidPosition](position, length, name);
    }
  }
};
(_native_typed_data.NativeTypedData.new = function() {
}).prototype = _native_typed_data.NativeTypedData.prototype;
dart.addTypeTests(_native_typed_data.NativeTypedData);
_native_typed_data.NativeTypedData[dart.implements] = () => [typed_data.TypedData];
dart.setMethodSignature(_native_typed_data.NativeTypedData, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeTypedData.__proto__),
  [_invalidPosition]: dart.fnType(dart.void, [core.int, core.int, core.String]),
  [_checkPosition]: dart.fnType(dart.void, [core.int, core.int, core.String])
}));
dart.setGetterSignature(_native_typed_data.NativeTypedData, () => ({
  __proto__: dart.getGetters(_native_typed_data.NativeTypedData.__proto__),
  [$buffer]: typed_data.ByteBuffer,
  [$lengthInBytes]: core.int,
  [$offsetInBytes]: core.int,
  [$elementSizeInBytes]: core.int
}));
dart.registerExtension("ArrayBufferView", _native_typed_data.NativeTypedData);
_native_typed_data._checkLength = function(length) {
  if (!core.int.is(length)) dart.throw(new core.ArgumentError.new("Invalid length " + dart.str(length)));
  return core.int._check(length);
};
_native_typed_data._checkViewArguments = function(buffer, offsetInBytes, length) {
  if (!_native_typed_data.NativeByteBuffer.is(buffer)) {
    dart.throw(new core.ArgumentError.new("Invalid view buffer"));
  }
  if (!core.int.is(offsetInBytes)) {
    dart.throw(new core.ArgumentError.new("Invalid view offsetInBytes " + dart.str(offsetInBytes)));
  }
  if (length != null && !core.int.is(length)) {
    dart.throw(new core.ArgumentError.new("Invalid view length " + dart.str(length)));
  }
};
_native_typed_data._ensureNativeList = function(list) {
  if (_interceptors.JSIndexable.is(list)) return list;
  let result = core.List.new(list[$length]);
  for (let i = 0; i < dart.notNull(list[$length]); i++) {
    result[$_set](i, list[$_get](i));
  }
  return result;
};
const _getFloat32 = Symbol('_getFloat32');
const _getFloat64 = Symbol('_getFloat64');
const _getInt16 = Symbol('_getInt16');
const _getInt32 = Symbol('_getInt32');
const _getUint16 = Symbol('_getUint16');
const _getUint32 = Symbol('_getUint32');
const _setFloat32 = Symbol('_setFloat32');
const _setFloat64 = Symbol('_setFloat64');
const _setInt16 = Symbol('_setInt16');
const _setInt32 = Symbol('_setInt32');
const _setUint16 = Symbol('_setUint16');
const _setUint32 = Symbol('_setUint32');
_native_typed_data.NativeByteData = class NativeByteData extends _native_typed_data.NativeTypedData {
  static new(length) {
    return _native_typed_data.NativeByteData._create1(_native_typed_data._checkLength(length));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeByteData._create2(buffer, offsetInBytes) : _native_typed_data.NativeByteData._create3(buffer, offsetInBytes, length);
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.ByteData);
  }
  get [$elementSizeInBytes]() {
    return 1;
  }
  [$getFloat32](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_getFloat32](byteOffset, typed_data.Endian.little._equals(endian));
  }
  [_getFloat32](...args) {
    return this.getFloat32.apply(this, args);
  }
  [$getFloat64](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_getFloat64](byteOffset, typed_data.Endian.little._equals(endian));
  }
  [_getFloat64](...args) {
    return this.getFloat64.apply(this, args);
  }
  [$getInt16](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_getInt16](byteOffset, typed_data.Endian.little._equals(endian));
  }
  [_getInt16](...args) {
    return this.getInt16.apply(this, args);
  }
  [$getInt32](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_getInt32](byteOffset, typed_data.Endian.little._equals(endian));
  }
  [_getInt32](...args) {
    return this.getInt32.apply(this, args);
  }
  [$getInt64](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    dart.throw(new core.UnsupportedError.new("Int64 accessor not supported by dart2js."));
  }
  [$getInt8](...args) {
    return this.getInt8.apply(this, args);
  }
  [$getUint16](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_getUint16](byteOffset, typed_data.Endian.little._equals(endian));
  }
  [_getUint16](...args) {
    return this.getUint16.apply(this, args);
  }
  [$getUint32](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_getUint32](byteOffset, typed_data.Endian.little._equals(endian));
  }
  [_getUint32](...args) {
    return this.getUint32.apply(this, args);
  }
  [$getUint64](byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    dart.throw(new core.UnsupportedError.new("Uint64 accessor not supported by dart2js."));
  }
  [$getUint8](...args) {
    return this.getUint8.apply(this, args);
  }
  [$setFloat32](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_setFloat32](byteOffset, value, typed_data.Endian.little._equals(endian));
  }
  [_setFloat32](...args) {
    return this.setFloat32.apply(this, args);
  }
  [$setFloat64](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_setFloat64](byteOffset, value, typed_data.Endian.little._equals(endian));
  }
  [_setFloat64](...args) {
    return this.setFloat64.apply(this, args);
  }
  [$setInt16](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_setInt16](byteOffset, value, typed_data.Endian.little._equals(endian));
  }
  [_setInt16](...args) {
    return this.setInt16.apply(this, args);
  }
  [$setInt32](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_setInt32](byteOffset, value, typed_data.Endian.little._equals(endian));
  }
  [_setInt32](...args) {
    return this.setInt32.apply(this, args);
  }
  [$setInt64](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    dart.throw(new core.UnsupportedError.new("Int64 accessor not supported by dart2js."));
  }
  [$setInt8](...args) {
    return this.setInt8.apply(this, args);
  }
  [$setUint16](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_setUint16](byteOffset, value, typed_data.Endian.little._equals(endian));
  }
  [_setUint16](...args) {
    return this.setUint16.apply(this, args);
  }
  [$setUint32](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_setUint32](byteOffset, value, typed_data.Endian.little._equals(endian));
  }
  [_setUint32](...args) {
    return this.setUint32.apply(this, args);
  }
  [$setUint64](byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    dart.throw(new core.UnsupportedError.new("Uint64 accessor not supported by dart2js."));
  }
  [$setUint8](...args) {
    return this.setUint8.apply(this, args);
  }
  static _create1(arg) {
    return new DataView(new ArrayBuffer(arg));
  }
  static _create2(arg1, arg2) {
    return new DataView(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new DataView(arg1, arg2, arg3);
  }
};
dart.addTypeTests(_native_typed_data.NativeByteData);
_native_typed_data.NativeByteData[dart.implements] = () => [typed_data.ByteData];
dart.setMethodSignature(_native_typed_data.NativeByteData, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeByteData.__proto__),
  [$getFloat32]: dart.fnType(core.double, [core.int], [typed_data.Endian]),
  [_getFloat32]: dart.fnType(core.double, [core.int], [core.bool]),
  [$getFloat64]: dart.fnType(core.double, [core.int], [typed_data.Endian]),
  [_getFloat64]: dart.fnType(core.double, [core.int], [core.bool]),
  [$getInt16]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [_getInt16]: dart.fnType(core.int, [core.int], [core.bool]),
  [$getInt32]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [_getInt32]: dart.fnType(core.int, [core.int], [core.bool]),
  [$getInt64]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [$getInt8]: dart.fnType(core.int, [core.int]),
  [$getUint16]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [_getUint16]: dart.fnType(core.int, [core.int], [core.bool]),
  [$getUint32]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [_getUint32]: dart.fnType(core.int, [core.int], [core.bool]),
  [$getUint64]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [$getUint8]: dart.fnType(core.int, [core.int]),
  [$setFloat32]: dart.fnType(dart.void, [core.int, core.num], [typed_data.Endian]),
  [_setFloat32]: dart.fnType(dart.void, [core.int, core.num], [core.bool]),
  [$setFloat64]: dart.fnType(dart.void, [core.int, core.num], [typed_data.Endian]),
  [_setFloat64]: dart.fnType(dart.void, [core.int, core.num], [core.bool]),
  [$setInt16]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [_setInt16]: dart.fnType(dart.void, [core.int, core.int], [core.bool]),
  [$setInt32]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [_setInt32]: dart.fnType(dart.void, [core.int, core.int], [core.bool]),
  [$setInt64]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [$setInt8]: dart.fnType(dart.void, [core.int, core.int]),
  [$setUint16]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [_setUint16]: dart.fnType(dart.void, [core.int, core.int], [core.bool]),
  [$setUint32]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [_setUint32]: dart.fnType(dart.void, [core.int, core.int], [core.bool]),
  [$setUint64]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [$setUint8]: dart.fnType(dart.void, [core.int, core.int])
}));
dart.registerExtension("DataView", _native_typed_data.NativeByteData);
const _setRangeFast = Symbol('_setRangeFast');
_native_typed_data.NativeTypedArray = class NativeTypedArray extends _native_typed_data.NativeTypedData {
  [_setRangeFast](start, end, source, skipCount) {
    let targetLength = this[$length];
    this[_checkPosition](start, targetLength, "start");
    this[_checkPosition](end, targetLength, "end");
    if (dart.notNull(start) > dart.notNull(end)) dart.throw(new core.RangeError.range(start, 0, end));
    let count = dart.notNull(end) - dart.notNull(start);
    if (dart.notNull(skipCount) < 0) dart.throw(new core.ArgumentError.new(skipCount));
    let sourceLength = source[$length];
    if (dart.notNull(sourceLength) - dart.notNull(skipCount) < count) {
      dart.throw(new core.StateError.new("Not enough elements"));
    }
    if (skipCount !== 0 || sourceLength !== count) {
      source = source.subarray(skipCount, dart.notNull(skipCount) + count);
    }
    this.set(source, start);
  }
};
(_native_typed_data.NativeTypedArray.new = function() {
}).prototype = _native_typed_data.NativeTypedArray.prototype;
dart.addTypeTests(_native_typed_data.NativeTypedArray);
_native_typed_data.NativeTypedArray[dart.implements] = () => [_js_helper.JavaScriptIndexingBehavior];
dart.setMethodSignature(_native_typed_data.NativeTypedArray, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeTypedArray.__proto__),
  [_setRangeFast]: dart.fnType(dart.void, [core.int, core.int, _native_typed_data.NativeTypedArray, core.int])
}));
core.double = class double extends core.num {
  static parse(source, onError) {
    if (onError === void 0) onError = null;
    return _js_helper.Primitives.parseDouble(source, onError);
  }
  static tryParse(source) {
    return _js_helper.Primitives.parseDouble(source, dart.fn(core._kNull, dynamicToNull()));
  }
};
(core.double.new = function() {
}).prototype = core.double.prototype;
core.double.is = function is_num(o) {
  return typeof o == "number";
};
core.double.as = function as_num(o) {
  if (typeof o == "number" || o == null) return o;
  return dart.as(o, core.double, false);
};
core.double._check = function check_num(o) {
  if (typeof o == "number" || o == null) return o;
  return dart.as(o, core.double, true);
};
dart.defineLazy(core.double, {
  /*core.double.nan*/get nan() {
    return 0.0 / 0.0;
  },
  /*core.double.infinity*/get infinity() {
    return 1.0 / 0.0;
  },
  /*core.double.negativeInfinity*/get negativeInfinity() {
    return -Infinity;
  },
  /*core.double.minPositive*/get minPositive() {
    return 5e-324;
  },
  /*core.double.maxFinite*/get maxFinite() {
    return 1.7976931348623157e+308;
  }
});
const NativeTypedArray_ListMixin$ = class NativeTypedArray_ListMixin extends _native_typed_data.NativeTypedArray {};
(NativeTypedArray_ListMixin$.new = function() {
}).prototype = NativeTypedArray_ListMixin$.prototype;
dart.applyMixin(NativeTypedArray_ListMixin$, collection.ListMixin$(core.double));
const NativeTypedArray_FixedLengthListMixin$ = class NativeTypedArray_FixedLengthListMixin extends NativeTypedArray_ListMixin$ {};
(NativeTypedArray_FixedLengthListMixin$.new = function() {
}).prototype = NativeTypedArray_FixedLengthListMixin$.prototype;
dart.applyMixin(NativeTypedArray_FixedLengthListMixin$, _internal.FixedLengthListMixin$(core.double));
_native_typed_data.NativeTypedArrayOfDouble = class NativeTypedArrayOfDouble extends NativeTypedArray_FixedLengthListMixin$ {
  get length() {
    return this.length;
  }
  set length(value) {
    super.length = value;
  }
  _get(index) {
    _native_typed_data._checkValidIndex(index, this, this[$length]);
    return this[index];
  }
  _set(index, value) {
    core.num._check(value);
    _native_typed_data._checkValidIndex(index, this, this[$length]);
    this[index] = value;
    return value;
  }
  setRange(start, end, iterable, skipCount) {
    IterableOfdouble()._check(iterable);
    if (skipCount === void 0) skipCount = 0;
    if (_native_typed_data.NativeTypedArrayOfDouble.is(iterable)) {
      this[_setRangeFast](start, end, iterable, skipCount);
      return;
    }
    super[$setRange](start, end, iterable, skipCount);
  }
};
(_native_typed_data.NativeTypedArrayOfDouble.new = function() {
}).prototype = _native_typed_data.NativeTypedArrayOfDouble.prototype;
dart.addTypeTests(_native_typed_data.NativeTypedArrayOfDouble);
dart.setMethodSignature(_native_typed_data.NativeTypedArrayOfDouble, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeTypedArrayOfDouble.__proto__),
  _get: dart.fnType(core.double, [core.int]),
  [$_get]: dart.fnType(core.double, [core.int]),
  _set: dart.fnType(dart.void, [core.int, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
  [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int])
}));
dart.setGetterSignature(_native_typed_data.NativeTypedArrayOfDouble, () => ({
  __proto__: dart.getGetters(_native_typed_data.NativeTypedArrayOfDouble.__proto__),
  length: core.int,
  [$length]: core.int
}));
dart.defineExtensionMethods(_native_typed_data.NativeTypedArrayOfDouble, ['_get', '_set', 'setRange']);
dart.defineExtensionAccessors(_native_typed_data.NativeTypedArrayOfDouble, ['length']);
const NativeTypedArray_ListMixin$$ = class NativeTypedArray_ListMixin extends _native_typed_data.NativeTypedArray {};
(NativeTypedArray_ListMixin$$.new = function() {
}).prototype = NativeTypedArray_ListMixin$$.prototype;
dart.applyMixin(NativeTypedArray_ListMixin$$, collection.ListMixin$(core.int));
const NativeTypedArray_FixedLengthListMixin$$ = class NativeTypedArray_FixedLengthListMixin extends NativeTypedArray_ListMixin$$ {};
(NativeTypedArray_FixedLengthListMixin$$.new = function() {
}).prototype = NativeTypedArray_FixedLengthListMixin$$.prototype;
dart.applyMixin(NativeTypedArray_FixedLengthListMixin$$, _internal.FixedLengthListMixin$(core.int));
_native_typed_data.NativeTypedArrayOfInt = class NativeTypedArrayOfInt extends NativeTypedArray_FixedLengthListMixin$$ {
  get length() {
    return this.length;
  }
  set length(value) {
    super.length = value;
  }
  _set(index, value) {
    core.int._check(value);
    _native_typed_data._checkValidIndex(index, this, this[$length]);
    this[index] = value;
    return value;
  }
  setRange(start, end, iterable, skipCount) {
    IterableOfint()._check(iterable);
    if (skipCount === void 0) skipCount = 0;
    if (_native_typed_data.NativeTypedArrayOfInt.is(iterable)) {
      this[_setRangeFast](start, end, iterable, skipCount);
      return;
    }
    super[$setRange](start, end, iterable, skipCount);
  }
};
(_native_typed_data.NativeTypedArrayOfInt.new = function() {
}).prototype = _native_typed_data.NativeTypedArrayOfInt.prototype;
_native_typed_data.NativeTypedArrayOfInt.prototype[dart.isList] = true;
dart.addTypeTests(_native_typed_data.NativeTypedArrayOfInt);
_native_typed_data.NativeTypedArrayOfInt[dart.implements] = () => [ListOfint()];
dart.setMethodSignature(_native_typed_data.NativeTypedArrayOfInt, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeTypedArrayOfInt.__proto__),
  _set: dart.fnType(dart.void, [core.int, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
  [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int])
}));
dart.setGetterSignature(_native_typed_data.NativeTypedArrayOfInt, () => ({
  __proto__: dart.getGetters(_native_typed_data.NativeTypedArrayOfInt.__proto__),
  length: core.int,
  [$length]: core.int
}));
dart.defineExtensionMethods(_native_typed_data.NativeTypedArrayOfInt, ['_set', 'setRange']);
dart.defineExtensionAccessors(_native_typed_data.NativeTypedArrayOfInt, ['length']);
_native_typed_data.NativeFloat32List = class NativeFloat32List extends _native_typed_data.NativeTypedArrayOfDouble {
  static new(length) {
    return _native_typed_data.NativeFloat32List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat32List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeFloat32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeFloat32List._create3(buffer, offsetInBytes, length);
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.Float32List);
  }
  [$sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[$length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeFloat32List._create1(source);
  }
  static _create1(arg) {
    return new Float32Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Float32Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Float32Array(arg1, arg2, arg3);
  }
};
dart.addTypeTests(_native_typed_data.NativeFloat32List);
_native_typed_data.NativeFloat32List[dart.implements] = () => [typed_data.Float32List];
dart.setMethodSignature(_native_typed_data.NativeFloat32List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeFloat32List.__proto__),
  [$sublist]: dart.fnType(core.List$(core.double), [core.int], [core.int])
}));
dart.registerExtension("Float32Array", _native_typed_data.NativeFloat32List);
_native_typed_data.NativeFloat64List = class NativeFloat64List extends _native_typed_data.NativeTypedArrayOfDouble {
  static new(length) {
    return _native_typed_data.NativeFloat64List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat64List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeFloat64List._create2(buffer, offsetInBytes) : _native_typed_data.NativeFloat64List._create3(buffer, offsetInBytes, length);
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.Float64List);
  }
  [$sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[$length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeFloat64List._create1(source);
  }
  static _create1(arg) {
    return new Float64Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Float64Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Float64Array(arg1, arg2, arg3);
  }
};
dart.addTypeTests(_native_typed_data.NativeFloat64List);
_native_typed_data.NativeFloat64List[dart.implements] = () => [typed_data.Float64List];
dart.setMethodSignature(_native_typed_data.NativeFloat64List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeFloat64List.__proto__),
  [$sublist]: dart.fnType(core.List$(core.double), [core.int], [core.int])
}));
dart.registerExtension("Float64Array", _native_typed_data.NativeFloat64List);
_native_typed_data.NativeInt16List = class NativeInt16List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeInt16List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt16List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeInt16List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt16List._create3(buffer, offsetInBytes, length);
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.Int16List);
  }
  [$_get](index) {
    _native_typed_data._checkValidIndex(index, this, this[$length]);
    return this[index];
  }
  [$sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[$length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeInt16List._create1(source);
  }
  static _create1(arg) {
    return new Int16Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Int16Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Int16Array(arg1, arg2, arg3);
  }
};
dart.addTypeTests(_native_typed_data.NativeInt16List);
_native_typed_data.NativeInt16List[dart.implements] = () => [typed_data.Int16List];
dart.setMethodSignature(_native_typed_data.NativeInt16List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeInt16List.__proto__),
  [$_get]: dart.fnType(core.int, [core.int]),
  [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
}));
dart.registerExtension("Int16Array", _native_typed_data.NativeInt16List);
_native_typed_data.NativeInt32List = class NativeInt32List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeInt32List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt32List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeInt32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt32List._create3(buffer, offsetInBytes, length);
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.Int32List);
  }
  [$_get](index) {
    _native_typed_data._checkValidIndex(index, this, this[$length]);
    return this[index];
  }
  [$sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[$length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeInt32List._create1(source);
  }
  static _create1(arg) {
    return new Int32Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Int32Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Int32Array(arg1, arg2, arg3);
  }
};
dart.addTypeTests(_native_typed_data.NativeInt32List);
_native_typed_data.NativeInt32List[dart.implements] = () => [typed_data.Int32List];
dart.setMethodSignature(_native_typed_data.NativeInt32List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeInt32List.__proto__),
  [$_get]: dart.fnType(core.int, [core.int]),
  [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
}));
dart.registerExtension("Int32Array", _native_typed_data.NativeInt32List);
_native_typed_data.NativeInt8List = class NativeInt8List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeInt8List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt8List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return _native_typed_data.NativeInt8List._check(length == null ? _native_typed_data.NativeInt8List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt8List._create3(buffer, offsetInBytes, length));
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.Int8List);
  }
  [$_get](index) {
    _native_typed_data._checkValidIndex(index, this, this[$length]);
    return this[index];
  }
  [$sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[$length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeInt8List._create1(source);
  }
  static _create1(arg) {
    return new Int8Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Int8Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Int8Array(arg1, arg2, arg3);
  }
};
dart.addTypeTests(_native_typed_data.NativeInt8List);
_native_typed_data.NativeInt8List[dart.implements] = () => [typed_data.Int8List];
dart.setMethodSignature(_native_typed_data.NativeInt8List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeInt8List.__proto__),
  [$_get]: dart.fnType(core.int, [core.int]),
  [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
}));
dart.registerExtension("Int8Array", _native_typed_data.NativeInt8List);
_native_typed_data.NativeUint16List = class NativeUint16List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeUint16List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(list) {
    return _native_typed_data.NativeUint16List._create1(_native_typed_data._ensureNativeList(list));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeUint16List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint16List._create3(buffer, offsetInBytes, length);
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.Uint16List);
  }
  [$_get](index) {
    _native_typed_data._checkValidIndex(index, this, this[$length]);
    return this[index];
  }
  [$sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[$length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeUint16List._create1(source);
  }
  static _create1(arg) {
    return new Uint16Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Uint16Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Uint16Array(arg1, arg2, arg3);
  }
};
dart.addTypeTests(_native_typed_data.NativeUint16List);
_native_typed_data.NativeUint16List[dart.implements] = () => [typed_data.Uint16List];
dart.setMethodSignature(_native_typed_data.NativeUint16List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeUint16List.__proto__),
  [$_get]: dart.fnType(core.int, [core.int]),
  [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
}));
dart.registerExtension("Uint16Array", _native_typed_data.NativeUint16List);
_native_typed_data.NativeUint32List = class NativeUint32List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeUint32List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint32List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeUint32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint32List._create3(buffer, offsetInBytes, length);
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.Uint32List);
  }
  [$_get](index) {
    _native_typed_data._checkValidIndex(index, this, this[$length]);
    return this[index];
  }
  [$sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[$length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeUint32List._create1(source);
  }
  static _create1(arg) {
    return new Uint32Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Uint32Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Uint32Array(arg1, arg2, arg3);
  }
};
dart.addTypeTests(_native_typed_data.NativeUint32List);
_native_typed_data.NativeUint32List[dart.implements] = () => [typed_data.Uint32List];
dart.setMethodSignature(_native_typed_data.NativeUint32List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeUint32List.__proto__),
  [$_get]: dart.fnType(core.int, [core.int]),
  [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
}));
dart.registerExtension("Uint32Array", _native_typed_data.NativeUint32List);
_native_typed_data.NativeUint8ClampedList = class NativeUint8ClampedList extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeUint8ClampedList._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint8ClampedList._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeUint8ClampedList._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint8ClampedList._create3(buffer, offsetInBytes, length);
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.Uint8ClampedList);
  }
  get [$length]() {
    return this.length;
  }
  set [$length](value) {
    super[$length] = value;
  }
  [$_get](index) {
    _native_typed_data._checkValidIndex(index, this, this[$length]);
    return this[index];
  }
  [$sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[$length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeUint8ClampedList._create1(source);
  }
  static _create1(arg) {
    return new Uint8ClampedArray(arg);
  }
  static _create2(arg1, arg2) {
    return new Uint8ClampedArray(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Uint8ClampedArray(arg1, arg2, arg3);
  }
};
dart.addTypeTests(_native_typed_data.NativeUint8ClampedList);
_native_typed_data.NativeUint8ClampedList[dart.implements] = () => [typed_data.Uint8ClampedList];
dart.setMethodSignature(_native_typed_data.NativeUint8ClampedList, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeUint8ClampedList.__proto__),
  [$_get]: dart.fnType(core.int, [core.int]),
  [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
}));
dart.registerExtension("Uint8ClampedArray", _native_typed_data.NativeUint8ClampedList);
dart.registerExtension("CanvasPixelArray", _native_typed_data.NativeUint8ClampedList);
_native_typed_data.NativeUint8List = class NativeUint8List extends _native_typed_data.NativeTypedArrayOfInt {
  static new(length) {
    return _native_typed_data.NativeUint8List._create1(_native_typed_data._checkLength(length));
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint8List._create1(_native_typed_data._ensureNativeList(elements));
  }
  static view(buffer, offsetInBytes, length) {
    _native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
    return length == null ? _native_typed_data.NativeUint8List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint8List._create3(buffer, offsetInBytes, length);
  }
  get [$runtimeType]() {
    return dart.wrapType(typed_data.Uint8List);
  }
  get [$length]() {
    return this.length;
  }
  set [$length](value) {
    super[$length] = value;
  }
  [$_get](index) {
    _native_typed_data._checkValidIndex(index, this, this[$length]);
    return this[index];
  }
  [$sublist](start, end) {
    if (end === void 0) end = null;
    end = _native_typed_data._checkValidRange(start, end, this[$length]);
    let source = this.subarray(start, end);
    return _native_typed_data.NativeUint8List._create1(source);
  }
  static _create1(arg) {
    return new Uint8Array(arg);
  }
  static _create2(arg1, arg2) {
    return new Uint8Array(arg1, arg2);
  }
  static _create3(arg1, arg2, arg3) {
    return new Uint8Array(arg1, arg2, arg3);
  }
};
dart.addTypeTests(_native_typed_data.NativeUint8List);
_native_typed_data.NativeUint8List[dart.implements] = () => [typed_data.Uint8List];
dart.setMethodSignature(_native_typed_data.NativeUint8List, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeUint8List.__proto__),
  [$_get]: dart.fnType(core.int, [core.int]),
  [$sublist]: dart.fnType(core.List$(core.int), [core.int], [core.int])
}));
dart.registerExtension("Uint8Array", _native_typed_data.NativeUint8List);
_native_typed_data.NativeFloat32x4 = class NativeFloat32x4 extends core.Object {
  static _truncate(x) {
    _native_typed_data.NativeFloat32x4._list[$_set](0, core.num._check(x));
    return _native_typed_data.NativeFloat32x4._list[$_get](0);
  }
  static fromInt32x4Bits(i) {
    _native_typed_data.NativeFloat32x4._uint32view[$_set](0, i.x);
    _native_typed_data.NativeFloat32x4._uint32view[$_set](1, i.y);
    _native_typed_data.NativeFloat32x4._uint32view[$_set](2, i.z);
    _native_typed_data.NativeFloat32x4._uint32view[$_set](3, i.w);
    return new _native_typed_data.NativeFloat32x4._truncated(_native_typed_data.NativeFloat32x4._list[$_get](0), _native_typed_data.NativeFloat32x4._list[$_get](1), _native_typed_data.NativeFloat32x4._list[$_get](2), _native_typed_data.NativeFloat32x4._list[$_get](3));
  }
  toString() {
    return "[" + dart.str(this.x) + ", " + dart.str(this.y) + ", " + dart.str(this.z) + ", " + dart.str(this.w) + "]";
  }
  ['+'](other) {
    let _x = dart.notNull(this.x) + dart.notNull(other.x);
    let _y = dart.notNull(this.y) + dart.notNull(other.y);
    let _z = dart.notNull(this.z) + dart.notNull(other.z);
    let _w = dart.notNull(this.w) + dart.notNull(other.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  _negate() {
    return new _native_typed_data.NativeFloat32x4._truncated(-dart.notNull(this.x), -dart.notNull(this.y), -dart.notNull(this.z), -dart.notNull(this.w));
  }
  ['-'](other) {
    let _x = dart.notNull(this.x) - dart.notNull(other.x);
    let _y = dart.notNull(this.y) - dart.notNull(other.y);
    let _z = dart.notNull(this.z) - dart.notNull(other.z);
    let _w = dart.notNull(this.w) - dart.notNull(other.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  ['*'](other) {
    let _x = dart.notNull(this.x) * dart.notNull(other.x);
    let _y = dart.notNull(this.y) * dart.notNull(other.y);
    let _z = dart.notNull(this.z) * dart.notNull(other.z);
    let _w = dart.notNull(this.w) * dart.notNull(other.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  ['/'](other) {
    let _x = dart.notNull(this.x) / dart.notNull(other.x);
    let _y = dart.notNull(this.y) / dart.notNull(other.y);
    let _z = dart.notNull(this.z) / dart.notNull(other.z);
    let _w = dart.notNull(this.w) / dart.notNull(other.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  lessThan(other) {
    let _cx = dart.notNull(this.x) < dart.notNull(other.x);
    let _cy = dart.notNull(this.y) < dart.notNull(other.y);
    let _cz = dart.notNull(this.z) < dart.notNull(other.z);
    let _cw = dart.notNull(this.w) < dart.notNull(other.w);
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  lessThanOrEqual(other) {
    let _cx = dart.notNull(this.x) <= dart.notNull(other.x);
    let _cy = dart.notNull(this.y) <= dart.notNull(other.y);
    let _cz = dart.notNull(this.z) <= dart.notNull(other.z);
    let _cw = dart.notNull(this.w) <= dart.notNull(other.w);
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  greaterThan(other) {
    let _cx = dart.notNull(this.x) > dart.notNull(other.x);
    let _cy = dart.notNull(this.y) > dart.notNull(other.y);
    let _cz = dart.notNull(this.z) > dart.notNull(other.z);
    let _cw = dart.notNull(this.w) > dart.notNull(other.w);
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  greaterThanOrEqual(other) {
    let _cx = dart.notNull(this.x) >= dart.notNull(other.x);
    let _cy = dart.notNull(this.y) >= dart.notNull(other.y);
    let _cz = dart.notNull(this.z) >= dart.notNull(other.z);
    let _cw = dart.notNull(this.w) >= dart.notNull(other.w);
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  equal(other) {
    let _cx = this.x == other.x;
    let _cy = this.y == other.y;
    let _cz = this.z == other.z;
    let _cw = this.w == other.w;
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  notEqual(other) {
    let _cx = this.x != other.x;
    let _cy = this.y != other.y;
    let _cz = this.z != other.z;
    let _cw = this.w != other.w;
    return new _native_typed_data.NativeInt32x4._truncated(_cx ? -1 : 0, _cy ? -1 : 0, _cz ? -1 : 0, _cw ? -1 : 0);
  }
  scale(s) {
    let _x = dart.notNull(s) * dart.notNull(this.x);
    let _y = dart.notNull(s) * dart.notNull(this.y);
    let _z = dart.notNull(s) * dart.notNull(this.z);
    let _w = dart.notNull(s) * dart.notNull(this.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  abs() {
    let _x = this.x[$abs]();
    let _y = this.y[$abs]();
    let _z = this.z[$abs]();
    let _w = this.w[$abs]();
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  clamp(lowerLimit, upperLimit) {
    let _lx = lowerLimit.x;
    let _ly = lowerLimit.y;
    let _lz = lowerLimit.z;
    let _lw = lowerLimit.w;
    let _ux = upperLimit.x;
    let _uy = upperLimit.y;
    let _uz = upperLimit.z;
    let _uw = upperLimit.w;
    let _x = this.x;
    let _y = this.y;
    let _z = this.z;
    let _w = this.w;
    _x = dart.notNull(_x) > dart.notNull(_ux) ? _ux : _x;
    _y = dart.notNull(_y) > dart.notNull(_uy) ? _uy : _y;
    _z = dart.notNull(_z) > dart.notNull(_uz) ? _uz : _z;
    _w = dart.notNull(_w) > dart.notNull(_uw) ? _uw : _w;
    _x = dart.notNull(_x) < dart.notNull(_lx) ? _lx : _x;
    _y = dart.notNull(_y) < dart.notNull(_ly) ? _ly : _y;
    _z = dart.notNull(_z) < dart.notNull(_lz) ? _lz : _z;
    _w = dart.notNull(_w) < dart.notNull(_lw) ? _lw : _w;
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  get signMask() {
    let view = _native_typed_data.NativeFloat32x4._uint32view;
    let mx = null, my = null, mz = null, mw = null;
    _native_typed_data.NativeFloat32x4._list[$_set](0, this.x);
    _native_typed_data.NativeFloat32x4._list[$_set](1, this.y);
    _native_typed_data.NativeFloat32x4._list[$_set](2, this.z);
    _native_typed_data.NativeFloat32x4._list[$_set](3, this.w);
    mx = (dart.notNull(view[$_get](0)) & 2147483648) >>> 31;
    my = (dart.notNull(view[$_get](1)) & 2147483648) >>> 30;
    mz = (dart.notNull(view[$_get](2)) & 2147483648) >>> 29;
    mw = (dart.notNull(view[$_get](3)) & 2147483648) >>> 28;
    return core.int._check(dart.dsend(dart.dsend(dart.dsend(mx, '|', [my]), '|', [mz]), '|', [mw]));
  }
  shuffle(mask) {
    if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
      dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
    }
    _native_typed_data.NativeFloat32x4._list[$_set](0, this.x);
    _native_typed_data.NativeFloat32x4._list[$_set](1, this.y);
    _native_typed_data.NativeFloat32x4._list[$_set](2, this.z);
    _native_typed_data.NativeFloat32x4._list[$_set](3, this.w);
    let _x = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) & 3);
    let _y = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 2 & 3);
    let _z = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 4 & 3);
    let _w = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 6 & 3);
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  shuffleMix(other, mask) {
    if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
      dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
    }
    _native_typed_data.NativeFloat32x4._list[$_set](0, this.x);
    _native_typed_data.NativeFloat32x4._list[$_set](1, this.y);
    _native_typed_data.NativeFloat32x4._list[$_set](2, this.z);
    _native_typed_data.NativeFloat32x4._list[$_set](3, this.w);
    let _x = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) & 3);
    let _y = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 2 & 3);
    _native_typed_data.NativeFloat32x4._list[$_set](0, other.x);
    _native_typed_data.NativeFloat32x4._list[$_set](1, other.y);
    _native_typed_data.NativeFloat32x4._list[$_set](2, other.z);
    _native_typed_data.NativeFloat32x4._list[$_set](3, other.w);
    let _z = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 4 & 3);
    let _w = _native_typed_data.NativeFloat32x4._list[$_get](dart.notNull(mask) >> 6 & 3);
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  withX(newX) {
    return new _native_typed_data.NativeFloat32x4._truncated(core.double._check(_native_typed_data.NativeFloat32x4._truncate(newX)), this.y, this.z, this.w);
  }
  withY(newY) {
    return new _native_typed_data.NativeFloat32x4._truncated(this.x, core.double._check(_native_typed_data.NativeFloat32x4._truncate(newY)), this.z, this.w);
  }
  withZ(newZ) {
    return new _native_typed_data.NativeFloat32x4._truncated(this.x, this.y, core.double._check(_native_typed_data.NativeFloat32x4._truncate(newZ)), this.w);
  }
  withW(newW) {
    return new _native_typed_data.NativeFloat32x4._truncated(this.x, this.y, this.z, core.double._check(_native_typed_data.NativeFloat32x4._truncate(newW)));
  }
  min(other) {
    let _x = dart.notNull(this.x) < dart.notNull(other.x) ? this.x : other.x;
    let _y = dart.notNull(this.y) < dart.notNull(other.y) ? this.y : other.y;
    let _z = dart.notNull(this.z) < dart.notNull(other.z) ? this.z : other.z;
    let _w = dart.notNull(this.w) < dart.notNull(other.w) ? this.w : other.w;
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  max(other) {
    let _x = dart.notNull(this.x) > dart.notNull(other.x) ? this.x : other.x;
    let _y = dart.notNull(this.y) > dart.notNull(other.y) ? this.y : other.y;
    let _z = dart.notNull(this.z) > dart.notNull(other.z) ? this.z : other.z;
    let _w = dart.notNull(this.w) > dart.notNull(other.w) ? this.w : other.w;
    return new _native_typed_data.NativeFloat32x4._truncated(_x, _y, _z, _w);
  }
  sqrt() {
    let _x = math.sqrt(this.x);
    let _y = math.sqrt(this.y);
    let _z = math.sqrt(this.z);
    let _w = math.sqrt(this.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  reciprocal() {
    let _x = 1.0 / dart.notNull(this.x);
    let _y = 1.0 / dart.notNull(this.y);
    let _z = 1.0 / dart.notNull(this.z);
    let _w = 1.0 / dart.notNull(this.w);
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
  reciprocalSqrt() {
    let _x = math.sqrt(1.0 / dart.notNull(this.x));
    let _y = math.sqrt(1.0 / dart.notNull(this.y));
    let _z = math.sqrt(1.0 / dart.notNull(this.z));
    let _w = math.sqrt(1.0 / dart.notNull(this.w));
    return new _native_typed_data.NativeFloat32x4._doubles(_x, _y, _z, _w);
  }
};
(_native_typed_data.NativeFloat32x4.new = function(x, y, z, w) {
  this.x = core.double._check(_native_typed_data.NativeFloat32x4._truncate(x));
  this.y = core.double._check(_native_typed_data.NativeFloat32x4._truncate(y));
  this.z = core.double._check(_native_typed_data.NativeFloat32x4._truncate(z));
  this.w = core.double._check(_native_typed_data.NativeFloat32x4._truncate(w));
  if (!(typeof x == 'number')) dart.throw(new core.ArgumentError.new(x));
  if (!(typeof y == 'number')) dart.throw(new core.ArgumentError.new(y));
  if (!(typeof z == 'number')) dart.throw(new core.ArgumentError.new(z));
  if (!(typeof w == 'number')) dart.throw(new core.ArgumentError.new(w));
}).prototype = _native_typed_data.NativeFloat32x4.prototype;
(_native_typed_data.NativeFloat32x4.splat = function(v) {
  _native_typed_data.NativeFloat32x4.new.call(this, v, v, v, v);
}).prototype = _native_typed_data.NativeFloat32x4.prototype;
(_native_typed_data.NativeFloat32x4.zero = function() {
  _native_typed_data.NativeFloat32x4._truncated.call(this, 0.0, 0.0, 0.0, 0.0);
}).prototype = _native_typed_data.NativeFloat32x4.prototype;
(_native_typed_data.NativeFloat32x4.fromFloat64x2 = function(v) {
  _native_typed_data.NativeFloat32x4._truncated.call(this, core.double._check(_native_typed_data.NativeFloat32x4._truncate(v.x)), core.double._check(_native_typed_data.NativeFloat32x4._truncate(v.y)), 0.0, 0.0);
}).prototype = _native_typed_data.NativeFloat32x4.prototype;
(_native_typed_data.NativeFloat32x4._doubles = function(x, y, z, w) {
  this.x = core.double._check(_native_typed_data.NativeFloat32x4._truncate(x));
  this.y = core.double._check(_native_typed_data.NativeFloat32x4._truncate(y));
  this.z = core.double._check(_native_typed_data.NativeFloat32x4._truncate(z));
  this.w = core.double._check(_native_typed_data.NativeFloat32x4._truncate(w));
}).prototype = _native_typed_data.NativeFloat32x4.prototype;
(_native_typed_data.NativeFloat32x4._truncated = function(x, y, z, w) {
  this.x = x;
  this.y = y;
  this.z = z;
  this.w = w;
}).prototype = _native_typed_data.NativeFloat32x4.prototype;
dart.addTypeTests(_native_typed_data.NativeFloat32x4);
_native_typed_data.NativeFloat32x4[dart.implements] = () => [typed_data.Float32x4];
dart.setMethodSignature(_native_typed_data.NativeFloat32x4, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeFloat32x4.__proto__),
  '+': dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
  _negate: dart.fnType(typed_data.Float32x4, []),
  '-': dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
  '*': dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
  '/': dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
  lessThan: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
  lessThanOrEqual: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
  greaterThan: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
  greaterThanOrEqual: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
  equal: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
  notEqual: dart.fnType(typed_data.Int32x4, [typed_data.Float32x4]),
  scale: dart.fnType(typed_data.Float32x4, [core.double]),
  abs: dart.fnType(typed_data.Float32x4, []),
  clamp: dart.fnType(typed_data.Float32x4, [typed_data.Float32x4, typed_data.Float32x4]),
  shuffle: dart.fnType(typed_data.Float32x4, [core.int]),
  shuffleMix: dart.fnType(typed_data.Float32x4, [typed_data.Float32x4, core.int]),
  withX: dart.fnType(typed_data.Float32x4, [core.double]),
  withY: dart.fnType(typed_data.Float32x4, [core.double]),
  withZ: dart.fnType(typed_data.Float32x4, [core.double]),
  withW: dart.fnType(typed_data.Float32x4, [core.double]),
  min: dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
  max: dart.fnType(typed_data.Float32x4, [typed_data.Float32x4]),
  sqrt: dart.fnType(typed_data.Float32x4, []),
  reciprocal: dart.fnType(typed_data.Float32x4, []),
  reciprocalSqrt: dart.fnType(typed_data.Float32x4, [])
}));
dart.setGetterSignature(_native_typed_data.NativeFloat32x4, () => ({
  __proto__: dart.getGetters(_native_typed_data.NativeFloat32x4.__proto__),
  signMask: core.int
}));
dart.setFieldSignature(_native_typed_data.NativeFloat32x4, () => ({
  __proto__: dart.getFields(_native_typed_data.NativeFloat32x4.__proto__),
  x: dart.finalFieldType(core.double),
  y: dart.finalFieldType(core.double),
  z: dart.finalFieldType(core.double),
  w: dart.finalFieldType(core.double)
}));
dart.defineExtensionMethods(_native_typed_data.NativeFloat32x4, ['toString']);
dart.defineLazy(_native_typed_data.NativeFloat32x4, {
  /*_native_typed_data.NativeFloat32x4._list*/get _list() {
    return _native_typed_data.NativeFloat32List.new(4);
  },
  /*_native_typed_data.NativeFloat32x4._uint32view*/get _uint32view() {
    return _native_typed_data.NativeFloat32x4._list.buffer[$asUint32List]();
  }
});
_native_typed_data.NativeInt32x4 = class NativeInt32x4 extends core.Object {
  static _truncate(x) {
    _native_typed_data.NativeInt32x4._list[$_set](0, core.int._check(x));
    return _native_typed_data.NativeInt32x4._list[$_get](0);
  }
  static fromFloat32x4Bits(f) {
    let floatList = _native_typed_data.NativeFloat32x4._list;
    floatList[$_set](0, f.x);
    floatList[$_set](1, f.y);
    floatList[$_set](2, f.z);
    floatList[$_set](3, f.w);
    let view = _native_typed_data.NativeInt32List._check(floatList.buffer[$asInt32List]());
    return new _native_typed_data.NativeInt32x4._truncated(view[$_get](0), view[$_get](1), view[$_get](2), view[$_get](3));
  }
  toString() {
    return "[" + dart.str(this.x) + ", " + dart.str(this.y) + ", " + dart.str(this.z) + ", " + dart.str(this.w) + "]";
  }
  ['|'](other) {
    return new _native_typed_data.NativeInt32x4._truncated(this.x | other.x, this.y | other.y, this.z | other.z, this.w | other.w);
  }
  ['&'](other) {
    return new _native_typed_data.NativeInt32x4._truncated(this.x & other.x, this.y & other.y, this.z & other.z, this.w & other.w);
  }
  ['^'](other) {
    return new _native_typed_data.NativeInt32x4._truncated(this.x ^ other.x, this.y ^ other.y, this.z ^ other.z, this.w ^ other.w);
  }
  ['+'](other) {
    return new _native_typed_data.NativeInt32x4._truncated(this.x + other.x | 0, this.y + other.y | 0, this.z + other.z | 0, this.w + other.w | 0);
  }
  ['-'](other) {
    return new _native_typed_data.NativeInt32x4._truncated(this.x - other.x | 0, this.y - other.y | 0, this.z - other.z | 0, this.w - other.w | 0);
  }
  _negate() {
    return new _native_typed_data.NativeInt32x4._truncated(-this.x | 0, -this.y | 0, -this.z | 0, -this.w | 0);
  }
  get signMask() {
    let mx = (dart.notNull(this.x) & 2147483648) >>> 31;
    let my = (dart.notNull(this.y) & 2147483648) >>> 31;
    let mz = (dart.notNull(this.z) & 2147483648) >>> 31;
    let mw = (dart.notNull(this.w) & 2147483648) >>> 31;
    return (mx | my << 1 | mz << 2 | mw << 3) >>> 0;
  }
  shuffle(mask) {
    if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
      dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
    }
    _native_typed_data.NativeInt32x4._list[$_set](0, this.x);
    _native_typed_data.NativeInt32x4._list[$_set](1, this.y);
    _native_typed_data.NativeInt32x4._list[$_set](2, this.z);
    _native_typed_data.NativeInt32x4._list[$_set](3, this.w);
    let _x = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) & 3);
    let _y = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 2 & 3);
    let _z = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 4 & 3);
    let _w = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 6 & 3);
    return new _native_typed_data.NativeInt32x4._truncated(_x, _y, _z, _w);
  }
  shuffleMix(other, mask) {
    if (dart.notNull(mask) < 0 || dart.notNull(mask) > 255) {
      dart.throw(new core.RangeError.range(mask, 0, 255, "mask"));
    }
    _native_typed_data.NativeInt32x4._list[$_set](0, this.x);
    _native_typed_data.NativeInt32x4._list[$_set](1, this.y);
    _native_typed_data.NativeInt32x4._list[$_set](2, this.z);
    _native_typed_data.NativeInt32x4._list[$_set](3, this.w);
    let _x = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) & 3);
    let _y = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 2 & 3);
    _native_typed_data.NativeInt32x4._list[$_set](0, other.x);
    _native_typed_data.NativeInt32x4._list[$_set](1, other.y);
    _native_typed_data.NativeInt32x4._list[$_set](2, other.z);
    _native_typed_data.NativeInt32x4._list[$_set](3, other.w);
    let _z = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 4 & 3);
    let _w = _native_typed_data.NativeInt32x4._list[$_get](dart.notNull(mask) >> 6 & 3);
    return new _native_typed_data.NativeInt32x4._truncated(_x, _y, _z, _w);
  }
  withX(x) {
    let _x = core.int._check(_native_typed_data.NativeInt32x4._truncate(x));
    return new _native_typed_data.NativeInt32x4._truncated(_x, this.y, this.z, this.w);
  }
  withY(y) {
    let _y = core.int._check(_native_typed_data.NativeInt32x4._truncate(y));
    return new _native_typed_data.NativeInt32x4._truncated(this.x, _y, this.z, this.w);
  }
  withZ(z) {
    let _z = core.int._check(_native_typed_data.NativeInt32x4._truncate(z));
    return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, _z, this.w);
  }
  withW(w) {
    let _w = core.int._check(_native_typed_data.NativeInt32x4._truncate(w));
    return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, this.z, _w);
  }
  get flagX() {
    return this.x !== 0;
  }
  get flagY() {
    return this.y !== 0;
  }
  get flagZ() {
    return this.z !== 0;
  }
  get flagW() {
    return this.w !== 0;
  }
  withFlagX(flagX) {
    let _x = dart.test(flagX) ? -1 : 0;
    return new _native_typed_data.NativeInt32x4._truncated(_x, this.y, this.z, this.w);
  }
  withFlagY(flagY) {
    let _y = dart.test(flagY) ? -1 : 0;
    return new _native_typed_data.NativeInt32x4._truncated(this.x, _y, this.z, this.w);
  }
  withFlagZ(flagZ) {
    let _z = dart.test(flagZ) ? -1 : 0;
    return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, _z, this.w);
  }
  withFlagW(flagW) {
    let _w = dart.test(flagW) ? -1 : 0;
    return new _native_typed_data.NativeInt32x4._truncated(this.x, this.y, this.z, _w);
  }
  select(trueValue, falseValue) {
    let floatList = _native_typed_data.NativeFloat32x4._list;
    let intView = _native_typed_data.NativeFloat32x4._uint32view;
    floatList[$_set](0, trueValue.x);
    floatList[$_set](1, trueValue.y);
    floatList[$_set](2, trueValue.z);
    floatList[$_set](3, trueValue.w);
    let stx = intView[$_get](0);
    let sty = intView[$_get](1);
    let stz = intView[$_get](2);
    let stw = intView[$_get](3);
    floatList[$_set](0, falseValue.x);
    floatList[$_set](1, falseValue.y);
    floatList[$_set](2, falseValue.z);
    floatList[$_set](3, falseValue.w);
    let sfx = intView[$_get](0);
    let sfy = intView[$_get](1);
    let sfz = intView[$_get](2);
    let sfw = intView[$_get](3);
    let _x = (dart.notNull(this.x) & dart.notNull(stx) | ~dart.notNull(this.x) & dart.notNull(sfx)) >>> 0;
    let _y = (dart.notNull(this.y) & dart.notNull(sty) | ~dart.notNull(this.y) & dart.notNull(sfy)) >>> 0;
    let _z = (dart.notNull(this.z) & dart.notNull(stz) | ~dart.notNull(this.z) & dart.notNull(sfz)) >>> 0;
    let _w = (dart.notNull(this.w) & dart.notNull(stw) | ~dart.notNull(this.w) & dart.notNull(sfw)) >>> 0;
    intView[$_set](0, _x);
    intView[$_set](1, _y);
    intView[$_set](2, _z);
    intView[$_set](3, _w);
    return new _native_typed_data.NativeFloat32x4._truncated(floatList[$_get](0), floatList[$_get](1), floatList[$_get](2), floatList[$_get](3));
  }
};
(_native_typed_data.NativeInt32x4.new = function(x, y, z, w) {
  this.x = core.int._check(_native_typed_data.NativeInt32x4._truncate(x));
  this.y = core.int._check(_native_typed_data.NativeInt32x4._truncate(y));
  this.z = core.int._check(_native_typed_data.NativeInt32x4._truncate(z));
  this.w = core.int._check(_native_typed_data.NativeInt32x4._truncate(w));
  if (x != this.x && !core.int.is(x)) dart.throw(new core.ArgumentError.new(x));
  if (y != this.y && !core.int.is(y)) dart.throw(new core.ArgumentError.new(y));
  if (z != this.z && !core.int.is(z)) dart.throw(new core.ArgumentError.new(z));
  if (w != this.w && !core.int.is(w)) dart.throw(new core.ArgumentError.new(w));
}).prototype = _native_typed_data.NativeInt32x4.prototype;
(_native_typed_data.NativeInt32x4.bool = function(x, y, z, w) {
  this.x = dart.test(x) ? -1 : 0;
  this.y = dart.test(y) ? -1 : 0;
  this.z = dart.test(z) ? -1 : 0;
  this.w = dart.test(w) ? -1 : 0;
}).prototype = _native_typed_data.NativeInt32x4.prototype;
(_native_typed_data.NativeInt32x4._truncated = function(x, y, z, w) {
  this.x = x;
  this.y = y;
  this.z = z;
  this.w = w;
}).prototype = _native_typed_data.NativeInt32x4.prototype;
dart.addTypeTests(_native_typed_data.NativeInt32x4);
_native_typed_data.NativeInt32x4[dart.implements] = () => [typed_data.Int32x4];
dart.setMethodSignature(_native_typed_data.NativeInt32x4, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeInt32x4.__proto__),
  '|': dart.fnType(typed_data.Int32x4, [typed_data.Int32x4]),
  '&': dart.fnType(typed_data.Int32x4, [typed_data.Int32x4]),
  '^': dart.fnType(typed_data.Int32x4, [typed_data.Int32x4]),
  '+': dart.fnType(typed_data.Int32x4, [typed_data.Int32x4]),
  '-': dart.fnType(typed_data.Int32x4, [typed_data.Int32x4]),
  _negate: dart.fnType(typed_data.Int32x4, []),
  shuffle: dart.fnType(typed_data.Int32x4, [core.int]),
  shuffleMix: dart.fnType(typed_data.Int32x4, [typed_data.Int32x4, core.int]),
  withX: dart.fnType(typed_data.Int32x4, [core.int]),
  withY: dart.fnType(typed_data.Int32x4, [core.int]),
  withZ: dart.fnType(typed_data.Int32x4, [core.int]),
  withW: dart.fnType(typed_data.Int32x4, [core.int]),
  withFlagX: dart.fnType(typed_data.Int32x4, [core.bool]),
  withFlagY: dart.fnType(typed_data.Int32x4, [core.bool]),
  withFlagZ: dart.fnType(typed_data.Int32x4, [core.bool]),
  withFlagW: dart.fnType(typed_data.Int32x4, [core.bool]),
  select: dart.fnType(typed_data.Float32x4, [typed_data.Float32x4, typed_data.Float32x4])
}));
dart.setGetterSignature(_native_typed_data.NativeInt32x4, () => ({
  __proto__: dart.getGetters(_native_typed_data.NativeInt32x4.__proto__),
  signMask: core.int,
  flagX: core.bool,
  flagY: core.bool,
  flagZ: core.bool,
  flagW: core.bool
}));
dart.setFieldSignature(_native_typed_data.NativeInt32x4, () => ({
  __proto__: dart.getFields(_native_typed_data.NativeInt32x4.__proto__),
  x: dart.finalFieldType(core.int),
  y: dart.finalFieldType(core.int),
  z: dart.finalFieldType(core.int),
  w: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(_native_typed_data.NativeInt32x4, ['toString']);
dart.defineLazy(_native_typed_data.NativeInt32x4, {
  /*_native_typed_data.NativeInt32x4._list*/get _list() {
    return _native_typed_data.NativeInt32List.new(4);
  }
});
_native_typed_data.NativeFloat64x2 = class NativeFloat64x2 extends core.Object {
  toString() {
    return "[" + dart.str(this.x) + ", " + dart.str(this.y) + "]";
  }
  ['+'](other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) + dart.notNull(other.x), dart.notNull(this.y) + dart.notNull(other.y));
  }
  _negate() {
    return new _native_typed_data.NativeFloat64x2._doubles(-dart.notNull(this.x), -dart.notNull(this.y));
  }
  ['-'](other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) - dart.notNull(other.x), dart.notNull(this.y) - dart.notNull(other.y));
  }
  ['*'](other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) * dart.notNull(other.x), dart.notNull(this.y) * dart.notNull(other.y));
  }
  ['/'](other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) / dart.notNull(other.x), dart.notNull(this.y) / dart.notNull(other.y));
  }
  scale(s) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) * dart.notNull(s), dart.notNull(this.y) * dart.notNull(s));
  }
  abs() {
    return new _native_typed_data.NativeFloat64x2._doubles(this.x[$abs](), this.y[$abs]());
  }
  clamp(lowerLimit, upperLimit) {
    let _lx = lowerLimit.x;
    let _ly = lowerLimit.y;
    let _ux = upperLimit.x;
    let _uy = upperLimit.y;
    let _x = this.x;
    let _y = this.y;
    _x = dart.notNull(_x) > dart.notNull(_ux) ? _ux : _x;
    _y = dart.notNull(_y) > dart.notNull(_uy) ? _uy : _y;
    _x = dart.notNull(_x) < dart.notNull(_lx) ? _lx : _x;
    _y = dart.notNull(_y) < dart.notNull(_ly) ? _ly : _y;
    return new _native_typed_data.NativeFloat64x2._doubles(_x, _y);
  }
  get signMask() {
    let view = _native_typed_data.NativeFloat64x2._uint32View;
    _native_typed_data.NativeFloat64x2._list[$_set](0, this.x);
    _native_typed_data.NativeFloat64x2._list[$_set](1, this.y);
    let mx = (dart.notNull(view[$_get](1)) & 2147483648) >>> 31;
    let my = (dart.notNull(view[$_get](3)) & 2147483648) >>> 31;
    return (mx | my << 1) >>> 0;
  }
  withX(x) {
    if (!(typeof x == 'number')) dart.throw(new core.ArgumentError.new(x));
    return new _native_typed_data.NativeFloat64x2._doubles(x, this.y);
  }
  withY(y) {
    if (!(typeof y == 'number')) dart.throw(new core.ArgumentError.new(y));
    return new _native_typed_data.NativeFloat64x2._doubles(this.x, y);
  }
  min(other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) < dart.notNull(other.x) ? this.x : other.x, dart.notNull(this.y) < dart.notNull(other.y) ? this.y : other.y);
  }
  max(other) {
    return new _native_typed_data.NativeFloat64x2._doubles(dart.notNull(this.x) > dart.notNull(other.x) ? this.x : other.x, dart.notNull(this.y) > dart.notNull(other.y) ? this.y : other.y);
  }
  sqrt() {
    return new _native_typed_data.NativeFloat64x2._doubles(math.sqrt(this.x), math.sqrt(this.y));
  }
};
(_native_typed_data.NativeFloat64x2.new = function(x, y) {
  this.x = x;
  this.y = y;
  if (!(typeof this.x == 'number')) dart.throw(new core.ArgumentError.new(this.x));
  if (!(typeof this.y == 'number')) dart.throw(new core.ArgumentError.new(this.y));
}).prototype = _native_typed_data.NativeFloat64x2.prototype;
(_native_typed_data.NativeFloat64x2.splat = function(v) {
  _native_typed_data.NativeFloat64x2.new.call(this, v, v);
}).prototype = _native_typed_data.NativeFloat64x2.prototype;
(_native_typed_data.NativeFloat64x2.zero = function() {
  _native_typed_data.NativeFloat64x2.splat.call(this, 0.0);
}).prototype = _native_typed_data.NativeFloat64x2.prototype;
(_native_typed_data.NativeFloat64x2.fromFloat32x4 = function(v) {
  _native_typed_data.NativeFloat64x2.new.call(this, v.x, v.y);
}).prototype = _native_typed_data.NativeFloat64x2.prototype;
(_native_typed_data.NativeFloat64x2._doubles = function(x, y) {
  this.x = x;
  this.y = y;
}).prototype = _native_typed_data.NativeFloat64x2.prototype;
dart.addTypeTests(_native_typed_data.NativeFloat64x2);
_native_typed_data.NativeFloat64x2[dart.implements] = () => [typed_data.Float64x2];
dart.setMethodSignature(_native_typed_data.NativeFloat64x2, () => ({
  __proto__: dart.getMethods(_native_typed_data.NativeFloat64x2.__proto__),
  '+': dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
  _negate: dart.fnType(typed_data.Float64x2, []),
  '-': dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
  '*': dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
  '/': dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
  scale: dart.fnType(typed_data.Float64x2, [core.double]),
  abs: dart.fnType(typed_data.Float64x2, []),
  clamp: dart.fnType(typed_data.Float64x2, [typed_data.Float64x2, typed_data.Float64x2]),
  withX: dart.fnType(typed_data.Float64x2, [core.double]),
  withY: dart.fnType(typed_data.Float64x2, [core.double]),
  min: dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
  max: dart.fnType(typed_data.Float64x2, [typed_data.Float64x2]),
  sqrt: dart.fnType(typed_data.Float64x2, [])
}));
dart.setGetterSignature(_native_typed_data.NativeFloat64x2, () => ({
  __proto__: dart.getGetters(_native_typed_data.NativeFloat64x2.__proto__),
  signMask: core.int
}));
dart.setFieldSignature(_native_typed_data.NativeFloat64x2, () => ({
  __proto__: dart.getFields(_native_typed_data.NativeFloat64x2.__proto__),
  x: dart.finalFieldType(core.double),
  y: dart.finalFieldType(core.double)
}));
dart.defineExtensionMethods(_native_typed_data.NativeFloat64x2, ['toString']);
dart.defineLazy(_native_typed_data.NativeFloat64x2, {
  /*_native_typed_data.NativeFloat64x2._list*/get _list() {
    return _native_typed_data.NativeFloat64List.new(2);
  },
  set _list(_) {},
  /*_native_typed_data.NativeFloat64x2._uint32View*/get _uint32View() {
    return _native_typed_data.NativeUint32List._check(_native_typed_data.NativeFloat64x2._list.buffer[$asUint32List]());
  },
  set _uint32View(_) {}
});
_native_typed_data._isInvalidArrayIndex = function(index) {
  return index >>> 0 !== index;
};
_native_typed_data._checkValidIndex = function(index, list, length) {
  if (dart.test(_native_typed_data._isInvalidArrayIndex(index)) || index >= dart.notNull(length)) {
    dart.throw(_js_helper.diagnoseIndexError(list, index));
  }
};
_native_typed_data._checkValidRange = function(start, end, length) {
  if (dart.test(_native_typed_data._isInvalidArrayIndex(start)) || (end == null ? dart.notNull(start) > dart.notNull(length) : dart.test(_native_typed_data._isInvalidArrayIndex(end)) || dart.notNull(start) > dart.notNull(end) || dart.notNull(end) > dart.notNull(length))) {
    dart.throw(_js_helper.diagnoseRangeError(start, end, length));
  }
  if (end == null) return length;
  return end;
};
const _thenNoZoneRegistration = Symbol('_thenNoZoneRegistration');
const _completeWithValue = Symbol('_completeWithValue');
const _asyncComplete = Symbol('_asyncComplete');
async.async = function(T, initGenerator) {
  let iter = null;
  let onValue = null;
  let onError = null;
  function onAwait(value) {
    let f = null;
    if (async._Future.is(value)) {
      f = value;
    } else if (async.Future.is(value)) {
      f = new async._Future.new();
      async._Future._chainForeignFuture(value, f);
    } else {
      f = new async._Future.value(value);
    }
    f = f[_thenNoZoneRegistration](core.Object, onValue, onError);
    return f;
  }
  onValue = value => {
    let iteratorResult = iter.next(value);
    value = iteratorResult.value;
    return iteratorResult.done ? value : onAwait(value);
  };
  onError = (value, stackTrace) => {
    let iteratorResult = iter.throw(dart.createErrorWithStack(value, stackTrace));
    value = iteratorResult.value;
    return iteratorResult.done ? value : onAwait(value);
  };
  let zone = async.Zone.current;
  if (!(zone === async._rootZone)) {
    onValue = zone.registerUnaryCallback(core.Object, core.Object, onValue);
    onError = zone.registerBinaryCallback(core.Object, core.Object, core.StackTrace, onError);
  }
  let asyncFuture = new (async._Future$(T)).new();
  let isRunningAsEvent = false;
  function runBody() {
    try {
      iter = initGenerator()[Symbol.iterator]();
      let iteratorValue = iter.next(null);
      let value = iteratorValue.value;
      if (iteratorValue.done) {
        if (async.Future.is(value)) {
          if (async._Future.is(value)) {
            async._Future._chainCoreFuture(value, asyncFuture);
          } else {
            async._Future._chainForeignFuture(value, asyncFuture);
          }
        } else if (isRunningAsEvent) {
          asyncFuture[_completeWithValue](value);
        } else {
          asyncFuture[_asyncComplete](value);
        }
      } else {
        async._Future._chainCoreFuture(onAwait(value), asyncFuture);
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      if (isRunningAsEvent) {
        async._completeWithErrorCallback(asyncFuture, e, s);
      } else {
        async._asyncCompleteWithErrorCallback(asyncFuture, e, s);
      }
    }
  }
  if (dart.test(dart.startAsyncSynchronously)) {
    runBody();
    isRunningAsEvent = true;
  } else {
    isRunningAsEvent = true;
    async.scheduleMicrotask(runBody);
  }
  return asyncFuture;
};
const _handleErrorCallback = Symbol('_handleErrorCallback');
const _runBodyCallback = Symbol('_runBodyCallback');
const _fatal = Symbol('_fatal');
const _is__AsyncStarImpl_default = Symbol('_is__AsyncStarImpl_default');
async._AsyncStarImpl$ = dart.generic(T => {
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let _AsyncStarImplOfT = () => (_AsyncStarImplOfT = dart.constFn(async._AsyncStarImpl$(T)))();
  let _AsyncStarImplOfTToObject = () => (_AsyncStarImplOfTToObject = dart.constFn(dart.fnType(core.Object, [_AsyncStarImplOfT()])))();
  class _AsyncStarImpl extends core.Object {
    get stream() {
      return this.controller.stream;
    }
    get handleError() {
      if (this[_handleErrorCallback] == null) {
        this[_handleErrorCallback] = dart.fn((error, stackTrace) => {
          try {
            this.jsIterator.throw(dart.createErrorWithStack(error, stackTrace));
          } catch (e$) {
            let e = dart.getThrown(e$);
            let newStack = dart.stackTrace(e$);
            this.addError(e, newStack);
          }
        }, ObjectAndStackTraceToNull());
        let zone = async.Zone.current;
        if (!(zone === async.Zone.root)) {
          this[_handleErrorCallback] = zone.bindBinaryCallback(core.Null, core.Object, core.StackTrace, this[_handleErrorCallback]);
        }
      }
      return this[_handleErrorCallback];
    }
    scheduleGenerator() {
      if (this.isScheduled || dart.test(this.controller.isPaused) || this.isSuspendedAtYieldStar || this.isSuspendedAtAwait) {
        return;
      }
      this.isScheduled = true;
      let zone = async.Zone.current;
      if (this[_runBodyCallback] == null) {
        this[_runBodyCallback] = this.runBody.bind(this);
        if (!(zone === async.Zone.root)) {
          let registered = zone.registerUnaryCallback(dart.void, core.Object, this[_runBodyCallback]);
          this[_runBodyCallback] = dart.fn(arg => {
            if (arg === void 0) arg = null;
            return zone.runUnaryGuarded(core.Object, registered, arg);
          }, __Tovoid());
        }
      }
      zone.scheduleMicrotask(this[_runBodyCallback]);
    }
    runBody(awaitValue) {
      this.isScheduled = false;
      this.isSuspendedAtYield = false;
      this.isSuspendedAtAwait = false;
      let iterResult = null;
      try {
        iterResult = this.jsIterator.next(awaitValue);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        this.addError(e, s);
        return null;
      }
      if (iterResult.done) {
        this.close();
        return null;
      }
      if (this.isSuspendedAtYield || this.isSuspendedAtYieldStar) return null;
      this.isSuspendedAtAwait = true;
      let value = iterResult.value;
      let f = null;
      if (async._Future.is(value)) {
        f = value;
      } else if (async.Future.is(value)) {
        f = new async._Future.new();
        async._Future._chainForeignFuture(value, f);
      } else {
        f = new async._Future.value(value);
      }
      f[_thenNoZoneRegistration](dart.void, this[_runBodyCallback], this.handleError);
    }
    add(event) {
      T._check(event);
      if (!this.onListenReceived) this[_fatal]("yield before stream is listened to");
      if (this.isSuspendedAtYield) this[_fatal]("unexpected yield");
      if (!dart.test(this.controller.hasListener)) {
        return true;
      }
      this.controller.add(event);
      this.scheduleGenerator();
      this.isSuspendedAtYield = true;
      return false;
    }
    addStream(stream) {
      StreamOfT()._check(stream);
      if (!this.onListenReceived) this[_fatal]("yield* before stream is listened to");
      if (!dart.test(this.controller.hasListener)) return true;
      this.isSuspendedAtYieldStar = true;
      let whenDoneAdding = this.controller.addStream(stream, {cancelOnError: false});
      FutureOfNull()._check(whenDoneAdding.then(core.Null, dart.fn(_ => {
        this.isSuspendedAtYieldStar = false;
        this.scheduleGenerator();
        if (!this.isScheduled) this.isSuspendedAtYield = true;
      }, dynamicToNull()), {onError: this.handleError}));
      return false;
    }
    addError(error, stackTrace) {
      if (this.cancellationCompleter != null && !dart.test(this.cancellationCompleter.isCompleted)) {
        this.cancellationCompleter.completeError(error, stackTrace);
      } else if (dart.test(this.controller.hasListener)) {
        this.controller.addError(error, stackTrace);
      }
      this.close();
    }
    close() {
      if (this.cancellationCompleter != null && !dart.test(this.cancellationCompleter.isCompleted)) {
        this.cancellationCompleter.complete();
      }
      this.controller.close();
    }
    onListen() {
      if (!!this.onListenReceived) dart.assertFailed();
      this.onListenReceived = true;
      this.scheduleGenerator();
    }
    onResume() {
      if (this.isSuspendedAtYield) {
        this.scheduleGenerator();
      }
    }
    onCancel() {
      if (dart.test(this.controller.isClosed)) {
        return null;
      }
      if (this.cancellationCompleter == null) {
        this.cancellationCompleter = async.Completer.new();
        if (this.isSuspendedAtYield) {
          this.scheduleGenerator();
        }
      }
      return this.cancellationCompleter.future;
    }
    [_fatal](message) {
      return dart.throw(new core.StateError.new(message));
    }
  }
  (_AsyncStarImpl.new = function(initGenerator) {
    this.controller = null;
    this.isSuspendedAtYieldStar = false;
    this.onListenReceived = false;
    this.isScheduled = false;
    this.isSuspendedAtYield = false;
    this.isSuspendedAtAwait = false;
    this.cancellationCompleter = null;
    this.jsIterator = null;
    this[_handleErrorCallback] = null;
    this[_runBodyCallback] = null;
    this.initGenerator = initGenerator;
    this.controller = StreamControllerOfT().new({onListen: this.onListen.bind(this), onResume: this.onResume.bind(this), onCancel: this.onCancel.bind(this)});
    this.jsIterator = this.initGenerator(this)[Symbol.iterator]();
  }).prototype = _AsyncStarImpl.prototype;
  dart.addTypeTests(_AsyncStarImpl);
  _AsyncStarImpl.prototype[_is__AsyncStarImpl_default] = true;
  dart.setMethodSignature(_AsyncStarImpl, () => ({
    __proto__: dart.getMethods(_AsyncStarImpl.__proto__),
    scheduleGenerator: dart.fnType(dart.void, []),
    runBody: dart.fnType(dart.void, [dart.dynamic]),
    add: dart.fnType(core.bool, [core.Object]),
    addStream: dart.fnType(core.bool, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    close: dart.fnType(dart.void, []),
    onListen: dart.fnType(dart.dynamic, []),
    onResume: dart.fnType(dart.dynamic, []),
    onCancel: dart.fnType(dart.dynamic, []),
    [_fatal]: dart.fnType(dart.dynamic, [core.String])
  }));
  dart.setGetterSignature(_AsyncStarImpl, () => ({
    __proto__: dart.getGetters(_AsyncStarImpl.__proto__),
    stream: async.Stream$(T),
    handleError: dart.fnType(core.Null, [core.Object, core.StackTrace])
  }));
  dart.setFieldSignature(_AsyncStarImpl, () => ({
    __proto__: dart.getFields(_AsyncStarImpl.__proto__),
    controller: dart.fieldType(StreamControllerOfT()),
    initGenerator: dart.fieldType(_AsyncStarImplOfTToObject()),
    isSuspendedAtYieldStar: dart.fieldType(core.bool),
    onListenReceived: dart.fieldType(core.bool),
    isScheduled: dart.fieldType(core.bool),
    isSuspendedAtYield: dart.fieldType(core.bool),
    isSuspendedAtAwait: dart.fieldType(core.bool),
    cancellationCompleter: dart.fieldType(async.Completer),
    jsIterator: dart.fieldType(core.Object),
    [_handleErrorCallback]: dart.fieldType(ObjectAndStackTraceToNull()),
    [_runBodyCallback]: dart.fieldType(__Tovoid())
  }));
  return _AsyncStarImpl;
});
async._AsyncStarImpl = async._AsyncStarImpl$();
dart.addTypeTests(async._AsyncStarImpl, _is__AsyncStarImpl_default);
async._invokeErrorHandler = function(errorHandler, error, stackTrace) {
  if (NullAndNullTodynamic().is(errorHandler)) {
    return dart.dcall(errorHandler, [error, stackTrace]);
  } else {
    let unaryErrorHandler = dynamicTodynamic()._check(errorHandler);
    return unaryErrorHandler(error);
  }
};
const _controller = Symbol('_controller');
const _subscribe = Symbol('_subscribe');
const _createSubscription = Symbol('_createSubscription');
const _onListen = Symbol('_onListen');
const _is__StreamImpl_default = Symbol('_is__StreamImpl_default');
async._StreamImpl$ = dart.generic(T => {
  let _BufferingStreamSubscriptionOfT = () => (_BufferingStreamSubscriptionOfT = dart.constFn(async._BufferingStreamSubscription$(T)))();
  class _StreamImpl extends async.Stream$(T) {
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      cancelOnError = true === cancelOnError;
      let subscription = this[_createSubscription](onData, onError, onDone, cancelOnError);
      this[_onListen](subscription);
      return subscription;
    }
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return new (_BufferingStreamSubscriptionOfT()).new(onData, onError, onDone, cancelOnError);
    }
    [_onListen](subscription) {}
  }
  (_StreamImpl.new = function() {
    _StreamImpl.__proto__.new.call(this);
  }).prototype = _StreamImpl.prototype;
  dart.addTypeTests(_StreamImpl);
  _StreamImpl.prototype[_is__StreamImpl_default] = true;
  dart.setMethodSignature(_StreamImpl, () => ({
    __proto__: dart.getMethods(_StreamImpl.__proto__),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
    [_onListen]: dart.fnType(dart.void, [async.StreamSubscription])
  }));
  return _StreamImpl;
});
async._StreamImpl = async._StreamImpl$();
dart.addTypeTests(async._StreamImpl, _is__StreamImpl_default);
const _is__ControllerStream_default = Symbol('_is__ControllerStream_default');
async._ControllerStream$ = dart.generic(T => {
  let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
  class _ControllerStream extends async._StreamImpl$(T) {
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return this[_controller][_subscribe](onData, onError, onDone, cancelOnError);
    }
    get hashCode() {
      return (dart.notNull(dart.hashCode(this[_controller])) ^ 892482866) >>> 0;
    }
    _equals(other) {
      if (this === other) return true;
      return async._ControllerStream.is(other) && other[_controller] == this[_controller];
    }
  }
  (_ControllerStream.new = function(controller) {
    this[_controller] = controller;
    _ControllerStream.__proto__.new.call(this);
  }).prototype = _ControllerStream.prototype;
  dart.addTypeTests(_ControllerStream);
  _ControllerStream.prototype[_is__ControllerStream_default] = true;
  dart.setMethodSignature(_ControllerStream, () => ({
    __proto__: dart.getMethods(_ControllerStream.__proto__),
    _equals: dart.fnType(core.bool, [core.Object]),
    [$_equals]: dart.fnType(core.bool, [core.Object])
  }));
  dart.setGetterSignature(_ControllerStream, () => ({
    __proto__: dart.getGetters(_ControllerStream.__proto__),
    hashCode: core.int,
    [$hashCode]: core.int
  }));
  dart.setFieldSignature(_ControllerStream, () => ({
    __proto__: dart.getFields(_ControllerStream.__proto__),
    [_controller]: dart.fieldType(_StreamControllerLifecycleOfT())
  }));
  dart.defineExtensionMethods(_ControllerStream, ['_equals']);
  dart.defineExtensionAccessors(_ControllerStream, ['hashCode']);
  return _ControllerStream;
});
async._ControllerStream = async._ControllerStream$();
dart.addTypeTests(async._ControllerStream, _is__ControllerStream_default);
const _is__BroadcastStream_default = Symbol('_is__BroadcastStream_default');
async._BroadcastStream$ = dart.generic(T => {
  class _BroadcastStream extends async._ControllerStream$(T) {
    get isBroadcast() {
      return true;
    }
  }
  (_BroadcastStream.new = function(controller) {
    _BroadcastStream.__proto__.new.call(this, controller);
  }).prototype = _BroadcastStream.prototype;
  dart.addTypeTests(_BroadcastStream);
  _BroadcastStream.prototype[_is__BroadcastStream_default] = true;
  return _BroadcastStream;
});
async._BroadcastStream = async._BroadcastStream$();
dart.addTypeTests(async._BroadcastStream, _is__BroadcastStream_default);
const _eventState = Symbol('_eventState');
const _next$ = Symbol('_next');
const _previous$ = Symbol('_previous');
const _expectsEvent = Symbol('_expectsEvent');
const _toggleEventId = Symbol('_toggleEventId');
const _isFiring = Symbol('_isFiring');
const _setRemoveAfterFiring = Symbol('_setRemoveAfterFiring');
const _removeAfterFiring = Symbol('_removeAfterFiring');
const _onPause = Symbol('_onPause');
const _onResume = Symbol('_onResume');
const _recordCancel = Symbol('_recordCancel');
const _onCancel = Symbol('_onCancel');
const _recordPause = Symbol('_recordPause');
const _recordResume = Symbol('_recordResume');
const _state = Symbol('_state');
const _onData$ = Symbol('_onData');
const _onError = Symbol('_onError');
const _onDone = Symbol('_onDone');
const _zone$ = Symbol('_zone');
const _cancelFuture = Symbol('_cancelFuture');
const _pending = Symbol('_pending');
const _setPendingEvents = Symbol('_setPendingEvents');
const _isCanceled = Symbol('_isCanceled');
const _isPaused = Symbol('_isPaused');
const _isInputPaused = Symbol('_isInputPaused');
const _inCallback = Symbol('_inCallback');
const _guardCallback = Symbol('_guardCallback');
const _decrementPauseCount = Symbol('_decrementPauseCount');
const _hasPending = Symbol('_hasPending');
const _mayResumeInput = Symbol('_mayResumeInput');
const _cancel = Symbol('_cancel');
const _isClosed = Symbol('_isClosed');
const _waitsForCancel = Symbol('_waitsForCancel');
const _canFire = Symbol('_canFire');
const _cancelOnError = Symbol('_cancelOnError');
const _sendData = Symbol('_sendData');
const _addPending = Symbol('_addPending');
const _sendError = Symbol('_sendError');
const _sendDone = Symbol('_sendDone');
let const$9;
const _close = Symbol('_close');
const _checkState = Symbol('_checkState');
const _is__BufferingStreamSubscription_default = Symbol('_is__BufferingStreamSubscription_default');
async._BufferingStreamSubscription$ = dart.generic(T => {
  let _PendingEventsOfT = () => (_PendingEventsOfT = dart.constFn(async._PendingEvents$(T)))();
  let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
  let _StreamImplEventsOfT = () => (_StreamImplEventsOfT = dart.constFn(async._StreamImplEvents$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  let TTovoid = () => (TTovoid = dart.constFn(dart.fnType(dart.void, [T])))();
  class _BufferingStreamSubscription extends core.Object {
    [_setPendingEvents](pendingEvents) {
      _PendingEventsOfT()._check(pendingEvents);
      if (!(this[_pending] == null)) dart.assertFailed();
      if (pendingEvents == null) return;
      this[_pending] = pendingEvents;
      if (!dart.test(pendingEvents.isEmpty)) {
        this[_state] = (dart.notNull(this[_state]) | 64) >>> 0;
        this[_pending].schedule(this);
      }
    }
    onData(handleData) {
      let t = handleData;
      t == null ? handleData = dart.fn(async._nullDataHandler, ObjectTovoid()) : t;
      this[_onData$] = this[_zone$].registerUnaryCallback(dart.dynamic, T, handleData);
    }
    onError(handleError) {
      let t = handleError;
      t == null ? handleError = dart.fn(async._nullErrorHandler, Object__Tovoid()) : t;
      if (ObjectAndStackTraceTovoid().is(handleError)) {
        this[_onError] = this[_zone$].registerBinaryCallback(dart.dynamic, core.Object, core.StackTrace, handleError);
      } else if (ObjectTovoid().is(handleError)) {
        this[_onError] = this[_zone$].registerUnaryCallback(dart.dynamic, core.Object, handleError);
      } else {
        dart.throw(new core.ArgumentError.new("handleError callback must take either an Object " + "(the error), or both an Object (the error) and a StackTrace."));
      }
    }
    onDone(handleDone) {
      let t = handleDone;
      t == null ? handleDone = dart.fn(async._nullDoneHandler, VoidTovoid()) : t;
      this[_onDone] = this[_zone$].registerCallback(dart.void, handleDone);
    }
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      if (dart.test(this[_isCanceled])) return;
      let wasPaused = this[_isPaused];
      let wasInputPaused = this[_isInputPaused];
      this[_state] = (dart.notNull(this[_state]) + 128 | 4) >>> 0;
      if (resumeSignal != null) resumeSignal.whenComplete(dart.bind(this, 'resume'));
      if (!dart.test(wasPaused) && this[_pending] != null) this[_pending].cancelSchedule();
      if (!dart.test(wasInputPaused) && !dart.test(this[_inCallback])) this[_guardCallback](dart.bind(this, _onPause));
    }
    resume() {
      if (dart.test(this[_isCanceled])) return;
      if (dart.test(this[_isPaused])) {
        this[_decrementPauseCount]();
        if (!dart.test(this[_isPaused])) {
          if (dart.test(this[_hasPending]) && !dart.test(this[_pending].isEmpty)) {
            this[_pending].schedule(this);
          } else {
            if (!dart.test(this[_mayResumeInput])) dart.assertFailed();
            this[_state] = (dart.notNull(this[_state]) & ~4) >>> 0;
            if (!dart.test(this[_inCallback])) this[_guardCallback](dart.bind(this, _onResume));
          }
        }
      }
    }
    cancel() {
      this[_state] = (dart.notNull(this[_state]) & ~16) >>> 0;
      if (!dart.test(this[_isCanceled])) {
        this[_cancel]();
      }
      let l = this[_cancelFuture];
      return l != null ? l : async.Future._nullFuture;
    }
    asFuture(E, futureValue) {
      if (futureValue === void 0) futureValue = null;
      let result = new (async._Future$(E)).new();
      this[_onDone] = dart.fn(() => {
        result[_complete](futureValue);
      }, VoidToNull());
      this[_onError] = dart.fn((error, stackTrace) => {
        let cancelFuture = this.cancel();
        if (!(cancelFuture == async.Future._nullFuture)) {
          cancelFuture.whenComplete(dart.fn(() => {
            result[_completeError](error, stackTrace);
          }, VoidToNull()));
        } else {
          result[_completeError](error, stackTrace);
        }
      }, dynamicAndStackTraceToNull());
      return result;
    }
    get [_isInputPaused]() {
      return (dart.notNull(this[_state]) & 4) !== 0;
    }
    get [_isClosed]() {
      return (dart.notNull(this[_state]) & 2) !== 0;
    }
    get [_isCanceled]() {
      return (dart.notNull(this[_state]) & 8) !== 0;
    }
    get [_waitsForCancel]() {
      return (dart.notNull(this[_state]) & 16) !== 0;
    }
    get [_inCallback]() {
      return (dart.notNull(this[_state]) & 32) !== 0;
    }
    get [_hasPending]() {
      return (dart.notNull(this[_state]) & 64) !== 0;
    }
    get [_isPaused]() {
      return dart.notNull(this[_state]) >= 128;
    }
    get [_canFire]() {
      return dart.notNull(this[_state]) < 32;
    }
    get [_mayResumeInput]() {
      return !dart.test(this[_isPaused]) && (this[_pending] == null || dart.test(this[_pending].isEmpty));
    }
    get [_cancelOnError]() {
      return (dart.notNull(this[_state]) & 1) !== 0;
    }
    get isPaused() {
      return this[_isPaused];
    }
    [_cancel]() {
      this[_state] = (dart.notNull(this[_state]) | 8) >>> 0;
      if (dart.test(this[_hasPending])) {
        this[_pending].cancelSchedule();
      }
      if (!dart.test(this[_inCallback])) this[_pending] = null;
      this[_cancelFuture] = this[_onCancel]();
    }
    [_decrementPauseCount]() {
      if (!dart.test(this[_isPaused])) dart.assertFailed();
      this[_state] = dart.notNull(this[_state]) - 128;
    }
    [_add](data) {
      T._check(data);
      if (!!dart.test(this[_isClosed])) dart.assertFailed();
      if (dart.test(this[_isCanceled])) return;
      if (dart.test(this[_canFire])) {
        this[_sendData](data);
      } else {
        this[_addPending](new (_DelayedDataOfT()).new(data));
      }
    }
    [_addError](error, stackTrace) {
      if (dart.test(this[_isCanceled])) return;
      if (dart.test(this[_canFire])) {
        this[_sendError](error, stackTrace);
      } else {
        this[_addPending](new async._DelayedError.new(error, stackTrace));
      }
    }
    [_close]() {
      if (!!dart.test(this[_isClosed])) dart.assertFailed();
      if (dart.test(this[_isCanceled])) return;
      this[_state] = (dart.notNull(this[_state]) | 2) >>> 0;
      if (dart.test(this[_canFire])) {
        this[_sendDone]();
      } else {
        this[_addPending](const$9 || (const$9 = dart.const(new async._DelayedDone.new())));
      }
    }
    [_onPause]() {
      if (!dart.test(this[_isInputPaused])) dart.assertFailed();
    }
    [_onResume]() {
      if (!!dart.test(this[_isInputPaused])) dart.assertFailed();
    }
    [_onCancel]() {
      if (!dart.test(this[_isCanceled])) dart.assertFailed();
      return null;
    }
    [_addPending](event) {
      let pending = _StreamImplEventsOfT()._check(this[_pending]);
      if (this[_pending] == null) {
        pending = this[_pending] = new (_StreamImplEventsOfT()).new();
      }
      pending.add(event);
      if (!dart.test(this[_hasPending])) {
        this[_state] = (dart.notNull(this[_state]) | 64) >>> 0;
        if (!dart.test(this[_isPaused])) {
          this[_pending].schedule(this);
        }
      }
    }
    [_sendData](data) {
      T._check(data);
      if (!!dart.test(this[_isCanceled])) dart.assertFailed();
      if (!!dart.test(this[_isPaused])) dart.assertFailed();
      if (!!dart.test(this[_inCallback])) dart.assertFailed();
      let wasInputPaused = this[_isInputPaused];
      this[_state] = (dart.notNull(this[_state]) | 32) >>> 0;
      this[_zone$].runUnaryGuarded(T, this[_onData$], data);
      this[_state] = (dart.notNull(this[_state]) & ~32) >>> 0;
      this[_checkState](wasInputPaused);
    }
    [_sendError](error, stackTrace) {
      if (!!dart.test(this[_isCanceled])) dart.assertFailed();
      if (!!dart.test(this[_isPaused])) dart.assertFailed();
      if (!!dart.test(this[_inCallback])) dart.assertFailed();
      let wasInputPaused = this[_isInputPaused];
      const sendError = (function() {
        if (dart.test(this[_isCanceled]) && !dart.test(this[_waitsForCancel])) return;
        this[_state] = (dart.notNull(this[_state]) | 32) >>> 0;
        let onError = this[_onError];
        if (ObjectAndStackTraceTovoid().is(onError)) {
          this[_zone$].runBinaryGuarded(core.Object, core.StackTrace, onError, error, stackTrace);
        } else {
          if (!ObjectTovoid().is(this[_onError])) dart.assertFailed();
          this[_zone$].runUnaryGuarded(core.Object, ObjectTovoid()._check(this[_onError]), error);
        }
        this[_state] = (dart.notNull(this[_state]) & ~32) >>> 0;
      }).bind(this);
      dart.fn(sendError, VoidTovoid());
      if (dart.test(this[_cancelOnError])) {
        this[_state] = (dart.notNull(this[_state]) | 16) >>> 0;
        this[_cancel]();
        if (this[_cancelFuture] != null && !(this[_cancelFuture] == async.Future._nullFuture)) {
          this[_cancelFuture].whenComplete(sendError);
        } else {
          sendError();
        }
      } else {
        sendError();
        this[_checkState](wasInputPaused);
      }
    }
    [_sendDone]() {
      if (!!dart.test(this[_isCanceled])) dart.assertFailed();
      if (!!dart.test(this[_isPaused])) dart.assertFailed();
      if (!!dart.test(this[_inCallback])) dart.assertFailed();
      const sendDone = (function() {
        if (!dart.test(this[_waitsForCancel])) return;
        this[_state] = (dart.notNull(this[_state]) | 8 | 2 | 32) >>> 0;
        this[_zone$].runGuarded(this[_onDone]);
        this[_state] = (dart.notNull(this[_state]) & ~32) >>> 0;
      }).bind(this);
      dart.fn(sendDone, VoidTovoid());
      this[_cancel]();
      this[_state] = (dart.notNull(this[_state]) | 16) >>> 0;
      if (this[_cancelFuture] != null && !(this[_cancelFuture] == async.Future._nullFuture)) {
        this[_cancelFuture].whenComplete(sendDone);
      } else {
        sendDone();
      }
    }
    [_guardCallback](callback) {
      if (!!dart.test(this[_inCallback])) dart.assertFailed();
      let wasInputPaused = this[_isInputPaused];
      this[_state] = (dart.notNull(this[_state]) | 32) >>> 0;
      callback();
      this[_state] = (dart.notNull(this[_state]) & ~32) >>> 0;
      this[_checkState](wasInputPaused);
    }
    [_checkState](wasInputPaused) {
      if (!!dart.test(this[_inCallback])) dart.assertFailed();
      if (dart.test(this[_hasPending]) && dart.test(this[_pending].isEmpty)) {
        this[_state] = (dart.notNull(this[_state]) & ~64) >>> 0;
        if (dart.test(this[_isInputPaused]) && dart.test(this[_mayResumeInput])) {
          this[_state] = (dart.notNull(this[_state]) & ~4) >>> 0;
        }
      }
      while (true) {
        if (dart.test(this[_isCanceled])) {
          this[_pending] = null;
          return;
        }
        let isInputPaused = this[_isInputPaused];
        if (wasInputPaused == isInputPaused) break;
        this[_state] = (dart.notNull(this[_state]) ^ 32) >>> 0;
        if (dart.test(isInputPaused)) {
          this[_onPause]();
        } else {
          this[_onResume]();
        }
        this[_state] = (dart.notNull(this[_state]) & ~32) >>> 0;
        wasInputPaused = isInputPaused;
      }
      if (dart.test(this[_hasPending]) && !dart.test(this[_isPaused])) {
        this[_pending].schedule(this);
      }
    }
  }
  (_BufferingStreamSubscription.new = function(onData, onError, onDone, cancelOnError) {
    this[_onData$] = null;
    this[_onError] = null;
    this[_onDone] = null;
    this[_zone$] = async.Zone.current;
    this[_cancelFuture] = null;
    this[_pending] = null;
    this[_state] = dart.test(cancelOnError) ? 1 : 0;
    this.onData(onData);
    this.onError(onError);
    this.onDone(onDone);
  }).prototype = _BufferingStreamSubscription.prototype;
  _BufferingStreamSubscription.prototype[dart.isStreamSubscription] = true;
  dart.addTypeTests(_BufferingStreamSubscription);
  _BufferingStreamSubscription.prototype[_is__BufferingStreamSubscription_default] = true;
  _BufferingStreamSubscription[dart.implements] = () => [StreamSubscriptionOfT(), _EventSinkOfT(), _EventDispatchOfT()];
  dart.setMethodSignature(_BufferingStreamSubscription, () => ({
    __proto__: dart.getMethods(_BufferingStreamSubscription.__proto__),
    [_setPendingEvents]: dart.fnType(dart.void, [core.Object]),
    onData: dart.fnType(dart.void, [dart.fnType(dart.void, [T])]),
    onError: dart.fnType(dart.void, [core.Function]),
    onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    pause: dart.fnType(dart.void, [], [async.Future]),
    resume: dart.fnType(dart.void, []),
    cancel: dart.fnType(async.Future, []),
    asFuture: dart.gFnType(E => [async.Future$(E), [], [E]]),
    [_cancel]: dart.fnType(dart.void, []),
    [_decrementPauseCount]: dart.fnType(dart.void, []),
    [_add]: dart.fnType(dart.void, [core.Object]),
    [_addError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_close]: dart.fnType(dart.void, []),
    [_onPause]: dart.fnType(dart.void, []),
    [_onResume]: dart.fnType(dart.void, []),
    [_onCancel]: dart.fnType(async.Future, []),
    [_addPending]: dart.fnType(dart.void, [async._DelayedEvent]),
    [_sendData]: dart.fnType(dart.void, [core.Object]),
    [_sendError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_sendDone]: dart.fnType(dart.void, []),
    [_guardCallback]: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    [_checkState]: dart.fnType(dart.void, [core.bool])
  }));
  dart.setGetterSignature(_BufferingStreamSubscription, () => ({
    __proto__: dart.getGetters(_BufferingStreamSubscription.__proto__),
    [_isInputPaused]: core.bool,
    [_isClosed]: core.bool,
    [_isCanceled]: core.bool,
    [_waitsForCancel]: core.bool,
    [_inCallback]: core.bool,
    [_hasPending]: core.bool,
    [_isPaused]: core.bool,
    [_canFire]: core.bool,
    [_mayResumeInput]: core.bool,
    [_cancelOnError]: core.bool,
    isPaused: core.bool
  }));
  dart.setFieldSignature(_BufferingStreamSubscription, () => ({
    __proto__: dart.getFields(_BufferingStreamSubscription.__proto__),
    [_onData$]: dart.fieldType(TTovoid()),
    [_onError]: dart.fieldType(core.Function),
    [_onDone]: dart.fieldType(VoidTovoid()),
    [_zone$]: dart.finalFieldType(async.Zone),
    [_state]: dart.fieldType(core.int),
    [_cancelFuture]: dart.fieldType(async.Future),
    [_pending]: dart.fieldType(_PendingEventsOfT())
  }));
  return _BufferingStreamSubscription;
});
async._BufferingStreamSubscription = async._BufferingStreamSubscription$();
dart.defineLazy(async._BufferingStreamSubscription, {
  /*async._BufferingStreamSubscription._STATE_CANCEL_ON_ERROR*/get _STATE_CANCEL_ON_ERROR() {
    return 1;
  },
  /*async._BufferingStreamSubscription._STATE_CLOSED*/get _STATE_CLOSED() {
    return 2;
  },
  /*async._BufferingStreamSubscription._STATE_INPUT_PAUSED*/get _STATE_INPUT_PAUSED() {
    return 4;
  },
  /*async._BufferingStreamSubscription._STATE_CANCELED*/get _STATE_CANCELED() {
    return 8;
  },
  /*async._BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL*/get _STATE_WAIT_FOR_CANCEL() {
    return 16;
  },
  /*async._BufferingStreamSubscription._STATE_IN_CALLBACK*/get _STATE_IN_CALLBACK() {
    return 32;
  },
  /*async._BufferingStreamSubscription._STATE_HAS_PENDING*/get _STATE_HAS_PENDING() {
    return 64;
  },
  /*async._BufferingStreamSubscription._STATE_PAUSE_COUNT*/get _STATE_PAUSE_COUNT() {
    return 128;
  }
});
dart.addTypeTests(async._BufferingStreamSubscription, _is__BufferingStreamSubscription_default);
const _is__ControllerSubscription_default = Symbol('_is__ControllerSubscription_default');
async._ControllerSubscription$ = dart.generic(T => {
  let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
  class _ControllerSubscription extends async._BufferingStreamSubscription$(T) {
    [_onCancel]() {
      return this[_controller][_recordCancel](this);
    }
    [_onPause]() {
      this[_controller][_recordPause](this);
    }
    [_onResume]() {
      this[_controller][_recordResume](this);
    }
  }
  (_ControllerSubscription.new = function(controller, onData, onError, onDone, cancelOnError) {
    this[_controller] = controller;
    _ControllerSubscription.__proto__.new.call(this, onData, onError, onDone, cancelOnError);
  }).prototype = _ControllerSubscription.prototype;
  dart.addTypeTests(_ControllerSubscription);
  _ControllerSubscription.prototype[_is__ControllerSubscription_default] = true;
  dart.setFieldSignature(_ControllerSubscription, () => ({
    __proto__: dart.getFields(_ControllerSubscription.__proto__),
    [_controller]: dart.finalFieldType(_StreamControllerLifecycleOfT())
  }));
  return _ControllerSubscription;
});
async._ControllerSubscription = async._ControllerSubscription$();
dart.addTypeTests(async._ControllerSubscription, _is__ControllerSubscription_default);
const _is__BroadcastSubscription_default = Symbol('_is__BroadcastSubscription_default');
async._BroadcastSubscription$ = dart.generic(T => {
  let _BroadcastSubscriptionOfT = () => (_BroadcastSubscriptionOfT = dart.constFn(async._BroadcastSubscription$(T)))();
  class _BroadcastSubscription extends async._ControllerSubscription$(T) {
    get [_next$]() {
      return this[_next];
    }
    set [_next$](value) {
      this[_next] = _BroadcastSubscriptionOfT()._check(value);
    }
    get [_previous$]() {
      return this[_previous];
    }
    set [_previous$](value) {
      this[_previous] = _BroadcastSubscriptionOfT()._check(value);
    }
    [_expectsEvent](eventId) {
      return (dart.notNull(this[_eventState]) & 1) === eventId;
    }
    [_toggleEventId]() {
      this[_eventState] = (dart.notNull(this[_eventState]) ^ 1) >>> 0;
    }
    get [_isFiring]() {
      return (dart.notNull(this[_eventState]) & 2) !== 0;
    }
    [_setRemoveAfterFiring]() {
      if (!dart.test(this[_isFiring])) dart.assertFailed();
      this[_eventState] = (dart.notNull(this[_eventState]) | 4) >>> 0;
    }
    get [_removeAfterFiring]() {
      return (dart.notNull(this[_eventState]) & 4) !== 0;
    }
    [_onPause]() {}
    [_onResume]() {}
  }
  (_BroadcastSubscription.new = function(controller, onData, onError, onDone, cancelOnError) {
    this[_eventState] = 0;
    this[_next] = null;
    this[_previous] = null;
    _BroadcastSubscription.__proto__.new.call(this, controller, onData, onError, onDone, cancelOnError);
    this[_next$] = this[_previous$] = this;
  }).prototype = _BroadcastSubscription.prototype;
  dart.addTypeTests(_BroadcastSubscription);
  _BroadcastSubscription.prototype[_is__BroadcastSubscription_default] = true;
  const _next = Symbol("_BroadcastSubscription._next");
  const _previous = Symbol("_BroadcastSubscription._previous");
  dart.setMethodSignature(_BroadcastSubscription, () => ({
    __proto__: dart.getMethods(_BroadcastSubscription.__proto__),
    [_expectsEvent]: dart.fnType(core.bool, [core.int]),
    [_toggleEventId]: dart.fnType(dart.void, []),
    [_setRemoveAfterFiring]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_BroadcastSubscription, () => ({
    __proto__: dart.getGetters(_BroadcastSubscription.__proto__),
    [_isFiring]: core.bool,
    [_removeAfterFiring]: core.bool
  }));
  dart.setFieldSignature(_BroadcastSubscription, () => ({
    __proto__: dart.getFields(_BroadcastSubscription.__proto__),
    [_eventState]: dart.fieldType(core.int),
    [_next$]: dart.fieldType(_BroadcastSubscriptionOfT()),
    [_previous$]: dart.fieldType(_BroadcastSubscriptionOfT())
  }));
  return _BroadcastSubscription;
});
async._BroadcastSubscription = async._BroadcastSubscription$();
dart.defineLazy(async._BroadcastSubscription, {
  /*async._BroadcastSubscription._STATE_EVENT_ID*/get _STATE_EVENT_ID() {
    return 1;
  },
  /*async._BroadcastSubscription._STATE_FIRING*/get _STATE_FIRING() {
    return 2;
  },
  /*async._BroadcastSubscription._STATE_REMOVE_AFTER_FIRING*/get _STATE_REMOVE_AFTER_FIRING() {
    return 4;
  }
});
dart.addTypeTests(async._BroadcastSubscription, _is__BroadcastSubscription_default);
const _firstSubscription = Symbol('_firstSubscription');
const _lastSubscription = Symbol('_lastSubscription');
const _addStreamState = Symbol('_addStreamState');
const _doneFuture = Symbol('_doneFuture');
const _isEmpty = Symbol('_isEmpty');
const _hasOneListener = Symbol('_hasOneListener');
const _isAddingStream = Symbol('_isAddingStream');
const _mayAddEvent = Symbol('_mayAddEvent');
const _ensureDoneFuture = Symbol('_ensureDoneFuture');
const _addListener = Symbol('_addListener');
const _removeListener = Symbol('_removeListener');
const _callOnCancel = Symbol('_callOnCancel');
const _addEventError = Symbol('_addEventError');
const _forEachListener = Symbol('_forEachListener');
const _mayComplete = Symbol('_mayComplete');
const _is__BroadcastStreamController_default = Symbol('_is__BroadcastStreamController_default');
async._BroadcastStreamController$ = dart.generic(T => {
  let _BroadcastStreamOfT = () => (_BroadcastStreamOfT = dart.constFn(async._BroadcastStream$(T)))();
  let _StreamSinkWrapperOfT = () => (_StreamSinkWrapperOfT = dart.constFn(async._StreamSinkWrapper$(T)))();
  let _BroadcastSubscriptionOfT = () => (_BroadcastSubscriptionOfT = dart.constFn(async._BroadcastSubscription$(T)))();
  let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let _AddStreamStateOfT = () => (_AddStreamStateOfT = dart.constFn(async._AddStreamState$(T)))();
  let _StreamControllerBaseOfT = () => (_StreamControllerBaseOfT = dart.constFn(async._StreamControllerBase$(T)))();
  class _BroadcastStreamController extends core.Object {
    get onPause() {
      dart.throw(new core.UnsupportedError.new("Broadcast stream controllers do not support pause callbacks"));
    }
    set onPause(onPauseHandler) {
      dart.throw(new core.UnsupportedError.new("Broadcast stream controllers do not support pause callbacks"));
    }
    get onResume() {
      dart.throw(new core.UnsupportedError.new("Broadcast stream controllers do not support pause callbacks"));
    }
    set onResume(onResumeHandler) {
      dart.throw(new core.UnsupportedError.new("Broadcast stream controllers do not support pause callbacks"));
    }
    get stream() {
      return new (_BroadcastStreamOfT()).new(this);
    }
    get sink() {
      return new (_StreamSinkWrapperOfT()).new(this);
    }
    get isClosed() {
      return (dart.notNull(this[_state]) & 4) !== 0;
    }
    get isPaused() {
      return false;
    }
    get hasListener() {
      return !dart.test(this[_isEmpty]);
    }
    get [_hasOneListener]() {
      if (!!dart.test(this[_isEmpty])) dart.assertFailed();
      return this[_firstSubscription] == this[_lastSubscription];
    }
    get [_isFiring]() {
      return (dart.notNull(this[_state]) & 2) !== 0;
    }
    get [_isAddingStream]() {
      return (dart.notNull(this[_state]) & 8) !== 0;
    }
    get [_mayAddEvent]() {
      return dart.notNull(this[_state]) < 4;
    }
    [_ensureDoneFuture]() {
      if (this[_doneFuture] != null) return this[_doneFuture];
      return this[_doneFuture] = new async._Future.new();
    }
    get [_isEmpty]() {
      return this[_firstSubscription] == null;
    }
    [_addListener](subscription) {
      _BroadcastSubscriptionOfT()._check(subscription);
      if (!(subscription[_next$] == subscription)) dart.assertFailed();
      subscription[_eventState] = dart.notNull(this[_state]) & 1;
      let oldLast = this[_lastSubscription];
      this[_lastSubscription] = subscription;
      subscription[_next$] = null;
      subscription[_previous$] = oldLast;
      if (oldLast == null) {
        this[_firstSubscription] = subscription;
      } else {
        oldLast[_next$] = subscription;
      }
    }
    [_removeListener](subscription) {
      _BroadcastSubscriptionOfT()._check(subscription);
      if (!(subscription[_controller] === this)) dart.assertFailed();
      if (!!(subscription[_next$] == subscription)) dart.assertFailed();
      let previous = subscription[_previous$];
      let next = subscription[_next$];
      if (previous == null) {
        this[_firstSubscription] = next;
      } else {
        previous[_next$] = next;
      }
      if (next == null) {
        this[_lastSubscription] = previous;
      } else {
        next[_previous$] = previous;
      }
      subscription[_next$] = subscription[_previous$] = subscription;
    }
    [_subscribe](onData, onError, onDone, cancelOnError) {
      if (dart.test(this.isClosed)) {
        let t = onDone;
        t == null ? onDone = dart.fn(async._nullDoneHandler, VoidTovoid()) : t;
        return new (_DoneStreamSubscriptionOfT()).new(onDone);
      }
      let subscription = new (_BroadcastSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError);
      this[_addListener](_BroadcastSubscriptionOfT()._check(subscription));
      if (this[_firstSubscription] == this[_lastSubscription]) {
        async._runGuarded(this.onListen);
      }
      return subscription;
    }
    [_recordCancel](sub) {
      StreamSubscriptionOfT()._check(sub);
      let subscription = _BroadcastSubscriptionOfT()._check(sub);
      if (subscription[_next$] == subscription) return null;
      if (dart.test(subscription[_isFiring])) {
        subscription[_setRemoveAfterFiring]();
      } else {
        this[_removeListener](subscription);
        if (!dart.test(this[_isFiring]) && dart.test(this[_isEmpty])) {
          this[_callOnCancel]();
        }
      }
      return null;
    }
    [_recordPause](subscription) {
      StreamSubscriptionOfT()._check(subscription);
    }
    [_recordResume](subscription) {
      StreamSubscriptionOfT()._check(subscription);
    }
    [_addEventError]() {
      if (dart.test(this.isClosed)) {
        return new core.StateError.new("Cannot add new events after calling close");
      }
      if (!dart.test(this[_isAddingStream])) dart.assertFailed();
      return new core.StateError.new("Cannot add new events while doing an addStream");
    }
    add(data) {
      T._check(data);
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
      this[_sendData](data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      error = async._nonNullError(error);
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
      let replacement = async.Zone.current.errorCallback(error, stackTrace);
      if (replacement != null) {
        error = async._nonNullError(replacement.error);
        stackTrace = replacement.stackTrace;
      }
      this[_sendError](error, stackTrace);
    }
    close() {
      if (dart.test(this.isClosed)) {
        if (!(this[_doneFuture] != null)) dart.assertFailed();
        return this[_doneFuture];
      }
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
      this[_state] = (dart.notNull(this[_state]) | 4) >>> 0;
      let doneFuture = this[_ensureDoneFuture]();
      this[_sendDone]();
      return doneFuture;
    }
    get done() {
      return this[_ensureDoneFuture]();
    }
    addStream(stream, opts) {
      StreamOfT()._check(stream);
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
      this[_state] = (dart.notNull(this[_state]) | 8) >>> 0;
      this[_addStreamState] = new (_AddStreamStateOfT()).new(this, stream, cancelOnError != null ? cancelOnError : false);
      return this[_addStreamState].addStreamFuture;
    }
    [_add](data) {
      T._check(data);
      this[_sendData](data);
    }
    [_addError](error, stackTrace) {
      this[_sendError](error, stackTrace);
    }
    [_close]() {
      if (!dart.test(this[_isAddingStream])) dart.assertFailed();
      let addState = this[_addStreamState];
      this[_addStreamState] = null;
      this[_state] = (dart.notNull(this[_state]) & ~8) >>> 0;
      addState.complete();
    }
    [_forEachListener](action) {
      if (dart.test(this[_isFiring])) {
        dart.throw(new core.StateError.new("Cannot fire new event. Controller is already firing an event"));
      }
      if (dart.test(this[_isEmpty])) return;
      let id = dart.notNull(this[_state]) & 1;
      this[_state] = (dart.notNull(this[_state]) ^ (1 | 2)) >>> 0;
      let subscription = this[_firstSubscription];
      while (subscription != null) {
        if (dart.test(subscription[_expectsEvent](id))) {
          subscription[_eventState] = (dart.notNull(subscription[_eventState]) | async._BroadcastSubscription._STATE_FIRING) >>> 0;
          action(subscription);
          subscription[_toggleEventId]();
          let next = subscription[_next$];
          if (dart.test(subscription[_removeAfterFiring])) {
            this[_removeListener](subscription);
          }
          subscription[_eventState] = (dart.notNull(subscription[_eventState]) & ~async._BroadcastSubscription._STATE_FIRING) >>> 0;
          subscription = next;
        } else {
          subscription = subscription[_next$];
        }
      }
      this[_state] = (dart.notNull(this[_state]) & ~2) >>> 0;
      if (dart.test(this[_isEmpty])) {
        this[_callOnCancel]();
      }
    }
    [_callOnCancel]() {
      if (!dart.test(this[_isEmpty])) dart.assertFailed();
      if (dart.test(this.isClosed) && dart.test(this[_doneFuture][_mayComplete])) {
        this[_doneFuture][_asyncComplete](null);
      }
      async._runGuarded(this.onCancel);
    }
  }
  (_BroadcastStreamController.new = function(onListen, onCancel) {
    this[_firstSubscription] = null;
    this[_lastSubscription] = null;
    this[_addStreamState] = null;
    this[_doneFuture] = null;
    this.onListen = onListen;
    this.onCancel = onCancel;
    this[_state] = 0;
  }).prototype = _BroadcastStreamController.prototype;
  dart.addTypeTests(_BroadcastStreamController);
  _BroadcastStreamController.prototype[_is__BroadcastStreamController_default] = true;
  _BroadcastStreamController[dart.implements] = () => [_StreamControllerBaseOfT()];
  dart.setMethodSignature(_BroadcastStreamController, () => ({
    __proto__: dart.getMethods(_BroadcastStreamController.__proto__),
    [_ensureDoneFuture]: dart.fnType(async._Future, []),
    [_addListener]: dart.fnType(dart.void, [core.Object]),
    [_removeListener]: dart.fnType(dart.void, [core.Object]),
    [_subscribe]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
    [_recordCancel]: dart.fnType(async.Future, [core.Object]),
    [_recordPause]: dart.fnType(dart.void, [core.Object]),
    [_recordResume]: dart.fnType(dart.void, [core.Object]),
    [_addEventError]: dart.fnType(core.Error, []),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    close: dart.fnType(async.Future, []),
    addStream: dart.fnType(async.Future, [core.Object], {cancelOnError: core.bool}),
    [_add]: dart.fnType(dart.void, [core.Object]),
    [_addError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_close]: dart.fnType(dart.void, []),
    [_forEachListener]: dart.fnType(dart.void, [dart.fnType(dart.void, [async._BufferingStreamSubscription$(T)])]),
    [_callOnCancel]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_BroadcastStreamController, () => ({
    __proto__: dart.getGetters(_BroadcastStreamController.__proto__),
    onPause: dart.fnType(dart.void, []),
    onResume: dart.fnType(dart.void, []),
    stream: async.Stream$(T),
    sink: async.StreamSink$(T),
    isClosed: core.bool,
    isPaused: core.bool,
    hasListener: core.bool,
    [_hasOneListener]: core.bool,
    [_isFiring]: core.bool,
    [_isAddingStream]: core.bool,
    [_mayAddEvent]: core.bool,
    [_isEmpty]: core.bool,
    done: async.Future
  }));
  dart.setSetterSignature(_BroadcastStreamController, () => ({
    __proto__: dart.getSetters(_BroadcastStreamController.__proto__),
    onPause: dart.fnType(dart.void, []),
    onResume: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_BroadcastStreamController, () => ({
    __proto__: dart.getFields(_BroadcastStreamController.__proto__),
    onListen: dart.fieldType(VoidTovoid()),
    onCancel: dart.fieldType(VoidTodynamic()),
    [_state]: dart.fieldType(core.int),
    [_firstSubscription]: dart.fieldType(_BroadcastSubscriptionOfT()),
    [_lastSubscription]: dart.fieldType(_BroadcastSubscriptionOfT()),
    [_addStreamState]: dart.fieldType(_AddStreamStateOfT()),
    [_doneFuture]: dart.fieldType(async._Future)
  }));
  return _BroadcastStreamController;
});
async._BroadcastStreamController = async._BroadcastStreamController$();
dart.defineLazy(async._BroadcastStreamController, {
  /*async._BroadcastStreamController._STATE_INITIAL*/get _STATE_INITIAL() {
    return 0;
  },
  /*async._BroadcastStreamController._STATE_EVENT_ID*/get _STATE_EVENT_ID() {
    return 1;
  },
  /*async._BroadcastStreamController._STATE_FIRING*/get _STATE_FIRING() {
    return 2;
  },
  /*async._BroadcastStreamController._STATE_CLOSED*/get _STATE_CLOSED() {
    return 4;
  },
  /*async._BroadcastStreamController._STATE_ADDSTREAM*/get _STATE_ADDSTREAM() {
    return 8;
  }
});
dart.addTypeTests(async._BroadcastStreamController, _is__BroadcastStreamController_default);
const _is__SyncBroadcastStreamController_default = Symbol('_is__SyncBroadcastStreamController_default');
async._SyncBroadcastStreamController$ = dart.generic(T => {
  let _BufferingStreamSubscriptionOfT = () => (_BufferingStreamSubscriptionOfT = dart.constFn(async._BufferingStreamSubscription$(T)))();
  let _BufferingStreamSubscriptionOfTToNull = () => (_BufferingStreamSubscriptionOfTToNull = dart.constFn(dart.fnType(core.Null, [_BufferingStreamSubscriptionOfT()])))();
  let SynchronousStreamControllerOfT = () => (SynchronousStreamControllerOfT = dart.constFn(async.SynchronousStreamController$(T)))();
  class _SyncBroadcastStreamController extends async._BroadcastStreamController$(T) {
    get [_mayAddEvent]() {
      return dart.test(super[_mayAddEvent]) && !dart.test(this[_isFiring]);
    }
    [_addEventError]() {
      if (dart.test(this[_isFiring])) {
        return new core.StateError.new("Cannot fire new event. Controller is already firing an event");
      }
      return super[_addEventError]();
    }
    [_sendData](data) {
      T._check(data);
      if (dart.test(this[_isEmpty])) return;
      if (dart.test(this[_hasOneListener])) {
        this[_state] = (dart.notNull(this[_state]) | async._BroadcastStreamController._STATE_FIRING) >>> 0;
        let subscription = this[_firstSubscription];
        subscription[_add](data);
        this[_state] = (dart.notNull(this[_state]) & ~async._BroadcastStreamController._STATE_FIRING) >>> 0;
        if (dart.test(this[_isEmpty])) {
          this[_callOnCancel]();
        }
        return;
      }
      this[_forEachListener](dart.fn(subscription => {
        subscription[_add](data);
      }, _BufferingStreamSubscriptionOfTToNull()));
    }
    [_sendError](error, stackTrace) {
      if (dart.test(this[_isEmpty])) return;
      this[_forEachListener](dart.fn(subscription => {
        subscription[_addError](error, stackTrace);
      }, _BufferingStreamSubscriptionOfTToNull()));
    }
    [_sendDone]() {
      if (!dart.test(this[_isEmpty])) {
        this[_forEachListener](dart.fn(subscription => {
          subscription[_close]();
        }, _BufferingStreamSubscriptionOfTToNull()));
      } else {
        if (!(this[_doneFuture] != null)) dart.assertFailed();
        if (!dart.test(this[_doneFuture][_mayComplete])) dart.assertFailed();
        this[_doneFuture][_asyncComplete](null);
      }
    }
  }
  (_SyncBroadcastStreamController.new = function(onListen, onCancel) {
    _SyncBroadcastStreamController.__proto__.new.call(this, onListen, onCancel);
  }).prototype = _SyncBroadcastStreamController.prototype;
  dart.addTypeTests(_SyncBroadcastStreamController);
  _SyncBroadcastStreamController.prototype[_is__SyncBroadcastStreamController_default] = true;
  _SyncBroadcastStreamController[dart.implements] = () => [SynchronousStreamControllerOfT()];
  dart.setMethodSignature(_SyncBroadcastStreamController, () => ({
    __proto__: dart.getMethods(_SyncBroadcastStreamController.__proto__),
    [_sendData]: dart.fnType(dart.void, [core.Object]),
    [_sendError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_sendDone]: dart.fnType(dart.void, [])
  }));
  return _SyncBroadcastStreamController;
});
async._SyncBroadcastStreamController = async._SyncBroadcastStreamController$();
dart.addTypeTests(async._SyncBroadcastStreamController, _is__SyncBroadcastStreamController_default);
let const$10;
const _is__AsyncBroadcastStreamController_default = Symbol('_is__AsyncBroadcastStreamController_default');
async._AsyncBroadcastStreamController$ = dart.generic(T => {
  let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
  class _AsyncBroadcastStreamController extends async._BroadcastStreamController$(T) {
    [_sendData](data) {
      T._check(data);
      for (let subscription = this[_firstSubscription]; subscription != null; subscription = subscription[_next$]) {
        subscription[_addPending](new (_DelayedDataOfT()).new(data));
      }
    }
    [_sendError](error, stackTrace) {
      for (let subscription = this[_firstSubscription]; subscription != null; subscription = subscription[_next$]) {
        subscription[_addPending](new async._DelayedError.new(error, stackTrace));
      }
    }
    [_sendDone]() {
      if (!dart.test(this[_isEmpty])) {
        for (let subscription = this[_firstSubscription]; subscription != null; subscription = subscription[_next$]) {
          subscription[_addPending](const$10 || (const$10 = dart.const(new async._DelayedDone.new())));
        }
      } else {
        if (!(this[_doneFuture] != null)) dart.assertFailed();
        if (!dart.test(this[_doneFuture][_mayComplete])) dart.assertFailed();
        this[_doneFuture][_asyncComplete](null);
      }
    }
  }
  (_AsyncBroadcastStreamController.new = function(onListen, onCancel) {
    _AsyncBroadcastStreamController.__proto__.new.call(this, onListen, onCancel);
  }).prototype = _AsyncBroadcastStreamController.prototype;
  dart.addTypeTests(_AsyncBroadcastStreamController);
  _AsyncBroadcastStreamController.prototype[_is__AsyncBroadcastStreamController_default] = true;
  dart.setMethodSignature(_AsyncBroadcastStreamController, () => ({
    __proto__: dart.getMethods(_AsyncBroadcastStreamController.__proto__),
    [_sendData]: dart.fnType(dart.void, [core.Object]),
    [_sendError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_sendDone]: dart.fnType(dart.void, [])
  }));
  return _AsyncBroadcastStreamController;
});
async._AsyncBroadcastStreamController = async._AsyncBroadcastStreamController$();
dart.addTypeTests(async._AsyncBroadcastStreamController, _is__AsyncBroadcastStreamController_default);
const _addPendingEvent = Symbol('_addPendingEvent');
let const$11;
const _is__AsBroadcastStreamController_default = Symbol('_is__AsBroadcastStreamController_default');
async._AsBroadcastStreamController$ = dart.generic(T => {
  let _StreamImplEventsOfT = () => (_StreamImplEventsOfT = dart.constFn(async._StreamImplEvents$(T)))();
  let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  class _AsBroadcastStreamController extends async._SyncBroadcastStreamController$(T) {
    get [_hasPending]() {
      return this[_pending] != null && !dart.test(this[_pending].isEmpty);
    }
    [_addPendingEvent](event) {
      let t = this[_pending];
      t == null ? this[_pending] = new (_StreamImplEventsOfT()).new() : t;
      this[_pending].add(event);
    }
    add(data) {
      T._check(data);
      if (!dart.test(this.isClosed) && dart.test(this[_isFiring])) {
        this[_addPendingEvent](new (_DelayedDataOfT()).new(data));
        return;
      }
      super.add(data);
      while (dart.test(this[_hasPending])) {
        this[_pending].handleNext(this);
      }
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (!dart.test(this.isClosed) && dart.test(this[_isFiring])) {
        this[_addPendingEvent](new async._DelayedError.new(error, stackTrace));
        return;
      }
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_addEventError]());
      this[_sendError](error, stackTrace);
      while (dart.test(this[_hasPending])) {
        this[_pending].handleNext(this);
      }
    }
    close() {
      if (!dart.test(this.isClosed) && dart.test(this[_isFiring])) {
        this[_addPendingEvent](const$11 || (const$11 = dart.const(new async._DelayedDone.new())));
        this[_state] = (dart.notNull(this[_state]) | async._BroadcastStreamController._STATE_CLOSED) >>> 0;
        return super.done;
      }
      let result = super.close();
      if (!!dart.test(this[_hasPending])) dart.assertFailed();
      return result;
    }
    [_callOnCancel]() {
      if (dart.test(this[_hasPending])) {
        this[_pending].clear();
        this[_pending] = null;
      }
      super[_callOnCancel]();
    }
  }
  (_AsBroadcastStreamController.new = function(onListen, onCancel) {
    this[_pending] = null;
    _AsBroadcastStreamController.__proto__.new.call(this, onListen, onCancel);
  }).prototype = _AsBroadcastStreamController.prototype;
  dart.addTypeTests(_AsBroadcastStreamController);
  _AsBroadcastStreamController.prototype[_is__AsBroadcastStreamController_default] = true;
  _AsBroadcastStreamController[dart.implements] = () => [_EventDispatchOfT()];
  dart.setMethodSignature(_AsBroadcastStreamController, () => ({
    __proto__: dart.getMethods(_AsBroadcastStreamController.__proto__),
    [_addPendingEvent]: dart.fnType(dart.void, [async._DelayedEvent]),
    add: dart.fnType(dart.void, [core.Object])
  }));
  dart.setGetterSignature(_AsBroadcastStreamController, () => ({
    __proto__: dart.getGetters(_AsBroadcastStreamController.__proto__),
    [_hasPending]: core.bool
  }));
  dart.setFieldSignature(_AsBroadcastStreamController, () => ({
    __proto__: dart.getFields(_AsBroadcastStreamController.__proto__),
    [_pending]: dart.fieldType(_StreamImplEventsOfT())
  }));
  return _AsBroadcastStreamController;
});
async._AsBroadcastStreamController = async._AsBroadcastStreamController$();
dart.addTypeTests(async._AsBroadcastStreamController, _is__AsBroadcastStreamController_default);
async.DeferredLibrary = class DeferredLibrary extends core.Object {
  get libraryName() {
    return this[libraryName$];
  }
  set libraryName(value) {
    super.libraryName = value;
  }
  get uri() {
    return this[uri$];
  }
  set uri(value) {
    super.uri = value;
  }
  load() {
    dart.throw("DeferredLibrary not supported. " + "please use the `import \"lib.dart\" deferred as lib` syntax.");
  }
};
(async.DeferredLibrary.new = function(libraryName, opts) {
  let uri = opts && 'uri' in opts ? opts.uri : null;
  this[libraryName$] = libraryName;
  this[uri$] = uri;
}).prototype = async.DeferredLibrary.prototype;
dart.addTypeTests(async.DeferredLibrary);
const libraryName$ = Symbol("DeferredLibrary.libraryName");
const uri$ = Symbol("DeferredLibrary.uri");
dart.setMethodSignature(async.DeferredLibrary, () => ({
  __proto__: dart.getMethods(async.DeferredLibrary.__proto__),
  load: dart.fnType(async.Future$(core.Null), [])
}));
dart.setFieldSignature(async.DeferredLibrary, () => ({
  __proto__: dart.getFields(async.DeferredLibrary.__proto__),
  libraryName: dart.finalFieldType(core.String),
  uri: dart.finalFieldType(core.String)
}));
const _s = Symbol('_s');
async.DeferredLoadException = class DeferredLoadException extends core.Object {
  toString() {
    return "DeferredLoadException: '" + dart.str(this[_s]) + "'";
  }
};
(async.DeferredLoadException.new = function(s) {
  this[_s] = s;
}).prototype = async.DeferredLoadException.prototype;
dart.addTypeTests(async.DeferredLoadException);
async.DeferredLoadException[dart.implements] = () => [core.Exception];
dart.setFieldSignature(async.DeferredLoadException, () => ({
  __proto__: dart.getFields(async.DeferredLoadException.__proto__),
  [_s]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(async.DeferredLoadException, ['toString']);
async.FutureOr$ = dart.generic(T => {
  let FutureOfT = () => (FutureOfT = dart.constFn(async.Future$(T)))();
  class FutureOr extends core.Object {}
  (FutureOr.__ = function() {
    dart.throw(new core.UnsupportedError.new("FutureOr can't be instantiated"));
  }).prototype = FutureOr.prototype;
  FutureOr.is = function is_FutureOr(o) {
    return T.is(o) || FutureOfT().is(o);
  };
  FutureOr.as = function as_FutureOr(o) {
    if (o == null || T.is(o) || FutureOfT().is(o)) return o;
    return dart.as(o, this, false);
  };
  FutureOr._check = function check_FutureOr(o) {
    if (o == null || T.is(o) || FutureOfT().is(o)) return o;
    return dart.as(o, this, true);
  };
  return FutureOr;
});
async.FutureOr = async.FutureOr$();
const _asyncCompleteError = Symbol('_asyncCompleteError');
async.Future$ = dart.generic(T => {
  let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
  let FutureOfT = () => (FutureOfT = dart.constFn(async.Future$(T)))();
  class Future extends core.Object {
    static new(computation) {
      let result = new (_FutureOfT()).new();
      async.Timer.run(dart.fn(() => {
        try {
          result[_complete](computation());
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async._completeWithErrorCallback(result, e, s);
        }
      }, VoidToNull()));
      return result;
    }
    static microtask(computation) {
      let result = new (_FutureOfT()).new();
      async.scheduleMicrotask(dart.fn(() => {
        try {
          result[_complete](computation());
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async._completeWithErrorCallback(result, e, s);
        }
      }, VoidToNull()));
      return result;
    }
    static sync(computation) {
      try {
        let result = computation();
        if (FutureOfT().is(result)) {
          return result;
        } else {
          return new (_FutureOfT()).value(T._check(result));
        }
      } catch (e) {
        let error = dart.getThrown(e);
        let stackTrace = dart.stackTrace(e);
        let future = new (_FutureOfT()).new();
        let replacement = async.Zone.current.errorCallback(error, stackTrace);
        if (replacement != null) {
          future[_asyncCompleteError](async._nonNullError(replacement.error), replacement.stackTrace);
        } else {
          future[_asyncCompleteError](error, stackTrace);
        }
        return future;
      }
    }
    static value(value) {
      if (value === void 0) value = null;
      return new (_FutureOfT()).immediate(value);
    }
    static error(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      error = async._nonNullError(error);
      if (!(async.Zone.current === async._rootZone)) {
        let replacement = async.Zone.current.errorCallback(error, stackTrace);
        if (replacement != null) {
          error = async._nonNullError(replacement.error);
          stackTrace = replacement.stackTrace;
        }
      }
      return new (_FutureOfT()).immediateError(error, stackTrace);
    }
    static delayed(duration, computation) {
      if (computation === void 0) computation = null;
      let result = new (_FutureOfT()).new();
      async.Timer.new(duration, dart.fn(() => {
        if (computation == null) {
          result[_complete](null);
        } else {
          try {
            result[_complete](computation());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            async._completeWithErrorCallback(result, e, s);
          }
        }
      }, VoidToNull()));
      return result;
    }
    static wait(T, futures, opts) {
      let eagerError = opts && 'eagerError' in opts ? opts.eagerError : false;
      let cleanUp = opts && 'cleanUp' in opts ? opts.cleanUp : null;
      let result = new (async._Future$(core.List$(T))).new();
      let values = null;
      let remaining = 0;
      let error = null;
      let stackTrace = null;
      function handleError(theError, theStackTrace) {
        remaining--;
        if (values != null) {
          if (cleanUp != null) {
            for (let value of values) {
              if (value != null) {
                FutureOfNull().sync(dart.fn(() => {
                  cleanUp(value);
                }, VoidToNull()));
              }
            }
          }
          values = null;
          if (remaining === 0 || dart.test(eagerError)) {
            result[_completeError](theError, theStackTrace);
          } else {
            error = theError;
            stackTrace = theStackTrace;
          }
        } else if (remaining === 0 && !dart.test(eagerError)) {
          result[_completeError](error, stackTrace);
        }
      }
      dart.fn(handleError, dynamicAndStackTraceToNull());
      try {
        for (let future of futures) {
          let pos = remaining;
          FutureOfNull()._check(future.then(core.Null, dart.fn(value => {
            remaining--;
            if (values != null) {
              values[$_set](pos, value);
              if (remaining === 0) {
                result[_completeWithValue](values);
              }
            } else {
              if (cleanUp != null && value != null) {
                FutureOfNull().sync(dart.fn(() => {
                  cleanUp(value);
                }, VoidToNull()));
              }
              if (remaining === 0 && !dart.test(eagerError)) {
                result[_completeError](error, stackTrace);
              }
            }
          }, dart.fnType(core.Null, [T])), {onError: handleError}));
          remaining++;
        }
        if (remaining === 0) {
          return async.Future$(core.List$(T)).value(dart.constList([], T));
        }
        values = core.List$(T).new(remaining);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let st = dart.stackTrace(e$);
        if (remaining === 0 || dart.test(eagerError)) {
          return async.Future$(core.List$(T)).error(e, st);
        } else {
          error = e;
          stackTrace = st;
        }
      }
      return result;
    }
    static any(T, futures) {
      let completer = async.Completer$(T).sync();
      let onValue = value => {
        if (!dart.test(completer.isCompleted)) completer.complete(value);
      };
      dart.fn(onValue, dart.fnType(core.Null, [T]));
      let onError = (error, stack) => {
        if (!dart.test(completer.isCompleted)) completer.completeError(error, stack);
      };
      dart.fn(onError, dynamicAndStackTraceToNull());
      for (let future of futures) {
        FutureOfNull()._check(future.then(core.Null, onValue, {onError: onError}));
      }
      return completer.future;
    }
    static forEach(T, elements, action) {
      let iterator = elements[$iterator];
      return async.Future.doWhile(dart.fn(() => {
        if (!dart.test(iterator.moveNext())) return false;
        let result = action(iterator.current);
        if (async.Future.is(result)) return FutureOfbool()._check(result.then(core.bool, dart.fn(async.Future._kTrue, dynamicTobool())));
        return true;
      }, VoidToFutureOrOfbool()));
    }
    static _kTrue(_) {
      return true;
    }
    static doWhile(action) {
      let doneSignal = new async._Future.new();
      let nextIteration = null;
      nextIteration = async.Zone.current.bindUnaryCallbackGuarded(core.bool, dart.fn(keepGoing => {
        while (dart.test(keepGoing)) {
          let result = null;
          try {
            result = action();
          } catch (e) {
            let error = dart.getThrown(e);
            let stackTrace = dart.stackTrace(e);
            async._asyncCompleteWithErrorCallback(doneSignal, error, stackTrace);
            return;
          }
          if (FutureOfbool().is(result)) {
            result.then(dart.void, nextIteration, {onError: dart.bind(doneSignal, _completeError)});
            return;
          }
          keepGoing = core.bool._check(result);
        }
        doneSignal[_complete](null);
      }, boolToNull()));
      nextIteration(true);
      return doneSignal;
    }
  }
  (Future[dart.mixinNew] = function() {
  }).prototype = Future.prototype;
  dart.addTypeTests(Future);
  Future.prototype[dart.isFuture] = true;
  return Future;
});
async.Future = async.Future$();
dart.defineLazy(async.Future, {
  /*async.Future._nullFuture*/get _nullFuture() {
    return new (_FutureOfNull()).zoneValue(null, async.Zone.root);
  },
  /*async.Future._falseFuture*/get _falseFuture() {
    return new (_FutureOfbool()).zoneValue(false, async.Zone.root);
  }
});
dart.addTypeTests(async.Future, dart.isFuture);
async.TimeoutException = class TimeoutException extends core.Object {
  get message() {
    return this[message$0];
  }
  set message(value) {
    super.message = value;
  }
  get duration() {
    return this[duration$];
  }
  set duration(value) {
    super.duration = value;
  }
  toString() {
    let result = "TimeoutException";
    if (this.duration != null) result = "TimeoutException after " + dart.str(this.duration);
    if (this.message != null) result = result + ": " + dart.str(this.message);
    return result;
  }
};
(async.TimeoutException.new = function(message, duration) {
  if (duration === void 0) duration = null;
  this[message$0] = message;
  this[duration$] = duration;
}).prototype = async.TimeoutException.prototype;
dart.addTypeTests(async.TimeoutException);
const message$0 = Symbol("TimeoutException.message");
const duration$ = Symbol("TimeoutException.duration");
async.TimeoutException[dart.implements] = () => [core.Exception];
dart.setFieldSignature(async.TimeoutException, () => ({
  __proto__: dart.getFields(async.TimeoutException.__proto__),
  message: dart.finalFieldType(core.String),
  duration: dart.finalFieldType(core.Duration)
}));
dart.defineExtensionMethods(async.TimeoutException, ['toString']);
const _is_Completer_default = Symbol('_is_Completer_default');
async.Completer$ = dart.generic(T => {
  let _AsyncCompleterOfT = () => (_AsyncCompleterOfT = dart.constFn(async._AsyncCompleter$(T)))();
  let _SyncCompleterOfT = () => (_SyncCompleterOfT = dart.constFn(async._SyncCompleter$(T)))();
  class Completer extends core.Object {
    static new() {
      return new (_AsyncCompleterOfT()).new();
    }
    static sync() {
      return new (_SyncCompleterOfT()).new();
    }
  }
  (Completer[dart.mixinNew] = function() {
  }).prototype = Completer.prototype;
  dart.addTypeTests(Completer);
  Completer.prototype[_is_Completer_default] = true;
  return Completer;
});
async.Completer = async.Completer$();
dart.addTypeTests(async.Completer, _is_Completer_default);
async._completeWithErrorCallback = function(result, error, stackTrace) {
  let replacement = async.Zone.current.errorCallback(error, stackTrace);
  if (replacement != null) {
    error = async._nonNullError(replacement.error);
    stackTrace = replacement.stackTrace;
  }
  result[_completeError](error, stackTrace);
};
async._asyncCompleteWithErrorCallback = function(result, error, stackTrace) {
  let replacement = async.Zone.current.errorCallback(error, stackTrace);
  if (replacement != null) {
    error = async._nonNullError(replacement.error);
    stackTrace = replacement.stackTrace;
  }
  result[_asyncCompleteError](error, stackTrace);
};
async._nonNullError = function(error) {
  return error != null ? error : new core.NullThrownError.new();
};
const _is__Completer_default = Symbol('_is__Completer_default');
async._Completer$ = dart.generic(T => {
  let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
  let CompleterOfT = () => (CompleterOfT = dart.constFn(async.Completer$(T)))();
  class _Completer extends core.Object {
    completeError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      error = async._nonNullError(error);
      if (!dart.test(this.future[_mayComplete])) dart.throw(new core.StateError.new("Future already completed"));
      let replacement = async.Zone.current.errorCallback(error, stackTrace);
      if (replacement != null) {
        error = async._nonNullError(replacement.error);
        stackTrace = replacement.stackTrace;
      }
      this[_completeError](error, stackTrace);
    }
    get isCompleted() {
      return !dart.test(this.future[_mayComplete]);
    }
  }
  (_Completer.new = function() {
    this.future = new (_FutureOfT()).new();
  }).prototype = _Completer.prototype;
  dart.addTypeTests(_Completer);
  _Completer.prototype[_is__Completer_default] = true;
  _Completer[dart.implements] = () => [CompleterOfT()];
  dart.setMethodSignature(_Completer, () => ({
    __proto__: dart.getMethods(_Completer.__proto__),
    completeError: dart.fnType(dart.void, [core.Object], [core.StackTrace])
  }));
  dart.setGetterSignature(_Completer, () => ({
    __proto__: dart.getGetters(_Completer.__proto__),
    isCompleted: core.bool
  }));
  dart.setFieldSignature(_Completer, () => ({
    __proto__: dart.getFields(_Completer.__proto__),
    future: dart.finalFieldType(_FutureOfT())
  }));
  return _Completer;
});
async._Completer = async._Completer$();
dart.addTypeTests(async._Completer, _is__Completer_default);
const _is__AsyncCompleter_default = Symbol('_is__AsyncCompleter_default');
async._AsyncCompleter$ = dart.generic(T => {
  let FutureOrOfT = () => (FutureOrOfT = dart.constFn(async.FutureOr$(T)))();
  class _AsyncCompleter extends async._Completer$(T) {
    complete(value) {
      if (value === void 0) value = null;
      FutureOrOfT()._check(value);
      if (!dart.test(this.future[_mayComplete])) dart.throw(new core.StateError.new("Future already completed"));
      this.future[_asyncComplete](value);
    }
    [_completeError](error, stackTrace) {
      this.future[_asyncCompleteError](error, stackTrace);
    }
  }
  (_AsyncCompleter.new = function() {
    _AsyncCompleter.__proto__.new.call(this);
  }).prototype = _AsyncCompleter.prototype;
  dart.addTypeTests(_AsyncCompleter);
  _AsyncCompleter.prototype[_is__AsyncCompleter_default] = true;
  dart.setMethodSignature(_AsyncCompleter, () => ({
    __proto__: dart.getMethods(_AsyncCompleter.__proto__),
    complete: dart.fnType(dart.void, [], [core.Object]),
    [_completeError]: dart.fnType(dart.void, [core.Object, core.StackTrace])
  }));
  return _AsyncCompleter;
});
async._AsyncCompleter = async._AsyncCompleter$();
dart.addTypeTests(async._AsyncCompleter, _is__AsyncCompleter_default);
const _is__SyncCompleter_default = Symbol('_is__SyncCompleter_default');
async._SyncCompleter$ = dart.generic(T => {
  let FutureOrOfT = () => (FutureOrOfT = dart.constFn(async.FutureOr$(T)))();
  class _SyncCompleter extends async._Completer$(T) {
    complete(value) {
      if (value === void 0) value = null;
      FutureOrOfT()._check(value);
      if (!dart.test(this.future[_mayComplete])) dart.throw(new core.StateError.new("Future already completed"));
      this.future[_complete](value);
    }
    [_completeError](error, stackTrace) {
      this.future[_completeError](error, stackTrace);
    }
  }
  (_SyncCompleter.new = function() {
    _SyncCompleter.__proto__.new.call(this);
  }).prototype = _SyncCompleter.prototype;
  dart.addTypeTests(_SyncCompleter);
  _SyncCompleter.prototype[_is__SyncCompleter_default] = true;
  dart.setMethodSignature(_SyncCompleter, () => ({
    __proto__: dart.getMethods(_SyncCompleter.__proto__),
    complete: dart.fnType(dart.void, [], [core.Object]),
    [_completeError]: dart.fnType(dart.void, [core.Object, core.StackTrace])
  }));
  return _SyncCompleter;
});
async._SyncCompleter = async._SyncCompleter$();
dart.addTypeTests(async._SyncCompleter, _is__SyncCompleter_default);
const _nextListener = Symbol('_nextListener');
const _onValue = Symbol('_onValue');
const _errorTest = Symbol('_errorTest');
const _whenCompleteAction = Symbol('_whenCompleteAction');
const _is__FutureListener_default = Symbol('_is__FutureListener_default');
async._FutureListener$ = dart.generic((S, T) => {
  let SToFutureOrOfT = () => (SToFutureOrOfT = dart.constFn(dart.fnType(FutureOrOfT(), [S])))();
  let FutureOrOfT = () => (FutureOrOfT = dart.constFn(async.FutureOr$(T)))();
  let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
  class _FutureListener extends core.Object {
    get [_zone$]() {
      return this.result[_zone$];
    }
    get handlesValue() {
      return (dart.notNull(this.state) & 1) !== 0;
    }
    get handlesError() {
      return (dart.notNull(this.state) & 2) !== 0;
    }
    get hasErrorTest() {
      return this.state === 6;
    }
    get handlesComplete() {
      return this.state === 8;
    }
    get [_onValue]() {
      if (!dart.test(this.handlesValue)) dart.assertFailed();
      return SToFutureOrOfT()._check(this.callback);
    }
    get [_onError]() {
      return this.errorCallback;
    }
    get [_errorTest]() {
      if (!dart.test(this.hasErrorTest)) dart.assertFailed();
      return ObjectTobool()._check(this.callback);
    }
    get [_whenCompleteAction]() {
      if (!dart.test(this.handlesComplete)) dart.assertFailed();
      return VoidTodynamic()._check(this.callback);
    }
    get hasErrorCallback() {
      if (!dart.test(this.handlesError)) dart.assertFailed();
      return this[_onError] != null;
    }
    handleValue(sourceResult) {
      S._check(sourceResult);
      return this[_zone$].runUnary(FutureOrOfT(), S, this[_onValue], sourceResult);
    }
    matchesErrorTest(asyncError) {
      if (!dart.test(this.hasErrorTest)) return true;
      return this[_zone$].runUnary(core.bool, core.Object, this[_errorTest], asyncError.error);
    }
    handleError(asyncError) {
      if (!(dart.test(this.handlesError) && dart.test(this.hasErrorCallback))) dart.assertFailed();
      let errorCallback = this.errorCallback;
      if (ObjectAndStackTraceTodynamic().is(errorCallback)) {
        return FutureOrOfT()._check(this[_zone$].runBinary(dart.dynamic, core.Object, core.StackTrace, errorCallback, asyncError.error, asyncError.stackTrace));
      } else {
        if (!ObjectTodynamic().is(errorCallback)) dart.assertFailed();
        return FutureOrOfT()._check(this[_zone$].runUnary(dart.dynamic, core.Object, ObjectTodynamic()._check(errorCallback), asyncError.error));
      }
    }
    handleWhenComplete() {
      if (!!dart.test(this.handlesError)) dart.assertFailed();
      return this[_zone$].run(dart.dynamic, this[_whenCompleteAction]);
    }
  }
  (_FutureListener.then = function(result, onValue, errorCallback) {
    this[_nextListener] = null;
    this.result = result;
    this.callback = onValue;
    this.errorCallback = errorCallback;
    this.state = errorCallback == null ? 1 : 3;
  }).prototype = _FutureListener.prototype;
  (_FutureListener.catchError = function(result, errorCallback, callback) {
    this[_nextListener] = null;
    this.result = result;
    this.errorCallback = errorCallback;
    this.callback = callback;
    this.state = callback == null ? 2 : 6;
  }).prototype = _FutureListener.prototype;
  (_FutureListener.whenComplete = function(result, callback) {
    this[_nextListener] = null;
    this.result = result;
    this.callback = callback;
    this.errorCallback = null;
    this.state = 8;
  }).prototype = _FutureListener.prototype;
  dart.addTypeTests(_FutureListener);
  _FutureListener.prototype[_is__FutureListener_default] = true;
  dart.setMethodSignature(_FutureListener, () => ({
    __proto__: dart.getMethods(_FutureListener.__proto__),
    handleValue: dart.fnType(async.FutureOr$(T), [core.Object]),
    matchesErrorTest: dart.fnType(core.bool, [async.AsyncError]),
    handleError: dart.fnType(async.FutureOr$(T), [async.AsyncError]),
    handleWhenComplete: dart.fnType(dart.dynamic, [])
  }));
  dart.setGetterSignature(_FutureListener, () => ({
    __proto__: dart.getGetters(_FutureListener.__proto__),
    [_zone$]: async.Zone,
    handlesValue: core.bool,
    handlesError: core.bool,
    hasErrorTest: core.bool,
    handlesComplete: core.bool,
    [_onValue]: dart.fnType(async.FutureOr$(T), [S]),
    [_onError]: core.Function,
    [_errorTest]: dart.fnType(core.bool, [core.Object]),
    [_whenCompleteAction]: dart.fnType(dart.dynamic, []),
    hasErrorCallback: core.bool
  }));
  dart.setFieldSignature(_FutureListener, () => ({
    __proto__: dart.getFields(_FutureListener.__proto__),
    [_nextListener]: dart.fieldType(async._FutureListener),
    result: dart.finalFieldType(_FutureOfT()),
    state: dart.finalFieldType(core.int),
    callback: dart.finalFieldType(core.Function),
    errorCallback: dart.finalFieldType(core.Function)
  }));
  return _FutureListener;
});
async._FutureListener = async._FutureListener$();
dart.defineLazy(async._FutureListener, {
  /*async._FutureListener.maskValue*/get maskValue() {
    return 1;
  },
  /*async._FutureListener.maskError*/get maskError() {
    return 2;
  },
  /*async._FutureListener.maskTestError*/get maskTestError() {
    return 4;
  },
  /*async._FutureListener.maskWhencomplete*/get maskWhencomplete() {
    return 8;
  },
  /*async._FutureListener.stateChain*/get stateChain() {
    return 0;
  },
  /*async._FutureListener.stateThen*/get stateThen() {
    return 1;
  },
  /*async._FutureListener.stateThenOnerror*/get stateThenOnerror() {
    return 1 | 2;
  },
  /*async._FutureListener.stateCatcherror*/get stateCatcherror() {
    return 2;
  },
  /*async._FutureListener.stateCatcherrorTest*/get stateCatcherrorTest() {
    return 2 | 4;
  },
  /*async._FutureListener.stateWhencomplete*/get stateWhencomplete() {
    return 8;
  }
});
dart.addTypeTests(async._FutureListener, _is__FutureListener_default);
const _resultOrListeners = Symbol('_resultOrListeners');
const _setValue = Symbol('_setValue');
const _isPendingComplete = Symbol('_isPendingComplete');
const _mayAddListener = Symbol('_mayAddListener');
const _isChained = Symbol('_isChained');
const _isComplete = Symbol('_isComplete');
const _hasError = Symbol('_hasError');
const _setChained = Symbol('_setChained');
const _setPendingComplete = Symbol('_setPendingComplete');
const _clearPendingComplete = Symbol('_clearPendingComplete');
const _error = Symbol('_error');
const _chainSource = Symbol('_chainSource');
const _setErrorObject = Symbol('_setErrorObject');
const _setError = Symbol('_setError');
const _cloneResult = Symbol('_cloneResult');
const _prependListeners = Symbol('_prependListeners');
const _reverseListeners = Symbol('_reverseListeners');
const _removeListeners = Symbol('_removeListeners');
const _chainFuture = Symbol('_chainFuture');
const _is__Future_default = Symbol('_is__Future_default');
async._Future$ = dart.generic(T => {
  let _FutureOfT = () => (_FutureOfT = dart.constFn(async._Future$(T)))();
  let _FutureListenerOfT$T = () => (_FutureListenerOfT$T = dart.constFn(async._FutureListener$(T, T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let FutureOrOfT = () => (FutureOrOfT = dart.constFn(async.FutureOr$(T)))();
  let FutureOfT = () => (FutureOfT = dart.constFn(async.Future$(T)))();
  let VoidToFutureOrOfT = () => (VoidToFutureOrOfT = dart.constFn(dart.fnType(FutureOrOfT(), [])))();
  let TToNull = () => (TToNull = dart.constFn(dart.fnType(core.Null, [T])))();
  class _Future extends core.Object {
    get [_mayComplete]() {
      return this[_state] === 0;
    }
    get [_isPendingComplete]() {
      return this[_state] === 1;
    }
    get [_mayAddListener]() {
      return dart.notNull(this[_state]) <= 1;
    }
    get [_isChained]() {
      return this[_state] === 2;
    }
    get [_isComplete]() {
      return dart.notNull(this[_state]) >= 4;
    }
    get [_hasError]() {
      return this[_state] === 8;
    }
    [_setChained](source) {
      if (!dart.test(this[_mayAddListener])) dart.assertFailed();
      this[_state] = 2;
      this[_resultOrListeners] = source;
    }
    then(R, f, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let currentZone = async.Zone.current;
      if (!(currentZone === async._rootZone)) {
        f = currentZone.registerUnaryCallback(async.FutureOr$(R), T, f);
        if (onError != null) {
          onError = async._registerErrorHandler(onError, currentZone);
        }
      }
      return this[_thenNoZoneRegistration](R, f, onError);
    }
    [_thenNoZoneRegistration](E, f, onError) {
      let result = new (async._Future$(E)).new();
      this[_addListener](new (async._FutureListener$(T, E)).then(result, f, onError));
      return result;
    }
    catchError(onError, opts) {
      let test = opts && 'test' in opts ? opts.test : null;
      let result = new (_FutureOfT()).new();
      if (!(result[_zone$] === async._rootZone)) {
        onError = async._registerErrorHandler(onError, result[_zone$]);
        if (test != null) test = result[_zone$].registerUnaryCallback(core.bool, dart.dynamic, test);
      }
      this[_addListener](new (_FutureListenerOfT$T()).catchError(result, onError, test));
      return result;
    }
    whenComplete(action) {
      let result = new (_FutureOfT()).new();
      if (!(result[_zone$] === async._rootZone)) {
        action = result[_zone$].registerCallback(dart.dynamic, action);
      }
      this[_addListener](new (_FutureListenerOfT$T()).whenComplete(result, action));
      return result;
    }
    asStream() {
      return StreamOfT().fromFuture(this);
    }
    [_setPendingComplete]() {
      if (!dart.test(this[_mayComplete])) dart.assertFailed();
      this[_state] = 1;
    }
    [_clearPendingComplete]() {
      if (!dart.test(this[_isPendingComplete])) dart.assertFailed();
      this[_state] = 0;
    }
    get [_error]() {
      if (!dart.test(this[_hasError])) dart.assertFailed();
      return async.AsyncError._check(this[_resultOrListeners]);
    }
    get [_chainSource]() {
      if (!dart.test(this[_isChained])) dart.assertFailed();
      return async._Future._check(this[_resultOrListeners]);
    }
    [_setValue](value) {
      T._check(value);
      if (!!dart.test(this[_isComplete])) dart.assertFailed();
      this[_state] = 4;
      this[_resultOrListeners] = value;
    }
    [_setErrorObject](error) {
      if (!!dart.test(this[_isComplete])) dart.assertFailed();
      this[_state] = 8;
      this[_resultOrListeners] = error;
    }
    [_setError](error, stackTrace) {
      this[_setErrorObject](new async.AsyncError.new(error, stackTrace));
    }
    [_cloneResult](source) {
      if (!!dart.test(this[_isComplete])) dart.assertFailed();
      if (!dart.test(source[_isComplete])) dart.assertFailed();
      this[_state] = source[_state];
      this[_resultOrListeners] = source[_resultOrListeners];
    }
    [_addListener](listener) {
      if (!(listener[_nextListener] == null)) dart.assertFailed();
      if (dart.test(this[_mayAddListener])) {
        listener[_nextListener] = async._FutureListener._check(this[_resultOrListeners]);
        this[_resultOrListeners] = listener;
      } else {
        if (dart.test(this[_isChained])) {
          let source = this[_chainSource];
          if (!dart.test(source[_isComplete])) {
            source[_addListener](listener);
            return;
          }
          this[_cloneResult](source);
        }
        if (!dart.test(this[_isComplete])) dart.assertFailed();
        this[_zone$].scheduleMicrotask(dart.fn(() => {
          async._Future._propagateToListeners(this, listener);
        }, VoidToNull()));
      }
    }
    [_prependListeners](listeners) {
      if (listeners == null) return;
      if (dart.test(this[_mayAddListener])) {
        let existingListeners = async._FutureListener._check(this[_resultOrListeners]);
        this[_resultOrListeners] = listeners;
        if (existingListeners != null) {
          let cursor = listeners;
          while (cursor[_nextListener] != null) {
            cursor = cursor[_nextListener];
          }
          cursor[_nextListener] = existingListeners;
        }
      } else {
        if (dart.test(this[_isChained])) {
          let source = this[_chainSource];
          if (!dart.test(source[_isComplete])) {
            source[_prependListeners](listeners);
            return;
          }
          this[_cloneResult](source);
        }
        if (!dart.test(this[_isComplete])) dart.assertFailed();
        listeners = this[_reverseListeners](listeners);
        this[_zone$].scheduleMicrotask(dart.fn(() => {
          async._Future._propagateToListeners(this, listeners);
        }, VoidToNull()));
      }
    }
    [_removeListeners]() {
      if (!!dart.test(this[_isComplete])) dart.assertFailed();
      let current = async._FutureListener._check(this[_resultOrListeners]);
      this[_resultOrListeners] = null;
      return this[_reverseListeners](current);
    }
    [_reverseListeners](listeners) {
      let prev = null;
      let current = listeners;
      while (current != null) {
        let next = current[_nextListener];
        current[_nextListener] = prev;
        prev = current;
        current = next;
      }
      return prev;
    }
    static _chainForeignFuture(source, target) {
      if (!!dart.test(target[_isComplete])) dart.assertFailed();
      if (!!async._Future.is(source)) dart.assertFailed();
      target[_setPendingComplete]();
      try {
        FutureOfNull()._check(source.then(core.Null, dart.fn(value => {
          if (!dart.test(target[_isPendingComplete])) dart.assertFailed();
          target[_clearPendingComplete]();
          target[_complete](value);
        }, dynamicToNull()), {onError: dart.fn((error, stackTrace) => {
            if (stackTrace === void 0) stackTrace = null;
            if (!dart.test(target[_isPendingComplete])) dart.assertFailed();
            target[_completeError](error, stackTrace);
          }, dynamic__ToNull())}));
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        async.scheduleMicrotask(dart.fn(() => {
          target[_completeError](e, s);
        }, VoidToNull()));
      }
    }
    static _chainCoreFuture(source, target) {
      if (!dart.test(target[_mayAddListener])) dart.assertFailed();
      while (dart.test(source[_isChained])) {
        source = source[_chainSource];
      }
      if (dart.test(source[_isComplete])) {
        let listeners = target[_removeListeners]();
        target[_cloneResult](source);
        async._Future._propagateToListeners(target, listeners);
      } else {
        let listeners = async._FutureListener._check(target[_resultOrListeners]);
        target[_setChained](source);
        source[_prependListeners](listeners);
      }
    }
    [_complete](value) {
      FutureOrOfT()._check(value);
      if (!!dart.test(this[_isComplete])) dart.assertFailed();
      if (FutureOfT().is(value)) {
        if (_FutureOfT().is(value)) {
          async._Future._chainCoreFuture(value, this);
        } else {
          async._Future._chainForeignFuture(value, this);
        }
      } else {
        let listeners = this[_removeListeners]();
        this[_setValue](T._check(value));
        async._Future._propagateToListeners(this, listeners);
      }
    }
    [_completeWithValue](value) {
      T._check(value);
      if (!!dart.test(this[_isComplete])) dart.assertFailed();
      if (!!FutureOfT().is(value)) dart.assertFailed();
      let listeners = this[_removeListeners]();
      this[_setValue](value);
      async._Future._propagateToListeners(this, listeners);
    }
    [_completeError](error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (!!dart.test(this[_isComplete])) dart.assertFailed();
      let listeners = this[_removeListeners]();
      this[_setError](error, stackTrace);
      async._Future._propagateToListeners(this, listeners);
    }
    [_asyncComplete](value) {
      FutureOrOfT()._check(value);
      if (!!dart.test(this[_isComplete])) dart.assertFailed();
      if (FutureOfT().is(value)) {
        this[_chainFuture](value);
        return;
      }
      this[_setPendingComplete]();
      this[_zone$].scheduleMicrotask(dart.fn(() => {
        this[_completeWithValue](T._check(value));
      }, VoidToNull()));
    }
    [_chainFuture](value) {
      FutureOfT()._check(value);
      if (_FutureOfT().is(value)) {
        if (dart.test(value[_hasError])) {
          this[_setPendingComplete]();
          this[_zone$].scheduleMicrotask(dart.fn(() => {
            async._Future._chainCoreFuture(value, this);
          }, VoidToNull()));
        } else {
          async._Future._chainCoreFuture(value, this);
        }
        return;
      }
      async._Future._chainForeignFuture(value, this);
    }
    [_asyncCompleteError](error, stackTrace) {
      if (!!dart.test(this[_isComplete])) dart.assertFailed();
      this[_setPendingComplete]();
      this[_zone$].scheduleMicrotask(dart.fn(() => {
        this[_completeError](error, stackTrace);
      }, VoidToNull()));
    }
    static _propagateToListeners(source, listeners) {
      while (true) {
        if (!dart.test(source[_isComplete])) dart.assertFailed();
        let hasError = source[_hasError];
        if (listeners == null) {
          if (dart.test(hasError)) {
            let asyncError = source[_error];
            source[_zone$].handleUncaughtError(asyncError.error, asyncError.stackTrace);
          }
          return;
        }
        while (listeners[_nextListener] != null) {
          let listener = listeners;
          listeners = listener[_nextListener];
          listener[_nextListener] = null;
          async._Future._propagateToListeners(source, listener);
        }
        let listener = listeners;
        let sourceResult = source[_resultOrListeners];
        let listenerHasError = hasError;
        let listenerValueOrError = sourceResult;
        if (dart.test(hasError) || dart.test(listener.handlesValue) || dart.test(listener.handlesComplete)) {
          let zone = listener[_zone$];
          if (dart.test(hasError) && !dart.test(source[_zone$].inSameErrorZone(zone))) {
            let asyncError = source[_error];
            source[_zone$].handleUncaughtError(asyncError.error, asyncError.stackTrace);
            return;
          }
          let oldZone = null;
          if (!(async.Zone.current == zone)) {
            oldZone = async.Zone._enter(zone);
          }
          function handleWhenCompleteCallback() {
            if (!!dart.test(listener.handlesValue)) dart.assertFailed();
            if (!!dart.test(listener.handlesError)) dart.assertFailed();
            let completeResult = null;
            try {
              completeResult = listener.handleWhenComplete();
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              if (dart.test(hasError) && core.identical(source[_error].error, e)) {
                listenerValueOrError = source[_error];
              } else {
                listenerValueOrError = new async.AsyncError.new(e, s);
              }
              listenerHasError = true;
              return;
            }
            if (async.Future.is(completeResult)) {
              if (async._Future.is(completeResult) && dart.test(completeResult[_isComplete])) {
                if (dart.test(completeResult[_hasError])) {
                  listenerValueOrError = completeResult[_error];
                  listenerHasError = true;
                }
                return;
              }
              let originalSource = source;
              listenerValueOrError = completeResult.then(dart.dynamic, dart.fn(_ => originalSource, dynamicTo_Future()));
              listenerHasError = false;
            }
          }
          dart.fn(handleWhenCompleteCallback, VoidTovoid());
          function handleValueCallback() {
            try {
              listenerValueOrError = listener.handleValue(sourceResult);
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              listenerValueOrError = new async.AsyncError.new(e, s);
              listenerHasError = true;
            }
          }
          dart.fn(handleValueCallback, VoidTovoid());
          function handleError() {
            try {
              let asyncError = source[_error];
              if (dart.test(listener.matchesErrorTest(asyncError)) && dart.test(listener.hasErrorCallback)) {
                listenerValueOrError = listener.handleError(asyncError);
                listenerHasError = false;
              }
            } catch (e$) {
              let e = dart.getThrown(e$);
              let s = dart.stackTrace(e$);
              if (core.identical(source[_error].error, e)) {
                listenerValueOrError = source[_error];
              } else {
                listenerValueOrError = new async.AsyncError.new(e, s);
              }
              listenerHasError = true;
            }
          }
          dart.fn(handleError, VoidTovoid());
          if (dart.test(listener.handlesComplete)) {
            handleWhenCompleteCallback();
          } else if (!dart.test(hasError)) {
            if (dart.test(listener.handlesValue)) {
              handleValueCallback();
            }
          } else {
            if (dart.test(listener.handlesError)) {
              handleError();
            }
          }
          if (oldZone != null) async.Zone._leave(oldZone);
          if (async.Future.is(listenerValueOrError)) {
            let chainSource = async.Future._check(listenerValueOrError);
            let result = listener.result;
            if (async._Future.is(chainSource)) {
              if (dart.test(chainSource[_isComplete])) {
                listeners = result[_removeListeners]();
                result[_cloneResult](chainSource);
                source = chainSource;
                continue;
              } else {
                async._Future._chainCoreFuture(chainSource, result);
              }
            } else {
              async._Future._chainForeignFuture(chainSource, result);
            }
            return;
          }
        }
        let result = listener.result;
        listeners = result[_removeListeners]();
        if (!dart.test(listenerHasError)) {
          result[_setValue](listenerValueOrError);
        } else {
          let asyncError = async.AsyncError._check(listenerValueOrError);
          result[_setErrorObject](asyncError);
        }
        source = result;
      }
    }
    timeout(timeLimit, opts) {
      let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null;
      VoidToFutureOrOfT()._check(onTimeout);
      if (dart.test(this[_isComplete])) return new (_FutureOfT()).immediate(this);
      let result = new (_FutureOfT()).new();
      let timer = null;
      if (onTimeout == null) {
        timer = async.Timer.new(timeLimit, dart.fn(() => {
          result[_completeError](new async.TimeoutException.new("Future not completed", timeLimit));
        }, VoidToNull()));
      } else {
        let zone = async.Zone.current;
        onTimeout = zone.registerCallback(FutureOrOfT(), onTimeout);
        timer = async.Timer.new(timeLimit, dart.fn(() => {
          try {
            result[_complete](zone.run(FutureOrOfT(), onTimeout));
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            result[_completeError](e, s);
          }
        }, VoidToNull()));
      }
      this.then(core.Null, dart.fn(v => {
        if (dart.test(timer.isActive)) {
          timer.cancel();
          result[_completeWithValue](v);
        }
      }, TToNull()), {onError: dart.fn((e, s) => {
          if (dart.test(timer.isActive)) {
            timer.cancel();
            result[_completeError](e, s);
          }
        }, dynamicAndStackTraceToNull())});
      return result;
    }
  }
  (_Future.new = function() {
    this[_state] = 0;
    this[_resultOrListeners] = null;
    this[_zone$] = async.Zone.current;
  }).prototype = _Future.prototype;
  (_Future.immediate = function(result) {
    this[_state] = 0;
    this[_resultOrListeners] = null;
    this[_zone$] = async.Zone.current;
    this[_asyncComplete](result);
  }).prototype = _Future.prototype;
  (_Future.zoneValue = function(value, zone) {
    this[_state] = 0;
    this[_resultOrListeners] = null;
    this[_zone$] = zone;
    this[_setValue](value);
  }).prototype = _Future.prototype;
  (_Future.immediateError = function(error, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    this[_state] = 0;
    this[_resultOrListeners] = null;
    this[_zone$] = async.Zone.current;
    this[_asyncCompleteError](error, stackTrace);
  }).prototype = _Future.prototype;
  (_Future.value = function(value) {
    _Future.zoneValue.call(this, value, async.Zone.current);
  }).prototype = _Future.prototype;
  _Future.prototype[dart.isFuture] = true;
  dart.addTypeTests(_Future);
  _Future.prototype[_is__Future_default] = true;
  _Future[dart.implements] = () => [FutureOfT()];
  dart.setMethodSignature(_Future, () => ({
    __proto__: dart.getMethods(_Future.__proto__),
    [_setChained]: dart.fnType(dart.void, [async._Future]),
    then: dart.gFnType(R => [async.Future$(R), [dart.fnType(async.FutureOr$(R), [T])], {onError: core.Function}]),
    [_thenNoZoneRegistration]: dart.gFnType(E => [async.Future$(E), [dart.fnType(async.FutureOr$(E), [T]), core.Function]]),
    catchError: dart.fnType(async.Future$(T), [core.Function], {test: dart.fnType(core.bool, [dart.dynamic])}),
    whenComplete: dart.fnType(async.Future$(T), [dart.fnType(dart.dynamic, [])]),
    asStream: dart.fnType(async.Stream$(T), []),
    [_setPendingComplete]: dart.fnType(dart.void, []),
    [_clearPendingComplete]: dart.fnType(dart.void, []),
    [_setValue]: dart.fnType(dart.void, [core.Object]),
    [_setErrorObject]: dart.fnType(dart.void, [async.AsyncError]),
    [_setError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_cloneResult]: dart.fnType(dart.void, [async._Future]),
    [_addListener]: dart.fnType(dart.void, [async._FutureListener]),
    [_prependListeners]: dart.fnType(dart.void, [async._FutureListener]),
    [_removeListeners]: dart.fnType(async._FutureListener, []),
    [_reverseListeners]: dart.fnType(async._FutureListener, [async._FutureListener]),
    [_complete]: dart.fnType(dart.void, [core.Object]),
    [_completeWithValue]: dart.fnType(dart.void, [core.Object]),
    [_completeError]: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    [_asyncComplete]: dart.fnType(dart.void, [core.Object]),
    [_chainFuture]: dart.fnType(dart.void, [core.Object]),
    [_asyncCompleteError]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace]),
    timeout: dart.fnType(async.Future$(T), [core.Duration], {onTimeout: core.Object})
  }));
  dart.setGetterSignature(_Future, () => ({
    __proto__: dart.getGetters(_Future.__proto__),
    [_mayComplete]: core.bool,
    [_isPendingComplete]: core.bool,
    [_mayAddListener]: core.bool,
    [_isChained]: core.bool,
    [_isComplete]: core.bool,
    [_hasError]: core.bool,
    [_error]: async.AsyncError,
    [_chainSource]: async._Future
  }));
  dart.setFieldSignature(_Future, () => ({
    __proto__: dart.getFields(_Future.__proto__),
    [_state]: dart.fieldType(core.int),
    [_zone$]: dart.finalFieldType(async.Zone),
    [_resultOrListeners]: dart.fieldType(dart.dynamic)
  }));
  return _Future;
});
async._Future = async._Future$();
dart.defineLazy(async._Future, {
  /*async._Future._stateIncomplete*/get _stateIncomplete() {
    return 0;
  },
  /*async._Future._statePendingComplete*/get _statePendingComplete() {
    return 1;
  },
  /*async._Future._stateChained*/get _stateChained() {
    return 2;
  },
  /*async._Future._stateValue*/get _stateValue() {
    return 4;
  },
  /*async._Future._stateError*/get _stateError() {
    return 8;
  }
});
dart.addTypeTests(async._Future, _is__Future_default);
async._registerErrorHandler = function(errorHandler, zone) {
  if (ObjectAndStackTraceTodynamic().is(errorHandler)) {
    return zone.registerBinaryCallback(dart.dynamic, core.Object, core.StackTrace, errorHandler);
  }
  if (ObjectTodynamic().is(errorHandler)) {
    return zone.registerUnaryCallback(dart.dynamic, core.Object, errorHandler);
  }
  dart.throw(new core.ArgumentError.value(errorHandler, "onError", "Error handler must accept one Object or one Object and a StackTrace" + " as arguments, and return a a valid result"));
};
async._AsyncCallbackEntry = class _AsyncCallbackEntry extends core.Object {};
(async._AsyncCallbackEntry.new = function(callback) {
  this.next = null;
  this.callback = callback;
}).prototype = async._AsyncCallbackEntry.prototype;
dart.addTypeTests(async._AsyncCallbackEntry);
dart.setFieldSignature(async._AsyncCallbackEntry, () => ({
  __proto__: dart.getFields(async._AsyncCallbackEntry.__proto__),
  callback: dart.finalFieldType(VoidTovoid()),
  next: dart.fieldType(async._AsyncCallbackEntry)
}));
dart.defineLazy(async, {
  /*async._nextCallback*/get _nextCallback() {
    return null;
  },
  set _nextCallback(_) {},
  /*async._lastCallback*/get _lastCallback() {
    return null;
  },
  set _lastCallback(_) {},
  /*async._lastPriorityCallback*/get _lastPriorityCallback() {
    return null;
  },
  set _lastPriorityCallback(_) {},
  /*async._isInCallbackLoop*/get _isInCallbackLoop() {
    return false;
  },
  set _isInCallbackLoop(_) {}
});
async._microtaskLoop = function() {
  while (async._nextCallback != null) {
    async._lastPriorityCallback = null;
    let entry = async._nextCallback;
    async._nextCallback = entry.next;
    if (async._nextCallback == null) async._lastCallback = null;
    entry.callback();
  }
};
async._startMicrotaskLoop = function() {
  async._isInCallbackLoop = true;
  try {
    async._microtaskLoop();
  } finally {
    async._lastPriorityCallback = null;
    async._isInCallbackLoop = false;
    if (async._nextCallback != null) {
      async._AsyncRun._scheduleImmediate(dart.fn(async._startMicrotaskLoop, VoidTovoid()));
    }
  }
};
async._scheduleAsyncCallback = function(callback) {
  let newEntry = new async._AsyncCallbackEntry.new(callback);
  if (async._nextCallback == null) {
    async._nextCallback = async._lastCallback = newEntry;
    if (!dart.test(async._isInCallbackLoop)) {
      async._AsyncRun._scheduleImmediate(dart.fn(async._startMicrotaskLoop, VoidTovoid()));
    }
  } else {
    async._lastCallback.next = newEntry;
    async._lastCallback = newEntry;
  }
};
async._schedulePriorityAsyncCallback = function(callback) {
  if (async._nextCallback == null) {
    async._scheduleAsyncCallback(callback);
    async._lastPriorityCallback = async._lastCallback;
    return;
  }
  let entry = new async._AsyncCallbackEntry.new(callback);
  if (async._lastPriorityCallback == null) {
    entry.next = async._nextCallback;
    async._nextCallback = async._lastPriorityCallback = entry;
  } else {
    entry.next = async._lastPriorityCallback.next;
    async._lastPriorityCallback.next = entry;
    async._lastPriorityCallback = entry;
    if (entry.next == null) {
      async._lastCallback = entry;
    }
  }
};
const _scheduleMicrotask = Symbol('_scheduleMicrotask');
async.scheduleMicrotask = function(callback) {
  let currentZone = async._Zone._check(async.Zone.current);
  if (async._rootZone === currentZone) {
    async._rootScheduleMicrotask(null, null, async._rootZone, callback);
    return;
  }
  let implementation = currentZone[_scheduleMicrotask];
  if (async._rootZone === implementation.zone && dart.test(async._rootZone.inSameErrorZone(currentZone))) {
    async._rootScheduleMicrotask(null, null, currentZone, currentZone.registerCallback(dart.void, callback));
    return;
  }
  async.Zone.current.scheduleMicrotask(async.Zone.current.bindCallbackGuarded(callback));
};
async._AsyncRun = class _AsyncRun extends core.Object {
  static _scheduleImmediate(callback) {
    async._AsyncRun._scheduleImmediateClosure(callback);
  }
  static _initializeScheduleImmediate() {
    if (dart.global.scheduleImmediate != null) {
      return dart.fn(async._AsyncRun._scheduleImmediateJsOverride, FnTovoid());
    }
    if (dart.global.MutationObserver != null && dart.global.document != null) {
      let div = dart.global.document.createElement("div");
      let span = dart.global.document.createElement("span");
      let storedCallback = null;
      function internalCallback(_) {
        let f = storedCallback;
        storedCallback = null;
        dart.removeAsyncCallback();
        f();
      }
      dart.fn(internalCallback, dynamicToNull());
      let observer = new dart.global.MutationObserver(internalCallback);
      observer.observe(div, {childList: true});
      return dart.fn(callback => {
        if (!(storedCallback == null)) dart.assertFailed();
        dart.addAsyncCallback();
        storedCallback = callback;
        div.firstChild ? div.removeChild(span) : div.appendChild(span);
      }, FnToNull());
    } else if (dart.global.setImmediate != null) {
      return dart.fn(async._AsyncRun._scheduleImmediateWithSetImmediate, FnTovoid());
    }
    return dart.fn(async._AsyncRun._scheduleImmediateWithTimer, FnTovoid());
  }
  static _scheduleImmediateJsOverride(callback) {
    function internalCallback() {
      dart.removeAsyncCallback();
      callback();
    }
    dart.fn(internalCallback, VoidToNull());
    dart.addAsyncCallback();
    dart.global.scheduleImmediate(internalCallback);
  }
  static _scheduleImmediateWithSetImmediate(callback) {
    function internalCallback() {
      dart.removeAsyncCallback();
      callback();
    }
    dart.fn(internalCallback, VoidToNull());
    dart.addAsyncCallback();
    dart.global.setImmediate(internalCallback);
  }
  static _scheduleImmediateWithTimer(callback) {
    async.Timer._createTimer(core.Duration.zero, callback);
  }
};
(async._AsyncRun.new = function() {
}).prototype = async._AsyncRun.prototype;
dart.addTypeTests(async._AsyncRun);
dart.defineLazy(async._AsyncRun, {
  /*async._AsyncRun._scheduleImmediateClosure*/get _scheduleImmediateClosure() {
    return async._AsyncRun._initializeScheduleImmediate();
  }
});
async.StreamSubscription$ = dart.generic(T => {
  class StreamSubscription extends core.Object {}
  (StreamSubscription.new = function() {
  }).prototype = StreamSubscription.prototype;
  dart.addTypeTests(StreamSubscription);
  StreamSubscription.prototype[dart.isStreamSubscription] = true;
  return StreamSubscription;
});
async.StreamSubscription = async.StreamSubscription$();
dart.addTypeTests(async.StreamSubscription, dart.isStreamSubscription);
const _is_EventSink_default = Symbol('_is_EventSink_default');
async.EventSink$ = dart.generic(T => {
  let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
  class EventSink extends core.Object {}
  (EventSink.new = function() {
  }).prototype = EventSink.prototype;
  dart.addTypeTests(EventSink);
  EventSink.prototype[_is_EventSink_default] = true;
  EventSink[dart.implements] = () => [SinkOfT()];
  return EventSink;
});
async.EventSink = async.EventSink$();
dart.addTypeTests(async.EventSink, _is_EventSink_default);
const _stream = Symbol('_stream');
const _is_StreamView_default = Symbol('_is_StreamView_default');
async.StreamView$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class StreamView extends async.Stream$(T) {
    get isBroadcast() {
      return this[_stream].isBroadcast;
    }
    asBroadcastStream(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      return this[_stream].asBroadcastStream({onListen: onListen, onCancel: onCancel});
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_stream].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
  }
  (StreamView.new = function(stream) {
    this[_stream] = stream;
    StreamView.__proto__._internal.call(this);
  }).prototype = StreamView.prototype;
  dart.addTypeTests(StreamView);
  StreamView.prototype[_is_StreamView_default] = true;
  dart.setMethodSignature(StreamView, () => ({
    __proto__: dart.getMethods(StreamView.__proto__),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
  }));
  dart.setFieldSignature(StreamView, () => ({
    __proto__: dart.getFields(StreamView.__proto__),
    [_stream]: dart.finalFieldType(StreamOfT())
  }));
  return StreamView;
});
async.StreamView = async.StreamView$();
dart.addTypeTests(async.StreamView, _is_StreamView_default);
const _is_StreamConsumer_default = Symbol('_is_StreamConsumer_default');
async.StreamConsumer$ = dart.generic(S => {
  class StreamConsumer extends core.Object {}
  (StreamConsumer.new = function() {
  }).prototype = StreamConsumer.prototype;
  dart.addTypeTests(StreamConsumer);
  StreamConsumer.prototype[_is_StreamConsumer_default] = true;
  return StreamConsumer;
});
async.StreamConsumer = async.StreamConsumer$();
dart.addTypeTests(async.StreamConsumer, _is_StreamConsumer_default);
const _is_StreamSink_default = Symbol('_is_StreamSink_default');
async.StreamSink$ = dart.generic(S => {
  let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
  let StreamConsumerOfS = () => (StreamConsumerOfS = dart.constFn(async.StreamConsumer$(S)))();
  class StreamSink extends core.Object {}
  (StreamSink.new = function() {
  }).prototype = StreamSink.prototype;
  dart.addTypeTests(StreamSink);
  StreamSink.prototype[_is_StreamSink_default] = true;
  StreamSink[dart.implements] = () => [EventSinkOfS(), StreamConsumerOfS()];
  return StreamSink;
});
async.StreamSink = async.StreamSink$();
dart.addTypeTests(async.StreamSink, _is_StreamSink_default);
const _is_StreamTransformer_default = Symbol('_is_StreamTransformer_default');
async.StreamTransformer$ = dart.generic((S, T) => {
  let _StreamSubscriptionTransformerOfS$T = () => (_StreamSubscriptionTransformerOfS$T = dart.constFn(async._StreamSubscriptionTransformer$(S, T)))();
  let _StreamHandlerTransformerOfS$T = () => (_StreamHandlerTransformerOfS$T = dart.constFn(async._StreamHandlerTransformer$(S, T)))();
  let _StreamBindTransformerOfS$T = () => (_StreamBindTransformerOfS$T = dart.constFn(async._StreamBindTransformer$(S, T)))();
  class StreamTransformer extends core.Object {
    static new(onListen) {
      return new (_StreamSubscriptionTransformerOfS$T()).new(onListen);
    }
    static fromHandlers(opts) {
      return new (_StreamHandlerTransformerOfS$T()).new(opts);
    }
    static fromBind(bind) {
      return new (_StreamBindTransformerOfS$T()).new(bind);
    }
    static castFrom(SS, ST, TS, TT, source) {
      return new (_internal.CastStreamTransformer$(SS, ST, TS, TT)).new(source);
    }
  }
  (StreamTransformer[dart.mixinNew] = function() {
  }).prototype = StreamTransformer.prototype;
  dart.addTypeTests(StreamTransformer);
  StreamTransformer.prototype[_is_StreamTransformer_default] = true;
  return StreamTransformer;
});
async.StreamTransformer = async.StreamTransformer$();
dart.addTypeTests(async.StreamTransformer, _is_StreamTransformer_default);
const _is_StreamIterator_default = Symbol('_is_StreamIterator_default');
async.StreamIterator$ = dart.generic(T => {
  let _StreamIteratorOfT = () => (_StreamIteratorOfT = dart.constFn(async._StreamIterator$(T)))();
  class StreamIterator extends core.Object {
    static new(stream) {
      return new (_StreamIteratorOfT()).new(stream);
    }
  }
  (StreamIterator[dart.mixinNew] = function() {
  }).prototype = StreamIterator.prototype;
  dart.addTypeTests(StreamIterator);
  StreamIterator.prototype[_is_StreamIterator_default] = true;
  return StreamIterator;
});
async.StreamIterator = async.StreamIterator$();
dart.addTypeTests(async.StreamIterator, _is_StreamIterator_default);
const _is__ControllerEventSinkWrapper_default = Symbol('_is__ControllerEventSinkWrapper_default');
async._ControllerEventSinkWrapper$ = dart.generic(T => {
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  class _ControllerEventSinkWrapper extends core.Object {
    add(data) {
      T._check(data);
      this[_sink].add(data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_sink].addError(error, stackTrace);
    }
    close() {
      this[_sink].close();
    }
  }
  (_ControllerEventSinkWrapper.new = function(sink) {
    this[_sink] = sink;
  }).prototype = _ControllerEventSinkWrapper.prototype;
  dart.addTypeTests(_ControllerEventSinkWrapper);
  _ControllerEventSinkWrapper.prototype[_is__ControllerEventSinkWrapper_default] = true;
  _ControllerEventSinkWrapper[dart.implements] = () => [EventSinkOfT()];
  dart.setMethodSignature(_ControllerEventSinkWrapper, () => ({
    __proto__: dart.getMethods(_ControllerEventSinkWrapper.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_ControllerEventSinkWrapper, () => ({
    __proto__: dart.getFields(_ControllerEventSinkWrapper.__proto__),
    [_sink]: dart.fieldType(async.EventSink)
  }));
  return _ControllerEventSinkWrapper;
});
async._ControllerEventSinkWrapper = async._ControllerEventSinkWrapper$();
dart.addTypeTests(async._ControllerEventSinkWrapper, _is__ControllerEventSinkWrapper_default);
const _is_StreamController_default = Symbol('_is_StreamController_default');
async.StreamController$ = dart.generic(T => {
  let _SyncStreamControllerOfT = () => (_SyncStreamControllerOfT = dart.constFn(async._SyncStreamController$(T)))();
  let _AsyncStreamControllerOfT = () => (_AsyncStreamControllerOfT = dart.constFn(async._AsyncStreamController$(T)))();
  let _SyncBroadcastStreamControllerOfT = () => (_SyncBroadcastStreamControllerOfT = dart.constFn(async._SyncBroadcastStreamController$(T)))();
  let _AsyncBroadcastStreamControllerOfT = () => (_AsyncBroadcastStreamControllerOfT = dart.constFn(async._AsyncBroadcastStreamController$(T)))();
  let StreamSinkOfT = () => (StreamSinkOfT = dart.constFn(async.StreamSink$(T)))();
  class StreamController extends core.Object {
    static new(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onPause = opts && 'onPause' in opts ? opts.onPause : null;
      let onResume = opts && 'onResume' in opts ? opts.onResume : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      let sync = opts && 'sync' in opts ? opts.sync : false;
      return dart.test(sync) ? new (_SyncStreamControllerOfT()).new(onListen, onPause, onResume, onCancel) : new (_AsyncStreamControllerOfT()).new(onListen, onPause, onResume, onCancel);
    }
    static broadcast(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      let sync = opts && 'sync' in opts ? opts.sync : false;
      return dart.test(sync) ? new (_SyncBroadcastStreamControllerOfT()).new(onListen, onCancel) : new (_AsyncBroadcastStreamControllerOfT()).new(onListen, onCancel);
    }
  }
  (StreamController[dart.mixinNew] = function() {
  }).prototype = StreamController.prototype;
  dart.addTypeTests(StreamController);
  StreamController.prototype[_is_StreamController_default] = true;
  StreamController[dart.implements] = () => [StreamSinkOfT()];
  return StreamController;
});
async.StreamController = async.StreamController$();
dart.addTypeTests(async.StreamController, _is_StreamController_default);
const _is_SynchronousStreamController_default = Symbol('_is_SynchronousStreamController_default');
async.SynchronousStreamController$ = dart.generic(T => {
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  class SynchronousStreamController extends core.Object {}
  (SynchronousStreamController.new = function() {
  }).prototype = SynchronousStreamController.prototype;
  dart.addTypeTests(SynchronousStreamController);
  SynchronousStreamController.prototype[_is_SynchronousStreamController_default] = true;
  SynchronousStreamController[dart.implements] = () => [StreamControllerOfT()];
  return SynchronousStreamController;
});
async.SynchronousStreamController = async.SynchronousStreamController$();
dart.addTypeTests(async.SynchronousStreamController, _is_SynchronousStreamController_default);
const _is__StreamControllerLifecycle_default = Symbol('_is__StreamControllerLifecycle_default');
async._StreamControllerLifecycle$ = dart.generic(T => {
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  class _StreamControllerLifecycle extends core.Object {
    [_recordPause](subscription) {
      StreamSubscriptionOfT()._check(subscription);
    }
    [_recordResume](subscription) {
      StreamSubscriptionOfT()._check(subscription);
    }
    [_recordCancel](subscription) {
      StreamSubscriptionOfT()._check(subscription);
      return null;
    }
  }
  (_StreamControllerLifecycle.new = function() {
  }).prototype = _StreamControllerLifecycle.prototype;
  dart.addTypeTests(_StreamControllerLifecycle);
  _StreamControllerLifecycle.prototype[_is__StreamControllerLifecycle_default] = true;
  dart.setMethodSignature(_StreamControllerLifecycle, () => ({
    __proto__: dart.getMethods(_StreamControllerLifecycle.__proto__),
    [_recordPause]: dart.fnType(dart.void, [core.Object]),
    [_recordResume]: dart.fnType(dart.void, [core.Object]),
    [_recordCancel]: dart.fnType(async.Future, [core.Object])
  }));
  return _StreamControllerLifecycle;
});
async._StreamControllerLifecycle = async._StreamControllerLifecycle$();
dart.addTypeTests(async._StreamControllerLifecycle, _is__StreamControllerLifecycle_default);
const _is__StreamControllerBase_default = Symbol('_is__StreamControllerBase_default');
async._StreamControllerBase$ = dart.generic(T => {
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let _StreamControllerLifecycleOfT = () => (_StreamControllerLifecycleOfT = dart.constFn(async._StreamControllerLifecycle$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  class _StreamControllerBase extends core.Object {}
  (_StreamControllerBase.new = function() {
  }).prototype = _StreamControllerBase.prototype;
  dart.addTypeTests(_StreamControllerBase);
  _StreamControllerBase.prototype[_is__StreamControllerBase_default] = true;
  _StreamControllerBase[dart.implements] = () => [StreamControllerOfT(), _StreamControllerLifecycleOfT(), _EventSinkOfT(), _EventDispatchOfT()];
  return _StreamControllerBase;
});
async._StreamControllerBase = async._StreamControllerBase$();
dart.addTypeTests(async._StreamControllerBase, _is__StreamControllerBase_default);
const _varData = Symbol('_varData');
const _isInitialState = Symbol('_isInitialState');
const _subscription = Symbol('_subscription');
const _pendingEvents = Symbol('_pendingEvents');
const _ensurePendingEvents = Symbol('_ensurePendingEvents');
const _badEventState = Symbol('_badEventState');
let const$12;
const _is__StreamController_default = Symbol('_is__StreamController_default');
async._StreamController$ = dart.generic(T => {
  let _ControllerStreamOfT = () => (_ControllerStreamOfT = dart.constFn(async._ControllerStream$(T)))();
  let _StreamSinkWrapperOfT = () => (_StreamSinkWrapperOfT = dart.constFn(async._StreamSinkWrapper$(T)))();
  let _PendingEventsOfT = () => (_PendingEventsOfT = dart.constFn(async._PendingEvents$(T)))();
  let _StreamControllerAddStreamStateOfT = () => (_StreamControllerAddStreamStateOfT = dart.constFn(async._StreamControllerAddStreamState$(T)))();
  let _StreamImplEventsOfT = () => (_StreamImplEventsOfT = dart.constFn(async._StreamImplEvents$(T)))();
  let _ControllerSubscriptionOfT = () => (_ControllerSubscriptionOfT = dart.constFn(async._ControllerSubscription$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let _StreamControllerBaseOfT = () => (_StreamControllerBaseOfT = dart.constFn(async._StreamControllerBase$(T)))();
  class _StreamController extends core.Object {
    get stream() {
      return new (_ControllerStreamOfT()).new(this);
    }
    get sink() {
      return new (_StreamSinkWrapperOfT()).new(this);
    }
    get [_isCanceled]() {
      return (dart.notNull(this[_state]) & 2) !== 0;
    }
    get hasListener() {
      return (dart.notNull(this[_state]) & 1) !== 0;
    }
    get [_isInitialState]() {
      return (dart.notNull(this[_state]) & 3) === 0;
    }
    get isClosed() {
      return (dart.notNull(this[_state]) & 4) !== 0;
    }
    get isPaused() {
      return dart.test(this.hasListener) ? this[_subscription][_isInputPaused] : !dart.test(this[_isCanceled]);
    }
    get [_isAddingStream]() {
      return (dart.notNull(this[_state]) & 8) !== 0;
    }
    get [_mayAddEvent]() {
      return dart.notNull(this[_state]) < 4;
    }
    get [_pendingEvents]() {
      if (!dart.test(this[_isInitialState])) dart.assertFailed();
      if (!dart.test(this[_isAddingStream])) {
        return _PendingEventsOfT()._check(this[_varData]);
      }
      let state = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
      return _PendingEventsOfT()._check(state.varData);
    }
    [_ensurePendingEvents]() {
      if (!dart.test(this[_isInitialState])) dart.assertFailed();
      if (!dart.test(this[_isAddingStream])) {
        let t = this[_varData];
        t == null ? this[_varData] = new (_StreamImplEventsOfT()).new() : t;
        return _StreamImplEventsOfT()._check(this[_varData]);
      }
      let state = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
      if (state.varData == null) state.varData = new (_StreamImplEventsOfT()).new();
      return _StreamImplEventsOfT()._check(state.varData);
    }
    get [_subscription]() {
      if (!dart.test(this.hasListener)) dart.assertFailed();
      if (dart.test(this[_isAddingStream])) {
        let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
        return _ControllerSubscriptionOfT()._check(addState.varData);
      }
      return _ControllerSubscriptionOfT()._check(this[_varData]);
    }
    [_badEventState]() {
      if (dart.test(this.isClosed)) {
        return new core.StateError.new("Cannot add event after closing");
      }
      if (!dart.test(this[_isAddingStream])) dart.assertFailed();
      return new core.StateError.new("Cannot add event while adding a stream");
    }
    addStream(source, opts) {
      StreamOfT()._check(source);
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
      if (dart.test(this[_isCanceled])) return new async._Future.immediate(null);
      let addState = new (_StreamControllerAddStreamStateOfT()).new(this, this[_varData], source, cancelOnError != null ? cancelOnError : false);
      this[_varData] = addState;
      this[_state] = (dart.notNull(this[_state]) | 8) >>> 0;
      return addState.addStreamFuture;
    }
    get done() {
      return this[_ensureDoneFuture]();
    }
    [_ensureDoneFuture]() {
      let t = this[_doneFuture];
      t == null ? this[_doneFuture] = dart.test(this[_isCanceled]) ? async.Future._nullFuture : new async._Future.new() : t;
      return this[_doneFuture];
    }
    add(value) {
      T._check(value);
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
      this[_add](value);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
      error = async._nonNullError(error);
      let replacement = async.Zone.current.errorCallback(error, stackTrace);
      if (replacement != null) {
        error = async._nonNullError(replacement.error);
        stackTrace = replacement.stackTrace;
      }
      this[_addError](error, stackTrace);
    }
    close() {
      if (dart.test(this.isClosed)) {
        return this[_ensureDoneFuture]();
      }
      if (!dart.test(this[_mayAddEvent])) dart.throw(this[_badEventState]());
      this[_closeUnchecked]();
      return this[_ensureDoneFuture]();
    }
    [_closeUnchecked]() {
      this[_state] = (dart.notNull(this[_state]) | 4) >>> 0;
      if (dart.test(this.hasListener)) {
        this[_sendDone]();
      } else if (dart.test(this[_isInitialState])) {
        this[_ensurePendingEvents]().add(const$12 || (const$12 = dart.const(new async._DelayedDone.new())));
      }
    }
    [_add](value) {
      T._check(value);
      if (dart.test(this.hasListener)) {
        this[_sendData](value);
      } else if (dart.test(this[_isInitialState])) {
        this[_ensurePendingEvents]().add(new (_DelayedDataOfT()).new(value));
      }
    }
    [_addError](error, stackTrace) {
      if (dart.test(this.hasListener)) {
        this[_sendError](error, stackTrace);
      } else if (dart.test(this[_isInitialState])) {
        this[_ensurePendingEvents]().add(new async._DelayedError.new(error, stackTrace));
      }
    }
    [_close]() {
      if (!dart.test(this[_isAddingStream])) dart.assertFailed();
      let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
      this[_varData] = addState.varData;
      this[_state] = (dart.notNull(this[_state]) & ~8) >>> 0;
      addState.complete();
    }
    [_subscribe](onData, onError, onDone, cancelOnError) {
      if (!dart.test(this[_isInitialState])) {
        dart.throw(new core.StateError.new("Stream has already been listened to."));
      }
      let subscription = new (_ControllerSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError);
      let pendingEvents = this[_pendingEvents];
      this[_state] = (dart.notNull(this[_state]) | 1) >>> 0;
      if (dart.test(this[_isAddingStream])) {
        let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
        addState.varData = subscription;
        addState.resume();
      } else {
        this[_varData] = subscription;
      }
      subscription[_setPendingEvents](pendingEvents);
      subscription[_guardCallback](dart.fn(() => {
        async._runGuarded(this.onListen);
      }, VoidToNull()));
      return subscription;
    }
    [_recordCancel](subscription) {
      StreamSubscriptionOfT()._check(subscription);
      let result = null;
      if (dart.test(this[_isAddingStream])) {
        let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
        result = addState.cancel();
      }
      this[_varData] = null;
      this[_state] = (dart.notNull(this[_state]) & ~(1 | 8) | 2) >>> 0;
      if (this.onCancel != null) {
        if (result == null) {
          try {
            result = async.Future._check(this.onCancel());
          } catch (e$) {
            let e = dart.getThrown(e$);
            let s = dart.stackTrace(e$);
            result = new async._Future.new();
            result[_asyncCompleteError](e, s);
          }
        } else {
          result = result.whenComplete(this.onCancel);
        }
      }
      const complete = (function() {
        if (this[_doneFuture] != null && dart.test(this[_doneFuture][_mayComplete])) {
          this[_doneFuture][_asyncComplete](null);
        }
      }).bind(this);
      dart.fn(complete, VoidTovoid());
      if (result != null) {
        result = result.whenComplete(complete);
      } else {
        complete();
      }
      return result;
    }
    [_recordPause](subscription) {
      StreamSubscriptionOfT()._check(subscription);
      if (dart.test(this[_isAddingStream])) {
        let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
        addState.pause();
      }
      async._runGuarded(this.onPause);
    }
    [_recordResume](subscription) {
      StreamSubscriptionOfT()._check(subscription);
      if (dart.test(this[_isAddingStream])) {
        let addState = _StreamControllerAddStreamStateOfT()._check(this[_varData]);
        addState.resume();
      }
      async._runGuarded(this.onResume);
    }
  }
  (_StreamController.new = function(onListen, onPause, onResume, onCancel) {
    this[_varData] = null;
    this[_state] = 0;
    this[_doneFuture] = null;
    this.onListen = onListen;
    this.onPause = onPause;
    this.onResume = onResume;
    this.onCancel = onCancel;
  }).prototype = _StreamController.prototype;
  dart.addTypeTests(_StreamController);
  _StreamController.prototype[_is__StreamController_default] = true;
  _StreamController[dart.implements] = () => [_StreamControllerBaseOfT()];
  dart.setMethodSignature(_StreamController, () => ({
    __proto__: dart.getMethods(_StreamController.__proto__),
    [_ensurePendingEvents]: dart.fnType(async._StreamImplEvents$(T), []),
    [_badEventState]: dart.fnType(core.Error, []),
    addStream: dart.fnType(async.Future, [core.Object], {cancelOnError: core.bool}),
    [_ensureDoneFuture]: dart.fnType(async.Future, []),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    close: dart.fnType(async.Future, []),
    [_closeUnchecked]: dart.fnType(dart.void, []),
    [_add]: dart.fnType(dart.void, [core.Object]),
    [_addError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_close]: dart.fnType(dart.void, []),
    [_subscribe]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
    [_recordCancel]: dart.fnType(async.Future, [core.Object]),
    [_recordPause]: dart.fnType(dart.void, [core.Object]),
    [_recordResume]: dart.fnType(dart.void, [core.Object])
  }));
  dart.setGetterSignature(_StreamController, () => ({
    __proto__: dart.getGetters(_StreamController.__proto__),
    stream: async.Stream$(T),
    sink: async.StreamSink$(T),
    [_isCanceled]: core.bool,
    hasListener: core.bool,
    [_isInitialState]: core.bool,
    isClosed: core.bool,
    isPaused: core.bool,
    [_isAddingStream]: core.bool,
    [_mayAddEvent]: core.bool,
    [_pendingEvents]: async._PendingEvents$(T),
    [_subscription]: async._ControllerSubscription$(T),
    done: async.Future
  }));
  dart.setFieldSignature(_StreamController, () => ({
    __proto__: dart.getFields(_StreamController.__proto__),
    [_varData]: dart.fieldType(dart.dynamic),
    [_state]: dart.fieldType(core.int),
    [_doneFuture]: dart.fieldType(async._Future),
    onListen: dart.fieldType(VoidTovoid()),
    onPause: dart.fieldType(VoidTovoid()),
    onResume: dart.fieldType(VoidTovoid()),
    onCancel: dart.fieldType(VoidTodynamic())
  }));
  return _StreamController;
});
async._StreamController = async._StreamController$();
dart.defineLazy(async._StreamController, {
  /*async._StreamController._STATE_INITIAL*/get _STATE_INITIAL() {
    return 0;
  },
  /*async._StreamController._STATE_SUBSCRIBED*/get _STATE_SUBSCRIBED() {
    return 1;
  },
  /*async._StreamController._STATE_CANCELED*/get _STATE_CANCELED() {
    return 2;
  },
  /*async._StreamController._STATE_SUBSCRIPTION_MASK*/get _STATE_SUBSCRIPTION_MASK() {
    return 3;
  },
  /*async._StreamController._STATE_CLOSED*/get _STATE_CLOSED() {
    return 4;
  },
  /*async._StreamController._STATE_ADDSTREAM*/get _STATE_ADDSTREAM() {
    return 8;
  }
});
dart.addTypeTests(async._StreamController, _is__StreamController_default);
const _is__SyncStreamControllerDispatch_default = Symbol('_is__SyncStreamControllerDispatch_default');
async._SyncStreamControllerDispatch$ = dart.generic(T => {
  let _StreamControllerOfT = () => (_StreamControllerOfT = dart.constFn(async._StreamController$(T)))();
  let SynchronousStreamControllerOfT = () => (SynchronousStreamControllerOfT = dart.constFn(async.SynchronousStreamController$(T)))();
  class _SyncStreamControllerDispatch extends core.Object {
    [_sendData](data) {
      T._check(data);
      this[_subscription][_add](data);
    }
    [_sendError](error, stackTrace) {
      this[_subscription][_addError](error, stackTrace);
    }
    [_sendDone]() {
      this[_subscription][_close]();
    }
  }
  (_SyncStreamControllerDispatch.new = function() {
  }).prototype = _SyncStreamControllerDispatch.prototype;
  dart.addTypeTests(_SyncStreamControllerDispatch);
  _SyncStreamControllerDispatch.prototype[_is__SyncStreamControllerDispatch_default] = true;
  _SyncStreamControllerDispatch[dart.implements] = () => [_StreamControllerOfT(), SynchronousStreamControllerOfT()];
  dart.setMethodSignature(_SyncStreamControllerDispatch, () => ({
    __proto__: dart.getMethods(_SyncStreamControllerDispatch.__proto__),
    [_sendData]: dart.fnType(dart.void, [core.Object]),
    [_sendError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_sendDone]: dart.fnType(dart.void, [])
  }));
  return _SyncStreamControllerDispatch;
});
async._SyncStreamControllerDispatch = async._SyncStreamControllerDispatch$();
dart.addTypeTests(async._SyncStreamControllerDispatch, _is__SyncStreamControllerDispatch_default);
let const$13;
const _is__AsyncStreamControllerDispatch_default = Symbol('_is__AsyncStreamControllerDispatch_default');
async._AsyncStreamControllerDispatch$ = dart.generic(T => {
  let _DelayedDataOfT = () => (_DelayedDataOfT = dart.constFn(async._DelayedData$(T)))();
  let _StreamControllerOfT = () => (_StreamControllerOfT = dart.constFn(async._StreamController$(T)))();
  class _AsyncStreamControllerDispatch extends core.Object {
    [_sendData](data) {
      T._check(data);
      this[_subscription][_addPending](new (_DelayedDataOfT()).new(data));
    }
    [_sendError](error, stackTrace) {
      this[_subscription][_addPending](new async._DelayedError.new(error, stackTrace));
    }
    [_sendDone]() {
      this[_subscription][_addPending](const$13 || (const$13 = dart.const(new async._DelayedDone.new())));
    }
  }
  (_AsyncStreamControllerDispatch.new = function() {
  }).prototype = _AsyncStreamControllerDispatch.prototype;
  dart.addTypeTests(_AsyncStreamControllerDispatch);
  _AsyncStreamControllerDispatch.prototype[_is__AsyncStreamControllerDispatch_default] = true;
  _AsyncStreamControllerDispatch[dart.implements] = () => [_StreamControllerOfT()];
  dart.setMethodSignature(_AsyncStreamControllerDispatch, () => ({
    __proto__: dart.getMethods(_AsyncStreamControllerDispatch.__proto__),
    [_sendData]: dart.fnType(dart.void, [core.Object]),
    [_sendError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_sendDone]: dart.fnType(dart.void, [])
  }));
  return _AsyncStreamControllerDispatch;
});
async._AsyncStreamControllerDispatch = async._AsyncStreamControllerDispatch$();
dart.addTypeTests(async._AsyncStreamControllerDispatch, _is__AsyncStreamControllerDispatch_default);
const _is__AsyncStreamController_default = Symbol('_is__AsyncStreamController_default');
async._AsyncStreamController$ = dart.generic(T => {
  const _StreamController__AsyncStreamControllerDispatch$ = class _StreamController__AsyncStreamControllerDispatch extends async._StreamController$(T) {};
  (_StreamController__AsyncStreamControllerDispatch$.new = function(onListen, onPause, onResume, onCancel) {
    _StreamController__AsyncStreamControllerDispatch$.__proto__.new.call(this, onListen, onPause, onResume, onCancel);
  }).prototype = _StreamController__AsyncStreamControllerDispatch$.prototype;
  dart.applyMixin(_StreamController__AsyncStreamControllerDispatch$, async._AsyncStreamControllerDispatch$(T));
  class _AsyncStreamController extends _StreamController__AsyncStreamControllerDispatch$ {}
  (_AsyncStreamController.new = function(onListen, onPause, onResume, onCancel) {
    _AsyncStreamController.__proto__.new.call(this, onListen, onPause, onResume, onCancel);
  }).prototype = _AsyncStreamController.prototype;
  dart.addTypeTests(_AsyncStreamController);
  _AsyncStreamController.prototype[_is__AsyncStreamController_default] = true;
  return _AsyncStreamController;
});
async._AsyncStreamController = async._AsyncStreamController$();
dart.addTypeTests(async._AsyncStreamController, _is__AsyncStreamController_default);
const _is__SyncStreamController_default = Symbol('_is__SyncStreamController_default');
async._SyncStreamController$ = dart.generic(T => {
  const _StreamController__SyncStreamControllerDispatch$ = class _StreamController__SyncStreamControllerDispatch extends async._StreamController$(T) {};
  (_StreamController__SyncStreamControllerDispatch$.new = function(onListen, onPause, onResume, onCancel) {
    _StreamController__SyncStreamControllerDispatch$.__proto__.new.call(this, onListen, onPause, onResume, onCancel);
  }).prototype = _StreamController__SyncStreamControllerDispatch$.prototype;
  dart.applyMixin(_StreamController__SyncStreamControllerDispatch$, async._SyncStreamControllerDispatch$(T));
  class _SyncStreamController extends _StreamController__SyncStreamControllerDispatch$ {}
  (_SyncStreamController.new = function(onListen, onPause, onResume, onCancel) {
    _SyncStreamController.__proto__.new.call(this, onListen, onPause, onResume, onCancel);
  }).prototype = _SyncStreamController.prototype;
  dart.addTypeTests(_SyncStreamController);
  _SyncStreamController.prototype[_is__SyncStreamController_default] = true;
  return _SyncStreamController;
});
async._SyncStreamController = async._SyncStreamController$();
dart.addTypeTests(async._SyncStreamController, _is__SyncStreamController_default);
async._runGuarded = function(notificationHandler) {
  if (notificationHandler == null) return;
  try {
    notificationHandler();
  } catch (e$) {
    let e = dart.getThrown(e$);
    let s = dart.stackTrace(e$);
    async.Zone.current.handleUncaughtError(e, s);
  }
};
const _target = Symbol('_target');
const _is__StreamSinkWrapper_default = Symbol('_is__StreamSinkWrapper_default');
async._StreamSinkWrapper$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let StreamSinkOfT = () => (StreamSinkOfT = dart.constFn(async.StreamSink$(T)))();
  class _StreamSinkWrapper extends core.Object {
    add(data) {
      T._check(data);
      this[_target].add(data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_target].addError(error, stackTrace);
    }
    close() {
      return this[_target].close();
    }
    addStream(source) {
      StreamOfT()._check(source);
      return this[_target].addStream(source);
    }
    get done() {
      return this[_target].done;
    }
  }
  (_StreamSinkWrapper.new = function(target) {
    this[_target] = target;
  }).prototype = _StreamSinkWrapper.prototype;
  dart.addTypeTests(_StreamSinkWrapper);
  _StreamSinkWrapper.prototype[_is__StreamSinkWrapper_default] = true;
  _StreamSinkWrapper[dart.implements] = () => [StreamSinkOfT()];
  dart.setMethodSignature(_StreamSinkWrapper, () => ({
    __proto__: dart.getMethods(_StreamSinkWrapper.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    close: dart.fnType(async.Future, []),
    addStream: dart.fnType(async.Future, [core.Object])
  }));
  dart.setGetterSignature(_StreamSinkWrapper, () => ({
    __proto__: dart.getGetters(_StreamSinkWrapper.__proto__),
    done: async.Future
  }));
  dart.setFieldSignature(_StreamSinkWrapper, () => ({
    __proto__: dart.getFields(_StreamSinkWrapper.__proto__),
    [_target]: dart.finalFieldType(async.StreamController)
  }));
  return _StreamSinkWrapper;
});
async._StreamSinkWrapper = async._StreamSinkWrapper$();
dart.addTypeTests(async._StreamSinkWrapper, _is__StreamSinkWrapper_default);
const _is__AddStreamState_default = Symbol('_is__AddStreamState_default');
async._AddStreamState$ = dart.generic(T => {
  class _AddStreamState extends core.Object {
    static makeErrorHandler(controller) {
      return dart.fn((e, s) => {
        controller[_addError](e, s);
        controller[_close]();
      }, dynamicAndStackTraceToNull());
    }
    pause() {
      this.addSubscription.pause();
    }
    resume() {
      this.addSubscription.resume();
    }
    cancel() {
      let cancel = this.addSubscription.cancel();
      if (cancel == null) {
        this.addStreamFuture[_asyncComplete](null);
        return null;
      }
      return cancel.whenComplete(dart.fn(() => {
        this.addStreamFuture[_asyncComplete](null);
      }, VoidToNull()));
    }
    complete() {
      this.addStreamFuture[_asyncComplete](null);
    }
  }
  (_AddStreamState.new = function(controller, source, cancelOnError) {
    this.addStreamFuture = new async._Future.new();
    this.addSubscription = source.listen(dart.bind(controller, _add), {onError: core.Function._check(dart.test(cancelOnError) ? async._AddStreamState.makeErrorHandler(controller) : dart.bind(controller, _addError)), onDone: dart.bind(controller, _close), cancelOnError: cancelOnError});
  }).prototype = _AddStreamState.prototype;
  dart.addTypeTests(_AddStreamState);
  _AddStreamState.prototype[_is__AddStreamState_default] = true;
  dart.setMethodSignature(_AddStreamState, () => ({
    __proto__: dart.getMethods(_AddStreamState.__proto__),
    pause: dart.fnType(dart.void, []),
    resume: dart.fnType(dart.void, []),
    cancel: dart.fnType(async.Future, []),
    complete: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_AddStreamState, () => ({
    __proto__: dart.getFields(_AddStreamState.__proto__),
    addStreamFuture: dart.finalFieldType(async._Future),
    addSubscription: dart.finalFieldType(async.StreamSubscription)
  }));
  return _AddStreamState;
});
async._AddStreamState = async._AddStreamState$();
dart.addTypeTests(async._AddStreamState, _is__AddStreamState_default);
const _is__StreamControllerAddStreamState_default = Symbol('_is__StreamControllerAddStreamState_default');
async._StreamControllerAddStreamState$ = dart.generic(T => {
  class _StreamControllerAddStreamState extends async._AddStreamState$(T) {}
  (_StreamControllerAddStreamState.new = function(controller, varData, source, cancelOnError) {
    this.varData = varData;
    _StreamControllerAddStreamState.__proto__.new.call(this, controller, source, cancelOnError);
    if (dart.test(controller.isPaused)) {
      this.addSubscription.pause();
    }
  }).prototype = _StreamControllerAddStreamState.prototype;
  dart.addTypeTests(_StreamControllerAddStreamState);
  _StreamControllerAddStreamState.prototype[_is__StreamControllerAddStreamState_default] = true;
  dart.setFieldSignature(_StreamControllerAddStreamState, () => ({
    __proto__: dart.getFields(_StreamControllerAddStreamState.__proto__),
    varData: dart.fieldType(dart.dynamic)
  }));
  return _StreamControllerAddStreamState;
});
async._StreamControllerAddStreamState = async._StreamControllerAddStreamState$();
dart.addTypeTests(async._StreamControllerAddStreamState, _is__StreamControllerAddStreamState_default);
const _is__EventSink_default = Symbol('_is__EventSink_default');
async._EventSink$ = dart.generic(T => {
  class _EventSink extends core.Object {}
  (_EventSink.new = function() {
  }).prototype = _EventSink.prototype;
  dart.addTypeTests(_EventSink);
  _EventSink.prototype[_is__EventSink_default] = true;
  return _EventSink;
});
async._EventSink = async._EventSink$();
dart.addTypeTests(async._EventSink, _is__EventSink_default);
const _is__EventDispatch_default = Symbol('_is__EventDispatch_default');
async._EventDispatch$ = dart.generic(T => {
  class _EventDispatch extends core.Object {}
  (_EventDispatch.new = function() {
  }).prototype = _EventDispatch.prototype;
  dart.addTypeTests(_EventDispatch);
  _EventDispatch.prototype[_is__EventDispatch_default] = true;
  return _EventDispatch;
});
async._EventDispatch = async._EventDispatch$();
dart.addTypeTests(async._EventDispatch, _is__EventDispatch_default);
const _isUsed = Symbol('_isUsed');
const _is__GeneratedStreamImpl_default = Symbol('_is__GeneratedStreamImpl_default');
async._GeneratedStreamImpl$ = dart.generic(T => {
  let _BufferingStreamSubscriptionOfT = () => (_BufferingStreamSubscriptionOfT = dart.constFn(async._BufferingStreamSubscription$(T)))();
  let _PendingEventsOfT = () => (_PendingEventsOfT = dart.constFn(async._PendingEvents$(T)))();
  let VoidTo_PendingEventsOfT = () => (VoidTo_PendingEventsOfT = dart.constFn(dart.fnType(_PendingEventsOfT(), [])))();
  class _GeneratedStreamImpl extends async._StreamImpl$(T) {
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      if (dart.test(this[_isUsed])) dart.throw(new core.StateError.new("Stream has already been listened to."));
      this[_isUsed] = true;
      let _ = new (_BufferingStreamSubscriptionOfT()).new(onData, onError, onDone, cancelOnError);
      _[_setPendingEvents](this[_pending]());
      return _;
    }
  }
  (_GeneratedStreamImpl.new = function(pending) {
    this[_isUsed] = false;
    this[_pending] = pending;
    _GeneratedStreamImpl.__proto__.new.call(this);
  }).prototype = _GeneratedStreamImpl.prototype;
  dart.addTypeTests(_GeneratedStreamImpl);
  _GeneratedStreamImpl.prototype[_is__GeneratedStreamImpl_default] = true;
  dart.setFieldSignature(_GeneratedStreamImpl, () => ({
    __proto__: dart.getFields(_GeneratedStreamImpl.__proto__),
    [_pending]: dart.finalFieldType(VoidTo_PendingEventsOfT()),
    [_isUsed]: dart.fieldType(core.bool)
  }));
  return _GeneratedStreamImpl;
});
async._GeneratedStreamImpl = async._GeneratedStreamImpl$();
dart.addTypeTests(async._GeneratedStreamImpl, _is__GeneratedStreamImpl_default);
const _iterator$ = Symbol('_iterator');
let const$14;
const _eventScheduled = Symbol('_eventScheduled');
const _is__PendingEvents_default = Symbol('_is__PendingEvents_default');
async._PendingEvents$ = dart.generic(T => {
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  class _PendingEvents extends core.Object {
    get isScheduled() {
      return this[_state] === 1;
    }
    get [_eventScheduled]() {
      return dart.notNull(this[_state]) >= 1;
    }
    schedule(dispatch) {
      _EventDispatchOfT()._check(dispatch);
      if (dart.test(this.isScheduled)) return;
      if (!!dart.test(this.isEmpty)) dart.assertFailed();
      if (dart.test(this[_eventScheduled])) {
        if (!(this[_state] === 3)) dart.assertFailed();
        this[_state] = 1;
        return;
      }
      async.scheduleMicrotask(dart.fn(() => {
        let oldState = this[_state];
        this[_state] = 0;
        if (oldState === 3) return;
        this.handleNext(dispatch);
      }, VoidToNull()));
      this[_state] = 1;
    }
    cancelSchedule() {
      if (dart.test(this.isScheduled)) this[_state] = 3;
    }
  }
  (_PendingEvents.new = function() {
    this[_state] = 0;
  }).prototype = _PendingEvents.prototype;
  dart.addTypeTests(_PendingEvents);
  _PendingEvents.prototype[_is__PendingEvents_default] = true;
  dart.setMethodSignature(_PendingEvents, () => ({
    __proto__: dart.getMethods(_PendingEvents.__proto__),
    schedule: dart.fnType(dart.void, [core.Object]),
    cancelSchedule: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_PendingEvents, () => ({
    __proto__: dart.getGetters(_PendingEvents.__proto__),
    isScheduled: core.bool,
    [_eventScheduled]: core.bool
  }));
  dart.setFieldSignature(_PendingEvents, () => ({
    __proto__: dart.getFields(_PendingEvents.__proto__),
    [_state]: dart.fieldType(core.int)
  }));
  return _PendingEvents;
});
async._PendingEvents = async._PendingEvents$();
dart.defineLazy(async._PendingEvents, {
  /*async._PendingEvents._STATE_UNSCHEDULED*/get _STATE_UNSCHEDULED() {
    return 0;
  },
  /*async._PendingEvents._STATE_SCHEDULED*/get _STATE_SCHEDULED() {
    return 1;
  },
  /*async._PendingEvents._STATE_CANCELED*/get _STATE_CANCELED() {
    return 3;
  }
});
dart.addTypeTests(async._PendingEvents, _is__PendingEvents_default);
const _is__IterablePendingEvents_default = Symbol('_is__IterablePendingEvents_default');
async._IterablePendingEvents$ = dart.generic(T => {
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  class _IterablePendingEvents extends async._PendingEvents$(T) {
    get isEmpty() {
      return this[_iterator$] == null;
    }
    handleNext(dispatch) {
      _EventDispatchOfT()._check(dispatch);
      if (this[_iterator$] == null) {
        dart.throw(new core.StateError.new("No events pending."));
      }
      let hasMore = null;
      try {
        hasMore = this[_iterator$].moveNext();
        if (dart.test(hasMore)) {
          dispatch[_sendData](this[_iterator$].current);
        } else {
          this[_iterator$] = null;
          dispatch[_sendDone]();
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        if (hasMore == null) {
          this[_iterator$] = const$14 || (const$14 = dart.const(new (EmptyIteratorOfNull()).new()));
          dispatch[_sendError](e, s);
        } else {
          dispatch[_sendError](e, s);
        }
      }
    }
    clear() {
      if (dart.test(this.isScheduled)) this.cancelSchedule();
      this[_iterator$] = null;
    }
  }
  (_IterablePendingEvents.new = function(data) {
    this[_iterator$] = data[$iterator];
    _IterablePendingEvents.__proto__.new.call(this);
  }).prototype = _IterablePendingEvents.prototype;
  dart.addTypeTests(_IterablePendingEvents);
  _IterablePendingEvents.prototype[_is__IterablePendingEvents_default] = true;
  dart.setMethodSignature(_IterablePendingEvents, () => ({
    __proto__: dart.getMethods(_IterablePendingEvents.__proto__),
    handleNext: dart.fnType(dart.void, [core.Object]),
    clear: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_IterablePendingEvents, () => ({
    __proto__: dart.getGetters(_IterablePendingEvents.__proto__),
    isEmpty: core.bool
  }));
  dart.setFieldSignature(_IterablePendingEvents, () => ({
    __proto__: dart.getFields(_IterablePendingEvents.__proto__),
    [_iterator$]: dart.fieldType(IteratorOfT())
  }));
  return _IterablePendingEvents;
});
async._IterablePendingEvents = async._IterablePendingEvents$();
dart.addTypeTests(async._IterablePendingEvents, _is__IterablePendingEvents_default);
async._nullDataHandler = function(value) {
};
async._nullErrorHandler = function(error, stackTrace) {
  if (stackTrace === void 0) stackTrace = null;
  async.Zone.current.handleUncaughtError(error, stackTrace);
};
async._nullDoneHandler = function() {
};
const _is__DelayedEvent_default = Symbol('_is__DelayedEvent_default');
async._DelayedEvent$ = dart.generic(T => {
  class _DelayedEvent extends core.Object {}
  (_DelayedEvent.new = function() {
    this.next = null;
  }).prototype = _DelayedEvent.prototype;
  dart.addTypeTests(_DelayedEvent);
  _DelayedEvent.prototype[_is__DelayedEvent_default] = true;
  dart.setFieldSignature(_DelayedEvent, () => ({
    __proto__: dart.getFields(_DelayedEvent.__proto__),
    next: dart.fieldType(async._DelayedEvent)
  }));
  return _DelayedEvent;
});
async._DelayedEvent = async._DelayedEvent$();
dart.addTypeTests(async._DelayedEvent, _is__DelayedEvent_default);
const _is__DelayedData_default = Symbol('_is__DelayedData_default');
async._DelayedData$ = dart.generic(T => {
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  class _DelayedData extends async._DelayedEvent$(T) {
    perform(dispatch) {
      _EventDispatchOfT()._check(dispatch);
      dispatch[_sendData](this.value);
    }
  }
  (_DelayedData.new = function(value) {
    this.value = value;
    _DelayedData.__proto__.new.call(this);
  }).prototype = _DelayedData.prototype;
  dart.addTypeTests(_DelayedData);
  _DelayedData.prototype[_is__DelayedData_default] = true;
  dart.setMethodSignature(_DelayedData, () => ({
    __proto__: dart.getMethods(_DelayedData.__proto__),
    perform: dart.fnType(dart.void, [core.Object])
  }));
  dart.setFieldSignature(_DelayedData, () => ({
    __proto__: dart.getFields(_DelayedData.__proto__),
    value: dart.finalFieldType(T)
  }));
  return _DelayedData;
});
async._DelayedData = async._DelayedData$();
dart.addTypeTests(async._DelayedData, _is__DelayedData_default);
async._DelayedError = class _DelayedError extends async._DelayedEvent {
  perform(dispatch) {
    dispatch[_sendError](this.error, this.stackTrace);
  }
};
(async._DelayedError.new = function(error, stackTrace) {
  this.error = error;
  this.stackTrace = stackTrace;
  async._DelayedError.__proto__.new.call(this);
}).prototype = async._DelayedError.prototype;
dart.addTypeTests(async._DelayedError);
dart.setMethodSignature(async._DelayedError, () => ({
  __proto__: dart.getMethods(async._DelayedError.__proto__),
  perform: dart.fnType(dart.void, [async._EventDispatch])
}));
dart.setFieldSignature(async._DelayedError, () => ({
  __proto__: dart.getFields(async._DelayedError.__proto__),
  error: dart.finalFieldType(dart.dynamic),
  stackTrace: dart.finalFieldType(core.StackTrace)
}));
async._DelayedDone = class _DelayedDone extends core.Object {
  perform(dispatch) {
    dispatch[_sendDone]();
  }
  get next() {
    return null;
  }
  set next(_) {
    dart.throw(new core.StateError.new("No events after a done."));
  }
};
(async._DelayedDone.new = function() {
}).prototype = async._DelayedDone.prototype;
dart.addTypeTests(async._DelayedDone);
async._DelayedDone[dart.implements] = () => [async._DelayedEvent];
dart.setMethodSignature(async._DelayedDone, () => ({
  __proto__: dart.getMethods(async._DelayedDone.__proto__),
  perform: dart.fnType(dart.void, [async._EventDispatch])
}));
dart.setGetterSignature(async._DelayedDone, () => ({
  __proto__: dart.getGetters(async._DelayedDone.__proto__),
  next: async._DelayedEvent
}));
dart.setSetterSignature(async._DelayedDone, () => ({
  __proto__: dart.getSetters(async._DelayedDone.__proto__),
  next: async._DelayedEvent
}));
const _is__StreamImplEvents_default = Symbol('_is__StreamImplEvents_default');
async._StreamImplEvents$ = dart.generic(T => {
  let _EventDispatchOfT = () => (_EventDispatchOfT = dart.constFn(async._EventDispatch$(T)))();
  class _StreamImplEvents extends async._PendingEvents$(T) {
    get isEmpty() {
      return this.lastPendingEvent == null;
    }
    add(event) {
      if (this.lastPendingEvent == null) {
        this.firstPendingEvent = this.lastPendingEvent = event;
      } else {
        this.lastPendingEvent = this.lastPendingEvent.next = event;
      }
    }
    handleNext(dispatch) {
      _EventDispatchOfT()._check(dispatch);
      if (!!dart.test(this.isScheduled)) dart.assertFailed();
      let event = this.firstPendingEvent;
      this.firstPendingEvent = event.next;
      if (this.firstPendingEvent == null) {
        this.lastPendingEvent = null;
      }
      event.perform(dispatch);
    }
    clear() {
      if (dart.test(this.isScheduled)) this.cancelSchedule();
      this.firstPendingEvent = this.lastPendingEvent = null;
    }
  }
  (_StreamImplEvents.new = function() {
    this.firstPendingEvent = null;
    this.lastPendingEvent = null;
    _StreamImplEvents.__proto__.new.call(this);
  }).prototype = _StreamImplEvents.prototype;
  dart.addTypeTests(_StreamImplEvents);
  _StreamImplEvents.prototype[_is__StreamImplEvents_default] = true;
  dart.setMethodSignature(_StreamImplEvents, () => ({
    __proto__: dart.getMethods(_StreamImplEvents.__proto__),
    add: dart.fnType(dart.void, [async._DelayedEvent]),
    handleNext: dart.fnType(dart.void, [core.Object]),
    clear: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_StreamImplEvents, () => ({
    __proto__: dart.getGetters(_StreamImplEvents.__proto__),
    isEmpty: core.bool
  }));
  dart.setFieldSignature(_StreamImplEvents, () => ({
    __proto__: dart.getFields(_StreamImplEvents.__proto__),
    firstPendingEvent: dart.fieldType(async._DelayedEvent),
    lastPendingEvent: dart.fieldType(async._DelayedEvent)
  }));
  return _StreamImplEvents;
});
async._StreamImplEvents = async._StreamImplEvents$();
dart.addTypeTests(async._StreamImplEvents, _is__StreamImplEvents_default);
const _schedule = Symbol('_schedule');
const _isSent = Symbol('_isSent');
const _isScheduled = Symbol('_isScheduled');
const _is__DoneStreamSubscription_default = Symbol('_is__DoneStreamSubscription_default');
async._DoneStreamSubscription$ = dart.generic(T => {
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  class _DoneStreamSubscription extends core.Object {
    get [_isSent]() {
      return (dart.notNull(this[_state]) & 1) !== 0;
    }
    get [_isScheduled]() {
      return (dart.notNull(this[_state]) & 2) !== 0;
    }
    get isPaused() {
      return dart.notNull(this[_state]) >= 4;
    }
    [_schedule]() {
      if (dart.test(this[_isScheduled])) return;
      this[_zone$].scheduleMicrotask(dart.bind(this, _sendDone));
      this[_state] = (dart.notNull(this[_state]) | 2) >>> 0;
    }
    onData(handleData) {}
    onError(handleError) {}
    onDone(handleDone) {
      this[_onDone] = handleDone;
    }
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      this[_state] = dart.notNull(this[_state]) + 4;
      if (resumeSignal != null) resumeSignal.whenComplete(dart.bind(this, 'resume'));
    }
    resume() {
      if (dart.test(this.isPaused)) {
        this[_state] = dart.notNull(this[_state]) - 4;
        if (!dart.test(this.isPaused) && !dart.test(this[_isSent])) {
          this[_schedule]();
        }
      }
    }
    cancel() {
      return async.Future._nullFuture;
    }
    asFuture(E, futureValue) {
      if (futureValue === void 0) futureValue = null;
      let result = new (async._Future$(E)).new();
      this[_onDone] = dart.fn(() => {
        result[_completeWithValue](futureValue);
      }, VoidToNull());
      return result;
    }
    [_sendDone]() {
      this[_state] = (dart.notNull(this[_state]) & ~2) >>> 0;
      if (dart.test(this.isPaused)) return;
      this[_state] = (dart.notNull(this[_state]) | 1) >>> 0;
      if (this[_onDone] != null) this[_zone$].runGuarded(this[_onDone]);
    }
  }
  (_DoneStreamSubscription.new = function(onDone) {
    this[_state] = 0;
    this[_onDone] = onDone;
    this[_zone$] = async.Zone.current;
    this[_schedule]();
  }).prototype = _DoneStreamSubscription.prototype;
  _DoneStreamSubscription.prototype[dart.isStreamSubscription] = true;
  dart.addTypeTests(_DoneStreamSubscription);
  _DoneStreamSubscription.prototype[_is__DoneStreamSubscription_default] = true;
  _DoneStreamSubscription[dart.implements] = () => [StreamSubscriptionOfT()];
  dart.setMethodSignature(_DoneStreamSubscription, () => ({
    __proto__: dart.getMethods(_DoneStreamSubscription.__proto__),
    [_schedule]: dart.fnType(dart.void, []),
    onData: dart.fnType(dart.void, [dart.fnType(dart.void, [T])]),
    onError: dart.fnType(dart.void, [core.Function]),
    onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    pause: dart.fnType(dart.void, [], [async.Future]),
    resume: dart.fnType(dart.void, []),
    cancel: dart.fnType(async.Future, []),
    asFuture: dart.gFnType(E => [async.Future$(E), [], [E]]),
    [_sendDone]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_DoneStreamSubscription, () => ({
    __proto__: dart.getGetters(_DoneStreamSubscription.__proto__),
    [_isSent]: core.bool,
    [_isScheduled]: core.bool,
    isPaused: core.bool
  }));
  dart.setFieldSignature(_DoneStreamSubscription, () => ({
    __proto__: dart.getFields(_DoneStreamSubscription.__proto__),
    [_zone$]: dart.finalFieldType(async.Zone),
    [_state]: dart.fieldType(core.int),
    [_onDone]: dart.fieldType(VoidTovoid())
  }));
  return _DoneStreamSubscription;
});
async._DoneStreamSubscription = async._DoneStreamSubscription$();
dart.defineLazy(async._DoneStreamSubscription, {
  /*async._DoneStreamSubscription._DONE_SENT*/get _DONE_SENT() {
    return 1;
  },
  /*async._DoneStreamSubscription._SCHEDULED*/get _SCHEDULED() {
    return 2;
  },
  /*async._DoneStreamSubscription._PAUSED*/get _PAUSED() {
    return 4;
  }
});
dart.addTypeTests(async._DoneStreamSubscription, _is__DoneStreamSubscription_default);
const _source$ = Symbol('_source');
const _onListenHandler = Symbol('_onListenHandler');
const _onCancelHandler = Symbol('_onCancelHandler');
const _cancelSubscription = Symbol('_cancelSubscription');
const _pauseSubscription = Symbol('_pauseSubscription');
const _resumeSubscription = Symbol('_resumeSubscription');
const _isSubscriptionPaused = Symbol('_isSubscriptionPaused');
const _is__AsBroadcastStream_default = Symbol('_is__AsBroadcastStream_default');
async._AsBroadcastStream$ = dart.generic(T => {
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let _AsBroadcastStreamControllerOfT = () => (_AsBroadcastStreamControllerOfT = dart.constFn(async._AsBroadcastStreamController$(T)))();
  let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
  let _BroadcastSubscriptionWrapperOfT = () => (_BroadcastSubscriptionWrapperOfT = dart.constFn(async._BroadcastSubscriptionWrapper$(T)))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let StreamSubscriptionOfTTovoid = () => (StreamSubscriptionOfTTovoid = dart.constFn(dart.fnType(dart.void, [StreamSubscriptionOfT()])))();
  class _AsBroadcastStream extends async.Stream$(T) {
    get isBroadcast() {
      return true;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      if (this[_controller] == null || dart.test(this[_controller].isClosed)) {
        return new (_DoneStreamSubscriptionOfT()).new(onDone);
      }
      let t = this[_subscription];
      t == null ? this[_subscription] = this[_source$].listen(dart.bind(this[_controller], 'add'), {onError: dart.bind(this[_controller], 'addError'), onDone: dart.bind(this[_controller], 'close')}) : t;
      cancelOnError = true === cancelOnError;
      return this[_controller][_subscribe](onData, onError, onDone, cancelOnError);
    }
    [_onCancel]() {
      let shutdown = this[_controller] == null || dart.test(this[_controller].isClosed);
      if (this[_onCancelHandler] != null) {
        this[_zone$].runUnary(dart.void, _BroadcastSubscriptionWrapperOfT(), this[_onCancelHandler], new (_BroadcastSubscriptionWrapperOfT()).new(this));
      }
      if (shutdown) {
        if (this[_subscription] != null) {
          this[_subscription].cancel();
          this[_subscription] = null;
        }
      }
    }
    [_onListen]() {
      if (this[_onListenHandler] != null) {
        this[_zone$].runUnary(dart.void, _BroadcastSubscriptionWrapperOfT(), this[_onListenHandler], new (_BroadcastSubscriptionWrapperOfT()).new(this));
      }
    }
    [_cancelSubscription]() {
      if (this[_subscription] == null) return;
      let subscription = this[_subscription];
      this[_subscription] = null;
      this[_controller] = null;
      subscription.cancel();
    }
    [_pauseSubscription](resumeSignal) {
      if (this[_subscription] == null) return;
      this[_subscription].pause(resumeSignal);
    }
    [_resumeSubscription]() {
      if (this[_subscription] == null) return;
      this[_subscription].resume();
    }
    get [_isSubscriptionPaused]() {
      if (this[_subscription] == null) return false;
      return this[_subscription].isPaused;
    }
  }
  (_AsBroadcastStream.new = function(source, onListenHandler, onCancelHandler) {
    this[_controller] = null;
    this[_subscription] = null;
    this[_source$] = source;
    this[_onListenHandler] = async.Zone.current.registerUnaryCallback(dart.dynamic, StreamSubscriptionOfT(), onListenHandler);
    this[_onCancelHandler] = async.Zone.current.registerUnaryCallback(dart.dynamic, StreamSubscriptionOfT(), onCancelHandler);
    this[_zone$] = async.Zone.current;
    _AsBroadcastStream.__proto__.new.call(this);
    this[_controller] = new (_AsBroadcastStreamControllerOfT()).new(dart.bind(this, _onListen), dart.bind(this, _onCancel));
  }).prototype = _AsBroadcastStream.prototype;
  dart.addTypeTests(_AsBroadcastStream);
  _AsBroadcastStream.prototype[_is__AsBroadcastStream_default] = true;
  dart.setMethodSignature(_AsBroadcastStream, () => ({
    __proto__: dart.getMethods(_AsBroadcastStream.__proto__),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    [_onCancel]: dart.fnType(dart.void, []),
    [_onListen]: dart.fnType(dart.void, []),
    [_cancelSubscription]: dart.fnType(dart.void, []),
    [_pauseSubscription]: dart.fnType(dart.void, [async.Future]),
    [_resumeSubscription]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_AsBroadcastStream, () => ({
    __proto__: dart.getGetters(_AsBroadcastStream.__proto__),
    [_isSubscriptionPaused]: core.bool
  }));
  dart.setFieldSignature(_AsBroadcastStream, () => ({
    __proto__: dart.getFields(_AsBroadcastStream.__proto__),
    [_source$]: dart.finalFieldType(StreamOfT()),
    [_onListenHandler]: dart.finalFieldType(StreamSubscriptionOfTTovoid()),
    [_onCancelHandler]: dart.finalFieldType(StreamSubscriptionOfTTovoid()),
    [_zone$]: dart.finalFieldType(async.Zone),
    [_controller]: dart.fieldType(_AsBroadcastStreamControllerOfT()),
    [_subscription]: dart.fieldType(StreamSubscriptionOfT())
  }));
  return _AsBroadcastStream;
});
async._AsBroadcastStream = async._AsBroadcastStream$();
dart.addTypeTests(async._AsBroadcastStream, _is__AsBroadcastStream_default);
const _is__BroadcastSubscriptionWrapper_default = Symbol('_is__BroadcastSubscriptionWrapper_default');
async._BroadcastSubscriptionWrapper$ = dart.generic(T => {
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  class _BroadcastSubscriptionWrapper extends core.Object {
    onData(handleData) {
      dart.throw(new core.UnsupportedError.new("Cannot change handlers of asBroadcastStream source subscription."));
    }
    onError(handleError) {
      dart.throw(new core.UnsupportedError.new("Cannot change handlers of asBroadcastStream source subscription."));
    }
    onDone(handleDone) {
      dart.throw(new core.UnsupportedError.new("Cannot change handlers of asBroadcastStream source subscription."));
    }
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      this[_stream][_pauseSubscription](resumeSignal);
    }
    resume() {
      this[_stream][_resumeSubscription]();
    }
    cancel() {
      this[_stream][_cancelSubscription]();
      return async.Future._nullFuture;
    }
    get isPaused() {
      return this[_stream][_isSubscriptionPaused];
    }
    asFuture(E, futureValue) {
      if (futureValue === void 0) futureValue = null;
      dart.throw(new core.UnsupportedError.new("Cannot change handlers of asBroadcastStream source subscription."));
    }
  }
  (_BroadcastSubscriptionWrapper.new = function(stream) {
    this[_stream] = stream;
  }).prototype = _BroadcastSubscriptionWrapper.prototype;
  _BroadcastSubscriptionWrapper.prototype[dart.isStreamSubscription] = true;
  dart.addTypeTests(_BroadcastSubscriptionWrapper);
  _BroadcastSubscriptionWrapper.prototype[_is__BroadcastSubscriptionWrapper_default] = true;
  _BroadcastSubscriptionWrapper[dart.implements] = () => [StreamSubscriptionOfT()];
  dart.setMethodSignature(_BroadcastSubscriptionWrapper, () => ({
    __proto__: dart.getMethods(_BroadcastSubscriptionWrapper.__proto__),
    onData: dart.fnType(dart.void, [dart.fnType(dart.void, [T])]),
    onError: dart.fnType(dart.void, [core.Function]),
    onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    pause: dart.fnType(dart.void, [], [async.Future]),
    resume: dart.fnType(dart.void, []),
    cancel: dart.fnType(async.Future, []),
    asFuture: dart.gFnType(E => [async.Future$(E), [], [E]])
  }));
  dart.setGetterSignature(_BroadcastSubscriptionWrapper, () => ({
    __proto__: dart.getGetters(_BroadcastSubscriptionWrapper.__proto__),
    isPaused: core.bool
  }));
  dart.setFieldSignature(_BroadcastSubscriptionWrapper, () => ({
    __proto__: dart.getFields(_BroadcastSubscriptionWrapper.__proto__),
    [_stream]: dart.finalFieldType(async._AsBroadcastStream)
  }));
  return _BroadcastSubscriptionWrapper;
});
async._BroadcastSubscriptionWrapper = async._BroadcastSubscriptionWrapper$();
dart.addTypeTests(async._BroadcastSubscriptionWrapper, _is__BroadcastSubscriptionWrapper_default);
const _stateData = Symbol('_stateData');
const _initializeOrDone = Symbol('_initializeOrDone');
const _is__StreamIterator_default = Symbol('_is__StreamIterator_default');
async._StreamIterator$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let StreamIteratorOfT = () => (StreamIteratorOfT = dart.constFn(async.StreamIterator$(T)))();
  class _StreamIterator extends core.Object {
    get current() {
      if (this[_subscription] != null && dart.test(this[_isPaused])) {
        return T._check(this[_stateData]);
      }
      return null;
    }
    moveNext() {
      if (this[_subscription] != null) {
        if (dart.test(this[_isPaused])) {
          let future = new (_FutureOfbool()).new();
          this[_stateData] = future;
          this[_isPaused] = false;
          this[_subscription].resume();
          return future;
        }
        dart.throw(new core.StateError.new("Already waiting for next."));
      }
      return this[_initializeOrDone]();
    }
    [_initializeOrDone]() {
      if (!(this[_subscription] == null)) dart.assertFailed();
      let stateData = this[_stateData];
      if (stateData != null) {
        let stream = StreamOfT()._check(stateData);
        this[_subscription] = stream.listen(dart.bind(this, _onData$), {onError: dart.bind(this, _onError), onDone: dart.bind(this, _onDone), cancelOnError: true});
        let future = new (_FutureOfbool()).new();
        this[_stateData] = future;
        return future;
      }
      return async.Future._falseFuture;
    }
    cancel() {
      let subscription = StreamSubscriptionOfT()._check(this[_subscription]);
      let stateData = this[_stateData];
      this[_stateData] = null;
      if (subscription != null) {
        this[_subscription] = null;
        if (!dart.test(this[_isPaused])) {
          let future = _FutureOfbool()._check(stateData);
          future[_asyncComplete](false);
        }
        return subscription.cancel();
      }
      return async.Future._nullFuture;
    }
    [_onData$](data) {
      T._check(data);
      if (!(this[_subscription] != null && !dart.test(this[_isPaused]))) dart.assertFailed();
      let moveNextFuture = _FutureOfbool()._check(this[_stateData]);
      this[_stateData] = data;
      this[_isPaused] = true;
      moveNextFuture[_complete](true);
      if (this[_subscription] != null && dart.test(this[_isPaused])) this[_subscription].pause();
    }
    [_onError](error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (!(this[_subscription] != null && !dart.test(this[_isPaused]))) dart.assertFailed();
      let moveNextFuture = _FutureOfbool()._check(this[_stateData]);
      this[_subscription] = null;
      this[_stateData] = null;
      moveNextFuture[_completeError](error, stackTrace);
    }
    [_onDone]() {
      if (!(this[_subscription] != null && !dart.test(this[_isPaused]))) dart.assertFailed();
      let moveNextFuture = _FutureOfbool()._check(this[_stateData]);
      this[_subscription] = null;
      this[_stateData] = null;
      moveNextFuture[_complete](false);
    }
  }
  (_StreamIterator.new = function(stream) {
    this[_subscription] = null;
    this[_isPaused] = false;
    this[_stateData] = stream;
  }).prototype = _StreamIterator.prototype;
  dart.addTypeTests(_StreamIterator);
  _StreamIterator.prototype[_is__StreamIterator_default] = true;
  _StreamIterator[dart.implements] = () => [StreamIteratorOfT()];
  dart.setMethodSignature(_StreamIterator, () => ({
    __proto__: dart.getMethods(_StreamIterator.__proto__),
    moveNext: dart.fnType(async.Future$(core.bool), []),
    [_initializeOrDone]: dart.fnType(async.Future$(core.bool), []),
    cancel: dart.fnType(async.Future, []),
    [_onData$]: dart.fnType(dart.void, [core.Object]),
    [_onError]: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    [_onDone]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_StreamIterator, () => ({
    __proto__: dart.getGetters(_StreamIterator.__proto__),
    current: T
  }));
  dart.setFieldSignature(_StreamIterator, () => ({
    __proto__: dart.getFields(_StreamIterator.__proto__),
    [_subscription]: dart.fieldType(async.StreamSubscription),
    [_stateData]: dart.fieldType(core.Object),
    [_isPaused]: dart.fieldType(core.bool)
  }));
  return _StreamIterator;
});
async._StreamIterator = async._StreamIterator$();
dart.addTypeTests(async._StreamIterator, _is__StreamIterator_default);
const _is__EmptyStream_default = Symbol('_is__EmptyStream_default');
async._EmptyStream$ = dart.generic(T => {
  let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
  class _EmptyStream extends async.Stream$(T) {
    get isBroadcast() {
      return true;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return new (_DoneStreamSubscriptionOfT()).new(onDone);
    }
  }
  (_EmptyStream.new = function() {
    _EmptyStream.__proto__._internal.call(this);
  }).prototype = _EmptyStream.prototype;
  dart.addTypeTests(_EmptyStream);
  _EmptyStream.prototype[_is__EmptyStream_default] = true;
  dart.setMethodSignature(_EmptyStream, () => ({
    __proto__: dart.getMethods(_EmptyStream.__proto__),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
  }));
  return _EmptyStream;
});
async._EmptyStream = async._EmptyStream$();
dart.addTypeTests(async._EmptyStream, _is__EmptyStream_default);
async._runUserCode = function(T, userCode, onSuccess, onError) {
  try {
    onSuccess(userCode());
  } catch (e$) {
    let e = dart.getThrown(e$);
    let s = dart.stackTrace(e$);
    let replacement = async.Zone.current.errorCallback(e, s);
    if (replacement == null) {
      onError(e, s);
    } else {
      let error = async._nonNullError(replacement.error);
      let stackTrace = replacement.stackTrace;
      onError(error, stackTrace);
    }
  }
};
async._cancelAndError = function(subscription, future, error, stackTrace) {
  let cancelFuture = subscription.cancel();
  if (cancelFuture != null && !(cancelFuture == async.Future._nullFuture)) {
    cancelFuture.whenComplete(dart.fn(() => future[_completeError](error, stackTrace), VoidTovoid()));
  } else {
    future[_completeError](error, stackTrace);
  }
};
async._cancelAndErrorWithReplacement = function(subscription, future, error, stackTrace) {
  let replacement = async.Zone.current.errorCallback(error, stackTrace);
  if (replacement != null) {
    error = async._nonNullError(replacement.error);
    stackTrace = replacement.stackTrace;
  }
  async._cancelAndError(subscription, future, error, stackTrace);
};
async._cancelAndErrorClosure = function(subscription, future) {
  return dart.fn((error, stackTrace) => {
    async._cancelAndError(subscription, future, error, stackTrace);
  }, dynamicAndStackTraceToNull());
};
async._cancelAndValue = function(subscription, future, value) {
  let cancelFuture = subscription.cancel();
  if (cancelFuture != null && !(cancelFuture == async.Future._nullFuture)) {
    cancelFuture.whenComplete(dart.fn(() => future[_complete](value), VoidTovoid()));
  } else {
    future[_complete](value);
  }
};
const _handleData$ = Symbol('_handleData');
const _handleError$ = Symbol('_handleError');
const _handleDone = Symbol('_handleDone');
const _is__ForwardingStream_default = Symbol('_is__ForwardingStream_default');
async._ForwardingStream$ = dart.generic((S, T) => {
  let _ForwardingStreamSubscriptionOfS$T = () => (_ForwardingStreamSubscriptionOfS$T = dart.constFn(async._ForwardingStreamSubscription$(S, T)))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  class _ForwardingStream extends async.Stream$(T) {
    get isBroadcast() {
      return this[_source$].isBroadcast;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      cancelOnError = true === cancelOnError;
      return this[_createSubscription](onData, onError, onDone, cancelOnError);
    }
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return new (_ForwardingStreamSubscriptionOfS$T()).new(this, onData, onError, onDone, cancelOnError);
    }
    [_handleData$](data, sink) {
      S._check(data);
      _EventSinkOfT()._check(sink);
      sink[_add](T._check(data));
    }
    [_handleError$](error, stackTrace, sink) {
      _EventSinkOfT()._check(sink);
      sink[_addError](error, stackTrace);
    }
    [_handleDone](sink) {
      _EventSinkOfT()._check(sink);
      sink[_close]();
    }
  }
  (_ForwardingStream.new = function(source) {
    this[_source$] = source;
    _ForwardingStream.__proto__.new.call(this);
  }).prototype = _ForwardingStream.prototype;
  dart.addTypeTests(_ForwardingStream);
  _ForwardingStream.prototype[_is__ForwardingStream_default] = true;
  dart.setMethodSignature(_ForwardingStream, () => ({
    __proto__: dart.getMethods(_ForwardingStream.__proto__),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
    [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object]),
    [_handleError$]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace, core.Object]),
    [_handleDone]: dart.fnType(dart.void, [core.Object])
  }));
  dart.setGetterSignature(_ForwardingStream, () => ({
    __proto__: dart.getGetters(_ForwardingStream.__proto__),
    isBroadcast: core.bool
  }));
  dart.setFieldSignature(_ForwardingStream, () => ({
    __proto__: dart.getFields(_ForwardingStream.__proto__),
    [_source$]: dart.finalFieldType(StreamOfS())
  }));
  return _ForwardingStream;
});
async._ForwardingStream = async._ForwardingStream$();
dart.addTypeTests(async._ForwardingStream, _is__ForwardingStream_default);
const _is__ForwardingStreamSubscription_default = Symbol('_is__ForwardingStreamSubscription_default');
async._ForwardingStreamSubscription$ = dart.generic((S, T) => {
  let _ForwardingStreamOfS$T = () => (_ForwardingStreamOfS$T = dart.constFn(async._ForwardingStream$(S, T)))();
  let StreamSubscriptionOfS = () => (StreamSubscriptionOfS = dart.constFn(async.StreamSubscription$(S)))();
  class _ForwardingStreamSubscription extends async._BufferingStreamSubscription$(T) {
    [_add](data) {
      T._check(data);
      if (dart.test(this[_isClosed])) return;
      super[_add](data);
    }
    [_addError](error, stackTrace) {
      if (dart.test(this[_isClosed])) return;
      super[_addError](error, stackTrace);
    }
    [_onPause]() {
      if (this[_subscription] == null) return;
      this[_subscription].pause();
    }
    [_onResume]() {
      if (this[_subscription] == null) return;
      this[_subscription].resume();
    }
    [_onCancel]() {
      if (this[_subscription] != null) {
        let subscription = this[_subscription];
        this[_subscription] = null;
        return subscription.cancel();
      }
      return null;
    }
    [_handleData$](data) {
      S._check(data);
      this[_stream][_handleData$](data, this);
    }
    [_handleError$](error, stackTrace) {
      this[_stream][_handleError$](error, stackTrace, this);
    }
    [_handleDone]() {
      this[_stream][_handleDone](this);
    }
  }
  (_ForwardingStreamSubscription.new = function(stream, onData, onError, onDone, cancelOnError) {
    this[_subscription] = null;
    this[_stream] = stream;
    _ForwardingStreamSubscription.__proto__.new.call(this, onData, onError, onDone, cancelOnError);
    this[_subscription] = this[_stream][_source$].listen(dart.bind(this, _handleData$), {onError: dart.bind(this, _handleError$), onDone: dart.bind(this, _handleDone)});
  }).prototype = _ForwardingStreamSubscription.prototype;
  dart.addTypeTests(_ForwardingStreamSubscription);
  _ForwardingStreamSubscription.prototype[_is__ForwardingStreamSubscription_default] = true;
  dart.setMethodSignature(_ForwardingStreamSubscription, () => ({
    __proto__: dart.getMethods(_ForwardingStreamSubscription.__proto__),
    [_add]: dart.fnType(dart.void, [core.Object]),
    [_addError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_onPause]: dart.fnType(dart.void, []),
    [_onResume]: dart.fnType(dart.void, []),
    [_onCancel]: dart.fnType(async.Future, []),
    [_handleData$]: dart.fnType(dart.void, [core.Object]),
    [_handleError$]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace]),
    [_handleDone]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_ForwardingStreamSubscription, () => ({
    __proto__: dart.getFields(_ForwardingStreamSubscription.__proto__),
    [_stream]: dart.finalFieldType(_ForwardingStreamOfS$T()),
    [_subscription]: dart.fieldType(StreamSubscriptionOfS())
  }));
  return _ForwardingStreamSubscription;
});
async._ForwardingStreamSubscription = async._ForwardingStreamSubscription$();
dart.addTypeTests(async._ForwardingStreamSubscription, _is__ForwardingStreamSubscription_default);
async._addErrorWithReplacement = function(sink, error, stackTrace) {
  let replacement = async.Zone.current.errorCallback(error, stackTrace);
  if (replacement != null) {
    error = async._nonNullError(replacement.error);
    stackTrace = replacement.stackTrace;
  }
  sink[_addError](error, stackTrace);
};
const _test = Symbol('_test');
const _is__WhereStream_default = Symbol('_is__WhereStream_default');
async._WhereStream$ = dart.generic(T => {
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let TTobool = () => (TTobool = dart.constFn(dart.fnType(core.bool, [T])))();
  class _WhereStream extends async._ForwardingStream$(T, T) {
    [_handleData$](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let satisfies = null;
      try {
        satisfies = this[_test](inputEvent);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        async._addErrorWithReplacement(sink, e, s);
        return;
      }
      if (dart.test(satisfies)) {
        sink[_add](inputEvent);
      }
    }
  }
  (_WhereStream.new = function(source, test) {
    this[_test] = test;
    _WhereStream.__proto__.new.call(this, source);
  }).prototype = _WhereStream.prototype;
  dart.addTypeTests(_WhereStream);
  _WhereStream.prototype[_is__WhereStream_default] = true;
  dart.setMethodSignature(_WhereStream, () => ({
    __proto__: dart.getMethods(_WhereStream.__proto__),
    [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
  }));
  dart.setFieldSignature(_WhereStream, () => ({
    __proto__: dart.getFields(_WhereStream.__proto__),
    [_test]: dart.finalFieldType(TTobool())
  }));
  return _WhereStream;
});
async._WhereStream = async._WhereStream$();
dart.addTypeTests(async._WhereStream, _is__WhereStream_default);
const _transform = Symbol('_transform');
const _is__MapStream_default = Symbol('_is__MapStream_default');
async._MapStream$ = dart.generic((S, T) => {
  let SToT = () => (SToT = dart.constFn(dart.fnType(T, [S])))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  class _MapStream extends async._ForwardingStream$(S, T) {
    [_handleData$](inputEvent, sink) {
      S._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let outputEvent = null;
      try {
        outputEvent = this[_transform](inputEvent);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        async._addErrorWithReplacement(sink, e, s);
        return;
      }
      sink[_add](outputEvent);
    }
  }
  (_MapStream.new = function(source, transform) {
    this[_transform] = transform;
    _MapStream.__proto__.new.call(this, source);
  }).prototype = _MapStream.prototype;
  dart.addTypeTests(_MapStream);
  _MapStream.prototype[_is__MapStream_default] = true;
  dart.setMethodSignature(_MapStream, () => ({
    __proto__: dart.getMethods(_MapStream.__proto__),
    [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
  }));
  dart.setFieldSignature(_MapStream, () => ({
    __proto__: dart.getFields(_MapStream.__proto__),
    [_transform]: dart.finalFieldType(SToT())
  }));
  return _MapStream;
});
async._MapStream = async._MapStream$();
dart.addTypeTests(async._MapStream, _is__MapStream_default);
const _expand = Symbol('_expand');
const _is__ExpandStream_default = Symbol('_is__ExpandStream_default');
async._ExpandStream$ = dart.generic((S, T) => {
  let SToIterableOfT = () => (SToIterableOfT = dart.constFn(dart.fnType(IterableOfT(), [S])))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let IterableOfT = () => (IterableOfT = dart.constFn(core.Iterable$(T)))();
  class _ExpandStream extends async._ForwardingStream$(S, T) {
    [_handleData$](inputEvent, sink) {
      S._check(inputEvent);
      _EventSinkOfT()._check(sink);
      try {
        for (let value of this[_expand](inputEvent)) {
          sink[_add](value);
        }
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        async._addErrorWithReplacement(sink, e, s);
      }
    }
  }
  (_ExpandStream.new = function(source, expand) {
    this[_expand] = expand;
    _ExpandStream.__proto__.new.call(this, source);
  }).prototype = _ExpandStream.prototype;
  dart.addTypeTests(_ExpandStream);
  _ExpandStream.prototype[_is__ExpandStream_default] = true;
  dart.setMethodSignature(_ExpandStream, () => ({
    __proto__: dart.getMethods(_ExpandStream.__proto__),
    [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
  }));
  dart.setFieldSignature(_ExpandStream, () => ({
    __proto__: dart.getFields(_ExpandStream.__proto__),
    [_expand]: dart.finalFieldType(SToIterableOfT())
  }));
  return _ExpandStream;
});
async._ExpandStream = async._ExpandStream$();
dart.addTypeTests(async._ExpandStream, _is__ExpandStream_default);
const _is__HandleErrorStream_default = Symbol('_is__HandleErrorStream_default');
async._HandleErrorStream$ = dart.generic(T => {
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  class _HandleErrorStream extends async._ForwardingStream$(T, T) {
    [_handleError$](error, stackTrace, sink) {
      _EventSinkOfT()._check(sink);
      let matches = true;
      if (this[_test] != null) {
        try {
          matches = this[_test](error);
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async._addErrorWithReplacement(sink, e, s);
          return;
        }
      }
      if (dart.test(matches)) {
        try {
          async._invokeErrorHandler(this[_transform], error, stackTrace);
        } catch (e$0) {
          let e = dart.getThrown(e$0);
          let s = dart.stackTrace(e$0);
          if (core.identical(e, error)) {
            sink[_addError](error, stackTrace);
          } else {
            async._addErrorWithReplacement(sink, e, s);
          }
          return;
        }
      } else {
        sink[_addError](error, stackTrace);
      }
    }
  }
  (_HandleErrorStream.new = function(source, onError, test) {
    this[_transform] = onError;
    this[_test] = test;
    _HandleErrorStream.__proto__.new.call(this, source);
  }).prototype = _HandleErrorStream.prototype;
  dart.addTypeTests(_HandleErrorStream);
  _HandleErrorStream.prototype[_is__HandleErrorStream_default] = true;
  dart.setMethodSignature(_HandleErrorStream, () => ({
    __proto__: dart.getMethods(_HandleErrorStream.__proto__),
    [_handleError$]: dart.fnType(dart.void, [core.Object, core.StackTrace, core.Object])
  }));
  dart.setFieldSignature(_HandleErrorStream, () => ({
    __proto__: dart.getFields(_HandleErrorStream.__proto__),
    [_transform]: dart.finalFieldType(core.Function),
    [_test]: dart.finalFieldType(dynamicTobool())
  }));
  return _HandleErrorStream;
});
async._HandleErrorStream = async._HandleErrorStream$();
dart.addTypeTests(async._HandleErrorStream, _is__HandleErrorStream_default);
const _count = Symbol('_count');
const _is__TakeStream_default = Symbol('_is__TakeStream_default');
async._TakeStream$ = dart.generic(T => {
  let _DoneStreamSubscriptionOfT = () => (_DoneStreamSubscriptionOfT = dart.constFn(async._DoneStreamSubscription$(T)))();
  let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  class _TakeStream extends async._ForwardingStream$(T, T) {
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      if (this[_count] === 0) {
        this[_source$].listen(null).cancel();
        return new (_DoneStreamSubscriptionOfT()).new(onDone);
      }
      return new (_StateStreamSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError, this[_count]);
    }
    [_handleData$](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let subscription = _StateStreamSubscriptionOfT()._check(sink);
      let count = subscription[_count];
      if (dart.notNull(count) > 0) {
        sink[_add](inputEvent);
        count = dart.notNull(count) - 1;
        subscription[_count] = count;
        if (count === 0) {
          sink[_close]();
        }
      }
    }
  }
  (_TakeStream.new = function(source, count) {
    this[_count] = count;
    _TakeStream.__proto__.new.call(this, source);
    core.ArgumentError.checkNotNull(count, "count");
  }).prototype = _TakeStream.prototype;
  dart.addTypeTests(_TakeStream);
  _TakeStream.prototype[_is__TakeStream_default] = true;
  dart.setMethodSignature(_TakeStream, () => ({
    __proto__: dart.getMethods(_TakeStream.__proto__),
    [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
    [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
  }));
  dart.setFieldSignature(_TakeStream, () => ({
    __proto__: dart.getFields(_TakeStream.__proto__),
    [_count]: dart.finalFieldType(core.int)
  }));
  return _TakeStream;
});
async._TakeStream = async._TakeStream$();
dart.addTypeTests(async._TakeStream, _is__TakeStream_default);
const _sharedState = Symbol('_sharedState');
const _flag = Symbol('_flag');
const _value = Symbol('_value');
const _is__StateStreamSubscription_default = Symbol('_is__StateStreamSubscription_default');
async._StateStreamSubscription$ = dart.generic(T => {
  class _StateStreamSubscription extends async._ForwardingStreamSubscription$(T, T) {
    get [_flag]() {
      return core.bool._check(this[_sharedState]);
    }
    set [_flag](flag) {
      this[_sharedState] = flag;
    }
    get [_count]() {
      return core.int._check(this[_sharedState]);
    }
    set [_count](count) {
      this[_sharedState] = count;
    }
    get [_value]() {
      return this[_sharedState];
    }
    set [_value](value) {
      this[_sharedState] = value;
    }
  }
  (_StateStreamSubscription.new = function(stream, onData, onError, onDone, cancelOnError, sharedState) {
    this[_sharedState] = sharedState;
    _StateStreamSubscription.__proto__.new.call(this, stream, onData, onError, onDone, cancelOnError);
  }).prototype = _StateStreamSubscription.prototype;
  dart.addTypeTests(_StateStreamSubscription);
  _StateStreamSubscription.prototype[_is__StateStreamSubscription_default] = true;
  dart.setGetterSignature(_StateStreamSubscription, () => ({
    __proto__: dart.getGetters(_StateStreamSubscription.__proto__),
    [_flag]: core.bool,
    [_count]: core.int,
    [_value]: core.Object
  }));
  dart.setSetterSignature(_StateStreamSubscription, () => ({
    __proto__: dart.getSetters(_StateStreamSubscription.__proto__),
    [_flag]: core.bool,
    [_count]: core.int,
    [_value]: core.Object
  }));
  dart.setFieldSignature(_StateStreamSubscription, () => ({
    __proto__: dart.getFields(_StateStreamSubscription.__proto__),
    [_sharedState]: dart.fieldType(dart.dynamic)
  }));
  return _StateStreamSubscription;
});
async._StateStreamSubscription = async._StateStreamSubscription$();
dart.addTypeTests(async._StateStreamSubscription, _is__StateStreamSubscription_default);
const _is__TakeWhileStream_default = Symbol('_is__TakeWhileStream_default');
async._TakeWhileStream$ = dart.generic(T => {
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let TTobool = () => (TTobool = dart.constFn(dart.fnType(core.bool, [T])))();
  class _TakeWhileStream extends async._ForwardingStream$(T, T) {
    [_handleData$](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let satisfies = null;
      try {
        satisfies = this[_test](inputEvent);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        async._addErrorWithReplacement(sink, e, s);
        sink[_close]();
        return;
      }
      if (dart.test(satisfies)) {
        sink[_add](inputEvent);
      } else {
        sink[_close]();
      }
    }
  }
  (_TakeWhileStream.new = function(source, test) {
    this[_test] = test;
    _TakeWhileStream.__proto__.new.call(this, source);
  }).prototype = _TakeWhileStream.prototype;
  dart.addTypeTests(_TakeWhileStream);
  _TakeWhileStream.prototype[_is__TakeWhileStream_default] = true;
  dart.setMethodSignature(_TakeWhileStream, () => ({
    __proto__: dart.getMethods(_TakeWhileStream.__proto__),
    [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
  }));
  dart.setFieldSignature(_TakeWhileStream, () => ({
    __proto__: dart.getFields(_TakeWhileStream.__proto__),
    [_test]: dart.finalFieldType(TTobool())
  }));
  return _TakeWhileStream;
});
async._TakeWhileStream = async._TakeWhileStream$();
dart.addTypeTests(async._TakeWhileStream, _is__TakeWhileStream_default);
const _is__SkipStream_default = Symbol('_is__SkipStream_default');
async._SkipStream$ = dart.generic(T => {
  let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  class _SkipStream extends async._ForwardingStream$(T, T) {
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return new (_StateStreamSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError, this[_count]);
    }
    [_handleData$](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let subscription = _StateStreamSubscriptionOfT()._check(sink);
      let count = subscription[_count];
      if (dart.notNull(count) > 0) {
        subscription[_count] = dart.notNull(count) - 1;
        return;
      }
      sink[_add](inputEvent);
    }
  }
  (_SkipStream.new = function(source, count) {
    this[_count] = count;
    _SkipStream.__proto__.new.call(this, source);
    core.ArgumentError.checkNotNull(count, "count");
    core.RangeError.checkNotNegative(count, "count");
  }).prototype = _SkipStream.prototype;
  dart.addTypeTests(_SkipStream);
  _SkipStream.prototype[_is__SkipStream_default] = true;
  dart.setMethodSignature(_SkipStream, () => ({
    __proto__: dart.getMethods(_SkipStream.__proto__),
    [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
    [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
  }));
  dart.setFieldSignature(_SkipStream, () => ({
    __proto__: dart.getFields(_SkipStream.__proto__),
    [_count]: dart.finalFieldType(core.int)
  }));
  return _SkipStream;
});
async._SkipStream = async._SkipStream$();
dart.addTypeTests(async._SkipStream, _is__SkipStream_default);
const _is__SkipWhileStream_default = Symbol('_is__SkipWhileStream_default');
async._SkipWhileStream$ = dart.generic(T => {
  let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let TTobool = () => (TTobool = dart.constFn(dart.fnType(core.bool, [T])))();
  class _SkipWhileStream extends async._ForwardingStream$(T, T) {
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return new (_StateStreamSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError, false);
    }
    [_handleData$](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let subscription = _StateStreamSubscriptionOfT()._check(sink);
      let hasFailed = subscription[_flag];
      if (dart.test(hasFailed)) {
        sink[_add](inputEvent);
        return;
      }
      let satisfies = null;
      try {
        satisfies = this[_test](inputEvent);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        async._addErrorWithReplacement(sink, e, s);
        subscription[_flag] = true;
        return;
      }
      if (!dart.test(satisfies)) {
        subscription[_flag] = true;
        sink[_add](inputEvent);
      }
    }
  }
  (_SkipWhileStream.new = function(source, test) {
    this[_test] = test;
    _SkipWhileStream.__proto__.new.call(this, source);
  }).prototype = _SkipWhileStream.prototype;
  dart.addTypeTests(_SkipWhileStream);
  _SkipWhileStream.prototype[_is__SkipWhileStream_default] = true;
  dart.setMethodSignature(_SkipWhileStream, () => ({
    __proto__: dart.getMethods(_SkipWhileStream.__proto__),
    [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
    [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
  }));
  dart.setFieldSignature(_SkipWhileStream, () => ({
    __proto__: dart.getFields(_SkipWhileStream.__proto__),
    [_test]: dart.finalFieldType(TTobool())
  }));
  return _SkipWhileStream;
});
async._SkipWhileStream = async._SkipWhileStream$();
dart.addTypeTests(async._SkipWhileStream, _is__SkipWhileStream_default);
const _equals$ = Symbol('_equals');
const _is__DistinctStream_default = Symbol('_is__DistinctStream_default');
async._DistinctStream$ = dart.generic(T => {
  let _StateStreamSubscriptionOfT = () => (_StateStreamSubscriptionOfT = dart.constFn(async._StateStreamSubscription$(T)))();
  let _EventSinkOfT = () => (_EventSinkOfT = dart.constFn(async._EventSink$(T)))();
  let TAndTTobool = () => (TAndTTobool = dart.constFn(dart.fnType(core.bool, [T, T])))();
  class _DistinctStream extends async._ForwardingStream$(T, T) {
    [_createSubscription](onData, onError, onDone, cancelOnError) {
      return new (_StateStreamSubscriptionOfT()).new(this, onData, onError, onDone, cancelOnError, async._DistinctStream._SENTINEL);
    }
    [_handleData$](inputEvent, sink) {
      T._check(inputEvent);
      _EventSinkOfT()._check(sink);
      let subscription = _StateStreamSubscriptionOfT()._check(sink);
      let previous = subscription[_value];
      if (core.identical(previous, async._DistinctStream._SENTINEL)) {
        subscription[_value] = inputEvent;
        sink[_add](inputEvent);
      } else {
        let previousEvent = T._check(previous);
        let isEqual = null;
        try {
          if (this[_equals$] == null) {
            isEqual = dart.equals(previousEvent, inputEvent);
          } else {
            isEqual = this[_equals$](previousEvent, inputEvent);
          }
        } catch (e$) {
          let e = dart.getThrown(e$);
          let s = dart.stackTrace(e$);
          async._addErrorWithReplacement(sink, e, s);
          return;
        }
        if (!dart.test(isEqual)) {
          sink[_add](inputEvent);
          subscription[_value] = inputEvent;
        }
      }
    }
  }
  (_DistinctStream.new = function(source, equals) {
    this[_equals$] = equals;
    _DistinctStream.__proto__.new.call(this, source);
  }).prototype = _DistinctStream.prototype;
  dart.addTypeTests(_DistinctStream);
  _DistinctStream.prototype[_is__DistinctStream_default] = true;
  dart.setMethodSignature(_DistinctStream, () => ({
    __proto__: dart.getMethods(_DistinctStream.__proto__),
    [_createSubscription]: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T]), core.Function, dart.fnType(dart.void, []), core.bool]),
    [_handleData$]: dart.fnType(dart.void, [core.Object, core.Object])
  }));
  dart.setFieldSignature(_DistinctStream, () => ({
    __proto__: dart.getFields(_DistinctStream.__proto__),
    [_equals$]: dart.finalFieldType(TAndTTobool())
  }));
  return _DistinctStream;
});
async._DistinctStream = async._DistinctStream$();
dart.defineLazy(async._DistinctStream, {
  /*async._DistinctStream._SENTINEL*/get _SENTINEL() {
    return new core.Object.new();
  }
});
dart.addTypeTests(async._DistinctStream, _is__DistinctStream_default);
const _is__EventSinkWrapper_default = Symbol('_is__EventSinkWrapper_default');
async._EventSinkWrapper$ = dart.generic(T => {
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  class _EventSinkWrapper extends core.Object {
    add(data) {
      T._check(data);
      this[_sink][_add](data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_sink][_addError](error, stackTrace);
    }
    close() {
      this[_sink][_close]();
    }
  }
  (_EventSinkWrapper.new = function(sink) {
    this[_sink] = sink;
  }).prototype = _EventSinkWrapper.prototype;
  dart.addTypeTests(_EventSinkWrapper);
  _EventSinkWrapper.prototype[_is__EventSinkWrapper_default] = true;
  _EventSinkWrapper[dart.implements] = () => [EventSinkOfT()];
  dart.setMethodSignature(_EventSinkWrapper, () => ({
    __proto__: dart.getMethods(_EventSinkWrapper.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_EventSinkWrapper, () => ({
    __proto__: dart.getFields(_EventSinkWrapper.__proto__),
    [_sink]: dart.fieldType(async._EventSink)
  }));
  return _EventSinkWrapper;
});
async._EventSinkWrapper = async._EventSinkWrapper$();
dart.addTypeTests(async._EventSinkWrapper, _is__EventSinkWrapper_default);
const _transformerSink = Symbol('_transformerSink');
const _isSubscribed = Symbol('_isSubscribed');
const _is__SinkTransformerStreamSubscription_default = Symbol('_is__SinkTransformerStreamSubscription_default');
async._SinkTransformerStreamSubscription$ = dart.generic((S, T) => {
  let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
  let StreamSubscriptionOfS = () => (StreamSubscriptionOfS = dart.constFn(async.StreamSubscription$(S)))();
  let _EventSinkWrapperOfT = () => (_EventSinkWrapperOfT = dart.constFn(async._EventSinkWrapper$(T)))();
  class _SinkTransformerStreamSubscription extends async._BufferingStreamSubscription$(T) {
    get [_isSubscribed]() {
      return this[_subscription] != null;
    }
    [_add](data) {
      T._check(data);
      if (dart.test(this[_isClosed])) {
        dart.throw(new core.StateError.new("Stream is already closed"));
      }
      super[_add](data);
    }
    [_addError](error, stackTrace) {
      if (dart.test(this[_isClosed])) {
        dart.throw(new core.StateError.new("Stream is already closed"));
      }
      super[_addError](error, stackTrace);
    }
    [_close]() {
      if (dart.test(this[_isClosed])) {
        dart.throw(new core.StateError.new("Stream is already closed"));
      }
      super[_close]();
    }
    [_onPause]() {
      if (dart.test(this[_isSubscribed])) this[_subscription].pause();
    }
    [_onResume]() {
      if (dart.test(this[_isSubscribed])) this[_subscription].resume();
    }
    [_onCancel]() {
      if (dart.test(this[_isSubscribed])) {
        let subscription = this[_subscription];
        this[_subscription] = null;
        return subscription.cancel();
      }
      return null;
    }
    [_handleData$](data) {
      S._check(data);
      try {
        this[_transformerSink].add(data);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        this[_addError](e, s);
      }
    }
    [_handleError$](error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      try {
        this[_transformerSink].addError(error, stackTrace);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        if (core.identical(e, error)) {
          this[_addError](error, stackTrace);
        } else {
          this[_addError](e, s);
        }
      }
    }
    [_handleDone]() {
      try {
        this[_subscription] = null;
        this[_transformerSink].close();
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        this[_addError](e, s);
      }
    }
  }
  (_SinkTransformerStreamSubscription.new = function(source, mapper, onData, onError, onDone, cancelOnError) {
    this[_transformerSink] = null;
    this[_subscription] = null;
    _SinkTransformerStreamSubscription.__proto__.new.call(this, onData, onError, onDone, cancelOnError);
    let eventSink = new (_EventSinkWrapperOfT()).new(this);
    this[_transformerSink] = mapper(eventSink);
    this[_subscription] = source.listen(dart.bind(this, _handleData$), {onError: dart.bind(this, _handleError$), onDone: dart.bind(this, _handleDone)});
  }).prototype = _SinkTransformerStreamSubscription.prototype;
  dart.addTypeTests(_SinkTransformerStreamSubscription);
  _SinkTransformerStreamSubscription.prototype[_is__SinkTransformerStreamSubscription_default] = true;
  dart.setMethodSignature(_SinkTransformerStreamSubscription, () => ({
    __proto__: dart.getMethods(_SinkTransformerStreamSubscription.__proto__),
    [_add]: dart.fnType(dart.void, [core.Object]),
    [_addError]: dart.fnType(dart.void, [core.Object, core.StackTrace]),
    [_close]: dart.fnType(dart.void, []),
    [_onPause]: dart.fnType(dart.void, []),
    [_onResume]: dart.fnType(dart.void, []),
    [_onCancel]: dart.fnType(async.Future, []),
    [_handleData$]: dart.fnType(dart.void, [core.Object]),
    [_handleError$]: dart.fnType(dart.void, [dart.dynamic], [core.StackTrace]),
    [_handleDone]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_SinkTransformerStreamSubscription, () => ({
    __proto__: dart.getGetters(_SinkTransformerStreamSubscription.__proto__),
    [_isSubscribed]: core.bool
  }));
  dart.setFieldSignature(_SinkTransformerStreamSubscription, () => ({
    __proto__: dart.getFields(_SinkTransformerStreamSubscription.__proto__),
    [_transformerSink]: dart.fieldType(EventSinkOfS()),
    [_subscription]: dart.fieldType(StreamSubscriptionOfS())
  }));
  return _SinkTransformerStreamSubscription;
});
async._SinkTransformerStreamSubscription = async._SinkTransformerStreamSubscription$();
dart.addTypeTests(async._SinkTransformerStreamSubscription, _is__SinkTransformerStreamSubscription_default);
const _sinkMapper = Symbol('_sinkMapper');
const _is__StreamSinkTransformer_default = Symbol('_is__StreamSinkTransformer_default');
async._StreamSinkTransformer$ = dart.generic((S, T) => {
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let _BoundSinkStreamOfS$T = () => (_BoundSinkStreamOfS$T = dart.constFn(async._BoundSinkStream$(S, T)))();
  let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
  let EventSinkOfTToEventSinkOfS = () => (EventSinkOfTToEventSinkOfS = dart.constFn(dart.fnType(EventSinkOfS(), [EventSinkOfT()])))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  class _StreamSinkTransformer extends async.StreamTransformerBase$(S, T) {
    bind(stream) {
      StreamOfS()._check(stream);
      return new (_BoundSinkStreamOfS$T()).new(stream, this[_sinkMapper]);
    }
  }
  (_StreamSinkTransformer.new = function(sinkMapper) {
    this[_sinkMapper] = sinkMapper;
    _StreamSinkTransformer.__proto__.new.call(this);
  }).prototype = _StreamSinkTransformer.prototype;
  dart.addTypeTests(_StreamSinkTransformer);
  _StreamSinkTransformer.prototype[_is__StreamSinkTransformer_default] = true;
  dart.setMethodSignature(_StreamSinkTransformer, () => ({
    __proto__: dart.getMethods(_StreamSinkTransformer.__proto__),
    bind: dart.fnType(async.Stream$(T), [core.Object])
  }));
  dart.setFieldSignature(_StreamSinkTransformer, () => ({
    __proto__: dart.getFields(_StreamSinkTransformer.__proto__),
    [_sinkMapper]: dart.finalFieldType(EventSinkOfTToEventSinkOfS())
  }));
  return _StreamSinkTransformer;
});
async._StreamSinkTransformer = async._StreamSinkTransformer$();
dart.addTypeTests(async._StreamSinkTransformer, _is__StreamSinkTransformer_default);
const _is__BoundSinkStream_default = Symbol('_is__BoundSinkStream_default');
async._BoundSinkStream$ = dart.generic((S, T) => {
  let _SinkTransformerStreamSubscriptionOfS$T = () => (_SinkTransformerStreamSubscriptionOfS$T = dart.constFn(async._SinkTransformerStreamSubscription$(S, T)))();
  let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
  let EventSinkOfTToEventSinkOfS = () => (EventSinkOfTToEventSinkOfS = dart.constFn(dart.fnType(EventSinkOfS(), [EventSinkOfT()])))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  class _BoundSinkStream extends async.Stream$(T) {
    get isBroadcast() {
      return this[_stream].isBroadcast;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      cancelOnError = true === cancelOnError;
      let subscription = new (_SinkTransformerStreamSubscriptionOfS$T()).new(this[_stream], this[_sinkMapper], onData, onError, onDone, cancelOnError);
      return subscription;
    }
  }
  (_BoundSinkStream.new = function(stream, sinkMapper) {
    this[_stream] = stream;
    this[_sinkMapper] = sinkMapper;
    _BoundSinkStream.__proto__.new.call(this);
  }).prototype = _BoundSinkStream.prototype;
  dart.addTypeTests(_BoundSinkStream);
  _BoundSinkStream.prototype[_is__BoundSinkStream_default] = true;
  dart.setMethodSignature(_BoundSinkStream, () => ({
    __proto__: dart.getMethods(_BoundSinkStream.__proto__),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
  }));
  dart.setGetterSignature(_BoundSinkStream, () => ({
    __proto__: dart.getGetters(_BoundSinkStream.__proto__),
    isBroadcast: core.bool
  }));
  dart.setFieldSignature(_BoundSinkStream, () => ({
    __proto__: dart.getFields(_BoundSinkStream.__proto__),
    [_sinkMapper]: dart.finalFieldType(EventSinkOfTToEventSinkOfS()),
    [_stream]: dart.finalFieldType(StreamOfS())
  }));
  return _BoundSinkStream;
});
async._BoundSinkStream = async._BoundSinkStream$();
dart.addTypeTests(async._BoundSinkStream, _is__BoundSinkStream_default);
const _is__HandlerEventSink_default = Symbol('_is__HandlerEventSink_default');
async._HandlerEventSink$ = dart.generic((S, T) => {
  let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
  let SAndEventSinkOfTTovoid = () => (SAndEventSinkOfTTovoid = dart.constFn(dart.fnType(dart.void, [S, EventSinkOfT()])))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  let ObjectAndStackTraceAndEventSinkOfTTovoid = () => (ObjectAndStackTraceAndEventSinkOfTTovoid = dart.constFn(dart.fnType(dart.void, [core.Object, core.StackTrace, EventSinkOfT()])))();
  let EventSinkOfTTovoid = () => (EventSinkOfTTovoid = dart.constFn(dart.fnType(dart.void, [EventSinkOfT()])))();
  class _HandlerEventSink extends core.Object {
    get [_isClosed]() {
      return this[_sink] == null;
    }
    add(data) {
      S._check(data);
      if (dart.test(this[_isClosed])) {
        dart.throw(new core.StateError.new("Sink is closed"));
      }
      if (this[_handleData$] != null) {
        this[_handleData$](data, this[_sink]);
      } else {
        this[_sink].add(T.as(data));
      }
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (dart.test(this[_isClosed])) {
        dart.throw(new core.StateError.new("Sink is closed"));
      }
      if (this[_handleError$] != null) {
        this[_handleError$](error, stackTrace, this[_sink]);
      } else {
        this[_sink].addError(error, stackTrace);
      }
    }
    close() {
      if (dart.test(this[_isClosed])) return;
      let sink = this[_sink];
      this[_sink] = null;
      if (this[_handleDone] != null) {
        this[_handleDone](sink);
      } else {
        sink.close();
      }
    }
  }
  (_HandlerEventSink.new = function(handleData, handleError, handleDone, sink) {
    this[_handleData$] = handleData;
    this[_handleError$] = handleError;
    this[_handleDone] = handleDone;
    this[_sink] = sink;
    if (this[_sink] == null) {
      dart.throw(new core.ArgumentError.new("The provided sink must not be null."));
    }
  }).prototype = _HandlerEventSink.prototype;
  dart.addTypeTests(_HandlerEventSink);
  _HandlerEventSink.prototype[_is__HandlerEventSink_default] = true;
  _HandlerEventSink[dart.implements] = () => [EventSinkOfS()];
  dart.setMethodSignature(_HandlerEventSink, () => ({
    __proto__: dart.getMethods(_HandlerEventSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_HandlerEventSink, () => ({
    __proto__: dart.getGetters(_HandlerEventSink.__proto__),
    [_isClosed]: core.bool
  }));
  dart.setFieldSignature(_HandlerEventSink, () => ({
    __proto__: dart.getFields(_HandlerEventSink.__proto__),
    [_handleData$]: dart.finalFieldType(SAndEventSinkOfTTovoid()),
    [_handleError$]: dart.finalFieldType(ObjectAndStackTraceAndEventSinkOfTTovoid()),
    [_handleDone]: dart.finalFieldType(EventSinkOfTTovoid()),
    [_sink]: dart.fieldType(EventSinkOfT())
  }));
  return _HandlerEventSink;
});
async._HandlerEventSink = async._HandlerEventSink$();
dart.addTypeTests(async._HandlerEventSink, _is__HandlerEventSink_default);
const _is__StreamHandlerTransformer_default = Symbol('_is__StreamHandlerTransformer_default');
async._StreamHandlerTransformer$ = dart.generic((S, T) => {
  let _HandlerEventSinkOfS$T = () => (_HandlerEventSinkOfS$T = dart.constFn(async._HandlerEventSink$(S, T)))();
  let EventSinkOfTTo_HandlerEventSinkOfS$T = () => (EventSinkOfTTo_HandlerEventSinkOfS$T = dart.constFn(dart.fnType(_HandlerEventSinkOfS$T(), [EventSinkOfT()])))();
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  class _StreamHandlerTransformer extends async._StreamSinkTransformer$(S, T) {
    bind(stream) {
      StreamOfS()._check(stream);
      return super.bind(stream);
    }
  }
  (_StreamHandlerTransformer.new = function(opts) {
    let handleData = opts && 'handleData' in opts ? opts.handleData : null;
    let handleError = opts && 'handleError' in opts ? opts.handleError : null;
    let handleDone = opts && 'handleDone' in opts ? opts.handleDone : null;
    _StreamHandlerTransformer.__proto__.new.call(this, dart.fn(outputSink => new (_HandlerEventSinkOfS$T()).new(handleData, handleError, handleDone, outputSink), EventSinkOfTTo_HandlerEventSinkOfS$T()));
  }).prototype = _StreamHandlerTransformer.prototype;
  dart.addTypeTests(_StreamHandlerTransformer);
  _StreamHandlerTransformer.prototype[_is__StreamHandlerTransformer_default] = true;
  dart.setMethodSignature(_StreamHandlerTransformer, () => ({
    __proto__: dart.getMethods(_StreamHandlerTransformer.__proto__),
    bind: dart.fnType(async.Stream$(T), [core.Object])
  }));
  return _StreamHandlerTransformer;
});
async._StreamHandlerTransformer = async._StreamHandlerTransformer$();
dart.addTypeTests(async._StreamHandlerTransformer, _is__StreamHandlerTransformer_default);
const _bind = Symbol('_bind');
const _is__StreamBindTransformer_default = Symbol('_is__StreamBindTransformer_default');
async._StreamBindTransformer$ = dart.generic((S, T) => {
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let StreamOfSToStreamOfT = () => (StreamOfSToStreamOfT = dart.constFn(dart.fnType(StreamOfT(), [StreamOfS()])))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class _StreamBindTransformer extends async.StreamTransformerBase$(S, T) {
    bind(stream) {
      StreamOfS()._check(stream);
      return this[_bind](stream);
    }
  }
  (_StreamBindTransformer.new = function(bind) {
    this[_bind] = bind;
    _StreamBindTransformer.__proto__.new.call(this);
  }).prototype = _StreamBindTransformer.prototype;
  dart.addTypeTests(_StreamBindTransformer);
  _StreamBindTransformer.prototype[_is__StreamBindTransformer_default] = true;
  dart.setMethodSignature(_StreamBindTransformer, () => ({
    __proto__: dart.getMethods(_StreamBindTransformer.__proto__),
    bind: dart.fnType(async.Stream$(T), [core.Object])
  }));
  dart.setFieldSignature(_StreamBindTransformer, () => ({
    __proto__: dart.getFields(_StreamBindTransformer.__proto__),
    [_bind]: dart.finalFieldType(StreamOfSToStreamOfT())
  }));
  return _StreamBindTransformer;
});
async._StreamBindTransformer = async._StreamBindTransformer$();
dart.addTypeTests(async._StreamBindTransformer, _is__StreamBindTransformer_default);
const _is__StreamSubscriptionTransformer_default = Symbol('_is__StreamSubscriptionTransformer_default');
async._StreamSubscriptionTransformer$ = dart.generic((S, T) => {
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let _BoundSubscriptionStreamOfS$T = () => (_BoundSubscriptionStreamOfS$T = dart.constFn(async._BoundSubscriptionStream$(S, T)))();
  let StreamOfSAndboolToStreamSubscriptionOfT = () => (StreamOfSAndboolToStreamSubscriptionOfT = dart.constFn(dart.fnType(StreamSubscriptionOfT(), [StreamOfS(), core.bool])))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  class _StreamSubscriptionTransformer extends async.StreamTransformerBase$(S, T) {
    bind(stream) {
      StreamOfS()._check(stream);
      return new (_BoundSubscriptionStreamOfS$T()).new(stream, this[_onListen]);
    }
  }
  (_StreamSubscriptionTransformer.new = function(onListen) {
    this[_onListen] = onListen;
    _StreamSubscriptionTransformer.__proto__.new.call(this);
  }).prototype = _StreamSubscriptionTransformer.prototype;
  dart.addTypeTests(_StreamSubscriptionTransformer);
  _StreamSubscriptionTransformer.prototype[_is__StreamSubscriptionTransformer_default] = true;
  dart.setMethodSignature(_StreamSubscriptionTransformer, () => ({
    __proto__: dart.getMethods(_StreamSubscriptionTransformer.__proto__),
    bind: dart.fnType(async.Stream$(T), [core.Object])
  }));
  dart.setFieldSignature(_StreamSubscriptionTransformer, () => ({
    __proto__: dart.getFields(_StreamSubscriptionTransformer.__proto__),
    [_onListen]: dart.finalFieldType(StreamOfSAndboolToStreamSubscriptionOfT())
  }));
  return _StreamSubscriptionTransformer;
});
async._StreamSubscriptionTransformer = async._StreamSubscriptionTransformer$();
dart.addTypeTests(async._StreamSubscriptionTransformer, _is__StreamSubscriptionTransformer_default);
const _is__BoundSubscriptionStream_default = Symbol('_is__BoundSubscriptionStream_default');
async._BoundSubscriptionStream$ = dart.generic((S, T) => {
  let StreamOfS = () => (StreamOfS = dart.constFn(async.Stream$(S)))();
  let StreamOfSAndboolToStreamSubscriptionOfT = () => (StreamOfSAndboolToStreamSubscriptionOfT = dart.constFn(dart.fnType(StreamSubscriptionOfT(), [StreamOfS(), core.bool])))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  class _BoundSubscriptionStream extends async.Stream$(T) {
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      cancelOnError = true === cancelOnError;
      let result = this[_onListen](this[_stream], cancelOnError);
      result.onData(onData);
      result.onError(onError);
      result.onDone(onDone);
      return result;
    }
  }
  (_BoundSubscriptionStream.new = function(stream, onListen) {
    this[_stream] = stream;
    this[_onListen] = onListen;
    _BoundSubscriptionStream.__proto__.new.call(this);
  }).prototype = _BoundSubscriptionStream.prototype;
  dart.addTypeTests(_BoundSubscriptionStream);
  _BoundSubscriptionStream.prototype[_is__BoundSubscriptionStream_default] = true;
  dart.setMethodSignature(_BoundSubscriptionStream, () => ({
    __proto__: dart.getMethods(_BoundSubscriptionStream.__proto__),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
  }));
  dart.setFieldSignature(_BoundSubscriptionStream, () => ({
    __proto__: dart.getFields(_BoundSubscriptionStream.__proto__),
    [_onListen]: dart.finalFieldType(StreamOfSAndboolToStreamSubscriptionOfT()),
    [_stream]: dart.finalFieldType(StreamOfS())
  }));
  return _BoundSubscriptionStream;
});
async._BoundSubscriptionStream = async._BoundSubscriptionStream$();
dart.addTypeTests(async._BoundSubscriptionStream, _is__BoundSubscriptionStream_default);
async.Timer = class Timer extends core.Object {
  static new(duration, callback) {
    if (dart.equals(async.Zone.current, async.Zone.root)) {
      return async.Zone.current.createTimer(duration, callback);
    }
    return async.Zone.current.createTimer(duration, async.Zone.current.bindCallbackGuarded(callback));
  }
  static periodic(duration, callback) {
    if (dart.equals(async.Zone.current, async.Zone.root)) {
      return async.Zone.current.createPeriodicTimer(duration, callback);
    }
    let boundCallback = async.Zone.current.bindUnaryCallbackGuarded(async.Timer, callback);
    return async.Zone.current.createPeriodicTimer(duration, boundCallback);
  }
  static run(callback) {
    async.Timer.new(core.Duration.zero, callback);
  }
  static _createTimer(duration, callback) {
    let milliseconds = duration.inMilliseconds;
    if (dart.notNull(milliseconds) < 0) milliseconds = 0;
    return new _isolate_helper.TimerImpl.new(milliseconds, callback);
  }
  static _createPeriodicTimer(duration, callback) {
    let milliseconds = duration.inMilliseconds;
    if (dart.notNull(milliseconds) < 0) milliseconds = 0;
    return new _isolate_helper.TimerImpl.periodic(milliseconds, callback);
  }
};
(async.Timer[dart.mixinNew] = function() {
}).prototype = async.Timer.prototype;
dart.addTypeTests(async.Timer);
async.AsyncError = class AsyncError extends core.Object {
  get error() {
    return this[error$];
  }
  set error(value) {
    super.error = value;
  }
  get stackTrace() {
    return this[stackTrace$];
  }
  set stackTrace(value) {
    super.stackTrace = value;
  }
  toString() {
    return dart.str(this.error);
  }
};
(async.AsyncError.new = function(error, stackTrace) {
  this[error$] = error;
  this[stackTrace$] = stackTrace;
}).prototype = async.AsyncError.prototype;
dart.addTypeTests(async.AsyncError);
const error$ = Symbol("AsyncError.error");
const stackTrace$ = Symbol("AsyncError.stackTrace");
async.AsyncError[dart.implements] = () => [core.Error];
dart.setFieldSignature(async.AsyncError, () => ({
  __proto__: dart.getFields(async.AsyncError.__proto__),
  error: dart.finalFieldType(core.Object),
  stackTrace: dart.finalFieldType(core.StackTrace)
}));
dart.defineExtensionMethods(async.AsyncError, ['toString']);
dart.defineExtensionAccessors(async.AsyncError, ['stackTrace']);
const _is__ZoneFunction_default = Symbol('_is__ZoneFunction_default');
async._ZoneFunction$ = dart.generic(T => {
  class _ZoneFunction extends core.Object {}
  (_ZoneFunction.new = function(zone, func) {
    this.zone = zone;
    this.function = func;
  }).prototype = _ZoneFunction.prototype;
  dart.addTypeTests(_ZoneFunction);
  _ZoneFunction.prototype[_is__ZoneFunction_default] = true;
  dart.setFieldSignature(_ZoneFunction, () => ({
    __proto__: dart.getFields(_ZoneFunction.__proto__),
    zone: dart.finalFieldType(async._Zone),
    function: dart.finalFieldType(T)
  }));
  return _ZoneFunction;
});
async._ZoneFunction = async._ZoneFunction$();
dart.addTypeTests(async._ZoneFunction, _is__ZoneFunction_default);
async.ZoneSpecification = class ZoneSpecification extends core.Object {
  static new(opts) {
    return new async._ZoneSpecification.new(opts);
  }
  static from(other, opts) {
    let handleUncaughtError = opts && 'handleUncaughtError' in opts ? opts.handleUncaughtError : null;
    let run = opts && 'run' in opts ? opts.run : null;
    let runUnary = opts && 'runUnary' in opts ? opts.runUnary : null;
    let runBinary = opts && 'runBinary' in opts ? opts.runBinary : null;
    let registerCallback = opts && 'registerCallback' in opts ? opts.registerCallback : null;
    let registerUnaryCallback = opts && 'registerUnaryCallback' in opts ? opts.registerUnaryCallback : null;
    let registerBinaryCallback = opts && 'registerBinaryCallback' in opts ? opts.registerBinaryCallback : null;
    let errorCallback = opts && 'errorCallback' in opts ? opts.errorCallback : null;
    let scheduleMicrotask = opts && 'scheduleMicrotask' in opts ? opts.scheduleMicrotask : null;
    let createTimer = opts && 'createTimer' in opts ? opts.createTimer : null;
    let createPeriodicTimer = opts && 'createPeriodicTimer' in opts ? opts.createPeriodicTimer : null;
    let print = opts && 'print' in opts ? opts.print : null;
    let fork = opts && 'fork' in opts ? opts.fork : null;
    return async.ZoneSpecification.new({handleUncaughtError: handleUncaughtError != null ? handleUncaughtError : other.handleUncaughtError, run: run != null ? run : other.run, runUnary: runUnary != null ? runUnary : other.runUnary, runBinary: runBinary != null ? runBinary : other.runBinary, registerCallback: registerCallback != null ? registerCallback : other.registerCallback, registerUnaryCallback: registerUnaryCallback != null ? registerUnaryCallback : other.registerUnaryCallback, registerBinaryCallback: registerBinaryCallback != null ? registerBinaryCallback : other.registerBinaryCallback, errorCallback: errorCallback != null ? errorCallback : other.errorCallback, scheduleMicrotask: scheduleMicrotask != null ? scheduleMicrotask : other.scheduleMicrotask, createTimer: createTimer != null ? createTimer : other.createTimer, createPeriodicTimer: createPeriodicTimer != null ? createPeriodicTimer : other.createPeriodicTimer, print: print != null ? print : other.print, fork: fork != null ? fork : other.fork});
  }
};
(async.ZoneSpecification[dart.mixinNew] = function() {
}).prototype = async.ZoneSpecification.prototype;
dart.addTypeTests(async.ZoneSpecification);
async._ZoneSpecification = class _ZoneSpecification extends core.Object {};
(async._ZoneSpecification.new = function(opts) {
  let handleUncaughtError = opts && 'handleUncaughtError' in opts ? opts.handleUncaughtError : null;
  let run = opts && 'run' in opts ? opts.run : null;
  let runUnary = opts && 'runUnary' in opts ? opts.runUnary : null;
  let runBinary = opts && 'runBinary' in opts ? opts.runBinary : null;
  let registerCallback = opts && 'registerCallback' in opts ? opts.registerCallback : null;
  let registerUnaryCallback = opts && 'registerUnaryCallback' in opts ? opts.registerUnaryCallback : null;
  let registerBinaryCallback = opts && 'registerBinaryCallback' in opts ? opts.registerBinaryCallback : null;
  let errorCallback = opts && 'errorCallback' in opts ? opts.errorCallback : null;
  let scheduleMicrotask = opts && 'scheduleMicrotask' in opts ? opts.scheduleMicrotask : null;
  let createTimer = opts && 'createTimer' in opts ? opts.createTimer : null;
  let createPeriodicTimer = opts && 'createPeriodicTimer' in opts ? opts.createPeriodicTimer : null;
  let print = opts && 'print' in opts ? opts.print : null;
  let fork = opts && 'fork' in opts ? opts.fork : null;
  this.handleUncaughtError = handleUncaughtError;
  this.run = run;
  this.runUnary = runUnary;
  this.runBinary = runBinary;
  this.registerCallback = registerCallback;
  this.registerUnaryCallback = registerUnaryCallback;
  this.registerBinaryCallback = registerBinaryCallback;
  this.errorCallback = errorCallback;
  this.scheduleMicrotask = scheduleMicrotask;
  this.createTimer = createTimer;
  this.createPeriodicTimer = createPeriodicTimer;
  this.print = print;
  this.fork = fork;
}).prototype = async._ZoneSpecification.prototype;
dart.addTypeTests(async._ZoneSpecification);
async._ZoneSpecification[dart.implements] = () => [async.ZoneSpecification];
dart.setFieldSignature(async._ZoneSpecification, () => ({
  __proto__: dart.getFields(async._ZoneSpecification.__proto__),
  handleUncaughtError: dart.finalFieldType(ZoneAndZoneDelegateAndZone__Tovoid()),
  run: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToR()),
  runUnary: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToR$()),
  runBinary: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToR$0()),
  registerCallback: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToFn()),
  registerUnaryCallback: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToFn$()),
  registerBinaryCallback: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToFn$0()),
  errorCallback: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToAsyncError()),
  scheduleMicrotask: dart.finalFieldType(ZoneAndZoneDelegateAndZone__Tovoid$()),
  createTimer: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToTimer()),
  createPeriodicTimer: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToTimer$()),
  print: dart.finalFieldType(ZoneAndZoneDelegateAndZone__Tovoid$0()),
  fork: dart.finalFieldType(ZoneAndZoneDelegateAndZone__ToZone())
}));
async.ZoneDelegate = class ZoneDelegate extends core.Object {};
(async.ZoneDelegate.new = function() {
}).prototype = async.ZoneDelegate.prototype;
dart.addTypeTests(async.ZoneDelegate);
async.Zone = class Zone extends core.Object {
  static get current() {
    return async.Zone._current;
  }
  static _enter(zone) {
    if (!(zone != null)) dart.assertFailed();
    if (!!(zone == async.Zone._current)) dart.assertFailed();
    let previous = async.Zone._current;
    async.Zone._current = zone;
    return previous;
  }
  static _leave(previous) {
    if (!(previous != null)) dart.assertFailed();
    async.Zone._current = previous;
  }
};
(async.Zone.__ = function() {
}).prototype = async.Zone.prototype;
dart.addTypeTests(async.Zone);
dart.defineLazy(async.Zone, {
  /*async.Zone.root*/get root() {
    return async._rootZone;
  },
  /*async.Zone._current*/get _current() {
    return async._rootZone;
  },
  set _current(_) {}
});
const _delegate = Symbol('_delegate');
async._parentDelegate = function(zone) {
  if (zone.parent == null) return null;
  return zone.parent[_delegate];
};
const _delegationTarget = Symbol('_delegationTarget');
const _handleUncaughtError = Symbol('_handleUncaughtError');
const _run = Symbol('_run');
const _runUnary = Symbol('_runUnary');
const _runBinary = Symbol('_runBinary');
const _registerCallback = Symbol('_registerCallback');
const _registerUnaryCallback = Symbol('_registerUnaryCallback');
const _registerBinaryCallback = Symbol('_registerBinaryCallback');
const _errorCallback = Symbol('_errorCallback');
const _createTimer = Symbol('_createTimer');
const _createPeriodicTimer = Symbol('_createPeriodicTimer');
const _print = Symbol('_print');
const _fork = Symbol('_fork');
async._ZoneDelegate = class _ZoneDelegate extends core.Object {
  handleUncaughtError(zone, error, stackTrace) {
    let implementation = this[_delegationTarget][_handleUncaughtError];
    let implZone = implementation.zone;
    let handler = implementation.function;
    return handler(implZone, async._parentDelegate(implZone), zone, error, stackTrace);
  }
  run(R, zone, f) {
    let implementation = this[_delegationTarget][_run];
    let implZone = implementation.zone;
    let handler = ZoneAndZoneDelegateAndZone__ToR()._check(implementation.function);
    return handler(R, implZone, async._parentDelegate(implZone), zone, f);
  }
  runUnary(R, T, zone, f, arg) {
    let implementation = this[_delegationTarget][_runUnary];
    let implZone = implementation.zone;
    let handler = ZoneAndZoneDelegateAndZone__ToR$()._check(implementation.function);
    return handler(R, T, implZone, async._parentDelegate(implZone), zone, f, arg);
  }
  runBinary(R, T1, T2, zone, f, arg1, arg2) {
    let implementation = this[_delegationTarget][_runBinary];
    let implZone = implementation.zone;
    let handler = ZoneAndZoneDelegateAndZone__ToR$0()._check(implementation.function);
    return handler(R, T1, T2, implZone, async._parentDelegate(implZone), zone, f, arg1, arg2);
  }
  registerCallback(R, zone, f) {
    let implementation = this[_delegationTarget][_registerCallback];
    let implZone = implementation.zone;
    let handler = ZoneAndZoneDelegateAndZone__ToFn()._check(implementation.function);
    return handler(R, implZone, async._parentDelegate(implZone), zone, f);
  }
  registerUnaryCallback(R, T, zone, f) {
    let implementation = this[_delegationTarget][_registerUnaryCallback];
    let implZone = implementation.zone;
    let handler = ZoneAndZoneDelegateAndZone__ToFn$()._check(implementation.function);
    return handler(R, T, implZone, async._parentDelegate(implZone), zone, f);
  }
  registerBinaryCallback(R, T1, T2, zone, f) {
    let implementation = this[_delegationTarget][_registerBinaryCallback];
    let implZone = implementation.zone;
    let handler = ZoneAndZoneDelegateAndZone__ToFn$0()._check(implementation.function);
    return handler(R, T1, T2, implZone, async._parentDelegate(implZone), zone, f);
  }
  errorCallback(zone, error, stackTrace) {
    let implementation = this[_delegationTarget][_errorCallback];
    let implZone = implementation.zone;
    if (implZone === async._rootZone) return null;
    let handler = implementation.function;
    return handler(implZone, async._parentDelegate(implZone), zone, error, stackTrace);
  }
  scheduleMicrotask(zone, f) {
    let implementation = this[_delegationTarget][_scheduleMicrotask];
    let implZone = implementation.zone;
    let handler = implementation.function;
    handler(implZone, async._parentDelegate(implZone), zone, f);
  }
  createTimer(zone, duration, f) {
    let implementation = this[_delegationTarget][_createTimer];
    let implZone = implementation.zone;
    let handler = implementation.function;
    return handler(implZone, async._parentDelegate(implZone), zone, duration, f);
  }
  createPeriodicTimer(zone, period, f) {
    let implementation = this[_delegationTarget][_createPeriodicTimer];
    let implZone = implementation.zone;
    let handler = implementation.function;
    return handler(implZone, async._parentDelegate(implZone), zone, period, f);
  }
  print(zone, line) {
    let implementation = this[_delegationTarget][_print];
    let implZone = implementation.zone;
    let handler = implementation.function;
    handler(implZone, async._parentDelegate(implZone), zone, line);
  }
  fork(zone, specification, zoneValues) {
    let implementation = this[_delegationTarget][_fork];
    let implZone = implementation.zone;
    let handler = implementation.function;
    return handler(implZone, async._parentDelegate(implZone), zone, specification, zoneValues);
  }
};
(async._ZoneDelegate.new = function(delegationTarget) {
  this[_delegationTarget] = delegationTarget;
}).prototype = async._ZoneDelegate.prototype;
dart.addTypeTests(async._ZoneDelegate);
async._ZoneDelegate[dart.implements] = () => [async.ZoneDelegate];
dart.setMethodSignature(async._ZoneDelegate, () => ({
  __proto__: dart.getMethods(async._ZoneDelegate.__proto__),
  handleUncaughtError: dart.fnType(dart.void, [async.Zone, dart.dynamic, core.StackTrace]),
  run: dart.gFnType(R => [R, [async.Zone, dart.fnType(R, [])]]),
  runUnary: dart.gFnType((R, T) => [R, [async.Zone, dart.fnType(R, [T]), T]]),
  runBinary: dart.gFnType((R, T1, T2) => [R, [async.Zone, dart.fnType(R, [T1, T2]), T1, T2]]),
  registerCallback: dart.gFnType(R => [dart.fnType(R, []), [async.Zone, dart.fnType(R, [])]]),
  registerUnaryCallback: dart.gFnType((R, T) => [dart.fnType(R, [T]), [async.Zone, dart.fnType(R, [T])]]),
  registerBinaryCallback: dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [async.Zone, dart.fnType(R, [T1, T2])]]),
  errorCallback: dart.fnType(async.AsyncError, [async.Zone, core.Object, core.StackTrace]),
  scheduleMicrotask: dart.fnType(dart.void, [async.Zone, dart.fnType(dart.dynamic, [])]),
  createTimer: dart.fnType(async.Timer, [async.Zone, core.Duration, dart.fnType(dart.void, [])]),
  createPeriodicTimer: dart.fnType(async.Timer, [async.Zone, core.Duration, dart.fnType(dart.void, [async.Timer])]),
  print: dart.fnType(dart.void, [async.Zone, core.String]),
  fork: dart.fnType(async.Zone, [async.Zone, async.ZoneSpecification, core.Map])
}));
dart.setFieldSignature(async._ZoneDelegate, () => ({
  __proto__: dart.getFields(async._ZoneDelegate.__proto__),
  [_delegationTarget]: dart.finalFieldType(async._Zone)
}));
async._Zone = class _Zone extends core.Object {
  inSameErrorZone(otherZone) {
    return this === otherZone || this.errorZone == otherZone.errorZone;
  }
};
(async._Zone.new = function() {
}).prototype = async._Zone.prototype;
dart.addTypeTests(async._Zone);
async._Zone[dart.implements] = () => [async.Zone];
dart.setMethodSignature(async._Zone, () => ({
  __proto__: dart.getMethods(async._Zone.__proto__),
  inSameErrorZone: dart.fnType(core.bool, [async.Zone])
}));
const _map$ = Symbol('_map');
const _delegateCache = Symbol('_delegateCache');
async._CustomZone = class _CustomZone extends async._Zone {
  get [_delegate]() {
    if (this[_delegateCache] != null) return this[_delegateCache];
    this[_delegateCache] = new async._ZoneDelegate.new(this);
    return this[_delegateCache];
  }
  get errorZone() {
    return this[_handleUncaughtError].zone;
  }
  runGuarded(f) {
    try {
      this.run(dart.void, f);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      this.handleUncaughtError(e, s);
    }
  }
  runUnaryGuarded(T, f, arg) {
    try {
      this.runUnary(dart.void, T, f, arg);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      this.handleUncaughtError(e, s);
    }
  }
  runBinaryGuarded(T1, T2, f, arg1, arg2) {
    try {
      this.runBinary(dart.void, T1, T2, f, arg1, arg2);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      this.handleUncaughtError(e, s);
    }
  }
  bindCallback(R, f) {
    let registered = this.registerCallback(R, f);
    return dart.fn(() => this.run(R, registered), dart.fnType(R, []));
  }
  bindUnaryCallback(R, T, f) {
    let registered = this.registerUnaryCallback(R, T, f);
    return dart.fn(arg => this.runUnary(R, T, registered, arg), dart.fnType(R, [T]));
  }
  bindBinaryCallback(R, T1, T2, f) {
    let registered = this.registerBinaryCallback(R, T1, T2, f);
    return dart.fn((arg1, arg2) => this.runBinary(R, T1, T2, registered, arg1, arg2), dart.fnType(R, [T1, T2]));
  }
  bindCallbackGuarded(f) {
    let registered = this.registerCallback(dart.void, f);
    return dart.fn(() => this.runGuarded(registered), VoidTovoid());
  }
  bindUnaryCallbackGuarded(T, f) {
    let registered = this.registerUnaryCallback(dart.void, T, f);
    return dart.fn(arg => this.runUnaryGuarded(T, registered, arg), dart.fnType(dart.void, [T]));
  }
  bindBinaryCallbackGuarded(T1, T2, f) {
    let registered = this.registerBinaryCallback(dart.void, T1, T2, f);
    return dart.fn((arg1, arg2) => this.runBinaryGuarded(T1, T2, registered, arg1, arg2), dart.fnType(dart.void, [T1, T2]));
  }
  _get(key) {
    let result = this[_map$][$_get](key);
    if (result != null || dart.test(this[_map$][$containsKey](key))) return result;
    if (this.parent != null) {
      let value = this.parent._get(key);
      if (value != null) {
        this[_map$][$_set](key, value);
      }
      return value;
    }
    if (!this._equals(async._rootZone)) dart.assertFailed();
    return null;
  }
  handleUncaughtError(error, stackTrace) {
    let implementation = this[_handleUncaughtError];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, error, stackTrace);
  }
  fork(opts) {
    let specification = opts && 'specification' in opts ? opts.specification : null;
    let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null;
    let implementation = this[_fork];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, specification, zoneValues);
  }
  run(R, f) {
    let implementation = this[_run];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = ZoneAndZoneDelegateAndZone__ToR()._check(implementation.function);
    return handler(R, implementation.zone, parentDelegate, this, f);
  }
  runUnary(R, T, f, arg) {
    let implementation = this[_runUnary];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = ZoneAndZoneDelegateAndZone__ToR$()._check(implementation.function);
    return handler(R, T, implementation.zone, parentDelegate, this, f, arg);
  }
  runBinary(R, T1, T2, f, arg1, arg2) {
    let implementation = this[_runBinary];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = ZoneAndZoneDelegateAndZone__ToR$0()._check(implementation.function);
    return handler(R, T1, T2, implementation.zone, parentDelegate, this, f, arg1, arg2);
  }
  registerCallback(R, callback) {
    let implementation = this[_registerCallback];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = ZoneAndZoneDelegateAndZone__ToFn()._check(implementation.function);
    return handler(R, implementation.zone, parentDelegate, this, callback);
  }
  registerUnaryCallback(R, T, callback) {
    let implementation = this[_registerUnaryCallback];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = ZoneAndZoneDelegateAndZone__ToFn$()._check(implementation.function);
    return handler(R, T, implementation.zone, parentDelegate, this, callback);
  }
  registerBinaryCallback(R, T1, T2, callback) {
    let implementation = this[_registerBinaryCallback];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = ZoneAndZoneDelegateAndZone__ToFn$0()._check(implementation.function);
    return handler(R, T1, T2, implementation.zone, parentDelegate, this, callback);
  }
  errorCallback(error, stackTrace) {
    let implementation = this[_errorCallback];
    if (!(implementation != null)) dart.assertFailed();
    let implementationZone = implementation.zone;
    if (implementationZone === async._rootZone) return null;
    let parentDelegate = async._parentDelegate(async._Zone._check(implementationZone));
    let handler = implementation.function;
    return handler(implementationZone, parentDelegate, this, error, stackTrace);
  }
  scheduleMicrotask(f) {
    let implementation = this[_scheduleMicrotask];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, f);
  }
  createTimer(duration, f) {
    let implementation = this[_createTimer];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, duration, f);
  }
  createPeriodicTimer(duration, f) {
    let implementation = this[_createPeriodicTimer];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, duration, f);
  }
  print(line) {
    let implementation = this[_print];
    if (!(implementation != null)) dart.assertFailed();
    let parentDelegate = async._parentDelegate(implementation.zone);
    let handler = implementation.function;
    return handler(implementation.zone, parentDelegate, this, line);
  }
};
(async._CustomZone.new = function(parent, specification, map) {
  this[_run] = null;
  this[_runUnary] = null;
  this[_runBinary] = null;
  this[_registerCallback] = null;
  this[_registerUnaryCallback] = null;
  this[_registerBinaryCallback] = null;
  this[_errorCallback] = null;
  this[_scheduleMicrotask] = null;
  this[_createTimer] = null;
  this[_createPeriodicTimer] = null;
  this[_print] = null;
  this[_fork] = null;
  this[_handleUncaughtError] = null;
  this[_delegateCache] = null;
  this.parent = parent;
  this[_map$] = map;
  async._CustomZone.__proto__.new.call(this);
  this[_run] = specification.run != null ? new (_ZoneFunctionOfFunction()).new(this, specification.run) : this.parent[_run];
  this[_runUnary] = specification.runUnary != null ? new (_ZoneFunctionOfFunction()).new(this, specification.runUnary) : this.parent[_runUnary];
  this[_runBinary] = specification.runBinary != null ? new (_ZoneFunctionOfFunction()).new(this, specification.runBinary) : this.parent[_runBinary];
  this[_registerCallback] = specification.registerCallback != null ? new (_ZoneFunctionOfFunction()).new(this, specification.registerCallback) : this.parent[_registerCallback];
  this[_registerUnaryCallback] = specification.registerUnaryCallback != null ? new (_ZoneFunctionOfFunction()).new(this, specification.registerUnaryCallback) : this.parent[_registerUnaryCallback];
  this[_registerBinaryCallback] = specification.registerBinaryCallback != null ? new (_ZoneFunctionOfFunction()).new(this, specification.registerBinaryCallback) : this.parent[_registerBinaryCallback];
  this[_errorCallback] = specification.errorCallback != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToAsyncError()).new(this, specification.errorCallback) : this.parent[_errorCallback];
  this[_scheduleMicrotask] = specification.scheduleMicrotask != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid()).new(this, specification.scheduleMicrotask) : this.parent[_scheduleMicrotask];
  this[_createTimer] = specification.createTimer != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer()).new(this, specification.createTimer) : this.parent[_createTimer];
  this[_createPeriodicTimer] = specification.createPeriodicTimer != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer$()).new(this, specification.createPeriodicTimer) : this.parent[_createPeriodicTimer];
  this[_print] = specification.print != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$()).new(this, specification.print) : this.parent[_print];
  this[_fork] = specification.fork != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToZone()).new(this, specification.fork) : this.parent[_fork];
  this[_handleUncaughtError] = specification.handleUncaughtError != null ? new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$0()).new(this, specification.handleUncaughtError) : this.parent[_handleUncaughtError];
}).prototype = async._CustomZone.prototype;
dart.addTypeTests(async._CustomZone);
dart.setMethodSignature(async._CustomZone, () => ({
  __proto__: dart.getMethods(async._CustomZone.__proto__),
  runGuarded: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
  runUnaryGuarded: dart.gFnType(T => [dart.void, [dart.fnType(dart.void, [T]), T]]),
  runBinaryGuarded: dart.gFnType((T1, T2) => [dart.void, [dart.fnType(dart.void, [T1, T2]), T1, T2]]),
  bindCallback: dart.gFnType(R => [dart.fnType(R, []), [dart.fnType(R, [])]]),
  bindUnaryCallback: dart.gFnType((R, T) => [dart.fnType(R, [T]), [dart.fnType(R, [T])]]),
  bindBinaryCallback: dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [dart.fnType(R, [T1, T2])]]),
  bindCallbackGuarded: dart.fnType(dart.fnType(dart.void, []), [dart.fnType(dart.void, [])]),
  bindUnaryCallbackGuarded: dart.gFnType(T => [dart.fnType(dart.void, [T]), [dart.fnType(dart.void, [T])]]),
  bindBinaryCallbackGuarded: dart.gFnType((T1, T2) => [dart.fnType(dart.void, [T1, T2]), [dart.fnType(dart.void, [T1, T2])]]),
  _get: dart.fnType(dart.dynamic, [core.Object]),
  handleUncaughtError: dart.fnType(dart.void, [dart.dynamic, core.StackTrace]),
  fork: dart.fnType(async.Zone, [], {specification: async.ZoneSpecification, zoneValues: core.Map}),
  run: dart.gFnType(R => [R, [dart.fnType(R, [])]]),
  runUnary: dart.gFnType((R, T) => [R, [dart.fnType(R, [T]), T]]),
  runBinary: dart.gFnType((R, T1, T2) => [R, [dart.fnType(R, [T1, T2]), T1, T2]]),
  registerCallback: dart.gFnType(R => [dart.fnType(R, []), [dart.fnType(R, [])]]),
  registerUnaryCallback: dart.gFnType((R, T) => [dart.fnType(R, [T]), [dart.fnType(R, [T])]]),
  registerBinaryCallback: dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [dart.fnType(R, [T1, T2])]]),
  errorCallback: dart.fnType(async.AsyncError, [core.Object, core.StackTrace]),
  scheduleMicrotask: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
  createTimer: dart.fnType(async.Timer, [core.Duration, dart.fnType(dart.void, [])]),
  createPeriodicTimer: dart.fnType(async.Timer, [core.Duration, dart.fnType(dart.void, [async.Timer])]),
  print: dart.fnType(dart.void, [core.String])
}));
dart.setGetterSignature(async._CustomZone, () => ({
  __proto__: dart.getGetters(async._CustomZone.__proto__),
  [_delegate]: async.ZoneDelegate,
  errorZone: async.Zone
}));
dart.setFieldSignature(async._CustomZone, () => ({
  __proto__: dart.getFields(async._CustomZone.__proto__),
  [_run]: dart.fieldType(_ZoneFunctionOfFunction()),
  [_runUnary]: dart.fieldType(_ZoneFunctionOfFunction()),
  [_runBinary]: dart.fieldType(_ZoneFunctionOfFunction()),
  [_registerCallback]: dart.fieldType(_ZoneFunctionOfFunction()),
  [_registerUnaryCallback]: dart.fieldType(_ZoneFunctionOfFunction()),
  [_registerBinaryCallback]: dart.fieldType(_ZoneFunctionOfFunction()),
  [_errorCallback]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToAsyncError()),
  [_scheduleMicrotask]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid()),
  [_createTimer]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer()),
  [_createPeriodicTimer]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer$()),
  [_print]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$()),
  [_fork]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToZone()),
  [_handleUncaughtError]: dart.fieldType(_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$0()),
  [_delegateCache]: dart.fieldType(async.ZoneDelegate),
  parent: dart.finalFieldType(async._Zone),
  [_map$]: dart.finalFieldType(core.Map)
}));
async._rootHandleUncaughtError = function(self, parent, zone, error, stackTrace) {
  async._schedulePriorityAsyncCallback(dart.fn(() => {
    let t = error;
    t == null ? error = new core.NullThrownError.new() : t;
    if (stackTrace == null) dart.throw(error);
    async._rethrow(error, stackTrace);
  }, VoidToNull()));
};
async._rethrow = function(error, stackTrace) {
  throw dart.createErrorWithStack(error, stackTrace);
};
async._rootRun = function(R, self, parent, zone, f) {
  if (dart.equals(async.Zone._current, zone)) return f();
  let old = async.Zone._enter(zone);
  try {
    return f();
  } finally {
    async.Zone._leave(old);
  }
};
async._rootRunUnary = function(R, T, self, parent, zone, f, arg) {
  if (dart.equals(async.Zone._current, zone)) return f(arg);
  let old = async.Zone._enter(zone);
  try {
    return f(arg);
  } finally {
    async.Zone._leave(old);
  }
};
async._rootRunBinary = function(R, T1, T2, self, parent, zone, f, arg1, arg2) {
  if (dart.equals(async.Zone._current, zone)) return f(arg1, arg2);
  let old = async.Zone._enter(zone);
  try {
    return f(arg1, arg2);
  } finally {
    async.Zone._leave(old);
  }
};
async._rootRegisterCallback = function(R, self, parent, zone, f) {
  return f;
};
async._rootRegisterUnaryCallback = function(R, T, self, parent, zone, f) {
  return f;
};
async._rootRegisterBinaryCallback = function(R, T1, T2, self, parent, zone, f) {
  return f;
};
async._rootErrorCallback = function(self, parent, zone, error, stackTrace) {
  return null;
};
async._rootScheduleMicrotask = function(self, parent, zone, f) {
  if (!(async._rootZone === zone)) {
    let hasErrorHandler = !dart.test(async._rootZone.inSameErrorZone(zone));
    if (hasErrorHandler) {
      f = zone.bindCallbackGuarded(f);
    } else {
      f = zone.bindCallback(dart.void, f);
    }
    zone = async._rootZone;
  }
  async._scheduleAsyncCallback(f);
};
async._rootCreateTimer = function(self, parent, zone, duration, callback) {
  if (!(async._rootZone === zone)) {
    callback = zone.bindCallback(dart.void, callback);
  }
  return async.Timer._createTimer(duration, callback);
};
async._rootCreatePeriodicTimer = function(self, parent, zone, duration, callback) {
  if (!(async._rootZone === zone)) {
    callback = zone.bindUnaryCallback(dart.dynamic, async.Timer, callback);
  }
  return async.Timer._createPeriodicTimer(duration, callback);
};
async._rootPrint = function(self, parent, zone, line) {
  _internal.printToConsole(line);
};
async._printToZone = function(line) {
  async.Zone.current.print(line);
};
let const$15;
async._rootFork = function(self, parent, zone, specification, zoneValues) {
  _internal.printToZone = dart.fn(async._printToZone, StringTovoid());
  if (specification == null) {
    specification = const$15 || (const$15 = dart.const(async.ZoneSpecification.new()));
  } else if (!async._ZoneSpecification.is(specification)) {
    dart.throw(new core.ArgumentError.new("ZoneSpecifications must be instantiated" + " with the provided constructor."));
  }
  let valueMap = null;
  if (zoneValues == null) {
    if (async._Zone.is(zone)) {
      valueMap = zone[_map$];
    } else {
      valueMap = new _js_helper.LinkedMap.new();
    }
  } else {
    valueMap = collection.HashMap.from(zoneValues);
  }
  return new async._CustomZone.new(async._Zone._check(zone), specification, valueMap);
};
let const$16;
let const$17;
let const$18;
let const$19;
let const$20;
let const$21;
let const$22;
async._RootZone = class _RootZone extends async._Zone {
  get [_run]() {
    return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRun, ZoneAndZoneDelegateAndZone__ToR())));
  }
  get [_runUnary]() {
    return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRunUnary, ZoneAndZoneDelegateAndZone__ToR$())));
  }
  get [_runBinary]() {
    return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRunBinary, ZoneAndZoneDelegateAndZone__ToR$0())));
  }
  get [_registerCallback]() {
    return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRegisterCallback, ZoneAndZoneDelegateAndZone__ToFn())));
  }
  get [_registerUnaryCallback]() {
    return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRegisterUnaryCallback, ZoneAndZoneDelegateAndZone__ToFn$())));
  }
  get [_registerBinaryCallback]() {
    return dart.const(new (_ZoneFunctionOfFunction()).new(async._rootZone, dart.fn(async._rootRegisterBinaryCallback, ZoneAndZoneDelegateAndZone__ToFn$0())));
  }
  get [_errorCallback]() {
    return const$16 || (const$16 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToAsyncError()).new(async._rootZone, dart.fn(async._rootErrorCallback, ZoneAndZoneDelegateAndZone__ToAsyncError()))));
  }
  get [_scheduleMicrotask]() {
    return const$17 || (const$17 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid()).new(async._rootZone, dart.fn(async._rootScheduleMicrotask, ZoneAndZoneDelegateAndZone__Tovoid$()))));
  }
  get [_createTimer]() {
    return const$18 || (const$18 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer()).new(async._rootZone, dart.fn(async._rootCreateTimer, ZoneAndZoneDelegateAndZone__ToTimer()))));
  }
  get [_createPeriodicTimer]() {
    return const$19 || (const$19 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToTimer$()).new(async._rootZone, dart.fn(async._rootCreatePeriodicTimer, ZoneAndZoneDelegateAndZone__ToTimer$()))));
  }
  get [_print]() {
    return const$20 || (const$20 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$()).new(async._rootZone, dart.fn(async._rootPrint, ZoneAndZoneDelegateAndZone__Tovoid$0()))));
  }
  get [_fork]() {
    return const$21 || (const$21 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__ToZone()).new(async._rootZone, dart.fn(async._rootFork, ZoneAndZoneDelegateAndZone__ToZone()))));
  }
  get [_handleUncaughtError]() {
    return const$22 || (const$22 = dart.const(new (_ZoneFunctionOfZoneAndZoneDelegateAndZone__Tovoid$0()).new(async._rootZone, dart.fn(async._rootHandleUncaughtError, ZoneAndZoneDelegateAndZone__Tovoid$1()))));
  }
  get parent() {
    return null;
  }
  get [_map$]() {
    return async._RootZone._rootMap;
  }
  get [_delegate]() {
    if (async._RootZone._rootDelegate != null) return async._RootZone._rootDelegate;
    return async._RootZone._rootDelegate = new async._ZoneDelegate.new(this);
  }
  get errorZone() {
    return this;
  }
  runGuarded(f) {
    try {
      if (async._rootZone === async.Zone._current) {
        f();
        return;
      }
      async._rootRun(dart.void, null, null, this, f);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      this.handleUncaughtError(e, s);
    }
  }
  runUnaryGuarded(T, f, arg) {
    try {
      if (async._rootZone === async.Zone._current) {
        f(arg);
        return;
      }
      async._rootRunUnary(dart.void, T, null, null, this, f, arg);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      this.handleUncaughtError(e, s);
    }
  }
  runBinaryGuarded(T1, T2, f, arg1, arg2) {
    try {
      if (async._rootZone === async.Zone._current) {
        f(arg1, arg2);
        return;
      }
      async._rootRunBinary(dart.void, T1, T2, null, null, this, f, arg1, arg2);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      this.handleUncaughtError(e, s);
    }
  }
  bindCallback(R, f) {
    return dart.fn(() => this.run(R, f), dart.fnType(R, []));
  }
  bindUnaryCallback(R, T, f) {
    return dart.fn(arg => this.runUnary(R, T, f, arg), dart.fnType(R, [T]));
  }
  bindBinaryCallback(R, T1, T2, f) {
    return dart.fn((arg1, arg2) => this.runBinary(R, T1, T2, f, arg1, arg2), dart.fnType(R, [T1, T2]));
  }
  bindCallbackGuarded(f) {
    return dart.fn(() => this.runGuarded(f), VoidTovoid());
  }
  bindUnaryCallbackGuarded(T, f) {
    return dart.fn(arg => this.runUnaryGuarded(T, f, arg), dart.fnType(dart.void, [T]));
  }
  bindBinaryCallbackGuarded(T1, T2, f) {
    return dart.fn((arg1, arg2) => this.runBinaryGuarded(T1, T2, f, arg1, arg2), dart.fnType(dart.void, [T1, T2]));
  }
  _get(key) {
    return null;
  }
  handleUncaughtError(error, stackTrace) {
    async._rootHandleUncaughtError(null, null, this, error, stackTrace);
  }
  fork(opts) {
    let specification = opts && 'specification' in opts ? opts.specification : null;
    let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null;
    return async._rootFork(null, null, this, specification, zoneValues);
  }
  run(R, f) {
    if (async.Zone._current === async._rootZone) return f();
    return async._rootRun(R, null, null, this, f);
  }
  runUnary(R, T, f, arg) {
    if (async.Zone._current === async._rootZone) return f(arg);
    return async._rootRunUnary(R, T, null, null, this, f, arg);
  }
  runBinary(R, T1, T2, f, arg1, arg2) {
    if (async.Zone._current === async._rootZone) return f(arg1, arg2);
    return async._rootRunBinary(R, T1, T2, null, null, this, f, arg1, arg2);
  }
  registerCallback(R, f) {
    return f;
  }
  registerUnaryCallback(R, T, f) {
    return f;
  }
  registerBinaryCallback(R, T1, T2, f) {
    return f;
  }
  errorCallback(error, stackTrace) {
    return null;
  }
  scheduleMicrotask(f) {
    async._rootScheduleMicrotask(null, null, this, f);
  }
  createTimer(duration, f) {
    return async.Timer._createTimer(duration, f);
  }
  createPeriodicTimer(duration, f) {
    return async.Timer._createPeriodicTimer(duration, f);
  }
  print(line) {
    _internal.printToConsole(line);
  }
};
(async._RootZone.new = function() {
  async._RootZone.__proto__.new.call(this);
}).prototype = async._RootZone.prototype;
dart.addTypeTests(async._RootZone);
dart.setMethodSignature(async._RootZone, () => ({
  __proto__: dart.getMethods(async._RootZone.__proto__),
  runGuarded: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
  runUnaryGuarded: dart.gFnType(T => [dart.void, [dart.fnType(dart.void, [T]), T]]),
  runBinaryGuarded: dart.gFnType((T1, T2) => [dart.void, [dart.fnType(dart.void, [T1, T2]), T1, T2]]),
  bindCallback: dart.gFnType(R => [dart.fnType(R, []), [dart.fnType(R, [])]]),
  bindUnaryCallback: dart.gFnType((R, T) => [dart.fnType(R, [T]), [dart.fnType(R, [T])]]),
  bindBinaryCallback: dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [dart.fnType(R, [T1, T2])]]),
  bindCallbackGuarded: dart.fnType(dart.fnType(dart.void, []), [dart.fnType(dart.void, [])]),
  bindUnaryCallbackGuarded: dart.gFnType(T => [dart.fnType(dart.void, [T]), [dart.fnType(dart.void, [T])]]),
  bindBinaryCallbackGuarded: dart.gFnType((T1, T2) => [dart.fnType(dart.void, [T1, T2]), [dart.fnType(dart.void, [T1, T2])]]),
  _get: dart.fnType(dart.dynamic, [core.Object]),
  handleUncaughtError: dart.fnType(dart.void, [dart.dynamic, core.StackTrace]),
  fork: dart.fnType(async.Zone, [], {specification: async.ZoneSpecification, zoneValues: core.Map}),
  run: dart.gFnType(R => [R, [dart.fnType(R, [])]]),
  runUnary: dart.gFnType((R, T) => [R, [dart.fnType(R, [T]), T]]),
  runBinary: dart.gFnType((R, T1, T2) => [R, [dart.fnType(R, [T1, T2]), T1, T2]]),
  registerCallback: dart.gFnType(R => [dart.fnType(R, []), [dart.fnType(R, [])]]),
  registerUnaryCallback: dart.gFnType((R, T) => [dart.fnType(R, [T]), [dart.fnType(R, [T])]]),
  registerBinaryCallback: dart.gFnType((R, T1, T2) => [dart.fnType(R, [T1, T2]), [dart.fnType(R, [T1, T2])]]),
  errorCallback: dart.fnType(async.AsyncError, [core.Object, core.StackTrace]),
  scheduleMicrotask: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
  createTimer: dart.fnType(async.Timer, [core.Duration, dart.fnType(dart.void, [])]),
  createPeriodicTimer: dart.fnType(async.Timer, [core.Duration, dart.fnType(dart.void, [async.Timer])]),
  print: dart.fnType(dart.void, [core.String])
}));
dart.setGetterSignature(async._RootZone, () => ({
  __proto__: dart.getGetters(async._RootZone.__proto__),
  [_run]: async._ZoneFunction$(core.Function),
  [_runUnary]: async._ZoneFunction$(core.Function),
  [_runBinary]: async._ZoneFunction$(core.Function),
  [_registerCallback]: async._ZoneFunction$(core.Function),
  [_registerUnaryCallback]: async._ZoneFunction$(core.Function),
  [_registerBinaryCallback]: async._ZoneFunction$(core.Function),
  [_errorCallback]: async._ZoneFunction$(dart.fnType(async.AsyncError, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])),
  [_scheduleMicrotask]: async._ZoneFunction$(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, dart.fnType(dart.void, [])])),
  [_createTimer]: async._ZoneFunction$(dart.fnType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, dart.fnType(dart.void, [])])),
  [_createPeriodicTimer]: async._ZoneFunction$(dart.fnType(async.Timer, [async.Zone, async.ZoneDelegate, async.Zone, core.Duration, dart.fnType(dart.void, [async.Timer])])),
  [_print]: async._ZoneFunction$(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, core.String])),
  [_fork]: async._ZoneFunction$(dart.fnType(async.Zone, [async.Zone, async.ZoneDelegate, async.Zone, async.ZoneSpecification, core.Map])),
  [_handleUncaughtError]: async._ZoneFunction$(dart.fnType(dart.void, [async.Zone, async.ZoneDelegate, async.Zone, core.Object, core.StackTrace])),
  parent: async._Zone,
  [_map$]: core.Map,
  [_delegate]: async.ZoneDelegate,
  errorZone: async.Zone
}));
dart.defineLazy(async._RootZone, {
  /*async._RootZone._rootMap*/get _rootMap() {
    return new _js_helper.LinkedMap.new();
  },
  /*async._RootZone._rootDelegate*/get _rootDelegate() {
    return null;
  },
  set _rootDelegate(_) {}
});
dart.defineLazy(async, {
  /*async._rootZone*/get _rootZone() {
    return dart.const(new async._RootZone.new());
  }
});
async.runZoned = function(R, body, opts) {
  let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null;
  let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
  let onError = opts && 'onError' in opts ? opts.onError : null;
  if (onError == null) {
    return async._runZoned(R, body, zoneValues, zoneSpecification);
  }
  let unaryOnError = null;
  let binaryOnError = null;
  if (ObjectAndStackTraceTovoid().is(onError)) {
    binaryOnError = onError;
  } else if (ObjectTovoid().is(onError)) {
    unaryOnError = onError;
  } else {
    dart.throw(new core.ArgumentError.new("onError callback must take either an Object " + "(the error), or both an Object (the error) and a StackTrace."));
  }
  let errorHandler = (self, parent, zone, error, stackTrace) => {
    try {
      if (binaryOnError != null) {
        self.parent.runBinary(dart.void, core.Object, core.StackTrace, binaryOnError, error, stackTrace);
      } else {
        if (!(unaryOnError != null)) dart.assertFailed();
        self.parent.runUnary(dart.void, core.Object, unaryOnError, error);
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      if (core.identical(e, error)) {
        parent.handleUncaughtError(zone, error, stackTrace);
      } else {
        parent.handleUncaughtError(zone, e, s);
      }
    }
  };
  dart.fn(errorHandler, ZoneAndZoneDelegateAndZone__ToNull());
  if (zoneSpecification == null) {
    zoneSpecification = async.ZoneSpecification.new({handleUncaughtError: errorHandler});
  } else {
    zoneSpecification = async.ZoneSpecification.from(zoneSpecification, {handleUncaughtError: errorHandler});
  }
  try {
    return async._runZoned(R, body, zoneValues, zoneSpecification);
  } catch (e$) {
    let e = dart.getThrown(e$);
    let stackTrace = dart.stackTrace(e$);
    if (binaryOnError != null) {
      binaryOnError(e, stackTrace);
    } else {
      if (!(unaryOnError != null)) dart.assertFailed();
      unaryOnError(e);
    }
  }
  return null;
};
async._runZoned = function(R, body, zoneValues, specification) {
  return async.Zone.current.fork({specification: specification, zoneValues: zoneValues}).run(R, body);
};
const _map$0 = Symbol('_map');
const _keyMap$ = Symbol('_keyMap');
const _modifications$ = Symbol('_modifications');
const _newSet = Symbol('_newSet');
const _newSimilarSet = Symbol('_newSimilarSet');
const _is__SetBase_default = Symbol('_is__SetBase_default');
collection._SetBase$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
  let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
  class _SetBase extends core.Object {
    cast(R) {
      return core.Set.castFrom(E, R, this, {newSet: dart.bind(this, _newSimilarSet)});
    }
    difference(other) {
      let result = this[_newSet]();
      for (let element of this) {
        if (!dart.test(other.contains(element))) result.add(element);
      }
      return result;
    }
    intersection(other) {
      let result = this[_newSet]();
      for (let element of this) {
        if (dart.test(other.contains(element))) result.add(element);
      }
      return result;
    }
    toSet() {
      let _ = this[_newSet]();
      _.addAll(this);
      return _;
    }
    get isEmpty() {
      return this[$length] === 0;
    }
    get isNotEmpty() {
      return this[$length] !== 0;
    }
    followedBy(other) {
      IterableOfE()._check(other);
      return FollowedByIterableOfE().firstEfficient(this, other);
    }
    whereType(T) {
      return new (_internal.WhereTypeIterable$(T)).new(this);
    }
    clear() {
      this.removeAll(this.toList());
    }
    addAll(elements) {
      IterableOfE()._check(elements);
      for (let element of elements)
        this.add(element);
    }
    removeAll(elements) {
      for (let element of elements)
        this.remove(element);
    }
    retainAll(elements) {
      let toRemove = this.toSet();
      for (let o of elements) {
        toRemove.remove(o);
      }
      this.removeAll(toRemove);
    }
    removeWhere(test) {
      let toRemove = [];
      for (let element of this) {
        if (dart.test(test(element))) toRemove[$add](element);
      }
      this.removeAll(toRemove);
    }
    retainWhere(test) {
      let toRemove = [];
      for (let element of this) {
        if (!dart.test(test(element))) toRemove[$add](element);
      }
      this.removeAll(toRemove);
    }
    containsAll(other) {
      for (let o of other) {
        if (!dart.test(this.contains(o))) return false;
      }
      return true;
    }
    union(other) {
      SetOfE()._check(other);
      let _ = this.toSet();
      _.addAll(other);
      return _;
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let result = dart.test(growable) ? (() => {
        let _ = JSArrayOfE().of([]);
        _[$length] = this[$length];
        return _;
      })() : ListOfE().new(this[$length]);
      let i = 0;
      for (let element of this)
        result[$_set](i++, element);
      return result;
    }
    map(T, f) {
      return new (_internal.EfficientLengthMappedIterable$(E, T)).new(this, f);
    }
    get single() {
      if (dart.notNull(this[$length]) > 1) dart.throw(_internal.IterableElementError.tooMany());
      let it = this.iterator;
      if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
      let result = it.current;
      return result;
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, "{", "}");
    }
    where(f) {
      return new (WhereIterableOfE()).new(this, f);
    }
    expand(T, f) {
      return new (_internal.ExpandIterable$(E, T)).new(this, f);
    }
    forEach(f) {
      for (let element of this)
        f(element);
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      let iterator = this.iterator;
      if (!dart.test(iterator.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let value = iterator.current;
      while (dart.test(iterator.moveNext())) {
        value = combine(value, iterator.current);
      }
      return value;
    }
    fold(T, initialValue, combine) {
      let value = initialValue;
      for (let element of this)
        value = combine(value, element);
      return value;
    }
    every(f) {
      for (let element of this) {
        if (!dart.test(f(element))) return false;
      }
      return true;
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let iterator = this.iterator;
      if (!dart.test(iterator.moveNext())) return "";
      let buffer = new core.StringBuffer.new();
      if (separator == null || separator === "") {
        do {
          buffer.write(iterator.current);
        } while (dart.test(iterator.moveNext()));
      } else {
        buffer.write(iterator.current);
        while (dart.test(iterator.moveNext())) {
          buffer.write(separator);
          buffer.write(iterator.current);
        }
      }
      return buffer.toString();
    }
    any(test) {
      for (let element of this) {
        if (dart.test(test(element))) return true;
      }
      return false;
    }
    take(n) {
      return TakeIterableOfE().new(this, n);
    }
    takeWhile(test) {
      return new (TakeWhileIterableOfE()).new(this, test);
    }
    skip(n) {
      return SkipIterableOfE().new(this, n);
    }
    skipWhile(test) {
      return new (SkipWhileIterableOfE()).new(this, test);
    }
    get first() {
      let it = this.iterator;
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      return it.current;
    }
    get last() {
      let it = this.iterator;
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let result = null;
      do {
        result = it.current;
      } while (dart.test(it.moveNext()));
      return result;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      for (let element of this) {
        if (dart.test(test(element))) return element;
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          if (foundMatching) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    elementAt(index) {
      core.ArgumentError.checkNotNull(index, "index");
      core.RangeError.checkNotNegative(index, "index");
      let elementIndex = 0;
      for (let element of this) {
        if (index === elementIndex) return element;
        elementIndex++;
      }
      dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
    }
  }
  (_SetBase.new = function() {
  }).prototype = _SetBase.prototype;
  dart.addTypeTests(_SetBase);
  _SetBase.prototype[_is__SetBase_default] = true;
  _SetBase[dart.implements] = () => [SetOfE()];
  dart.setMethodSignature(_SetBase, () => ({
    __proto__: dart.getMethods(_SetBase.__proto__),
    cast: dart.gFnType(R => [core.Set$(R), []]),
    [$cast]: dart.gFnType(R => [core.Set$(R), []]),
    difference: dart.fnType(core.Set$(E), [core.Set$(core.Object)]),
    intersection: dart.fnType(core.Set$(E), [core.Set$(core.Object)]),
    toSet: dart.fnType(core.Set$(E), []),
    [$toSet]: dart.fnType(core.Set$(E), []),
    followedBy: dart.fnType(core.Iterable$(E), [core.Object]),
    [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
    whereType: dart.gFnType(T => [core.Iterable$(T), []]),
    [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
    clear: dart.fnType(dart.void, []),
    addAll: dart.fnType(dart.void, [core.Object]),
    removeAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
    retainAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    containsAll: dart.fnType(core.bool, [core.Iterable$(core.Object)]),
    union: dart.fnType(core.Set$(E), [core.Object]),
    toList: dart.fnType(core.List$(E), [], {growable: core.bool}),
    [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
    map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, []),
    where: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    reduce: dart.fnType(E, [core.Object]),
    [$reduce]: dart.fnType(E, [core.Object]),
    fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    every: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    join: dart.fnType(core.String, [], [core.String]),
    [$join]: dart.fnType(core.String, [], [core.String]),
    any: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    take: dart.fnType(core.Iterable$(E), [core.int]),
    [$take]: dart.fnType(core.Iterable$(E), [core.int]),
    takeWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    skip: dart.fnType(core.Iterable$(E), [core.int]),
    [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
    skipWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    elementAt: dart.fnType(E, [core.int]),
    [$elementAt]: dart.fnType(E, [core.int])
  }));
  dart.setGetterSignature(_SetBase, () => ({
    __proto__: dart.getGetters(_SetBase.__proto__),
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    single: E,
    [$single]: E,
    first: E,
    [$first]: E,
    last: E,
    [$last]: E
  }));
  dart.defineExtensionMethods(_SetBase, [
    'cast',
    'toSet',
    'followedBy',
    'whereType',
    'toList',
    'map',
    'toString',
    'where',
    'expand',
    'forEach',
    'reduce',
    'fold',
    'every',
    'join',
    'any',
    'take',
    'takeWhile',
    'skip',
    'skipWhile',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'elementAt'
  ]);
  dart.defineExtensionAccessors(_SetBase, [
    'isEmpty',
    'isNotEmpty',
    'single',
    'first',
    'last'
  ]);
  return _SetBase;
});
collection._SetBase = collection._SetBase$();
dart.addTypeTests(collection._SetBase, _is__SetBase_default);
const _is__InternalSet_default = Symbol('_is__InternalSet_default');
collection._InternalSet$ = dart.generic(E => {
  let DartIteratorOfE = () => (DartIteratorOfE = dart.constFn(_js_helper.DartIterator$(E)))();
  class _InternalSet extends collection._SetBase$(E) {
    get length() {
      return this[_map$0].size;
    }
    get isEmpty() {
      return this[_map$0].size == 0;
    }
    get isNotEmpty() {
      return this[_map$0].size != 0;
    }
    get iterator() {
      return new (DartIteratorOfE()).new(this[Symbol.iterator]());
    }
    [Symbol.iterator]() {
      let self = this;
      let iterator = self[_map$0].values();
      let modifications = self[_modifications$];
      return {
        next() {
          if (modifications != self[_modifications$]) {
            throw new core.ConcurrentModificationError.new(self);
          }
          return iterator.next();
        }
      };
    }
  }
  (_InternalSet.new = function() {
    _InternalSet.__proto__.new.call(this);
  }).prototype = _InternalSet.prototype;
  dart.addTypeTests(_InternalSet);
  _InternalSet.prototype[_is__InternalSet_default] = true;
  dart.setMethodSignature(_InternalSet, () => ({
    __proto__: dart.getMethods(_InternalSet.__proto__),
    [Symbol.iterator]: dart.fnType(dart.dynamic, [])
  }));
  dart.setGetterSignature(_InternalSet, () => ({
    __proto__: dart.getGetters(_InternalSet.__proto__),
    length: core.int,
    [$length]: core.int,
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.defineExtensionAccessors(_InternalSet, ['length', 'isEmpty', 'isNotEmpty', 'iterator']);
  return _InternalSet;
});
collection._InternalSet = collection._InternalSet$();
dart.addTypeTests(collection._InternalSet, _is__InternalSet_default);
const _is__HashSet_default = Symbol('_is__HashSet_default');
collection._HashSet$ = dart.generic(E => {
  let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let HashSetOfE = () => (HashSetOfE = dart.constFn(collection.HashSet$(E)))();
  let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
  class _HashSet extends collection._InternalSet$(E) {
    [_newSet]() {
      return new (_HashSetOfE()).new();
    }
    [_newSimilarSet](R) {
      return new (collection._HashSet$(R)).new();
    }
    contains(key) {
      if (key == null) {
        key = null;
      } else if (key[$_equals] !== dart.identityEquals) {
        let k = key;
        let buckets = this[_keyMap$].get(k[$hashCode] & 0x3ffffff);
        if (buckets != null) {
          for (let i = 0, n = buckets.length; i < n; i++) {
            k = buckets[i];
            if (k[$_equals](key)) return true;
          }
        }
        return false;
      }
      return this[_map$0].has(key);
    }
    lookup(key) {
      if (key == null) return null;
      if (key[$_equals] !== dart.identityEquals) {
        let k = key;
        let buckets = this[_keyMap$].get(k[$hashCode] & 0x3ffffff);
        if (buckets != null) {
          for (let i = 0, n = buckets.length; i < n; i++) {
            k = buckets[i];
            if (k[$_equals](key)) return k;
          }
        }
        return null;
      }
      return this[_map$0].has(key) ? key : null;
    }
    add(key) {
      E._check(key);
      let map = this[_map$0];
      if (key == null) {
        if (dart.test(map.has(null))) return false;
        key = null;
      } else if (key[$_equals] !== dart.identityEquals) {
        let keyMap = this[_keyMap$];
        let k = key;
        let hash = k[$hashCode] & 0x3ffffff;
        let buckets = keyMap.get(hash);
        if (buckets == null) {
          keyMap.set(hash, [key]);
        } else {
          for (let i = 0, n = buckets.length; i < n; i++) {
            k = buckets[i];
            if (k[$_equals](key)) return false;
          }
          buckets.push(key);
        }
      } else if (dart.test(map.has(key))) {
        return false;
      }
      map.add(key);
      this[_modifications$] = this[_modifications$] + 1 & 67108863;
      return true;
    }
    addAll(objects) {
      IterableOfE()._check(objects);
      let map = this[_map$0];
      let length = map.size;
      for (let key of objects) {
        if (key == null) {
          key = null;
        } else if (key[$_equals] !== dart.identityEquals) {
          key = _js_helper.putLinkedMapKey(key, this[_keyMap$]);
        }
        map.add(key);
      }
      if (length !== map.size) {
        this[_modifications$] = this[_modifications$] + 1 & 67108863;
      }
    }
    remove(key) {
      if (key == null) {
        key = null;
      } else if (key[$_equals] !== dart.identityEquals) {
        let k = key;
        let hash = k[$hashCode] & 0x3ffffff;
        let buckets = this[_keyMap$].get(hash);
        if (buckets == null) return false;
        for (let i = 0, n = buckets.length;;) {
          k = buckets[i];
          if (k[$_equals](key)) {
            key = k;
            if (n === 1) {
              this[_keyMap$].delete(hash);
            } else {
              buckets.splice(i, 1);
            }
            break;
          }
          if (++i >= n) return false;
        }
      }
      let map = this[_map$0];
      if (map.delete(key)) {
        this[_modifications$] = this[_modifications$] + 1 & 67108863;
        return true;
      }
      return false;
    }
    clear() {
      let map = this[_map$0];
      if (map.size > 0) {
        map.clear();
        this[_keyMap$].clear();
        this[_modifications$] = this[_modifications$] + 1 & 67108863;
      }
    }
  }
  (_HashSet.new = function() {
    this[_map$0] = new Set();
    this[_keyMap$] = new Map();
    this[_modifications$] = 0;
    _HashSet.__proto__.new.call(this);
  }).prototype = _HashSet.prototype;
  dart.addTypeTests(_HashSet);
  _HashSet.prototype[_is__HashSet_default] = true;
  _HashSet[dart.implements] = () => [HashSetOfE(), LinkedHashSetOfE()];
  dart.setMethodSignature(_HashSet, () => ({
    __proto__: dart.getMethods(_HashSet.__proto__),
    [_newSet]: dart.fnType(core.Set$(E), []),
    [_newSimilarSet]: dart.gFnType(R => [core.Set$(R), []]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    lookup: dart.fnType(E, [core.Object]),
    add: dart.fnType(core.bool, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object])
  }));
  dart.setFieldSignature(_HashSet, () => ({
    __proto__: dart.getFields(_HashSet.__proto__),
    [_map$0]: dart.finalFieldType(dart.dynamic),
    [_keyMap$]: dart.finalFieldType(dart.dynamic),
    [_modifications$]: dart.fieldType(core.int)
  }));
  dart.defineExtensionMethods(_HashSet, ['contains']);
  return _HashSet;
});
collection._HashSet = collection._HashSet$();
dart.addTypeTests(collection._HashSet, _is__HashSet_default);
const _is_ImmutableSet_default = Symbol('_is_ImmutableSet_default');
collection.ImmutableSet$ = dart.generic(E => {
  class ImmutableSet extends collection._HashSet$(E) {
    add(other) {
      return dart.throw(collection.ImmutableSet._unsupported());
    }
    addAll(other) {
      return dart.throw(collection.ImmutableSet._unsupported());
    }
    clear() {
      return dart.throw(collection.ImmutableSet._unsupported());
    }
    remove(key) {
      return dart.throw(collection.ImmutableSet._unsupported());
    }
    static _unsupported() {
      return new core.UnsupportedError.new("Cannot modify unmodifiable map");
    }
  }
  (ImmutableSet.from = function(entries) {
    ImmutableSet.__proto__.new.call(this);
    let map = this[_map$0];
    for (let key of entries) {
      if (key == null) {
        key = null;
      } else if (key[$_equals] !== dart.identityEquals) {
        key = _js_helper.putLinkedMapKey(key, this[_keyMap$]);
      }
      map.add(key);
    }
  }).prototype = ImmutableSet.prototype;
  dart.addTypeTests(ImmutableSet);
  ImmutableSet.prototype[_is_ImmutableSet_default] = true;
  dart.setMethodSignature(ImmutableSet, () => ({
    __proto__: dart.getMethods(ImmutableSet.__proto__),
    add: dart.fnType(core.bool, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object])
  }));
  return ImmutableSet;
});
collection.ImmutableSet = collection.ImmutableSet$();
dart.addTypeTests(collection.ImmutableSet, _is_ImmutableSet_default);
const _is__IdentityHashSet_default = Symbol('_is__IdentityHashSet_default');
collection._IdentityHashSet$ = dart.generic(E => {
  let _IdentityHashSetOfE = () => (_IdentityHashSetOfE = dart.constFn(collection._IdentityHashSet$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let HashSetOfE = () => (HashSetOfE = dart.constFn(collection.HashSet$(E)))();
  let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
  class _IdentityHashSet extends collection._InternalSet$(E) {
    [_newSet]() {
      return new (_IdentityHashSetOfE()).new();
    }
    [_newSimilarSet](R) {
      return new (collection._IdentityHashSet$(R)).new();
    }
    contains(element) {
      return this[_map$0].has(element);
    }
    lookup(element) {
      return E._check(dart.test(this[_map$0].has(element)) ? element : null);
    }
    add(element) {
      E._check(element);
      let map = this[_map$0];
      if (map.has(element)) return false;
      map.add(element);
      this[_modifications$] = this[_modifications$] + 1 & 67108863;
      return true;
    }
    addAll(objects) {
      IterableOfE()._check(objects);
      let map = this[_map$0];
      let length = map.size;
      for (let key of objects) {
        map.add(key);
      }
      if (length !== map.size) {
        this[_modifications$] = this[_modifications$] + 1 & 67108863;
      }
    }
    remove(element) {
      if (this[_map$0].delete(element)) {
        this[_modifications$] = this[_modifications$] + 1 & 67108863;
        return true;
      }
      return false;
    }
    clear() {
      let map = this[_map$0];
      if (map.size > 0) {
        map.clear();
        this[_modifications$] = this[_modifications$] + 1 & 67108863;
      }
    }
  }
  (_IdentityHashSet.new = function() {
    this[_map$0] = new Set();
    this[_modifications$] = 0;
    _IdentityHashSet.__proto__.new.call(this);
  }).prototype = _IdentityHashSet.prototype;
  dart.addTypeTests(_IdentityHashSet);
  _IdentityHashSet.prototype[_is__IdentityHashSet_default] = true;
  _IdentityHashSet[dart.implements] = () => [HashSetOfE(), LinkedHashSetOfE()];
  dart.setMethodSignature(_IdentityHashSet, () => ({
    __proto__: dart.getMethods(_IdentityHashSet.__proto__),
    [_newSet]: dart.fnType(core.Set$(E), []),
    [_newSimilarSet]: dart.gFnType(R => [core.Set$(R), []]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    lookup: dart.fnType(E, [core.Object]),
    add: dart.fnType(core.bool, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object])
  }));
  dart.setFieldSignature(_IdentityHashSet, () => ({
    __proto__: dart.getFields(_IdentityHashSet.__proto__),
    [_map$0]: dart.finalFieldType(dart.dynamic),
    [_modifications$]: dart.fieldType(core.int)
  }));
  dart.defineExtensionMethods(_IdentityHashSet, ['contains']);
  return _IdentityHashSet;
});
collection._IdentityHashSet = collection._IdentityHashSet$();
dart.addTypeTests(collection._IdentityHashSet, _is__IdentityHashSet_default);
const _validKey$ = Symbol('_validKey');
const _equals$0 = Symbol('_equals');
const _hashCode$ = Symbol('_hashCode');
const _is__CustomHashSet_default = Symbol('_is__CustomHashSet_default');
collection._CustomHashSet$ = dart.generic(E => {
  let _CustomHashSetOfE = () => (_CustomHashSetOfE = dart.constFn(collection._CustomHashSet$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let HashSetOfE = () => (HashSetOfE = dart.constFn(collection.HashSet$(E)))();
  let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
  let EAndETobool = () => (EAndETobool = dart.constFn(dart.fnType(core.bool, [E, E])))();
  let EToint = () => (EToint = dart.constFn(dart.fnType(core.int, [E])))();
  class _CustomHashSet extends collection._InternalSet$(E) {
    [_newSet]() {
      return new (_CustomHashSetOfE()).new(this[_equals$0], this[_hashCode$]);
    }
    [_newSimilarSet](R) {
      return new (collection._HashSet$(R)).new();
    }
    contains(key) {
      if (E.is(key)) {
        let buckets = this[_keyMap$].get(this[_hashCode$](key) & 0x3ffffff);
        if (buckets != null) {
          let equals = this[_equals$0];
          for (let i = 0, n = buckets.length; i < n; i++) {
            let k = buckets[i];
            if (dart.test(equals(k, key))) return true;
          }
        }
      }
      return false;
    }
    lookup(key) {
      if (E.is(key)) {
        let buckets = this[_keyMap$].get(this[_hashCode$](key) & 0x3ffffff);
        if (buckets != null) {
          let equals = this[_equals$0];
          for (let i = 0, n = buckets.length; i < n; i++) {
            let k = buckets[i];
            if (dart.test(equals(k, key))) return k;
          }
        }
      }
      return null;
    }
    add(key) {
      E._check(key);
      let keyMap = this[_keyMap$];
      let hash = this[_hashCode$](key) & 0x3ffffff;
      let buckets = keyMap.get(hash);
      if (buckets == null) {
        keyMap.set(hash, [key]);
      } else {
        let equals = this[_equals$0];
        for (let i = 0, n = buckets.length; i < n; i++) {
          let k = buckets[i];
          if (dart.test(equals(k, key))) return false;
        }
        buckets.push(key);
      }
      this[_map$0].add(key);
      this[_modifications$] = this[_modifications$] + 1 & 67108863;
      return true;
    }
    addAll(objects) {
      IterableOfE()._check(objects);
      for (let element of objects)
        this.add(element);
    }
    remove(key) {
      if (E.is(key)) {
        let hash = this[_hashCode$](key) & 0x3ffffff;
        let keyMap = this[_keyMap$];
        let buckets = keyMap.get(hash);
        if (buckets == null) return false;
        let equals = this[_equals$0];
        for (let i = 0, n = buckets.length; i < n; i++) {
          let k = buckets[i];
          if (dart.test(equals(k, key))) {
            if (n === 1) {
              keyMap.delete(hash);
            } else {
              buckets.splice(i, 1);
            }
            this[_map$0].delete(k);
            this[_modifications$] = this[_modifications$] + 1 & 67108863;
            return true;
          }
        }
      }
      return false;
    }
    clear() {
      let map = this[_map$0];
      if (map.size > 0) {
        map.clear();
        this[_keyMap$].clear();
        this[_modifications$] = this[_modifications$] + 1 & 67108863;
      }
    }
  }
  (_CustomHashSet.new = function(equals, hashCode) {
    this[_modifications$] = 0;
    this[_map$0] = new Set();
    this[_keyMap$] = new Map();
    this[_equals$0] = equals;
    this[_hashCode$] = hashCode;
    _CustomHashSet.__proto__.new.call(this);
  }).prototype = _CustomHashSet.prototype;
  dart.addTypeTests(_CustomHashSet);
  _CustomHashSet.prototype[_is__CustomHashSet_default] = true;
  _CustomHashSet[dart.implements] = () => [HashSetOfE(), LinkedHashSetOfE()];
  dart.setMethodSignature(_CustomHashSet, () => ({
    __proto__: dart.getMethods(_CustomHashSet.__proto__),
    [_newSet]: dart.fnType(core.Set$(E), []),
    [_newSimilarSet]: dart.gFnType(R => [core.Set$(R), []]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    lookup: dart.fnType(E, [core.Object]),
    add: dart.fnType(core.bool, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object])
  }));
  dart.setFieldSignature(_CustomHashSet, () => ({
    __proto__: dart.getFields(_CustomHashSet.__proto__),
    [_equals$0]: dart.fieldType(EAndETobool()),
    [_hashCode$]: dart.fieldType(EToint()),
    [_modifications$]: dart.fieldType(core.int),
    [_map$0]: dart.finalFieldType(dart.dynamic),
    [_keyMap$]: dart.finalFieldType(dart.dynamic)
  }));
  dart.defineExtensionMethods(_CustomHashSet, ['contains']);
  return _CustomHashSet;
});
collection._CustomHashSet = collection._CustomHashSet$();
dart.addTypeTests(collection._CustomHashSet, _is__CustomHashSet_default);
const _is__CustomKeyHashSet_default = Symbol('_is__CustomKeyHashSet_default');
collection._CustomKeyHashSet$ = dart.generic(E => {
  let _CustomKeyHashSetOfE = () => (_CustomKeyHashSetOfE = dart.constFn(collection._CustomKeyHashSet$(E)))();
  class _CustomKeyHashSet extends collection._CustomHashSet$(E) {
    [_newSet]() {
      return new (_CustomKeyHashSetOfE()).new(this[_equals$0], this[_hashCode$], this[_validKey$]);
    }
    [_newSimilarSet](R) {
      return new (collection._HashSet$(R)).new();
    }
    contains(element) {
      if (!dart.test(this[_validKey$](element))) return false;
      return super.contains(element);
    }
    lookup(element) {
      if (!dart.test(this[_validKey$](element))) return null;
      return super.lookup(element);
    }
    remove(element) {
      if (!dart.test(this[_validKey$](element))) return false;
      return super.remove(element);
    }
  }
  (_CustomKeyHashSet.new = function(equals, hashCode, validKey) {
    this[_validKey$] = validKey;
    _CustomKeyHashSet.__proto__.new.call(this, equals, hashCode);
  }).prototype = _CustomKeyHashSet.prototype;
  dart.addTypeTests(_CustomKeyHashSet);
  _CustomKeyHashSet.prototype[_is__CustomKeyHashSet_default] = true;
  dart.setFieldSignature(_CustomKeyHashSet, () => ({
    __proto__: dart.getFields(_CustomKeyHashSet.__proto__),
    [_validKey$]: dart.fieldType(ObjectTobool())
  }));
  dart.defineExtensionMethods(_CustomKeyHashSet, ['contains']);
  return _CustomKeyHashSet;
});
collection._CustomKeyHashSet = collection._CustomKeyHashSet$();
dart.addTypeTests(collection._CustomKeyHashSet, _is__CustomKeyHashSet_default);
const _source$0 = Symbol('_source');
const _is_UnmodifiableListView_default = Symbol('_is_UnmodifiableListView_default');
collection.UnmodifiableListView$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class UnmodifiableListView extends _internal.UnmodifiableListBase$(E) {
    cast(R) {
      return new (collection.UnmodifiableListView$(R)).new(core.Iterable$(R)._check(this[_source$0][$cast](R)));
    }
    get length() {
      return this[_source$0][$length];
    }
    set length(value) {
      super.length = value;
    }
    _get(index) {
      return this[_source$0][$elementAt](index);
    }
  }
  (UnmodifiableListView.new = function(source) {
    this[_source$0] = source;
  }).prototype = UnmodifiableListView.prototype;
  dart.addTypeTests(UnmodifiableListView);
  UnmodifiableListView.prototype[_is_UnmodifiableListView_default] = true;
  dart.setMethodSignature(UnmodifiableListView, () => ({
    __proto__: dart.getMethods(UnmodifiableListView.__proto__),
    _get: dart.fnType(E, [core.int]),
    [$_get]: dart.fnType(E, [core.int])
  }));
  dart.setGetterSignature(UnmodifiableListView, () => ({
    __proto__: dart.getGetters(UnmodifiableListView.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(UnmodifiableListView, () => ({
    __proto__: dart.getFields(UnmodifiableListView.__proto__),
    [_source$0]: dart.finalFieldType(IterableOfE())
  }));
  dart.defineExtensionMethods(UnmodifiableListView, ['cast', '_get']);
  dart.defineExtensionAccessors(UnmodifiableListView, ['length']);
  return UnmodifiableListView;
});
collection.UnmodifiableListView = collection.UnmodifiableListView$();
dart.addTypeTests(collection.UnmodifiableListView, _is_UnmodifiableListView_default);
collection._defaultEquals = function(a, b) {
  return dart.equals(a, b);
};
collection._defaultHashCode = function(a) {
  return dart.hashCode(a);
};
const _is_HashMap_default = Symbol('_is_HashMap_default');
collection.HashMap$ = dart.generic((K, V) => {
  let IdentityMapOfK$V = () => (IdentityMapOfK$V = dart.constFn(_js_helper.IdentityMap$(K, V)))();
  let LinkedMapOfK$V = () => (LinkedMapOfK$V = dart.constFn(_js_helper.LinkedMap$(K, V)))();
  let CustomHashMapOfK$V = () => (CustomHashMapOfK$V = dart.constFn(_js_helper.CustomHashMap$(K, V)))();
  let CustomKeyHashMapOfK$V = () => (CustomKeyHashMapOfK$V = dart.constFn(_js_helper.CustomKeyHashMap$(K, V)))();
  let HashMapOfK$V = () => (HashMapOfK$V = dart.constFn(collection.HashMap$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  class HashMap extends core.Object {
    static new(opts) {
      let equals = opts && 'equals' in opts ? opts.equals : null;
      let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
      let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
      if (isValidKey == null) {
        if (hashCode == null) {
          if (equals == null) {
            if (dart.wrapType(K) === dart.wrapType(core.String) || dart.wrapType(K) === dart.wrapType(core.int)) {
              return new (IdentityMapOfK$V()).new();
            }
            return new (LinkedMapOfK$V()).new();
          }
          hashCode = dart.hashCode;
        } else if (dart.fn(core.identityHashCode, ObjectToint()) === hashCode && dart.fn(core.identical, ObjectAndObjectTobool()) === equals) {
          return new (IdentityMapOfK$V()).new();
        }
        return new (CustomHashMapOfK$V()).new(equals != null ? equals : dart.equals, hashCode);
      }
      return new (CustomKeyHashMapOfK$V()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode, isValidKey);
    }
    static identity() {
      return new (IdentityMapOfK$V()).new();
    }
    static from(other) {
      let result = new (LinkedMapOfK$V()).new();
      other[$forEach](dart.fn((k, v) => {
        result[$_set](K._check(k), V._check(v));
      }, dynamicAnddynamicToNull()));
      return HashMapOfK$V()._check(result);
    }
    static of(other) {
      let _ = new (LinkedMapOfK$V()).new();
      _.addAll(other);
      return _;
    }
    static fromIterable(iterable, opts) {
      let key = opts && 'key' in opts ? opts.key : null;
      let value = opts && 'value' in opts ? opts.value : null;
      let map = new (LinkedMapOfK$V()).new();
      collection.MapBase._fillMapWithMappedIterable(map, iterable, key, value);
      return HashMapOfK$V()._check(map);
    }
    static fromIterables(keys, values) {
      let map = new (LinkedMapOfK$V()).new();
      collection.MapBase._fillMapWithIterables(map, keys, values);
      return HashMapOfK$V()._check(map);
    }
    static fromEntries(entries) {
      let _ = new (LinkedMapOfK$V()).new();
      _.addEntries(entries);
      return _;
    }
  }
  (HashMap[dart.mixinNew] = function() {
  }).prototype = HashMap.prototype;
  HashMap.prototype[dart.isMap] = true;
  dart.addTypeTests(HashMap);
  HashMap.prototype[_is_HashMap_default] = true;
  HashMap[dart.implements] = () => [MapOfK$V()];
  return HashMap;
});
collection.HashMap = collection.HashMap$();
dart.addTypeTests(collection.HashMap, _is_HashMap_default);
const _is_HashSet_default = Symbol('_is_HashSet_default');
collection.HashSet$ = dart.generic(E => {
  let _IdentityHashSetOfE = () => (_IdentityHashSetOfE = dart.constFn(collection._IdentityHashSet$(E)))();
  let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
  let _CustomHashSetOfE = () => (_CustomHashSetOfE = dart.constFn(collection._CustomHashSet$(E)))();
  let _CustomKeyHashSetOfE = () => (_CustomKeyHashSetOfE = dart.constFn(collection._CustomKeyHashSet$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  class HashSet extends core.Object {
    static new(opts) {
      let equals = opts && 'equals' in opts ? opts.equals : null;
      let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
      let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
      if (isValidKey == null) {
        if (hashCode == null) {
          if (equals == null) {
            if (dart.wrapType(E) === dart.wrapType(core.String) || dart.wrapType(E) === dart.wrapType(core.int)) {
              return new (_IdentityHashSetOfE()).new();
            }
            return new (_HashSetOfE()).new();
          }
          hashCode = dart.hashCode;
        } else if (dart.fn(core.identityHashCode, ObjectToint()) === hashCode && dart.fn(core.identical, ObjectAndObjectTobool()) === equals) {
          return new (_IdentityHashSetOfE()).new();
        }
        return new (_CustomHashSetOfE()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode);
      }
      return new (_CustomKeyHashSetOfE()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode, isValidKey);
    }
    static identity() {
      return new (_IdentityHashSetOfE()).new();
    }
    static from(elements) {
      let result = new (_HashSetOfE()).new();
      for (let e of elements) {
        result.add(E._check(e));
      }
      return result;
    }
    static of(elements) {
      let _ = new (_HashSetOfE()).new();
      _.addAll(elements);
      return _;
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this.iterator);
    }
  }
  (HashSet[dart.mixinNew] = function() {
  }).prototype = HashSet.prototype;
  dart.addTypeTests(HashSet);
  HashSet.prototype[_is_HashSet_default] = true;
  HashSet[dart.implements] = () => [SetOfE()];
  return HashSet;
});
collection.HashSet = collection.HashSet$();
dart.addTypeTests(collection.HashSet, _is_HashSet_default);
const _is_IterableMixin_default = Symbol('_is_IterableMixin_default');
collection.IterableMixin$ = dart.generic(E => {
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
  let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
  class IterableMixin extends core.Object {
    cast(R) {
      return core.Iterable.castFrom(E, R, this);
    }
    map(T, f) {
      return _internal.MappedIterable$(E, T).new(this, f);
    }
    where(f) {
      return new (WhereIterableOfE()).new(this, f);
    }
    whereType(T) {
      return new (_internal.WhereTypeIterable$(T)).new(this);
    }
    expand(T, f) {
      return new (_internal.ExpandIterable$(E, T)).new(this, f);
    }
    followedBy(other) {
      IterableOfE()._check(other);
      let self = this;
      if (EfficientLengthIterableOfE().is(self)) {
        return FollowedByIterableOfE().firstEfficient(self, other);
      }
      return new (FollowedByIterableOfE()).new(this, other);
    }
    contains(element) {
      for (let e of this) {
        if (dart.equals(e, element)) return true;
      }
      return false;
    }
    forEach(f) {
      for (let element of this)
        f(element);
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      let iterator = this.iterator;
      if (!dart.test(iterator.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let value = iterator.current;
      while (dart.test(iterator.moveNext())) {
        value = combine(value, iterator.current);
      }
      return value;
    }
    fold(T, initialValue, combine) {
      let value = initialValue;
      for (let element of this)
        value = combine(value, element);
      return value;
    }
    every(f) {
      for (let element of this) {
        if (!dart.test(f(element))) return false;
      }
      return true;
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let iterator = this.iterator;
      if (!dart.test(iterator.moveNext())) return "";
      let buffer = new core.StringBuffer.new();
      if (separator == null || separator === "") {
        do {
          buffer.write(dart.str(iterator.current));
        } while (dart.test(iterator.moveNext()));
      } else {
        buffer.write(dart.str(iterator.current));
        while (dart.test(iterator.moveNext())) {
          buffer.write(separator);
          buffer.write(dart.str(iterator.current));
        }
      }
      return buffer.toString();
    }
    any(test) {
      for (let element of this) {
        if (dart.test(test(element))) return true;
      }
      return false;
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      return ListOfE().from(this, {growable: growable});
    }
    toSet() {
      return SetOfE().from(this);
    }
    get length() {
      if (!!_internal.EfficientLengthIterable.is(this)) dart.assertFailed();
      let count = 0;
      let it = this[$iterator];
      while (dart.test(it.moveNext())) {
        count++;
      }
      return count;
    }
    get isEmpty() {
      return !dart.test(this[$iterator].moveNext());
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    take(count) {
      return TakeIterableOfE().new(this, count);
    }
    takeWhile(test) {
      return new (TakeWhileIterableOfE()).new(this, test);
    }
    skip(count) {
      return SkipIterableOfE().new(this, count);
    }
    skipWhile(test) {
      return new (SkipWhileIterableOfE()).new(this, test);
    }
    get first() {
      let it = this[$iterator];
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      return it.current;
    }
    get last() {
      let it = this[$iterator];
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let result = null;
      do {
        result = it.current;
      } while (dart.test(it.moveNext()));
      return result;
    }
    get single() {
      let it = this[$iterator];
      if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
      let result = it.current;
      if (dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.tooMany());
      return result;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      for (let element of this) {
        if (dart.test(test(element))) return element;
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          if (foundMatching) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    elementAt(index) {
      core.ArgumentError.checkNotNull(index, "index");
      core.RangeError.checkNotNegative(index, "index");
      let elementIndex = 0;
      for (let element of this) {
        if (index === elementIndex) return element;
        elementIndex++;
      }
      dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
    }
    toString() {
      return collection.IterableBase.iterableToShortString(this, "(", ")");
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this.iterator);
    }
  }
  (IterableMixin.new = function() {
  }).prototype = IterableMixin.prototype;
  IterableMixin.prototype[dart.isIterable] = true;
  dart.addTypeTests(IterableMixin);
  IterableMixin.prototype[_is_IterableMixin_default] = true;
  IterableMixin[dart.implements] = () => [IterableOfE()];
  dart.setMethodSignature(IterableMixin, () => ({
    __proto__: dart.getMethods(IterableMixin.__proto__),
    cast: dart.gFnType(R => [core.Iterable$(R), []]),
    [$cast]: dart.gFnType(R => [core.Iterable$(R), []]),
    map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    where: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    whereType: dart.gFnType(T => [core.Iterable$(T), []]),
    [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
    expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    followedBy: dart.fnType(core.Iterable$(E), [core.Object]),
    [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    reduce: dart.fnType(E, [core.Object]),
    [$reduce]: dart.fnType(E, [core.Object]),
    fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    every: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    join: dart.fnType(core.String, [], [core.String]),
    [$join]: dart.fnType(core.String, [], [core.String]),
    any: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    toList: dart.fnType(core.List$(E), [], {growable: core.bool}),
    [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
    toSet: dart.fnType(core.Set$(E), []),
    [$toSet]: dart.fnType(core.Set$(E), []),
    take: dart.fnType(core.Iterable$(E), [core.int]),
    [$take]: dart.fnType(core.Iterable$(E), [core.int]),
    takeWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    skip: dart.fnType(core.Iterable$(E), [core.int]),
    [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
    skipWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    elementAt: dart.fnType(E, [core.int]),
    [$elementAt]: dart.fnType(E, [core.int]),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, [])
  }));
  dart.setGetterSignature(IterableMixin, () => ({
    __proto__: dart.getGetters(IterableMixin.__proto__),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    first: E,
    [$first]: E,
    last: E,
    [$last]: E,
    single: E,
    [$single]: E
  }));
  dart.defineExtensionMethods(IterableMixin, [
    'cast',
    'map',
    'where',
    'whereType',
    'expand',
    'followedBy',
    'contains',
    'forEach',
    'reduce',
    'fold',
    'every',
    'join',
    'any',
    'toList',
    'toSet',
    'take',
    'takeWhile',
    'skip',
    'skipWhile',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'elementAt',
    'toString'
  ]);
  dart.defineExtensionAccessors(IterableMixin, [
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last',
    'single'
  ]);
  return IterableMixin;
});
collection.IterableMixin = collection.IterableMixin$();
dart.addTypeTests(collection.IterableMixin, _is_IterableMixin_default);
dart.defineLazy(collection, {
  /*collection._toStringVisiting*/get _toStringVisiting() {
    return [];
  }
});
collection._isToStringVisiting = function(o) {
  for (let i = 0; i < dart.notNull(collection._toStringVisiting[$length]); i++) {
    if (core.identical(o, collection._toStringVisiting[$_get](i))) return true;
  }
  return false;
};
collection._iterablePartsToStrings = function(iterable, parts) {
  let lengthLimit = 80;
  let headCount = 3;
  let tailCount = 2;
  let maxCount = 100;
  let overhead = 2;
  let ellipsisSize = 3;
  let length = 0;
  let count = 0;
  let it = iterable[$iterator];
  while (length < lengthLimit || count < headCount) {
    if (!dart.test(it.moveNext())) return;
    let next = dart.str(it.current);
    parts[$add](next);
    length = length + (next.length + overhead);
    count++;
  }
  let penultimateString = null;
  let ultimateString = null;
  let penultimate = null;
  let ultimate = null;
  if (!dart.test(it.moveNext())) {
    if (count <= headCount + tailCount) return;
    ultimateString = parts[$removeLast]();
    penultimateString = parts[$removeLast]();
  } else {
    penultimate = it.current;
    count++;
    if (!dart.test(it.moveNext())) {
      if (count <= headCount + 1) {
        parts[$add](dart.str(penultimate));
        return;
      }
      ultimateString = dart.str(penultimate);
      penultimateString = parts[$removeLast]();
      length = length + (ultimateString.length + overhead);
    } else {
      ultimate = it.current;
      count++;
      if (!(count < maxCount)) dart.assertFailed();
      while (dart.test(it.moveNext())) {
        penultimate = ultimate;
        ultimate = it.current;
        count++;
        if (count > maxCount) {
          while (length > lengthLimit - ellipsisSize - overhead && count > headCount) {
            length = length - (parts[$removeLast]().length + overhead);
            count--;
          }
          parts[$add]("...");
          return;
        }
      }
      penultimateString = dart.str(penultimate);
      ultimateString = dart.str(ultimate);
      length = length + (ultimateString.length + penultimateString.length + 2 * overhead);
    }
  }
  let elision = null;
  if (count > dart.notNull(parts[$length]) + tailCount) {
    elision = "...";
    length = length + (ellipsisSize + overhead);
  }
  while (length > lengthLimit && dart.notNull(parts[$length]) > headCount) {
    length = length - (parts[$removeLast]().length + overhead);
    if (elision == null) {
      elision = "...";
      length = length + (ellipsisSize + overhead);
    }
  }
  if (elision != null) {
    parts[$add](elision);
  }
  parts[$add](penultimateString);
  parts[$add](ultimateString);
};
const _iterator$0 = Symbol('_iterator');
const _state$ = Symbol('_state');
const _move = Symbol('_move');
const _is_HasNextIterator_default = Symbol('_is_HasNextIterator_default');
collection.HasNextIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class HasNextIterator extends core.Object {
    get hasNext() {
      if (this[_state$] === 2) this[_move]();
      return this[_state$] === 0;
    }
    next() {
      if (!dart.test(this.hasNext)) dart.throw(new core.StateError.new("No more elements"));
      if (!(this[_state$] === 0)) dart.assertFailed();
      let result = this[_iterator$0].current;
      this[_move]();
      return result;
    }
    [_move]() {
      if (dart.test(this[_iterator$0].moveNext())) {
        this[_state$] = 0;
      } else {
        this[_state$] = 1;
      }
    }
  }
  (HasNextIterator.new = function(iterator) {
    this[_state$] = 2;
    this[_iterator$0] = iterator;
  }).prototype = HasNextIterator.prototype;
  dart.addTypeTests(HasNextIterator);
  HasNextIterator.prototype[_is_HasNextIterator_default] = true;
  dart.setMethodSignature(HasNextIterator, () => ({
    __proto__: dart.getMethods(HasNextIterator.__proto__),
    next: dart.fnType(E, []),
    [_move]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(HasNextIterator, () => ({
    __proto__: dart.getGetters(HasNextIterator.__proto__),
    hasNext: core.bool
  }));
  dart.setFieldSignature(HasNextIterator, () => ({
    __proto__: dart.getFields(HasNextIterator.__proto__),
    [_iterator$0]: dart.fieldType(IteratorOfE()),
    [_state$]: dart.fieldType(core.int)
  }));
  return HasNextIterator;
});
collection.HasNextIterator = collection.HasNextIterator$();
dart.defineLazy(collection.HasNextIterator, {
  /*collection.HasNextIterator._HAS_NEXT_AND_NEXT_IN_CURRENT*/get _HAS_NEXT_AND_NEXT_IN_CURRENT() {
    return 0;
  },
  /*collection.HasNextIterator._NO_NEXT*/get _NO_NEXT() {
    return 1;
  },
  /*collection.HasNextIterator._NOT_MOVED_YET*/get _NOT_MOVED_YET() {
    return 2;
  }
});
dart.addTypeTests(collection.HasNextIterator, _is_HasNextIterator_default);
const _is_LinkedHashMap_default = Symbol('_is_LinkedHashMap_default');
collection.LinkedHashMap$ = dart.generic((K, V) => {
  let IdentityMapOfK$V = () => (IdentityMapOfK$V = dart.constFn(_js_helper.IdentityMap$(K, V)))();
  let LinkedMapOfK$V = () => (LinkedMapOfK$V = dart.constFn(_js_helper.LinkedMap$(K, V)))();
  let CustomHashMapOfK$V = () => (CustomHashMapOfK$V = dart.constFn(_js_helper.CustomHashMap$(K, V)))();
  let CustomKeyHashMapOfK$V = () => (CustomKeyHashMapOfK$V = dart.constFn(_js_helper.CustomKeyHashMap$(K, V)))();
  let LinkedHashMapOfK$V = () => (LinkedHashMapOfK$V = dart.constFn(collection.LinkedHashMap$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  class LinkedHashMap extends core.Object {
    static new(opts) {
      let equals = opts && 'equals' in opts ? opts.equals : null;
      let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
      let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
      if (isValidKey == null) {
        if (hashCode == null) {
          if (equals == null) {
            if (dart.wrapType(K) === dart.wrapType(core.String) || dart.wrapType(K) === dart.wrapType(core.int)) {
              return new (IdentityMapOfK$V()).new();
            }
            return new (LinkedMapOfK$V()).new();
          }
          hashCode = dart.hashCode;
        } else if (dart.fn(core.identityHashCode, ObjectToint()) === hashCode && dart.fn(core.identical, ObjectAndObjectTobool()) === equals) {
          return new (IdentityMapOfK$V()).new();
        }
        return new (CustomHashMapOfK$V()).new(equals != null ? equals : dart.equals, hashCode);
      }
      return new (CustomKeyHashMapOfK$V()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode, isValidKey);
    }
    static identity() {
      return new (IdentityMapOfK$V()).new();
    }
    static from(other) {
      let result = new (LinkedMapOfK$V()).new();
      other[$forEach](dart.fn((k, v) => {
        result._set(K._check(k), V._check(v));
      }, dynamicAnddynamicToNull()));
      return result;
    }
    static of(other) {
      let _ = new (LinkedMapOfK$V()).new();
      _.addAll(other);
      return _;
    }
    static fromIterable(iterable, opts) {
      let key = opts && 'key' in opts ? opts.key : null;
      let value = opts && 'value' in opts ? opts.value : null;
      let map = new (LinkedMapOfK$V()).new();
      collection.MapBase._fillMapWithMappedIterable(map, iterable, key, value);
      return map;
    }
    static fromIterables(keys, values) {
      let map = new (LinkedMapOfK$V()).new();
      collection.MapBase._fillMapWithIterables(map, keys, values);
      return map;
    }
    static fromEntries(entries) {
      return LinkedHashMapOfK$V()._check((() => {
        let _ = new (LinkedMapOfK$V()).new();
        _[$addEntries](entries);
        return _;
      })());
    }
  }
  (LinkedHashMap[dart.mixinNew] = function() {
  }).prototype = LinkedHashMap.prototype;
  LinkedHashMap.prototype[dart.isMap] = true;
  dart.addTypeTests(LinkedHashMap);
  LinkedHashMap.prototype[_is_LinkedHashMap_default] = true;
  LinkedHashMap[dart.implements] = () => [MapOfK$V()];
  return LinkedHashMap;
});
collection.LinkedHashMap = collection.LinkedHashMap$();
dart.addTypeTests(collection.LinkedHashMap, _is_LinkedHashMap_default);
const _is_LinkedHashSet_default = Symbol('_is_LinkedHashSet_default');
collection.LinkedHashSet$ = dart.generic(E => {
  let _IdentityHashSetOfE = () => (_IdentityHashSetOfE = dart.constFn(collection._IdentityHashSet$(E)))();
  let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
  let _CustomHashSetOfE = () => (_CustomHashSetOfE = dart.constFn(collection._CustomHashSet$(E)))();
  let _CustomKeyHashSetOfE = () => (_CustomKeyHashSetOfE = dart.constFn(collection._CustomKeyHashSet$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  class LinkedHashSet extends core.Object {
    static new(opts) {
      let equals = opts && 'equals' in opts ? opts.equals : null;
      let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
      let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
      if (isValidKey == null) {
        if (hashCode == null) {
          if (equals == null) {
            if (dart.wrapType(E) === dart.wrapType(core.String) || dart.wrapType(E) === dart.wrapType(core.int)) {
              return new (_IdentityHashSetOfE()).new();
            }
            return new (_HashSetOfE()).new();
          }
          hashCode = dart.hashCode;
        } else if (dart.fn(core.identityHashCode, ObjectToint()) === hashCode && dart.fn(core.identical, ObjectAndObjectTobool()) === equals) {
          return new (_IdentityHashSetOfE()).new();
        }
        return new (_CustomHashSetOfE()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode);
      }
      return new (_CustomKeyHashSetOfE()).new(equals != null ? equals : dart.equals, hashCode != null ? hashCode : dart.hashCode, isValidKey);
    }
    static identity() {
      return new (_IdentityHashSetOfE()).new();
    }
    static from(elements) {
      let result = new (_HashSetOfE()).new();
      for (let element of elements) {
        result.add(E._check(element));
      }
      return result;
    }
    static of(elements) {
      let _ = new (_HashSetOfE()).new();
      _.addAll(elements);
      return _;
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this.iterator);
    }
  }
  (LinkedHashSet[dart.mixinNew] = function() {
  }).prototype = LinkedHashSet.prototype;
  dart.addTypeTests(LinkedHashSet);
  LinkedHashSet.prototype[_is_LinkedHashSet_default] = true;
  LinkedHashSet[dart.implements] = () => [SetOfE()];
  return LinkedHashSet;
});
collection.LinkedHashSet = collection.LinkedHashSet$();
dart.addTypeTests(collection.LinkedHashSet, _is_LinkedHashSet_default);
const _modificationCount = Symbol('_modificationCount');
const _length$0 = Symbol('_length');
const _first$ = Symbol('_first');
const _insertBefore = Symbol('_insertBefore');
const _list$ = Symbol('_list');
const _unlink = Symbol('_unlink');
const _next$0 = Symbol('_next');
const _previous$0 = Symbol('_previous');
const _is_LinkedList_default$ = Symbol('_is_LinkedList_default');
collection.LinkedList$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let _LinkedListIteratorOfE = () => (_LinkedListIteratorOfE = dart.constFn(collection._LinkedListIterator$(E)))();
  class LinkedList extends core.Iterable$(E) {
    addFirst(entry) {
      E._check(entry);
      this[_insertBefore](this[_first$], entry, {updateFirst: true});
      this[_first$] = entry;
    }
    add(entry) {
      E._check(entry);
      this[_insertBefore](this[_first$], entry, {updateFirst: false});
    }
    addAll(entries) {
      IterableOfE()._check(entries);
      entries[$forEach](dart.bind(this, 'add'));
    }
    remove(entry) {
      E._check(entry);
      if (!dart.equals(entry[_list$], this)) return false;
      this[_unlink](entry);
      return true;
    }
    get iterator() {
      return new (_LinkedListIteratorOfE()).new(this);
    }
    get length() {
      return this[_length$0];
    }
    clear() {
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      if (dart.test(this.isEmpty)) return;
      let next = this[_first$];
      do {
        let entry = next;
        next = entry[_next$0];
        entry[_next$0] = entry[_previous$0] = entry[_list$] = null;
      } while (!(next == this[_first$]));
      this[_first$] = null;
      this[_length$0] = 0;
    }
    get first() {
      if (dart.test(this.isEmpty)) {
        dart.throw(new core.StateError.new("No such element"));
      }
      return this[_first$];
    }
    get last() {
      if (dart.test(this.isEmpty)) {
        dart.throw(new core.StateError.new("No such element"));
      }
      return this[_first$][_previous$0];
    }
    get single() {
      if (dart.test(this.isEmpty)) {
        dart.throw(new core.StateError.new("No such element"));
      }
      if (dart.notNull(this[_length$0]) > 1) {
        dart.throw(new core.StateError.new("Too many elements"));
      }
      return this[_first$];
    }
    forEach(action) {
      let modificationCount = this[_modificationCount];
      if (dart.test(this.isEmpty)) return;
      let current = this[_first$];
      do {
        action(current);
        if (modificationCount != this[_modificationCount]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
        current = current[_next$0];
      } while (!(current == this[_first$]));
    }
    get isEmpty() {
      return this[_length$0] === 0;
    }
    [_insertBefore](entry, newEntry, opts) {
      E._check(entry);
      E._check(newEntry);
      let updateFirst = opts && 'updateFirst' in opts ? opts.updateFirst : null;
      if (newEntry.list != null) {
        dart.throw(new core.StateError.new("LinkedListEntry is already in a LinkedList"));
      }
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      newEntry[_list$] = this;
      if (dart.test(this.isEmpty)) {
        if (!(entry == null)) dart.assertFailed();
        newEntry[_previous$0] = newEntry[_next$0] = newEntry;
        this[_first$] = newEntry;
        this[_length$0] = dart.notNull(this[_length$0]) + 1;
        return;
      }
      let predecessor = entry[_previous$0];
      let successor = entry;
      newEntry[_previous$0] = predecessor;
      newEntry[_next$0] = successor;
      predecessor[_next$0] = newEntry;
      successor[_previous$0] = newEntry;
      if (dart.test(updateFirst) && entry == this[_first$]) {
        this[_first$] = newEntry;
      }
      this[_length$0] = dart.notNull(this[_length$0]) + 1;
    }
    [_unlink](entry) {
      E._check(entry);
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      entry[_next$0][_previous$0] = entry[_previous$0];
      let next = entry[_previous$0][_next$0] = entry[_next$0];
      this[_length$0] = dart.notNull(this[_length$0]) - 1;
      entry[_list$] = entry[_next$0] = entry[_previous$0] = null;
      if (dart.test(this.isEmpty)) {
        this[_first$] = null;
      } else if (entry == this[_first$]) {
        this[_first$] = next;
      }
    }
  }
  (LinkedList.new = function() {
    this[_modificationCount] = 0;
    this[_length$0] = 0;
    this[_first$] = null;
    LinkedList.__proto__.new.call(this);
  }).prototype = LinkedList.prototype;
  dart.addTypeTests(LinkedList);
  LinkedList.prototype[_is_LinkedList_default$] = true;
  dart.setMethodSignature(LinkedList, () => ({
    __proto__: dart.getMethods(LinkedList.__proto__),
    addFirst: dart.fnType(dart.void, [core.Object]),
    add: dart.fnType(dart.void, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [_insertBefore]: dart.fnType(dart.void, [core.Object, core.Object], {updateFirst: core.bool}),
    [_unlink]: dart.fnType(dart.void, [core.Object])
  }));
  dart.setGetterSignature(LinkedList, () => ({
    __proto__: dart.getGetters(LinkedList.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.setFieldSignature(LinkedList, () => ({
    __proto__: dart.getFields(LinkedList.__proto__),
    [_modificationCount]: dart.fieldType(core.int),
    [_length$0]: dart.fieldType(core.int),
    [_first$]: dart.fieldType(E)
  }));
  dart.defineExtensionMethods(LinkedList, ['forEach']);
  dart.defineExtensionAccessors(LinkedList, [
    'iterator',
    'length',
    'first',
    'last',
    'single',
    'isEmpty'
  ]);
  return LinkedList;
});
collection.LinkedList = collection.LinkedList$();
dart.addTypeTests(collection.LinkedList, _is_LinkedList_default$);
const _visitedFirst = Symbol('_visitedFirst');
const _current$1 = Symbol('_current');
const _is__LinkedListIterator_default$ = Symbol('_is__LinkedListIterator_default');
collection._LinkedListIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let LinkedListOfE = () => (LinkedListOfE = dart.constFn(collection.LinkedList$(E)))();
  let LinkedListEntryOfE = () => (LinkedListEntryOfE = dart.constFn(collection.LinkedListEntry$(E)))();
  class _LinkedListIterator extends core.Object {
    get current() {
      return this[_current$1];
    }
    moveNext() {
      if (this[_modificationCount] != this[_list$][_modificationCount]) {
        dart.throw(new core.ConcurrentModificationError.new(this));
      }
      if (dart.test(this[_list$].isEmpty) || dart.test(this[_visitedFirst]) && this[_next$0] == this[_list$].first) {
        this[_current$1] = null;
        return false;
      }
      this[_visitedFirst] = true;
      this[_current$1] = E._check(this[_next$0]);
      this[_next$0] = this[_next$0][_next$0];
      return true;
    }
  }
  (_LinkedListIterator.new = function(list) {
    this[_current$1] = null;
    this[_list$] = list;
    this[_modificationCount] = list[_modificationCount];
    this[_next$0] = list[_first$];
    this[_visitedFirst] = false;
  }).prototype = _LinkedListIterator.prototype;
  dart.addTypeTests(_LinkedListIterator);
  _LinkedListIterator.prototype[_is__LinkedListIterator_default$] = true;
  _LinkedListIterator[dart.implements] = () => [IteratorOfE()];
  dart.setMethodSignature(_LinkedListIterator, () => ({
    __proto__: dart.getMethods(_LinkedListIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(_LinkedListIterator, () => ({
    __proto__: dart.getGetters(_LinkedListIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(_LinkedListIterator, () => ({
    __proto__: dart.getFields(_LinkedListIterator.__proto__),
    [_list$]: dart.finalFieldType(LinkedListOfE()),
    [_modificationCount]: dart.finalFieldType(core.int),
    [_current$1]: dart.fieldType(E),
    [_next$0]: dart.fieldType(LinkedListEntryOfE()),
    [_visitedFirst]: dart.fieldType(core.bool)
  }));
  return _LinkedListIterator;
});
collection._LinkedListIterator = collection._LinkedListIterator$();
dart.addTypeTests(collection._LinkedListIterator, _is__LinkedListIterator_default$);
const _is_LinkedListEntry_default$ = Symbol('_is_LinkedListEntry_default');
collection.LinkedListEntry$ = dart.generic(E => {
  let LinkedListOfE = () => (LinkedListOfE = dart.constFn(collection.LinkedList$(E)))();
  class LinkedListEntry extends core.Object {
    get list() {
      return this[_list$];
    }
    unlink() {
      this[_list$][_unlink](E._check(this));
    }
    get next() {
      if (this[_list$] == null || this[_list$].first == this[_next$0]) return null;
      return this[_next$0];
    }
    get previous() {
      if (this[_list$] == null || this === this[_list$].first) return null;
      return this[_previous$0];
    }
    insertAfter(entry) {
      E._check(entry);
      this[_list$][_insertBefore](this[_next$0], entry, {updateFirst: false});
    }
    insertBefore(entry) {
      E._check(entry);
      this[_list$][_insertBefore](E._check(this), entry, {updateFirst: true});
    }
  }
  (LinkedListEntry.new = function() {
    this[_list$] = null;
    this[_next$0] = null;
    this[_previous$0] = null;
  }).prototype = LinkedListEntry.prototype;
  dart.addTypeTests(LinkedListEntry);
  LinkedListEntry.prototype[_is_LinkedListEntry_default$] = true;
  dart.setMethodSignature(LinkedListEntry, () => ({
    __proto__: dart.getMethods(LinkedListEntry.__proto__),
    unlink: dart.fnType(dart.void, []),
    insertAfter: dart.fnType(dart.void, [core.Object]),
    insertBefore: dart.fnType(dart.void, [core.Object])
  }));
  dart.setGetterSignature(LinkedListEntry, () => ({
    __proto__: dart.getGetters(LinkedListEntry.__proto__),
    list: collection.LinkedList$(E),
    next: E,
    previous: E
  }));
  dart.setFieldSignature(LinkedListEntry, () => ({
    __proto__: dart.getFields(LinkedListEntry.__proto__),
    [_list$]: dart.fieldType(LinkedListOfE()),
    [_next$0]: dart.fieldType(E),
    [_previous$0]: dart.fieldType(E)
  }));
  return LinkedListEntry;
});
collection.LinkedListEntry = collection.LinkedListEntry$();
dart.addTypeTests(collection.LinkedListEntry, _is_LinkedListEntry_default$);
const _is__MapBaseValueIterable_default = Symbol('_is__MapBaseValueIterable_default');
collection._MapBaseValueIterable$ = dart.generic((K, V) => {
  let _MapBaseValueIteratorOfK$V = () => (_MapBaseValueIteratorOfK$V = dart.constFn(collection._MapBaseValueIterator$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  class _MapBaseValueIterable extends _internal.EfficientLengthIterable$(V) {
    get length() {
      return this[_map$0][$length];
    }
    get isEmpty() {
      return this[_map$0][$isEmpty];
    }
    get isNotEmpty() {
      return this[_map$0][$isNotEmpty];
    }
    get first() {
      return this[_map$0][$_get](this[_map$0][$keys][$first]);
    }
    get single() {
      return this[_map$0][$_get](this[_map$0][$keys][$single]);
    }
    get last() {
      return this[_map$0][$_get](this[_map$0][$keys][$last]);
    }
    get iterator() {
      return new (_MapBaseValueIteratorOfK$V()).new(this[_map$0]);
    }
  }
  (_MapBaseValueIterable.new = function(map) {
    this[_map$0] = map;
    _MapBaseValueIterable.__proto__.new.call(this);
  }).prototype = _MapBaseValueIterable.prototype;
  dart.addTypeTests(_MapBaseValueIterable);
  _MapBaseValueIterable.prototype[_is__MapBaseValueIterable_default] = true;
  dart.setGetterSignature(_MapBaseValueIterable, () => ({
    __proto__: dart.getGetters(_MapBaseValueIterable.__proto__),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    first: V,
    [$first]: V,
    single: V,
    [$single]: V,
    last: V,
    [$last]: V,
    iterator: core.Iterator$(V),
    [$iterator]: core.Iterator$(V)
  }));
  dart.setFieldSignature(_MapBaseValueIterable, () => ({
    __proto__: dart.getFields(_MapBaseValueIterable.__proto__),
    [_map$0]: dart.finalFieldType(MapOfK$V())
  }));
  dart.defineExtensionAccessors(_MapBaseValueIterable, [
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'single',
    'last',
    'iterator'
  ]);
  return _MapBaseValueIterable;
});
collection._MapBaseValueIterable = collection._MapBaseValueIterable$();
dart.addTypeTests(collection._MapBaseValueIterable, _is__MapBaseValueIterable_default);
const _keys = Symbol('_keys');
const _is__MapBaseValueIterator_default = Symbol('_is__MapBaseValueIterator_default');
collection._MapBaseValueIterator$ = dart.generic((K, V) => {
  let IteratorOfK = () => (IteratorOfK = dart.constFn(core.Iterator$(K)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let IteratorOfV = () => (IteratorOfV = dart.constFn(core.Iterator$(V)))();
  class _MapBaseValueIterator extends core.Object {
    moveNext() {
      if (dart.test(this[_keys].moveNext())) {
        this[_current$1] = this[_map$0][$_get](this[_keys].current);
        return true;
      }
      this[_current$1] = null;
      return false;
    }
    get current() {
      return this[_current$1];
    }
  }
  (_MapBaseValueIterator.new = function(map) {
    this[_current$1] = null;
    this[_map$0] = map;
    this[_keys] = map[$keys][$iterator];
  }).prototype = _MapBaseValueIterator.prototype;
  dart.addTypeTests(_MapBaseValueIterator);
  _MapBaseValueIterator.prototype[_is__MapBaseValueIterator_default] = true;
  _MapBaseValueIterator[dart.implements] = () => [IteratorOfV()];
  dart.setMethodSignature(_MapBaseValueIterator, () => ({
    __proto__: dart.getMethods(_MapBaseValueIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(_MapBaseValueIterator, () => ({
    __proto__: dart.getGetters(_MapBaseValueIterator.__proto__),
    current: V
  }));
  dart.setFieldSignature(_MapBaseValueIterator, () => ({
    __proto__: dart.getFields(_MapBaseValueIterator.__proto__),
    [_keys]: dart.finalFieldType(IteratorOfK()),
    [_map$0]: dart.finalFieldType(MapOfK$V()),
    [_current$1]: dart.fieldType(V)
  }));
  return _MapBaseValueIterator;
});
collection._MapBaseValueIterator = collection._MapBaseValueIterator$();
dart.addTypeTests(collection._MapBaseValueIterator, _is__MapBaseValueIterator_default);
const _is_MapView_default = Symbol('_is_MapView_default');
collection.MapView$ = dart.generic((K, V) => {
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let MapEntryOfK$V = () => (MapEntryOfK$V = dart.constFn(core.MapEntry$(K, V)))();
  let IterableOfMapEntryOfK$V = () => (IterableOfMapEntryOfK$V = dart.constFn(core.Iterable$(MapEntryOfK$V())))();
  let KAndVToV = () => (KAndVToV = dart.constFn(dart.fnType(V, [K, V])))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
  let VToV = () => (VToV = dart.constFn(dart.fnType(V, [V])))();
  class MapView extends core.Object {
    cast(RK, RV) {
      return core.Map$(RK, RV)._check(this[_map$0][$cast](RK, RV));
    }
    _get(key) {
      return this[_map$0][$_get](key);
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      this[_map$0][$_set](key, value);
      return value;
    }
    addAll(other) {
      MapOfK$V()._check(other);
      this[_map$0][$addAll](other);
    }
    clear() {
      this[_map$0][$clear]();
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      return this[_map$0][$putIfAbsent](key, ifAbsent);
    }
    containsKey(key) {
      return this[_map$0][$containsKey](key);
    }
    containsValue(value) {
      return this[_map$0][$containsValue](value);
    }
    forEach(action) {
      this[_map$0][$forEach](action);
    }
    get isEmpty() {
      return this[_map$0][$isEmpty];
    }
    get isNotEmpty() {
      return this[_map$0][$isNotEmpty];
    }
    get length() {
      return this[_map$0][$length];
    }
    get keys() {
      return this[_map$0][$keys];
    }
    remove(key) {
      return this[_map$0][$remove](key);
    }
    toString() {
      return dart.toString(this[_map$0]);
    }
    get values() {
      return this[_map$0][$values];
    }
    get entries() {
      return this[_map$0][$entries];
    }
    addEntries(entries) {
      IterableOfMapEntryOfK$V()._check(entries);
      this[_map$0][$addEntries](entries);
    }
    map(K2, V2, transform) {
      return core.Map$(K2, V2)._check(this[_map$0][$map](K2, V2, transform));
    }
    update(key, update, opts) {
      K._check(key);
      VToV()._check(update);
      let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
      VoidToV()._check(ifAbsent);
      return this[_map$0][$update](key, update, {ifAbsent: ifAbsent});
    }
    updateAll(update) {
      KAndVToV()._check(update);
      this[_map$0][$updateAll](update);
    }
    removeWhere(test) {
      this[_map$0][$removeWhere](test);
    }
  }
  (MapView.new = function(map) {
    this[_map$0] = map;
  }).prototype = MapView.prototype;
  MapView.prototype[dart.isMap] = true;
  dart.addTypeTests(MapView);
  MapView.prototype[_is_MapView_default] = true;
  MapView[dart.implements] = () => [MapOfK$V()];
  dart.setMethodSignature(MapView, () => ({
    __proto__: dart.getMethods(MapView.__proto__),
    cast: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
    [$cast]: dart.gFnType((RK, RV) => [core.Map$(RK, RV), []]),
    _get: dart.fnType(V, [core.Object]),
    [$_get]: dart.fnType(V, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
    containsKey: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    containsValue: dart.fnType(core.bool, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [core.Object]),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [K, V])]),
    remove: dart.fnType(V, [core.Object]),
    [$remove]: dart.fnType(V, [core.Object]),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, []),
    addEntries: dart.fnType(dart.void, [core.Object]),
    [$addEntries]: dart.fnType(dart.void, [core.Object]),
    map: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [K, V])]]),
    [$map]: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [K, V])]]),
    update: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
    [$update]: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
    updateAll: dart.fnType(dart.void, [core.Object]),
    [$updateAll]: dart.fnType(dart.void, [core.Object]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [K, V])])
  }));
  dart.setGetterSignature(MapView, () => ({
    __proto__: dart.getGetters(MapView.__proto__),
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    length: core.int,
    [$length]: core.int,
    keys: core.Iterable$(K),
    [$keys]: core.Iterable$(K),
    values: core.Iterable$(V),
    [$values]: core.Iterable$(V),
    entries: core.Iterable$(core.MapEntry$(K, V)),
    [$entries]: core.Iterable$(core.MapEntry$(K, V))
  }));
  dart.setFieldSignature(MapView, () => ({
    __proto__: dart.getFields(MapView.__proto__),
    [_map$0]: dart.finalFieldType(MapOfK$V())
  }));
  dart.defineExtensionMethods(MapView, [
    'cast',
    '_get',
    '_set',
    'addAll',
    'clear',
    'putIfAbsent',
    'containsKey',
    'containsValue',
    'forEach',
    'remove',
    'toString',
    'addEntries',
    'map',
    'update',
    'updateAll',
    'removeWhere'
  ]);
  dart.defineExtensionAccessors(MapView, [
    'isEmpty',
    'isNotEmpty',
    'length',
    'keys',
    'values',
    'entries'
  ]);
  return MapView;
});
collection.MapView = collection.MapView$();
dart.addTypeTests(collection.MapView, _is_MapView_default);
const _is_UnmodifiableMapView_default = Symbol('_is_UnmodifiableMapView_default');
collection.UnmodifiableMapView$ = dart.generic((K, V) => {
  const MapView__UnmodifiableMapMixin$ = class MapView__UnmodifiableMapMixin extends collection.MapView$(K, V) {};
  (MapView__UnmodifiableMapMixin$.new = function(map) {
    MapView__UnmodifiableMapMixin$.__proto__.new.call(this, map);
  }).prototype = MapView__UnmodifiableMapMixin$.prototype;
  dart.applyMixin(MapView__UnmodifiableMapMixin$, collection._UnmodifiableMapMixin$(K, V));
  class UnmodifiableMapView extends MapView__UnmodifiableMapMixin$ {
    cast(RK, RV) {
      return new (collection.UnmodifiableMapView$(RK, RV)).new(core.Map$(RK, RV)._check(this[_map$0][$cast](RK, RV)));
    }
  }
  (UnmodifiableMapView.new = function(map) {
    UnmodifiableMapView.__proto__.new.call(this, map);
  }).prototype = UnmodifiableMapView.prototype;
  dart.addTypeTests(UnmodifiableMapView);
  UnmodifiableMapView.prototype[_is_UnmodifiableMapView_default] = true;
  dart.defineExtensionMethods(UnmodifiableMapView, ['cast']);
  return UnmodifiableMapView;
});
collection.UnmodifiableMapView = collection.UnmodifiableMapView$();
dart.addTypeTests(collection.UnmodifiableMapView, _is_UnmodifiableMapView_default);
const _is_Queue_default = Symbol('_is_Queue_default');
collection.Queue$ = dart.generic(E => {
  let ListQueueOfE = () => (ListQueueOfE = dart.constFn(collection.ListQueue$(E)))();
  let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
  class Queue extends core.Object {
    static new() {
      return new (ListQueueOfE()).new();
    }
    static from(elements) {
      return ListQueueOfE().from(elements);
    }
    static of(elements) {
      return ListQueueOfE().of(elements);
    }
    static castFrom(S, T, source) {
      return new (_internal.CastQueue$(S, T)).new(source);
    }
  }
  (Queue[dart.mixinNew] = function() {
  }).prototype = Queue.prototype;
  dart.addTypeTests(Queue);
  Queue.prototype[_is_Queue_default] = true;
  Queue[dart.implements] = () => [EfficientLengthIterableOfE()];
  return Queue;
});
collection.Queue = collection.Queue$();
dart.addTypeTests(collection.Queue, _is_Queue_default);
const _previousLink = Symbol('_previousLink');
const _nextLink = Symbol('_nextLink');
const _link = Symbol('_link');
const _is__DoubleLink_default = Symbol('_is__DoubleLink_default');
collection._DoubleLink$ = dart.generic(Link => {
  class _DoubleLink extends core.Object {
    get [_previousLink]() {
      return this[_previousLink$];
    }
    set [_previousLink](value) {
      this[_previousLink$] = Link._check(value);
    }
    get [_nextLink]() {
      return this[_nextLink$];
    }
    set [_nextLink](value) {
      this[_nextLink$] = Link._check(value);
    }
    [_link](previous, next) {
      Link._check(previous);
      Link._check(next);
      this[_nextLink] = next;
      this[_previousLink] = previous;
      if (previous != null) previous[_nextLink] = Link._check(this);
      if (next != null) next[_previousLink] = Link._check(this);
    }
    [_unlink]() {
      if (this[_previousLink] != null) this[_previousLink][_nextLink] = this[_nextLink];
      if (this[_nextLink] != null) this[_nextLink][_previousLink] = this[_previousLink];
      this[_nextLink] = null;
      this[_previousLink] = null;
    }
  }
  (_DoubleLink.new = function() {
    this[_previousLink$] = null;
    this[_nextLink$] = null;
  }).prototype = _DoubleLink.prototype;
  dart.addTypeTests(_DoubleLink);
  _DoubleLink.prototype[_is__DoubleLink_default] = true;
  const _previousLink$ = Symbol("_DoubleLink._previousLink");
  const _nextLink$ = Symbol("_DoubleLink._nextLink");
  dart.setMethodSignature(_DoubleLink, () => ({
    __proto__: dart.getMethods(_DoubleLink.__proto__),
    [_link]: dart.fnType(dart.void, [core.Object, core.Object]),
    [_unlink]: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_DoubleLink, () => ({
    __proto__: dart.getFields(_DoubleLink.__proto__),
    [_previousLink]: dart.fieldType(Link),
    [_nextLink]: dart.fieldType(Link)
  }));
  return _DoubleLink;
});
collection._DoubleLink = collection._DoubleLink$();
dart.addTypeTests(collection._DoubleLink, _is__DoubleLink_default);
const _is_DoubleLinkedQueueEntry_default = Symbol('_is_DoubleLinkedQueueEntry_default');
collection.DoubleLinkedQueueEntry$ = dart.generic(E => {
  let DoubleLinkedQueueEntryOfE = () => (DoubleLinkedQueueEntryOfE = dart.constFn(collection.DoubleLinkedQueueEntry$(E)))();
  class DoubleLinkedQueueEntry extends collection._DoubleLink {
    get element() {
      return this[element$];
    }
    set element(value) {
      this[element$] = E._check(value);
    }
    append(e) {
      E._check(e);
      new (DoubleLinkedQueueEntryOfE()).new(e)[_link](this, this[_nextLink]);
    }
    prepend(e) {
      E._check(e);
      new (DoubleLinkedQueueEntryOfE()).new(e)[_link](this[_previousLink], this);
    }
    remove() {
      this[_unlink]();
      return this.element;
    }
    previousEntry() {
      return this[_previousLink];
    }
    nextEntry() {
      return this[_nextLink];
    }
  }
  (DoubleLinkedQueueEntry.new = function(element) {
    this[element$] = element;
    DoubleLinkedQueueEntry.__proto__.new.call(this);
  }).prototype = DoubleLinkedQueueEntry.prototype;
  dart.addTypeTests(DoubleLinkedQueueEntry);
  DoubleLinkedQueueEntry.prototype[_is_DoubleLinkedQueueEntry_default] = true;
  const element$ = Symbol("DoubleLinkedQueueEntry.element");
  dart.setMethodSignature(DoubleLinkedQueueEntry, () => ({
    __proto__: dart.getMethods(DoubleLinkedQueueEntry.__proto__),
    append: dart.fnType(dart.void, [core.Object]),
    prepend: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(E, []),
    previousEntry: dart.fnType(collection.DoubleLinkedQueueEntry$(E), []),
    nextEntry: dart.fnType(collection.DoubleLinkedQueueEntry$(E), [])
  }));
  dart.setFieldSignature(DoubleLinkedQueueEntry, () => ({
    __proto__: dart.getFields(DoubleLinkedQueueEntry.__proto__),
    element: dart.fieldType(E)
  }));
  return DoubleLinkedQueueEntry;
}, E => {
  dart.setBaseClass(collection.DoubleLinkedQueueEntry$(E), collection._DoubleLink$(collection.DoubleLinkedQueueEntry$(E)));
});
collection.DoubleLinkedQueueEntry = collection.DoubleLinkedQueueEntry$();
dart.addTypeTests(collection.DoubleLinkedQueueEntry, _is_DoubleLinkedQueueEntry_default);
const _queue = Symbol('_queue');
const _append = Symbol('_append');
const _prepend = Symbol('_prepend');
const _element = Symbol('_element');
const _asNonSentinelEntry = Symbol('_asNonSentinelEntry');
const _is__DoubleLinkedQueueEntry_default = Symbol('_is__DoubleLinkedQueueEntry_default');
collection._DoubleLinkedQueueEntry$ = dart.generic(E => {
  let _DoubleLinkedQueueElementOfE = () => (_DoubleLinkedQueueElementOfE = dart.constFn(collection._DoubleLinkedQueueElement$(E)))();
  let _DoubleLinkedQueueEntryOfE = () => (_DoubleLinkedQueueEntryOfE = dart.constFn(collection._DoubleLinkedQueueEntry$(E)))();
  let DoubleLinkedQueueOfE = () => (DoubleLinkedQueueOfE = dart.constFn(collection.DoubleLinkedQueue$(E)))();
  class _DoubleLinkedQueueEntry extends collection.DoubleLinkedQueueEntry$(E) {
    [_append](e) {
      E._check(e);
      new (_DoubleLinkedQueueElementOfE()).new(e, this[_queue])[_link](this, this[_nextLink]);
    }
    [_prepend](e) {
      E._check(e);
      new (_DoubleLinkedQueueElementOfE()).new(e, this[_queue])[_link](this[_previousLink], this);
    }
    get [_element]() {
      return this.element;
    }
    nextEntry() {
      let entry = _DoubleLinkedQueueEntryOfE()._check(this[_nextLink]);
      return entry[_asNonSentinelEntry]();
    }
    previousEntry() {
      let entry = _DoubleLinkedQueueEntryOfE()._check(this[_previousLink]);
      return entry[_asNonSentinelEntry]();
    }
  }
  (_DoubleLinkedQueueEntry.new = function(element, queue) {
    this[_queue] = queue;
    _DoubleLinkedQueueEntry.__proto__.new.call(this, element);
  }).prototype = _DoubleLinkedQueueEntry.prototype;
  dart.addTypeTests(_DoubleLinkedQueueEntry);
  _DoubleLinkedQueueEntry.prototype[_is__DoubleLinkedQueueEntry_default] = true;
  dart.setMethodSignature(_DoubleLinkedQueueEntry, () => ({
    __proto__: dart.getMethods(_DoubleLinkedQueueEntry.__proto__),
    [_append]: dart.fnType(dart.void, [core.Object]),
    [_prepend]: dart.fnType(dart.void, [core.Object])
  }));
  dart.setGetterSignature(_DoubleLinkedQueueEntry, () => ({
    __proto__: dart.getGetters(_DoubleLinkedQueueEntry.__proto__),
    [_element]: E
  }));
  dart.setFieldSignature(_DoubleLinkedQueueEntry, () => ({
    __proto__: dart.getFields(_DoubleLinkedQueueEntry.__proto__),
    [_queue]: dart.fieldType(DoubleLinkedQueueOfE())
  }));
  return _DoubleLinkedQueueEntry;
});
collection._DoubleLinkedQueueEntry = collection._DoubleLinkedQueueEntry$();
dart.addTypeTests(collection._DoubleLinkedQueueEntry, _is__DoubleLinkedQueueEntry_default);
const _elementCount = Symbol('_elementCount');
const _remove = Symbol('_remove');
const _is__DoubleLinkedQueueElement_default = Symbol('_is__DoubleLinkedQueueElement_default');
collection._DoubleLinkedQueueElement$ = dart.generic(E => {
  class _DoubleLinkedQueueElement extends collection._DoubleLinkedQueueEntry$(E) {
    append(e) {
      E._check(e);
      this[_append](e);
      if (this[_queue] != null) {
        let o = this[_queue];
        o[_elementCount] = dart.notNull(o[_elementCount]) + 1;
      }
    }
    prepend(e) {
      E._check(e);
      this[_prepend](e);
      if (this[_queue] != null) {
        let o = this[_queue];
        o[_elementCount] = dart.notNull(o[_elementCount]) + 1;
      }
    }
    [_remove]() {
      this[_queue] = null;
      this[_unlink]();
      return this.element;
    }
    remove() {
      if (this[_queue] != null) {
        let o = this[_queue];
        o[_elementCount] = dart.notNull(o[_elementCount]) - 1;
      }
      return this[_remove]();
    }
    [_asNonSentinelEntry]() {
      return this;
    }
  }
  (_DoubleLinkedQueueElement.new = function(element, queue) {
    _DoubleLinkedQueueElement.__proto__.new.call(this, element, queue);
  }).prototype = _DoubleLinkedQueueElement.prototype;
  dart.addTypeTests(_DoubleLinkedQueueElement);
  _DoubleLinkedQueueElement.prototype[_is__DoubleLinkedQueueElement_default] = true;
  dart.setMethodSignature(_DoubleLinkedQueueElement, () => ({
    __proto__: dart.getMethods(_DoubleLinkedQueueElement.__proto__),
    append: dart.fnType(dart.void, [core.Object]),
    prepend: dart.fnType(dart.void, [core.Object]),
    [_remove]: dart.fnType(E, []),
    [_asNonSentinelEntry]: dart.fnType(collection._DoubleLinkedQueueElement$(E), [])
  }));
  return _DoubleLinkedQueueElement;
});
collection._DoubleLinkedQueueElement = collection._DoubleLinkedQueueElement$();
dart.addTypeTests(collection._DoubleLinkedQueueElement, _is__DoubleLinkedQueueElement_default);
const _is__DoubleLinkedQueueSentinel_default = Symbol('_is__DoubleLinkedQueueSentinel_default');
collection._DoubleLinkedQueueSentinel$ = dart.generic(E => {
  class _DoubleLinkedQueueSentinel extends collection._DoubleLinkedQueueEntry$(E) {
    [_asNonSentinelEntry]() {
      return null;
    }
    [_remove]() {
      dart.throw(_internal.IterableElementError.noElement());
    }
    get [_element]() {
      dart.throw(_internal.IterableElementError.noElement());
    }
  }
  (_DoubleLinkedQueueSentinel.new = function(queue) {
    _DoubleLinkedQueueSentinel.__proto__.new.call(this, null, queue);
    this[_previousLink] = this;
    this[_nextLink] = this;
  }).prototype = _DoubleLinkedQueueSentinel.prototype;
  dart.addTypeTests(_DoubleLinkedQueueSentinel);
  _DoubleLinkedQueueSentinel.prototype[_is__DoubleLinkedQueueSentinel_default] = true;
  dart.setMethodSignature(_DoubleLinkedQueueSentinel, () => ({
    __proto__: dart.getMethods(_DoubleLinkedQueueSentinel.__proto__),
    [_asNonSentinelEntry]: dart.fnType(collection.DoubleLinkedQueueEntry$(E), []),
    [_remove]: dart.fnType(E, [])
  }));
  return _DoubleLinkedQueueSentinel;
});
collection._DoubleLinkedQueueSentinel = collection._DoubleLinkedQueueSentinel$();
dart.addTypeTests(collection._DoubleLinkedQueueSentinel, _is__DoubleLinkedQueueSentinel_default);
const _sentinel = Symbol('_sentinel');
const _is_DoubleLinkedQueue_default = Symbol('_is_DoubleLinkedQueue_default');
collection.DoubleLinkedQueue$ = dart.generic(E => {
  let _DoubleLinkedQueueSentinelOfE = () => (_DoubleLinkedQueueSentinelOfE = dart.constFn(collection._DoubleLinkedQueueSentinel$(E)))();
  let DoubleLinkedQueueOfE = () => (DoubleLinkedQueueOfE = dart.constFn(collection.DoubleLinkedQueue$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let _DoubleLinkedQueueEntryOfE = () => (_DoubleLinkedQueueEntryOfE = dart.constFn(collection._DoubleLinkedQueueEntry$(E)))();
  let _DoubleLinkedQueueElementOfE = () => (_DoubleLinkedQueueElementOfE = dart.constFn(collection._DoubleLinkedQueueElement$(E)))();
  let _DoubleLinkedQueueIteratorOfE = () => (_DoubleLinkedQueueIteratorOfE = dart.constFn(collection._DoubleLinkedQueueIterator$(E)))();
  let QueueOfE = () => (QueueOfE = dart.constFn(collection.Queue$(E)))();
  class DoubleLinkedQueue extends core.Iterable$(E) {
    static from(elements) {
      let list = new (DoubleLinkedQueueOfE()).new();
      for (let e of elements) {
        list.addLast(E._check(e));
      }
      return DoubleLinkedQueueOfE()._check(list);
    }
    static of(elements) {
      let _ = new (DoubleLinkedQueueOfE()).new();
      _.addAll(elements);
      return _;
    }
    cast(R) {
      return collection.Queue.castFrom(E, R, this);
    }
    get length() {
      return this[_elementCount];
    }
    addLast(value) {
      E._check(value);
      this[_sentinel][_prepend](value);
      this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
    }
    addFirst(value) {
      E._check(value);
      this[_sentinel][_append](value);
      this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
    }
    add(value) {
      E._check(value);
      this[_sentinel][_prepend](value);
      this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      for (let value of iterable) {
        this[_sentinel][_prepend](value);
        this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
      }
    }
    removeLast() {
      let lastEntry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_previousLink]);
      let result = lastEntry[_remove]();
      this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
      return result;
    }
    removeFirst() {
      let firstEntry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
      let result = firstEntry[_remove]();
      this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
      return result;
    }
    remove(o) {
      let entry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
      while (!(entry == this[_sentinel])) {
        let equals = dart.equals(entry[_element], o);
        if (!(this === entry[_queue])) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
        if (equals) {
          entry[_remove]();
          this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
          return true;
        }
        entry = _DoubleLinkedQueueEntryOfE()._check(entry[_nextLink]);
      }
      return false;
    }
    [_filter](test, removeMatching) {
      let entry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
      while (!(entry == this[_sentinel])) {
        let matches = test(entry[_element]);
        if (!(this === entry[_queue])) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
        let next = _DoubleLinkedQueueEntryOfE()._check(entry[_nextLink]);
        if (removeMatching == matches) {
          entry[_remove]();
          this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
        }
        entry = next;
      }
    }
    removeWhere(test) {
      this[_filter](test, true);
    }
    retainWhere(test) {
      this[_filter](test, false);
    }
    get first() {
      let firstEntry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
      return firstEntry[_element];
    }
    get last() {
      let lastEntry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_previousLink]);
      return lastEntry[_element];
    }
    get single() {
      if (this[_sentinel][_nextLink] == this[_sentinel][_previousLink]) {
        let entry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
        return entry[_element];
      }
      dart.throw(_internal.IterableElementError.tooMany());
    }
    firstEntry() {
      return this[_sentinel].nextEntry();
    }
    lastEntry() {
      return this[_sentinel].previousEntry();
    }
    get isEmpty() {
      return this[_sentinel][_nextLink] == this[_sentinel];
    }
    clear() {
      this[_sentinel][_nextLink] = this[_sentinel];
      this[_sentinel][_previousLink] = this[_sentinel];
      this[_elementCount] = 0;
    }
    forEachEntry(action) {
      let entry = _DoubleLinkedQueueEntryOfE()._check(this[_sentinel][_nextLink]);
      while (!(entry == this[_sentinel])) {
        let element = _DoubleLinkedQueueElementOfE()._check(entry);
        let next = _DoubleLinkedQueueEntryOfE()._check(element[_nextLink]);
        action(element);
        if (this === entry[_queue]) {
          next = _DoubleLinkedQueueEntryOfE()._check(entry[_nextLink]);
        } else if (!(this === next[_queue])) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
        entry = next;
      }
    }
    get iterator() {
      return new (_DoubleLinkedQueueIteratorOfE()).new(this[_sentinel]);
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, "{", "}");
    }
  }
  (DoubleLinkedQueue.new = function() {
    this[_sentinel] = null;
    this[_elementCount] = 0;
    DoubleLinkedQueue.__proto__.new.call(this);
    this[_sentinel] = new (_DoubleLinkedQueueSentinelOfE()).new(this);
  }).prototype = DoubleLinkedQueue.prototype;
  dart.addTypeTests(DoubleLinkedQueue);
  DoubleLinkedQueue.prototype[_is_DoubleLinkedQueue_default] = true;
  DoubleLinkedQueue[dart.implements] = () => [QueueOfE()];
  dart.setMethodSignature(DoubleLinkedQueue, () => ({
    __proto__: dart.getMethods(DoubleLinkedQueue.__proto__),
    cast: dart.gFnType(R => [collection.Queue$(R), []]),
    [$cast]: dart.gFnType(R => [collection.Queue$(R), []]),
    addLast: dart.fnType(dart.void, [core.Object]),
    addFirst: dart.fnType(dart.void, [core.Object]),
    add: dart.fnType(dart.void, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    removeLast: dart.fnType(E, []),
    removeFirst: dart.fnType(E, []),
    remove: dart.fnType(core.bool, [core.Object]),
    [_filter]: dart.fnType(dart.void, [dart.fnType(core.bool, [E]), core.bool]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    firstEntry: dart.fnType(collection.DoubleLinkedQueueEntry$(E), []),
    lastEntry: dart.fnType(collection.DoubleLinkedQueueEntry$(E), []),
    clear: dart.fnType(dart.void, []),
    forEachEntry: dart.fnType(dart.void, [dart.fnType(dart.void, [collection.DoubleLinkedQueueEntry$(E)])])
  }));
  dart.setGetterSignature(DoubleLinkedQueue, () => ({
    __proto__: dart.getGetters(DoubleLinkedQueue.__proto__),
    iterator: collection._DoubleLinkedQueueIterator$(E),
    [$iterator]: collection._DoubleLinkedQueueIterator$(E)
  }));
  dart.setFieldSignature(DoubleLinkedQueue, () => ({
    __proto__: dart.getFields(DoubleLinkedQueue.__proto__),
    [_sentinel]: dart.fieldType(_DoubleLinkedQueueSentinelOfE()),
    [_elementCount]: dart.fieldType(core.int)
  }));
  dart.defineExtensionMethods(DoubleLinkedQueue, ['cast', 'toString']);
  dart.defineExtensionAccessors(DoubleLinkedQueue, [
    'length',
    'first',
    'last',
    'single',
    'isEmpty',
    'iterator'
  ]);
  return DoubleLinkedQueue;
});
collection.DoubleLinkedQueue = collection.DoubleLinkedQueue$();
dart.addTypeTests(collection.DoubleLinkedQueue, _is_DoubleLinkedQueue_default);
const _nextEntry = Symbol('_nextEntry');
const _is__DoubleLinkedQueueIterator_default = Symbol('_is__DoubleLinkedQueueIterator_default');
collection._DoubleLinkedQueueIterator$ = dart.generic(E => {
  let _DoubleLinkedQueueEntryOfE = () => (_DoubleLinkedQueueEntryOfE = dart.constFn(collection._DoubleLinkedQueueEntry$(E)))();
  let _DoubleLinkedQueueElementOfE = () => (_DoubleLinkedQueueElementOfE = dart.constFn(collection._DoubleLinkedQueueElement$(E)))();
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let _DoubleLinkedQueueSentinelOfE = () => (_DoubleLinkedQueueSentinelOfE = dart.constFn(collection._DoubleLinkedQueueSentinel$(E)))();
  class _DoubleLinkedQueueIterator extends core.Object {
    moveNext() {
      if (this[_nextEntry] == this[_sentinel]) {
        this[_current$1] = null;
        this[_nextEntry] = null;
        this[_sentinel] = null;
        return false;
      }
      let elementEntry = _DoubleLinkedQueueElementOfE()._check(this[_nextEntry]);
      if (!(this[_sentinel][_queue] == elementEntry[_queue])) {
        dart.throw(new core.ConcurrentModificationError.new(this[_sentinel][_queue]));
      }
      this[_current$1] = elementEntry[_element];
      this[_nextEntry] = _DoubleLinkedQueueEntryOfE()._check(elementEntry[_nextLink]);
      return true;
    }
    get current() {
      return this[_current$1];
    }
  }
  (_DoubleLinkedQueueIterator.new = function(sentinel) {
    this[_current$1] = null;
    this[_sentinel] = sentinel;
    this[_nextEntry] = _DoubleLinkedQueueEntryOfE()._check(sentinel[_nextLink]);
  }).prototype = _DoubleLinkedQueueIterator.prototype;
  dart.addTypeTests(_DoubleLinkedQueueIterator);
  _DoubleLinkedQueueIterator.prototype[_is__DoubleLinkedQueueIterator_default] = true;
  _DoubleLinkedQueueIterator[dart.implements] = () => [IteratorOfE()];
  dart.setMethodSignature(_DoubleLinkedQueueIterator, () => ({
    __proto__: dart.getMethods(_DoubleLinkedQueueIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(_DoubleLinkedQueueIterator, () => ({
    __proto__: dart.getGetters(_DoubleLinkedQueueIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(_DoubleLinkedQueueIterator, () => ({
    __proto__: dart.getFields(_DoubleLinkedQueueIterator.__proto__),
    [_sentinel]: dart.fieldType(_DoubleLinkedQueueSentinelOfE()),
    [_nextEntry]: dart.fieldType(_DoubleLinkedQueueEntryOfE()),
    [_current$1]: dart.fieldType(E)
  }));
  return _DoubleLinkedQueueIterator;
});
collection._DoubleLinkedQueueIterator = collection._DoubleLinkedQueueIterator$();
dart.addTypeTests(collection._DoubleLinkedQueueIterator, _is__DoubleLinkedQueueIterator_default);
const _head = Symbol('_head');
const _tail = Symbol('_tail');
const _table = Symbol('_table');
const _checkModification = Symbol('_checkModification');
const _writeToList = Symbol('_writeToList');
const _add$ = Symbol('_add');
const _preGrow = Symbol('_preGrow');
const _filterWhere = Symbol('_filterWhere');
const _grow = Symbol('_grow');
const _is_ListQueue_default = Symbol('_is_ListQueue_default');
collection.ListQueue$ = dart.generic(E => {
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let ListQueueOfE = () => (ListQueueOfE = dart.constFn(collection.ListQueue$(E)))();
  let _ListQueueIteratorOfE = () => (_ListQueueIteratorOfE = dart.constFn(collection._ListQueueIterator$(E)))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let QueueOfE = () => (QueueOfE = dart.constFn(collection.Queue$(E)))();
  class ListQueue extends _internal.ListIterable$(E) {
    static from(elements) {
      if (core.List.is(elements)) {
        let length = elements[$length];
        let queue = new (ListQueueOfE()).new(dart.notNull(length) + 1);
        if (!(dart.notNull(queue[_table][$length]) > dart.notNull(length))) dart.assertFailed();
        for (let i = 0; i < dart.notNull(length); i++) {
          queue[_table][$_set](i, E._check(elements[$_get](i)));
        }
        queue[_tail] = length;
        return queue;
      } else {
        let capacity = 8;
        if (_internal.EfficientLengthIterable.is(elements)) {
          capacity = elements[$length];
        }
        let result = new (ListQueueOfE()).new(capacity);
        for (let element of elements) {
          result.addLast(E._check(element));
        }
        return result;
      }
    }
    static of(elements) {
      let _ = new (ListQueueOfE()).new();
      _.addAll(elements);
      return _;
    }
    cast(R) {
      return collection.Queue.castFrom(E, R, this);
    }
    get iterator() {
      return new (_ListQueueIteratorOfE()).new(this);
    }
    forEach(f) {
      let modificationCount = this[_modificationCount];
      for (let i = this[_head]; i != this[_tail]; i = (dart.notNull(i) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0) {
        f(this[_table][$_get](i));
        this[_checkModification](modificationCount);
      }
    }
    get isEmpty() {
      return this[_head] == this[_tail];
    }
    get length() {
      return (dart.notNull(this[_tail]) - dart.notNull(this[_head]) & dart.notNull(this[_table][$length]) - 1) >>> 0;
    }
    get first() {
      if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
      return this[_table][$_get](this[_head]);
    }
    get last() {
      if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
      return this[_table][$_get]((dart.notNull(this[_tail]) - 1 & dart.notNull(this[_table][$length]) - 1) >>> 0);
    }
    get single() {
      if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
      if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
      return this[_table][$_get](this[_head]);
    }
    elementAt(index) {
      core.RangeError.checkValidIndex(index, this);
      return this[_table][$_get]((dart.notNull(this[_head]) + dart.notNull(index) & dart.notNull(this[_table][$length]) - 1) >>> 0);
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let list = null;
      if (dart.test(growable)) {
        list = JSArrayOfE().of([]);
        list[$length] = this.length;
      } else {
        list = ListOfE().new(this.length);
      }
      this[_writeToList](list);
      return list;
    }
    add(value) {
      E._check(value);
      this[_add$](value);
    }
    addAll(elements) {
      IterableOfE()._check(elements);
      if (ListOfE().is(elements)) {
        let list = elements;
        let addCount = list[$length];
        let length = this.length;
        if (dart.notNull(length) + dart.notNull(addCount) >= dart.notNull(this[_table][$length])) {
          this[_preGrow](dart.notNull(length) + dart.notNull(addCount));
          this[_table][$setRange](length, dart.notNull(length) + dart.notNull(addCount), list, 0);
          this[_tail] = dart.notNull(this[_tail]) + dart.notNull(addCount);
        } else {
          let endSpace = dart.notNull(this[_table][$length]) - dart.notNull(this[_tail]);
          if (dart.notNull(addCount) < endSpace) {
            this[_table][$setRange](this[_tail], dart.notNull(this[_tail]) + dart.notNull(addCount), list, 0);
            this[_tail] = dart.notNull(this[_tail]) + dart.notNull(addCount);
          } else {
            let preSpace = dart.notNull(addCount) - endSpace;
            this[_table][$setRange](this[_tail], dart.notNull(this[_tail]) + endSpace, list, 0);
            this[_table][$setRange](0, preSpace, list, endSpace);
            this[_tail] = preSpace;
          }
        }
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      } else {
        for (let element of elements)
          this[_add$](element);
      }
    }
    remove(value) {
      for (let i = this[_head]; i != this[_tail]; i = (dart.notNull(i) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0) {
        let element = this[_table][$_get](i);
        if (dart.equals(element, value)) {
          this[_remove](i);
          this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
          return true;
        }
      }
      return false;
    }
    [_filterWhere](test, removeMatching) {
      let modificationCount = this[_modificationCount];
      let i = this[_head];
      while (i != this[_tail]) {
        let element = this[_table][$_get](i);
        let remove = removeMatching == test(element);
        this[_checkModification](modificationCount);
        if (remove) {
          i = this[_remove](i);
          modificationCount = this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
        } else {
          i = (dart.notNull(i) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0;
        }
      }
    }
    removeWhere(test) {
      this[_filterWhere](test, true);
    }
    retainWhere(test) {
      this[_filterWhere](test, false);
    }
    clear() {
      if (this[_head] != this[_tail]) {
        for (let i = this[_head]; i != this[_tail]; i = (dart.notNull(i) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0) {
          this[_table][$_set](i, null);
        }
        this[_head] = this[_tail] = 0;
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      }
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, "{", "}");
    }
    addLast(value) {
      E._check(value);
      this[_add$](value);
    }
    addFirst(value) {
      E._check(value);
      this[_head] = (dart.notNull(this[_head]) - 1 & dart.notNull(this[_table][$length]) - 1) >>> 0;
      this[_table][$_set](this[_head], value);
      if (this[_head] == this[_tail]) this[_grow]();
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
    }
    removeFirst() {
      if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      let result = this[_table][$_get](this[_head]);
      this[_table][$_set](this[_head], null);
      this[_head] = (dart.notNull(this[_head]) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0;
      return result;
    }
    removeLast() {
      if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      this[_tail] = (dart.notNull(this[_tail]) - 1 & dart.notNull(this[_table][$length]) - 1) >>> 0;
      let result = this[_table][$_get](this[_tail]);
      this[_table][$_set](this[_tail], null);
      return result;
    }
    static _isPowerOf2(number) {
      return (dart.notNull(number) & dart.notNull(number) - 1) === 0;
    }
    static _nextPowerOf2(number) {
      if (!(dart.notNull(number) > 0)) dart.assertFailed();
      number = (dart.notNull(number) << 1 >>> 0) - 1;
      for (;;) {
        let nextNumber = (dart.notNull(number) & dart.notNull(number) - 1) >>> 0;
        if (nextNumber === 0) return number;
        number = nextNumber;
      }
    }
    [_checkModification](expectedModificationCount) {
      if (expectedModificationCount != this[_modificationCount]) {
        dart.throw(new core.ConcurrentModificationError.new(this));
      }
    }
    [_add$](element) {
      E._check(element);
      this[_table][$_set](this[_tail], element);
      this[_tail] = (dart.notNull(this[_tail]) + 1 & dart.notNull(this[_table][$length]) - 1) >>> 0;
      if (this[_head] == this[_tail]) this[_grow]();
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
    }
    [_remove](offset) {
      let mask = dart.notNull(this[_table][$length]) - 1;
      let startDistance = (dart.notNull(offset) - dart.notNull(this[_head]) & mask) >>> 0;
      let endDistance = (dart.notNull(this[_tail]) - dart.notNull(offset) & mask) >>> 0;
      if (startDistance < endDistance) {
        let i = offset;
        while (i != this[_head]) {
          let prevOffset = (dart.notNull(i) - 1 & mask) >>> 0;
          this[_table][$_set](i, this[_table][$_get](prevOffset));
          i = prevOffset;
        }
        this[_table][$_set](this[_head], null);
        this[_head] = (dart.notNull(this[_head]) + 1 & mask) >>> 0;
        return (dart.notNull(offset) + 1 & mask) >>> 0;
      } else {
        this[_tail] = (dart.notNull(this[_tail]) - 1 & mask) >>> 0;
        let i = offset;
        while (i != this[_tail]) {
          let nextOffset = (dart.notNull(i) + 1 & mask) >>> 0;
          this[_table][$_set](i, this[_table][$_get](nextOffset));
          i = nextOffset;
        }
        this[_table][$_set](this[_tail], null);
        return offset;
      }
    }
    [_grow]() {
      let newTable = ListOfE().new(dart.notNull(this[_table][$length]) * 2);
      let split = dart.notNull(this[_table][$length]) - dart.notNull(this[_head]);
      newTable[$setRange](0, split, this[_table], this[_head]);
      newTable[$setRange](split, split + dart.notNull(this[_head]), this[_table], 0);
      this[_head] = 0;
      this[_tail] = this[_table][$length];
      this[_table] = newTable;
    }
    [_writeToList](target) {
      ListOfE()._check(target);
      if (!(dart.notNull(target[$length]) >= dart.notNull(this.length))) dart.assertFailed();
      if (dart.notNull(this[_head]) <= dart.notNull(this[_tail])) {
        let length = dart.notNull(this[_tail]) - dart.notNull(this[_head]);
        target[$setRange](0, length, this[_table], this[_head]);
        return length;
      } else {
        let firstPartSize = dart.notNull(this[_table][$length]) - dart.notNull(this[_head]);
        target[$setRange](0, firstPartSize, this[_table], this[_head]);
        target[$setRange](firstPartSize, firstPartSize + dart.notNull(this[_tail]), this[_table], 0);
        return dart.notNull(this[_tail]) + firstPartSize;
      }
    }
    [_preGrow](newElementCount) {
      if (!(dart.notNull(newElementCount) >= dart.notNull(this.length))) dart.assertFailed();
      newElementCount = dart.notNull(newElementCount) + newElementCount[$rightShift](1);
      let newCapacity = collection.ListQueue._nextPowerOf2(newElementCount);
      let newTable = ListOfE().new(newCapacity);
      this[_tail] = this[_writeToList](newTable);
      this[_table] = newTable;
      this[_head] = 0;
    }
  }
  (ListQueue.new = function(initialCapacity) {
    if (initialCapacity === void 0) initialCapacity = null;
    this[_table] = null;
    this[_modificationCount] = 0;
    this[_head] = 0;
    this[_tail] = 0;
    ListQueue.__proto__.new.call(this);
    if (initialCapacity == null || dart.notNull(initialCapacity) < 8) {
      initialCapacity = 8;
    } else if (!dart.test(collection.ListQueue._isPowerOf2(initialCapacity))) {
      initialCapacity = collection.ListQueue._nextPowerOf2(initialCapacity);
    }
    if (!dart.test(collection.ListQueue._isPowerOf2(initialCapacity))) dart.assertFailed();
    this[_table] = ListOfE().new(initialCapacity);
  }).prototype = ListQueue.prototype;
  dart.addTypeTests(ListQueue);
  ListQueue.prototype[_is_ListQueue_default] = true;
  ListQueue[dart.implements] = () => [QueueOfE()];
  dart.setMethodSignature(ListQueue, () => ({
    __proto__: dart.getMethods(ListQueue.__proto__),
    cast: dart.gFnType(R => [collection.Queue$(R), []]),
    [$cast]: dart.gFnType(R => [collection.Queue$(R), []]),
    elementAt: dart.fnType(E, [core.int]),
    [$elementAt]: dart.fnType(E, [core.int]),
    add: dart.fnType(dart.void, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object]),
    [_filterWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E]), core.bool]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    clear: dart.fnType(dart.void, []),
    addLast: dart.fnType(dart.void, [core.Object]),
    addFirst: dart.fnType(dart.void, [core.Object]),
    removeFirst: dart.fnType(E, []),
    removeLast: dart.fnType(E, []),
    [_checkModification]: dart.fnType(dart.void, [core.int]),
    [_add$]: dart.fnType(dart.void, [core.Object]),
    [_remove]: dart.fnType(core.int, [core.int]),
    [_grow]: dart.fnType(dart.void, []),
    [_writeToList]: dart.fnType(core.int, [core.Object]),
    [_preGrow]: dart.fnType(dart.void, [core.int])
  }));
  dart.setGetterSignature(ListQueue, () => ({
    __proto__: dart.getGetters(ListQueue.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(ListQueue, () => ({
    __proto__: dart.getFields(ListQueue.__proto__),
    [_table]: dart.fieldType(ListOfE()),
    [_head]: dart.fieldType(core.int),
    [_tail]: dart.fieldType(core.int),
    [_modificationCount]: dart.fieldType(core.int)
  }));
  dart.defineExtensionMethods(ListQueue, [
    'cast',
    'forEach',
    'elementAt',
    'toList',
    'toString'
  ]);
  dart.defineExtensionAccessors(ListQueue, [
    'iterator',
    'isEmpty',
    'length',
    'first',
    'last',
    'single'
  ]);
  return ListQueue;
});
collection.ListQueue = collection.ListQueue$();
dart.defineLazy(collection.ListQueue, {
  /*collection.ListQueue._INITIAL_CAPACITY*/get _INITIAL_CAPACITY() {
    return 8;
  }
});
dart.addTypeTests(collection.ListQueue, _is_ListQueue_default);
const _end = Symbol('_end');
const _position = Symbol('_position');
const _is__ListQueueIterator_default = Symbol('_is__ListQueueIterator_default');
collection._ListQueueIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  let ListQueueOfE = () => (ListQueueOfE = dart.constFn(collection.ListQueue$(E)))();
  class _ListQueueIterator extends core.Object {
    get current() {
      return this[_current$1];
    }
    moveNext() {
      this[_queue][_checkModification](this[_modificationCount]);
      if (this[_position] == this[_end]) {
        this[_current$1] = null;
        return false;
      }
      this[_current$1] = this[_queue][_table][$_get](this[_position]);
      this[_position] = (dart.notNull(this[_position]) + 1 & dart.notNull(this[_queue][_table][$length]) - 1) >>> 0;
      return true;
    }
  }
  (_ListQueueIterator.new = function(queue) {
    this[_current$1] = null;
    this[_queue] = queue;
    this[_end] = queue[_tail];
    this[_modificationCount] = queue[_modificationCount];
    this[_position] = queue[_head];
  }).prototype = _ListQueueIterator.prototype;
  dart.addTypeTests(_ListQueueIterator);
  _ListQueueIterator.prototype[_is__ListQueueIterator_default] = true;
  _ListQueueIterator[dart.implements] = () => [IteratorOfE()];
  dart.setMethodSignature(_ListQueueIterator, () => ({
    __proto__: dart.getMethods(_ListQueueIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(_ListQueueIterator, () => ({
    __proto__: dart.getGetters(_ListQueueIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(_ListQueueIterator, () => ({
    __proto__: dart.getFields(_ListQueueIterator.__proto__),
    [_queue]: dart.finalFieldType(ListQueueOfE()),
    [_end]: dart.finalFieldType(core.int),
    [_modificationCount]: dart.finalFieldType(core.int),
    [_position]: dart.fieldType(core.int),
    [_current$1]: dart.fieldType(E)
  }));
  return _ListQueueIterator;
});
collection._ListQueueIterator = collection._ListQueueIterator$();
dart.addTypeTests(collection._ListQueueIterator, _is__ListQueueIterator_default);
const _is_SetMixin_default = Symbol('_is_SetMixin_default');
collection.SetMixin$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let FollowedByIterableOfE = () => (FollowedByIterableOfE = dart.constFn(_internal.FollowedByIterable$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let WhereIterableOfE = () => (WhereIterableOfE = dart.constFn(_internal.WhereIterable$(E)))();
  let EAndEToE = () => (EAndEToE = dart.constFn(dart.fnType(E, [E, E])))();
  let TakeIterableOfE = () => (TakeIterableOfE = dart.constFn(_internal.TakeIterable$(E)))();
  let TakeWhileIterableOfE = () => (TakeWhileIterableOfE = dart.constFn(_internal.TakeWhileIterable$(E)))();
  let SkipIterableOfE = () => (SkipIterableOfE = dart.constFn(_internal.SkipIterable$(E)))();
  let SkipWhileIterableOfE = () => (SkipWhileIterableOfE = dart.constFn(_internal.SkipWhileIterable$(E)))();
  let VoidToE = () => (VoidToE = dart.constFn(dart.fnType(E, [])))();
  class SetMixin extends core.Object {
    [Symbol.iterator]() {
      return new dart.JsIterator(this.iterator);
    }
    get isEmpty() {
      return this.length === 0;
    }
    get isNotEmpty() {
      return this.length !== 0;
    }
    cast(R) {
      return core.Set.castFrom(E, R, this);
    }
    followedBy(other) {
      IterableOfE()._check(other);
      return FollowedByIterableOfE().firstEfficient(this, other);
    }
    whereType(T) {
      return new (_internal.WhereTypeIterable$(T)).new(this);
    }
    clear() {
      this.removeAll(this.toList());
    }
    addAll(elements) {
      IterableOfE()._check(elements);
      for (let element of elements)
        this.add(element);
    }
    removeAll(elements) {
      for (let element of elements)
        this.remove(element);
    }
    retainAll(elements) {
      let toRemove = this.toSet();
      for (let o of elements) {
        toRemove.remove(o);
      }
      this.removeAll(toRemove);
    }
    removeWhere(test) {
      let toRemove = [];
      for (let element of this) {
        if (dart.test(test(element))) toRemove[$add](element);
      }
      this.removeAll(toRemove);
    }
    retainWhere(test) {
      let toRemove = [];
      for (let element of this) {
        if (!dart.test(test(element))) toRemove[$add](element);
      }
      this.removeAll(toRemove);
    }
    containsAll(other) {
      for (let o of other) {
        if (!dart.test(this.contains(o))) return false;
      }
      return true;
    }
    union(other) {
      SetOfE()._check(other);
      let _ = this.toSet();
      _.addAll(other);
      return _;
    }
    intersection(other) {
      let result = this.toSet();
      for (let element of this) {
        if (!dart.test(other.contains(element))) result.remove(element);
      }
      return result;
    }
    difference(other) {
      let result = this.toSet();
      for (let element of this) {
        if (dart.test(other.contains(element))) result.remove(element);
      }
      return result;
    }
    toList(opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let result = dart.test(growable) ? (() => {
        let _ = JSArrayOfE().of([]);
        _[$length] = this.length;
        return _;
      })() : ListOfE().new(this.length);
      let i = 0;
      for (let element of this)
        result[$_set](i++, element);
      return result;
    }
    map(T, f) {
      return new (_internal.EfficientLengthMappedIterable$(E, T)).new(this, f);
    }
    get single() {
      if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
      let it = this.iterator;
      if (!dart.test(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
      let result = it.current;
      return result;
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, "{", "}");
    }
    where(f) {
      return new (WhereIterableOfE()).new(this, f);
    }
    expand(T, f) {
      return new (_internal.ExpandIterable$(E, T)).new(this, f);
    }
    forEach(f) {
      for (let element of this)
        f(element);
    }
    reduce(combine) {
      EAndEToE()._check(combine);
      let iterator = this.iterator;
      if (!dart.test(iterator.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let value = iterator.current;
      while (dart.test(iterator.moveNext())) {
        value = combine(value, iterator.current);
      }
      return value;
    }
    fold(T, initialValue, combine) {
      let value = initialValue;
      for (let element of this)
        value = combine(value, element);
      return value;
    }
    every(f) {
      for (let element of this) {
        if (!dart.test(f(element))) return false;
      }
      return true;
    }
    join(separator) {
      if (separator === void 0) separator = "";
      let iterator = this.iterator;
      if (!dart.test(iterator.moveNext())) return "";
      let buffer = new core.StringBuffer.new();
      if (separator == null || separator === "") {
        do {
          buffer.write(iterator.current);
        } while (dart.test(iterator.moveNext()));
      } else {
        buffer.write(iterator.current);
        while (dart.test(iterator.moveNext())) {
          buffer.write(separator);
          buffer.write(iterator.current);
        }
      }
      return buffer.toString();
    }
    any(test) {
      for (let element of this) {
        if (dart.test(test(element))) return true;
      }
      return false;
    }
    take(n) {
      return TakeIterableOfE().new(this, n);
    }
    takeWhile(test) {
      return new (TakeWhileIterableOfE()).new(this, test);
    }
    skip(n) {
      return SkipIterableOfE().new(this, n);
    }
    skipWhile(test) {
      return new (SkipWhileIterableOfE()).new(this, test);
    }
    get first() {
      let it = this.iterator;
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      return it.current;
    }
    get last() {
      let it = this.iterator;
      if (!dart.test(it.moveNext())) {
        dart.throw(_internal.IterableElementError.noElement());
      }
      let result = null;
      do {
        result = it.current;
      } while (dart.test(it.moveNext()));
      return result;
    }
    firstWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      for (let element of this) {
        if (dart.test(test(element))) return element;
      }
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    lastWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    singleWhere(test, opts) {
      let orElse = opts && 'orElse' in opts ? opts.orElse : null;
      VoidToE()._check(orElse);
      let result = null;
      let foundMatching = false;
      for (let element of this) {
        if (dart.test(test(element))) {
          if (foundMatching) {
            dart.throw(_internal.IterableElementError.tooMany());
          }
          result = element;
          foundMatching = true;
        }
      }
      if (foundMatching) return result;
      if (orElse != null) return orElse();
      dart.throw(_internal.IterableElementError.noElement());
    }
    elementAt(index) {
      core.ArgumentError.checkNotNull(index, "index");
      core.RangeError.checkNotNegative(index, "index");
      let elementIndex = 0;
      for (let element of this) {
        if (index === elementIndex) return element;
        elementIndex++;
      }
      dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
    }
  }
  (SetMixin.new = function() {
  }).prototype = SetMixin.prototype;
  dart.addTypeTests(SetMixin);
  SetMixin.prototype[_is_SetMixin_default] = true;
  SetMixin[dart.implements] = () => [SetOfE()];
  dart.setMethodSignature(SetMixin, () => ({
    __proto__: dart.getMethods(SetMixin.__proto__),
    cast: dart.gFnType(R => [core.Set$(R), []]),
    [$cast]: dart.gFnType(R => [core.Set$(R), []]),
    followedBy: dart.fnType(core.Iterable$(E), [core.Object]),
    [$followedBy]: dart.fnType(core.Iterable$(E), [core.Object]),
    whereType: dart.gFnType(T => [core.Iterable$(T), []]),
    [$whereType]: dart.gFnType(T => [core.Iterable$(T), []]),
    clear: dart.fnType(dart.void, []),
    addAll: dart.fnType(dart.void, [core.Object]),
    removeAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
    retainAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    containsAll: dart.fnType(core.bool, [core.Iterable$(core.Object)]),
    union: dart.fnType(core.Set$(E), [core.Object]),
    intersection: dart.fnType(core.Set$(E), [core.Set$(core.Object)]),
    difference: dart.fnType(core.Set$(E), [core.Set$(core.Object)]),
    toList: dart.fnType(core.List$(E), [], {growable: core.bool}),
    [$toList]: dart.fnType(core.List$(E), [], {growable: core.bool}),
    map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [E])]]),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, []),
    where: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$where]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [E])]]),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [E])]),
    reduce: dart.fnType(E, [core.Object]),
    [$reduce]: dart.fnType(E, [core.Object]),
    fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, E])]]),
    every: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    join: dart.fnType(core.String, [], [core.String]),
    [$join]: dart.fnType(core.String, [], [core.String]),
    any: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [E])]),
    take: dart.fnType(core.Iterable$(E), [core.int]),
    [$take]: dart.fnType(core.Iterable$(E), [core.int]),
    takeWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$takeWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    skip: dart.fnType(core.Iterable$(E), [core.int]),
    [$skip]: dart.fnType(core.Iterable$(E), [core.int]),
    skipWhile: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    [$skipWhile]: dart.fnType(core.Iterable$(E), [dart.fnType(core.bool, [E])]),
    firstWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$firstWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    lastWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$lastWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    singleWhere: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    [$singleWhere]: dart.fnType(E, [dart.fnType(core.bool, [E])], {orElse: core.Object}),
    elementAt: dart.fnType(E, [core.int]),
    [$elementAt]: dart.fnType(E, [core.int])
  }));
  dart.setGetterSignature(SetMixin, () => ({
    __proto__: dart.getGetters(SetMixin.__proto__),
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    single: E,
    [$single]: E,
    first: E,
    [$first]: E,
    last: E,
    [$last]: E
  }));
  dart.defineExtensionMethods(SetMixin, [
    'cast',
    'followedBy',
    'whereType',
    'toList',
    'map',
    'toString',
    'where',
    'expand',
    'forEach',
    'reduce',
    'fold',
    'every',
    'join',
    'any',
    'take',
    'takeWhile',
    'skip',
    'skipWhile',
    'firstWhere',
    'lastWhere',
    'singleWhere',
    'elementAt'
  ]);
  dart.defineExtensionAccessors(SetMixin, [
    'isEmpty',
    'isNotEmpty',
    'single',
    'first',
    'last'
  ]);
  return SetMixin;
});
collection.SetMixin = collection.SetMixin$();
dart.addTypeTests(collection.SetMixin, _is_SetMixin_default);
const _is_SetBase_default = Symbol('_is_SetBase_default');
collection.SetBase$ = dart.generic(E => {
  const Object_SetMixin$ = class Object_SetMixin extends core.Object {};
  (Object_SetMixin$.new = function() {
  }).prototype = Object_SetMixin$.prototype;
  dart.applyMixin(Object_SetMixin$, collection.SetMixin$(E));
  class SetBase extends Object_SetMixin$ {
    static setToString(set) {
      return collection.IterableBase.iterableToFullString(set, "{", "}");
    }
  }
  (SetBase.new = function() {
  }).prototype = SetBase.prototype;
  dart.addTypeTests(SetBase);
  SetBase.prototype[_is_SetBase_default] = true;
  return SetBase;
});
collection.SetBase = collection.SetBase$();
dart.addTypeTests(collection.SetBase, _is_SetBase_default);
const _is__UnmodifiableSet_default = Symbol('_is__UnmodifiableSet_default');
collection._UnmodifiableSet$ = dart.generic(E => {
  let _HashSetOfE = () => (_HashSetOfE = dart.constFn(collection._HashSet$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let MapOfE$Null = () => (MapOfE$Null = dart.constFn(core.Map$(E, core.Null)))();
  class _UnmodifiableSet extends collection._SetBase$(E) {
    [_newSet]() {
      return new (_HashSetOfE()).new();
    }
    [_newSimilarSet](R) {
      return new (collection._HashSet$(R)).new();
    }
    contains(element) {
      return this[_map$0][$containsKey](element);
    }
    get iterator() {
      return this[_map$0][$keys][$iterator];
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this.iterator);
    }
    get length() {
      return this[_map$0][$length];
    }
    lookup(element) {
      for (let key of this[_map$0][$keys]) {
        if (dart.equals(key, element)) return key;
      }
      return null;
    }
    add(value) {
      E._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
    }
    clear() {
      dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
    }
    addAll(elements) {
      IterableOfE()._check(elements);
      dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
    }
    removeAll(elements) {
      dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
    }
    retainAll(elements) {
      dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
    }
    removeWhere(test) {
      dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
    }
    retainWhere(test) {
      dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
    }
    remove(value) {
      dart.throw(new core.UnsupportedError.new("Cannot change unmodifiable set"));
    }
  }
  (_UnmodifiableSet.new = function(map) {
    this[_map$0] = map;
    _UnmodifiableSet.__proto__.new.call(this);
  }).prototype = _UnmodifiableSet.prototype;
  dart.addTypeTests(_UnmodifiableSet);
  _UnmodifiableSet.prototype[_is__UnmodifiableSet_default] = true;
  dart.setMethodSignature(_UnmodifiableSet, () => ({
    __proto__: dart.getMethods(_UnmodifiableSet.__proto__),
    [_newSet]: dart.fnType(core.Set$(E), []),
    [_newSimilarSet]: dart.gFnType(R => [core.Set$(R), []]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    lookup: dart.fnType(E, [core.Object]),
    add: dart.fnType(core.bool, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object])
  }));
  dart.setGetterSignature(_UnmodifiableSet, () => ({
    __proto__: dart.getGetters(_UnmodifiableSet.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(_UnmodifiableSet, () => ({
    __proto__: dart.getFields(_UnmodifiableSet.__proto__),
    [_map$0]: dart.finalFieldType(MapOfE$Null())
  }));
  dart.defineExtensionMethods(_UnmodifiableSet, ['contains']);
  dart.defineExtensionAccessors(_UnmodifiableSet, ['iterator', 'length']);
  return _UnmodifiableSet;
});
collection._UnmodifiableSet = collection._UnmodifiableSet$();
dart.addTypeTests(collection._UnmodifiableSet, _is__UnmodifiableSet_default);
const _is__SplayTreeNode_default = Symbol('_is__SplayTreeNode_default');
collection._SplayTreeNode$ = dart.generic(K => {
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  class _SplayTreeNode extends core.Object {}
  (_SplayTreeNode.new = function(key) {
    this.left = null;
    this.right = null;
    this.key = key;
  }).prototype = _SplayTreeNode.prototype;
  dart.addTypeTests(_SplayTreeNode);
  _SplayTreeNode.prototype[_is__SplayTreeNode_default] = true;
  dart.setFieldSignature(_SplayTreeNode, () => ({
    __proto__: dart.getFields(_SplayTreeNode.__proto__),
    key: dart.finalFieldType(K),
    left: dart.fieldType(_SplayTreeNodeOfK()),
    right: dart.fieldType(_SplayTreeNodeOfK())
  }));
  return _SplayTreeNode;
});
collection._SplayTreeNode = collection._SplayTreeNode$();
dart.addTypeTests(collection._SplayTreeNode, _is__SplayTreeNode_default);
const _is__SplayTreeMapNode_default = Symbol('_is__SplayTreeMapNode_default');
collection._SplayTreeMapNode$ = dart.generic((K, V) => {
  class _SplayTreeMapNode extends collection._SplayTreeNode$(K) {}
  (_SplayTreeMapNode.new = function(key, value) {
    this.value = value;
    _SplayTreeMapNode.__proto__.new.call(this, key);
  }).prototype = _SplayTreeMapNode.prototype;
  dart.addTypeTests(_SplayTreeMapNode);
  _SplayTreeMapNode.prototype[_is__SplayTreeMapNode_default] = true;
  dart.setFieldSignature(_SplayTreeMapNode, () => ({
    __proto__: dart.getFields(_SplayTreeMapNode.__proto__),
    value: dart.fieldType(V)
  }));
  return _SplayTreeMapNode;
});
collection._SplayTreeMapNode = collection._SplayTreeMapNode$();
dart.addTypeTests(collection._SplayTreeMapNode, _is__SplayTreeMapNode_default);
const _count$ = Symbol('_count');
const _splayCount = Symbol('_splayCount');
const _root$ = Symbol('_root');
const _dummy = Symbol('_dummy');
const _compare = Symbol('_compare');
const _splay = Symbol('_splay');
const _splayMin = Symbol('_splayMin');
const _splayMax = Symbol('_splayMax');
const _addNewRoot = Symbol('_addNewRoot');
const _last = Symbol('_last');
const _clear = Symbol('_clear');
const _is__SplayTree_default = Symbol('_is__SplayTree_default');
collection._SplayTree$ = dart.generic((K, Node) => {
  class _SplayTree extends core.Object {
    [_splay](key) {
      K._check(key);
      if (this[_root$] == null) return -1;
      let left = this[_dummy];
      let right = this[_dummy];
      let current = this[_root$];
      let comp = null;
      while (true) {
        comp = this[_compare](current.key, key);
        if (dart.notNull(comp) > 0) {
          if (current.left == null) break;
          comp = this[_compare](current.left.key, key);
          if (dart.notNull(comp) > 0) {
            let tmp = current.left;
            current.left = tmp.right;
            tmp.right = current;
            current = Node._check(tmp);
            if (current.left == null) break;
          }
          right.left = current;
          right = current;
          current = Node._check(current.left);
        } else if (dart.notNull(comp) < 0) {
          if (current.right == null) break;
          comp = this[_compare](current.right.key, key);
          if (dart.notNull(comp) < 0) {
            let tmp = Node._check(current.right);
            current.right = tmp.left;
            tmp.left = current;
            current = tmp;
            if (current.right == null) break;
          }
          left.right = current;
          left = current;
          current = Node._check(current.right);
        } else {
          break;
        }
      }
      left.right = current.left;
      right.left = current.right;
      current.left = this[_dummy].right;
      current.right = this[_dummy].left;
      this[_root$] = current;
      this[_dummy].right = null;
      this[_dummy].left = null;
      this[_splayCount] = dart.notNull(this[_splayCount]) + 1;
      return comp;
    }
    [_splayMin](node) {
      Node._check(node);
      let current = node;
      while (current.left != null) {
        let left = Node._check(current.left);
        current.left = left.right;
        left.right = current;
        current = left;
      }
      return current;
    }
    [_splayMax](node) {
      Node._check(node);
      let current = node;
      while (current.right != null) {
        let right = Node._check(current.right);
        current.right = right.left;
        right.left = current;
        current = right;
      }
      return current;
    }
    [_remove](key) {
      K._check(key);
      if (this[_root$] == null) return null;
      let comp = this[_splay](key);
      if (comp !== 0) return null;
      let result = this[_root$];
      this[_count$] = dart.notNull(this[_count$]) - 1;
      if (this[_root$].left == null) {
        this[_root$] = Node._check(this[_root$].right);
      } else {
        let right = Node._check(this[_root$].right);
        this[_root$] = this[_splayMax](Node._check(this[_root$].left));
        this[_root$].right = right;
      }
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      return result;
    }
    [_addNewRoot](node, comp) {
      Node._check(node);
      this[_count$] = dart.notNull(this[_count$]) + 1;
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      if (this[_root$] == null) {
        this[_root$] = node;
        return;
      }
      if (dart.notNull(comp) < 0) {
        node.left = this[_root$];
        node.right = this[_root$].right;
        this[_root$].right = null;
      } else {
        node.right = this[_root$];
        node.left = this[_root$].left;
        this[_root$].left = null;
      }
      this[_root$] = node;
    }
    get [_first$]() {
      if (this[_root$] == null) return null;
      this[_root$] = this[_splayMin](this[_root$]);
      return this[_root$];
    }
    get [_last]() {
      if (this[_root$] == null) return null;
      this[_root$] = this[_splayMax](this[_root$]);
      return this[_root$];
    }
    [_clear]() {
      this[_root$] = null;
      this[_count$] = 0;
      this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
    }
  }
  (_SplayTree.new = function() {
    this[_count$] = 0;
    this[_modificationCount] = 0;
    this[_splayCount] = 0;
  }).prototype = _SplayTree.prototype;
  dart.addTypeTests(_SplayTree);
  _SplayTree.prototype[_is__SplayTree_default] = true;
  dart.setMethodSignature(_SplayTree, () => ({
    __proto__: dart.getMethods(_SplayTree.__proto__),
    [_splay]: dart.fnType(core.int, [core.Object]),
    [_splayMin]: dart.fnType(Node, [core.Object]),
    [_splayMax]: dart.fnType(Node, [core.Object]),
    [_remove]: dart.fnType(Node, [core.Object]),
    [_addNewRoot]: dart.fnType(dart.void, [core.Object, core.int]),
    [_clear]: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_SplayTree, () => ({
    __proto__: dart.getGetters(_SplayTree.__proto__),
    [_first$]: Node,
    [_last]: Node
  }));
  dart.setFieldSignature(_SplayTree, () => ({
    __proto__: dart.getFields(_SplayTree.__proto__),
    [_count$]: dart.fieldType(core.int),
    [_modificationCount]: dart.fieldType(core.int),
    [_splayCount]: dart.fieldType(core.int)
  }));
  return _SplayTree;
});
collection._SplayTree = collection._SplayTree$();
dart.addTypeTests(collection._SplayTree, _is__SplayTree_default);
const _is__TypeTest_default = Symbol('_is__TypeTest_default');
collection._TypeTest$ = dart.generic(T => {
  class _TypeTest extends core.Object {
    test(v) {
      return T.is(v);
    }
  }
  (_TypeTest.new = function() {
  }).prototype = _TypeTest.prototype;
  dart.addTypeTests(_TypeTest);
  _TypeTest.prototype[_is__TypeTest_default] = true;
  dart.setMethodSignature(_TypeTest, () => ({
    __proto__: dart.getMethods(_TypeTest.__proto__),
    test: dart.fnType(core.bool, [dart.dynamic])
  }));
  return _TypeTest;
});
collection._TypeTest = collection._TypeTest$();
dart.addTypeTests(collection._TypeTest, _is__TypeTest_default);
collection._dynamicCompare = function(a, b) {
  return core.Comparable.compare(core.Comparable._check(a), core.Comparable._check(b));
};
collection._defaultCompare = function(K) {
  let compare = dart.fn(core.Comparable.compare, ComparableAndComparableToint());
  if (dart.fnType(core.int, [K, K]).is(compare)) {
    return compare;
  }
  return dart.fn(collection._dynamicCompare, dynamicAnddynamicToint());
};
const _comparator = Symbol('_comparator');
const _is_SplayTreeMap_default = Symbol('_is_SplayTreeMap_default');
collection.SplayTreeMap$ = dart.generic((K, V) => {
  let _SplayTreeMapNodeOfK$V = () => (_SplayTreeMapNodeOfK$V = dart.constFn(collection._SplayTreeMapNode$(K, V)))();
  let SplayTreeMapOfK$V = () => (SplayTreeMapOfK$V = dart.constFn(collection.SplayTreeMap$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let KAndVToNull = () => (KAndVToNull = dart.constFn(dart.fnType(core.Null, [K, V])))();
  let _SplayTreeNodeIteratorOfK = () => (_SplayTreeNodeIteratorOfK = dart.constFn(collection._SplayTreeNodeIterator$(K)))();
  let _SplayTreeKeyIterableOfK = () => (_SplayTreeKeyIterableOfK = dart.constFn(collection._SplayTreeKeyIterable$(K)))();
  let _SplayTreeValueIterableOfK$V = () => (_SplayTreeValueIterableOfK$V = dart.constFn(collection._SplayTreeValueIterable$(K, V)))();
  let KAndKToint = () => (KAndKToint = dart.constFn(dart.fnType(core.int, [K, K])))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
  const _SplayTree_MapMixin$ = class _SplayTree_MapMixin extends collection._SplayTree$(K, collection._SplayTreeMapNode$(K, V)) {};
  (_SplayTree_MapMixin$.new = function() {
    _SplayTree_MapMixin$.__proto__.new.call(this);
  }).prototype = _SplayTree_MapMixin$.prototype;
  dart.applyMixin(_SplayTree_MapMixin$, collection.MapMixin$(K, V));
  class SplayTreeMap extends _SplayTree_MapMixin$ {
    static from(other, compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      let result = new (SplayTreeMapOfK$V()).new(compare, isValidKey);
      other[$forEach](dart.fn((k, v) => {
        result._set(K._check(k), V._check(v));
      }, dynamicAnddynamicToNull()));
      return result;
    }
    static of(other, compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      let _ = new (SplayTreeMapOfK$V()).new(compare, isValidKey);
      _.addAll(other);
      return _;
    }
    static fromIterable(iterable, opts) {
      let key = opts && 'key' in opts ? opts.key : null;
      let value = opts && 'value' in opts ? opts.value : null;
      let compare = opts && 'compare' in opts ? opts.compare : null;
      let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
      let map = new (SplayTreeMapOfK$V()).new(compare, isValidKey);
      collection.MapBase._fillMapWithMappedIterable(map, iterable, key, value);
      return map;
    }
    static fromIterables(keys, values, compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      let map = new (SplayTreeMapOfK$V()).new(compare, isValidKey);
      collection.MapBase._fillMapWithIterables(map, keys, values);
      return map;
    }
    [_compare](key1, key2) {
      K._check(key1);
      K._check(key2);
      return this[_comparator](key1, key2);
    }
    _get(key) {
      if (!dart.test(this[_validKey$](key))) return null;
      if (this[_root$] != null) {
        let comp = this[_splay](K._check(key));
        if (comp === 0) {
          return this[_root$].value;
        }
      }
      return null;
    }
    remove(key) {
      if (!dart.test(this[_validKey$](key))) return null;
      let mapRoot = this[_remove](K._check(key));
      if (mapRoot != null) return mapRoot.value;
      return null;
    }
    _set(key, value) {
      K._check(key);
      V._check(value);
      if (key == null) dart.throw(new core.ArgumentError.new(key));
      let comp = this[_splay](key);
      if (comp === 0) {
        this[_root$].value = value;
        return value;
      }
      this[_addNewRoot](new (_SplayTreeMapNodeOfK$V()).new(key, value), comp);
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      K._check(key);
      VoidToV()._check(ifAbsent);
      if (key == null) dart.throw(new core.ArgumentError.new(key));
      let comp = this[_splay](key);
      if (comp === 0) {
        return this[_root$].value;
      }
      let modificationCount = this[_modificationCount];
      let splayCount = this[_splayCount];
      let value = ifAbsent();
      if (modificationCount != this[_modificationCount]) {
        dart.throw(new core.ConcurrentModificationError.new(this));
      }
      if (splayCount != this[_splayCount]) {
        comp = this[_splay](key);
        if (!(comp !== 0)) dart.assertFailed();
      }
      this[_addNewRoot](new (_SplayTreeMapNodeOfK$V()).new(key, value), comp);
      return value;
    }
    addAll(other) {
      MapOfK$V()._check(other);
      other[$forEach](dart.fn((key, value) => {
        this._set(key, value);
      }, KAndVToNull()));
    }
    get isEmpty() {
      return this[_root$] == null;
    }
    get isNotEmpty() {
      return !dart.test(this.isEmpty);
    }
    forEach(f) {
      let nodes = new (_SplayTreeNodeIteratorOfK()).new(this);
      while (dart.test(nodes.moveNext())) {
        let node = _SplayTreeMapNodeOfK$V()._check(nodes.current);
        f(node.key, node.value);
      }
    }
    get length() {
      return this[_count$];
    }
    clear() {
      this[_clear]();
    }
    containsKey(key) {
      return dart.test(this[_validKey$](key)) && this[_splay](K._check(key)) === 0;
    }
    containsValue(value) {
      let initialSplayCount = this[_splayCount];
      const visit = (function(node) {
        while (node != null) {
          if (dart.equals(node.value, value)) return true;
          if (initialSplayCount != this[_splayCount]) {
            dart.throw(new core.ConcurrentModificationError.new(this));
          }
          if (node.right != null && dart.test(visit(collection._SplayTreeMapNode._check(node.right)))) return true;
          node = collection._SplayTreeMapNode._check(node.left);
        }
        return false;
      }).bind(this);
      dart.fn(visit, _SplayTreeMapNodeTobool());
      return visit(this[_root$]);
    }
    get keys() {
      return new (_SplayTreeKeyIterableOfK()).new(this);
    }
    get values() {
      return new (_SplayTreeValueIterableOfK$V()).new(this);
    }
    firstKey() {
      if (this[_root$] == null) return null;
      return this[_first$].key;
    }
    lastKey() {
      if (this[_root$] == null) return null;
      return this[_last].key;
    }
    lastKeyBefore(key) {
      K._check(key);
      if (key == null) dart.throw(new core.ArgumentError.new(key));
      if (this[_root$] == null) return null;
      let comp = this[_splay](key);
      if (dart.notNull(comp) < 0) return this[_root$].key;
      let node = this[_root$].left;
      if (node == null) return null;
      while (node.right != null) {
        node = node.right;
      }
      return node.key;
    }
    firstKeyAfter(key) {
      K._check(key);
      if (key == null) dart.throw(new core.ArgumentError.new(key));
      if (this[_root$] == null) return null;
      let comp = this[_splay](key);
      if (dart.notNull(comp) > 0) return this[_root$].key;
      let node = this[_root$].right;
      if (node == null) return null;
      while (node.left != null) {
        node = node.left;
      }
      return node.key;
    }
  }
  (SplayTreeMap.new = function(compare, isValidKey) {
    if (compare === void 0) compare = null;
    if (isValidKey === void 0) isValidKey = null;
    this[_root$] = null;
    this[_dummy] = new (_SplayTreeMapNodeOfK$V()).new(null, null);
    let l = compare;
    this[_comparator] = l != null ? l : collection._defaultCompare(K);
    let l$ = isValidKey;
    this[_validKey$] = l$ != null ? l$ : dart.fn(v => K.is(v), dynamicTobool());
    SplayTreeMap.__proto__.new.call(this);
  }).prototype = SplayTreeMap.prototype;
  (SplayTreeMap._internal = function() {
    this[_root$] = null;
    this[_dummy] = new (_SplayTreeMapNodeOfK$V()).new(null, null);
    this[_comparator] = null;
    this[_validKey$] = null;
    SplayTreeMap.__proto__.new.call(this);
  }).prototype = SplayTreeMap.prototype;
  dart.addTypeTests(SplayTreeMap);
  SplayTreeMap.prototype[_is_SplayTreeMap_default] = true;
  dart.setMethodSignature(SplayTreeMap, () => ({
    __proto__: dart.getMethods(SplayTreeMap.__proto__),
    [_compare]: dart.fnType(core.int, [core.Object, core.Object]),
    _get: dart.fnType(V, [core.Object]),
    [$_get]: dart.fnType(V, [core.Object]),
    remove: dart.fnType(V, [core.Object]),
    [$remove]: dart.fnType(V, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    firstKey: dart.fnType(K, []),
    lastKey: dart.fnType(K, []),
    lastKeyBefore: dart.fnType(K, [core.Object]),
    firstKeyAfter: dart.fnType(K, [core.Object])
  }));
  dart.setGetterSignature(SplayTreeMap, () => ({
    __proto__: dart.getGetters(SplayTreeMap.__proto__),
    keys: core.Iterable$(K),
    [$keys]: core.Iterable$(K)
  }));
  dart.setFieldSignature(SplayTreeMap, () => ({
    __proto__: dart.getFields(SplayTreeMap.__proto__),
    [_root$]: dart.fieldType(_SplayTreeMapNodeOfK$V()),
    [_dummy]: dart.finalFieldType(_SplayTreeMapNodeOfK$V()),
    [_comparator]: dart.fieldType(KAndKToint()),
    [_validKey$]: dart.fieldType(dynamicTobool())
  }));
  dart.defineExtensionMethods(SplayTreeMap, [
    '_get',
    'remove',
    '_set',
    'putIfAbsent',
    'addAll',
    'forEach',
    'clear',
    'containsKey',
    'containsValue'
  ]);
  dart.defineExtensionAccessors(SplayTreeMap, [
    'isEmpty',
    'isNotEmpty',
    'length',
    'keys',
    'values'
  ]);
  return SplayTreeMap;
});
collection.SplayTreeMap = collection.SplayTreeMap$();
dart.addTypeTests(collection.SplayTreeMap, _is_SplayTreeMap_default);
const _tree = Symbol('_tree');
const _workList = Symbol('_workList');
const _currentNode = Symbol('_currentNode');
const _findLeftMostDescendent = Symbol('_findLeftMostDescendent');
const _getValue = Symbol('_getValue');
const _rebuildWorkList = Symbol('_rebuildWorkList');
const _is__SplayTreeIterator_default = Symbol('_is__SplayTreeIterator_default');
collection._SplayTreeIterator$ = dart.generic((K, T) => {
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  let JSArrayOf_SplayTreeNodeOfK = () => (JSArrayOf_SplayTreeNodeOfK = dart.constFn(_interceptors.JSArray$(_SplayTreeNodeOfK())))();
  let _SplayTreeOfK$_SplayTreeNodeOfK = () => (_SplayTreeOfK$_SplayTreeNodeOfK = dart.constFn(collection._SplayTree$(K, _SplayTreeNodeOfK())))();
  let ListOf_SplayTreeNodeOfK = () => (ListOf_SplayTreeNodeOfK = dart.constFn(core.List$(_SplayTreeNodeOfK())))();
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  class _SplayTreeIterator extends core.Object {
    get current() {
      if (this[_currentNode] == null) return null;
      return this[_getValue](this[_currentNode]);
    }
    [_findLeftMostDescendent](node) {
      _SplayTreeNodeOfK()._check(node);
      while (node != null) {
        this[_workList][$add](node);
        node = node.left;
      }
    }
    [_rebuildWorkList](currentNode) {
      _SplayTreeNodeOfK()._check(currentNode);
      if (!dart.test(this[_workList][$isNotEmpty])) dart.assertFailed();
      this[_workList][$clear]();
      if (currentNode == null) {
        this[_findLeftMostDescendent](this[_tree][_root$]);
      } else {
        this[_tree][_splay](currentNode.key);
        this[_findLeftMostDescendent](this[_tree][_root$].right);
        if (!dart.test(this[_workList][$isNotEmpty])) dart.assertFailed();
      }
    }
    moveNext() {
      if (this[_modificationCount] != this[_tree][_modificationCount]) {
        dart.throw(new core.ConcurrentModificationError.new(this[_tree]));
      }
      if (dart.test(this[_workList][$isEmpty])) {
        this[_currentNode] = null;
        return false;
      }
      if (this[_tree][_splayCount] != this[_splayCount] && this[_currentNode] != null) {
        this[_rebuildWorkList](this[_currentNode]);
      }
      this[_currentNode] = this[_workList][$removeLast]();
      this[_findLeftMostDescendent](this[_currentNode].right);
      return true;
    }
  }
  (_SplayTreeIterator.new = function(tree) {
    this[_workList] = JSArrayOf_SplayTreeNodeOfK().of([]);
    this[_currentNode] = null;
    this[_tree] = tree;
    this[_modificationCount] = tree[_modificationCount];
    this[_splayCount] = tree[_splayCount];
    this[_findLeftMostDescendent](tree[_root$]);
  }).prototype = _SplayTreeIterator.prototype;
  (_SplayTreeIterator.startAt = function(tree, startKey) {
    this[_workList] = JSArrayOf_SplayTreeNodeOfK().of([]);
    this[_splayCount] = null;
    this[_currentNode] = null;
    this[_tree] = tree;
    this[_modificationCount] = tree[_modificationCount];
    if (tree[_root$] == null) return;
    let compare = tree[_splay](startKey);
    this[_splayCount] = tree[_splayCount];
    if (dart.notNull(compare) < 0) {
      this[_findLeftMostDescendent](tree[_root$].right);
    } else {
      this[_workList][$add](tree[_root$]);
    }
  }).prototype = _SplayTreeIterator.prototype;
  dart.addTypeTests(_SplayTreeIterator);
  _SplayTreeIterator.prototype[_is__SplayTreeIterator_default] = true;
  _SplayTreeIterator[dart.implements] = () => [IteratorOfT()];
  dart.setMethodSignature(_SplayTreeIterator, () => ({
    __proto__: dart.getMethods(_SplayTreeIterator.__proto__),
    [_findLeftMostDescendent]: dart.fnType(dart.void, [core.Object]),
    [_rebuildWorkList]: dart.fnType(dart.void, [core.Object]),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(_SplayTreeIterator, () => ({
    __proto__: dart.getGetters(_SplayTreeIterator.__proto__),
    current: T
  }));
  dart.setFieldSignature(_SplayTreeIterator, () => ({
    __proto__: dart.getFields(_SplayTreeIterator.__proto__),
    [_tree]: dart.finalFieldType(_SplayTreeOfK$_SplayTreeNodeOfK()),
    [_workList]: dart.finalFieldType(ListOf_SplayTreeNodeOfK()),
    [_modificationCount]: dart.fieldType(core.int),
    [_splayCount]: dart.fieldType(core.int),
    [_currentNode]: dart.fieldType(_SplayTreeNodeOfK())
  }));
  return _SplayTreeIterator;
});
collection._SplayTreeIterator = collection._SplayTreeIterator$();
dart.addTypeTests(collection._SplayTreeIterator, _is__SplayTreeIterator_default);
const _copyNode = Symbol('_copyNode');
const _is__SplayTreeKeyIterable_default = Symbol('_is__SplayTreeKeyIterable_default');
collection._SplayTreeKeyIterable$ = dart.generic(K => {
  let _SplayTreeKeyIteratorOfK = () => (_SplayTreeKeyIteratorOfK = dart.constFn(collection._SplayTreeKeyIterator$(K)))();
  let KAndKToint = () => (KAndKToint = dart.constFn(dart.fnType(core.int, [K, K])))();
  let SplayTreeSetOfK = () => (SplayTreeSetOfK = dart.constFn(collection.SplayTreeSet$(K)))();
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  let _SplayTreeOfK$_SplayTreeNodeOfK = () => (_SplayTreeOfK$_SplayTreeNodeOfK = dart.constFn(collection._SplayTree$(K, _SplayTreeNodeOfK())))();
  class _SplayTreeKeyIterable extends _internal.EfficientLengthIterable$(K) {
    get length() {
      return this[_tree][_count$];
    }
    get isEmpty() {
      return this[_tree][_count$] === 0;
    }
    get iterator() {
      return new (_SplayTreeKeyIteratorOfK()).new(this[_tree]);
    }
    toSet() {
      let set = new (SplayTreeSetOfK()).new(KAndKToint()._check(this[_tree][_comparator]), this[_tree][_validKey$]);
      set[_count$] = this[_tree][_count$];
      set[_root$] = set[_copyNode](this[_tree][_root$]);
      return set;
    }
  }
  (_SplayTreeKeyIterable.new = function(tree) {
    this[_tree] = tree;
    _SplayTreeKeyIterable.__proto__.new.call(this);
  }).prototype = _SplayTreeKeyIterable.prototype;
  dart.addTypeTests(_SplayTreeKeyIterable);
  _SplayTreeKeyIterable.prototype[_is__SplayTreeKeyIterable_default] = true;
  dart.setGetterSignature(_SplayTreeKeyIterable, () => ({
    __proto__: dart.getGetters(_SplayTreeKeyIterable.__proto__),
    length: core.int,
    [$length]: core.int,
    iterator: core.Iterator$(K),
    [$iterator]: core.Iterator$(K)
  }));
  dart.setFieldSignature(_SplayTreeKeyIterable, () => ({
    __proto__: dart.getFields(_SplayTreeKeyIterable.__proto__),
    [_tree]: dart.fieldType(_SplayTreeOfK$_SplayTreeNodeOfK())
  }));
  dart.defineExtensionMethods(_SplayTreeKeyIterable, ['toSet']);
  dart.defineExtensionAccessors(_SplayTreeKeyIterable, ['length', 'isEmpty', 'iterator']);
  return _SplayTreeKeyIterable;
});
collection._SplayTreeKeyIterable = collection._SplayTreeKeyIterable$();
dart.addTypeTests(collection._SplayTreeKeyIterable, _is__SplayTreeKeyIterable_default);
const _is__SplayTreeValueIterable_default = Symbol('_is__SplayTreeValueIterable_default');
collection._SplayTreeValueIterable$ = dart.generic((K, V) => {
  let _SplayTreeValueIteratorOfK$V = () => (_SplayTreeValueIteratorOfK$V = dart.constFn(collection._SplayTreeValueIterator$(K, V)))();
  let SplayTreeMapOfK$V = () => (SplayTreeMapOfK$V = dart.constFn(collection.SplayTreeMap$(K, V)))();
  class _SplayTreeValueIterable extends _internal.EfficientLengthIterable$(V) {
    get length() {
      return this[_map$0][_count$];
    }
    get isEmpty() {
      return this[_map$0][_count$] === 0;
    }
    get iterator() {
      return new (_SplayTreeValueIteratorOfK$V()).new(this[_map$0]);
    }
  }
  (_SplayTreeValueIterable.new = function(map) {
    this[_map$0] = map;
    _SplayTreeValueIterable.__proto__.new.call(this);
  }).prototype = _SplayTreeValueIterable.prototype;
  dart.addTypeTests(_SplayTreeValueIterable);
  _SplayTreeValueIterable.prototype[_is__SplayTreeValueIterable_default] = true;
  dart.setGetterSignature(_SplayTreeValueIterable, () => ({
    __proto__: dart.getGetters(_SplayTreeValueIterable.__proto__),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    iterator: core.Iterator$(V),
    [$iterator]: core.Iterator$(V)
  }));
  dart.setFieldSignature(_SplayTreeValueIterable, () => ({
    __proto__: dart.getFields(_SplayTreeValueIterable.__proto__),
    [_map$0]: dart.fieldType(SplayTreeMapOfK$V())
  }));
  dart.defineExtensionAccessors(_SplayTreeValueIterable, ['length', 'isEmpty', 'iterator']);
  return _SplayTreeValueIterable;
});
collection._SplayTreeValueIterable = collection._SplayTreeValueIterable$();
dart.addTypeTests(collection._SplayTreeValueIterable, _is__SplayTreeValueIterable_default);
const _is__SplayTreeKeyIterator_default = Symbol('_is__SplayTreeKeyIterator_default');
collection._SplayTreeKeyIterator$ = dart.generic(K => {
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  class _SplayTreeKeyIterator extends collection._SplayTreeIterator$(K, K) {
    [_getValue](node) {
      _SplayTreeNodeOfK()._check(node);
      return node.key;
    }
  }
  (_SplayTreeKeyIterator.new = function(map) {
    _SplayTreeKeyIterator.__proto__.new.call(this, map);
  }).prototype = _SplayTreeKeyIterator.prototype;
  dart.addTypeTests(_SplayTreeKeyIterator);
  _SplayTreeKeyIterator.prototype[_is__SplayTreeKeyIterator_default] = true;
  dart.setMethodSignature(_SplayTreeKeyIterator, () => ({
    __proto__: dart.getMethods(_SplayTreeKeyIterator.__proto__),
    [_getValue]: dart.fnType(K, [core.Object])
  }));
  return _SplayTreeKeyIterator;
});
collection._SplayTreeKeyIterator = collection._SplayTreeKeyIterator$();
dart.addTypeTests(collection._SplayTreeKeyIterator, _is__SplayTreeKeyIterator_default);
const _is__SplayTreeValueIterator_default = Symbol('_is__SplayTreeValueIterator_default');
collection._SplayTreeValueIterator$ = dart.generic((K, V) => {
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  let _SplayTreeMapNodeOfK$V = () => (_SplayTreeMapNodeOfK$V = dart.constFn(collection._SplayTreeMapNode$(K, V)))();
  class _SplayTreeValueIterator extends collection._SplayTreeIterator$(K, V) {
    [_getValue](node) {
      _SplayTreeNodeOfK()._check(node);
      let mapNode = _SplayTreeMapNodeOfK$V()._check(node);
      return mapNode.value;
    }
  }
  (_SplayTreeValueIterator.new = function(map) {
    _SplayTreeValueIterator.__proto__.new.call(this, map);
  }).prototype = _SplayTreeValueIterator.prototype;
  dart.addTypeTests(_SplayTreeValueIterator);
  _SplayTreeValueIterator.prototype[_is__SplayTreeValueIterator_default] = true;
  dart.setMethodSignature(_SplayTreeValueIterator, () => ({
    __proto__: dart.getMethods(_SplayTreeValueIterator.__proto__),
    [_getValue]: dart.fnType(V, [core.Object])
  }));
  return _SplayTreeValueIterator;
});
collection._SplayTreeValueIterator = collection._SplayTreeValueIterator$();
dart.addTypeTests(collection._SplayTreeValueIterator, _is__SplayTreeValueIterator_default);
const _is__SplayTreeNodeIterator_default = Symbol('_is__SplayTreeNodeIterator_default');
collection._SplayTreeNodeIterator$ = dart.generic(K => {
  let _SplayTreeNodeOfK = () => (_SplayTreeNodeOfK = dart.constFn(collection._SplayTreeNode$(K)))();
  class _SplayTreeNodeIterator extends collection._SplayTreeIterator$(K, collection._SplayTreeNode$(K)) {
    [_getValue](node) {
      _SplayTreeNodeOfK()._check(node);
      return node;
    }
  }
  (_SplayTreeNodeIterator.new = function(tree) {
    _SplayTreeNodeIterator.__proto__.new.call(this, tree);
  }).prototype = _SplayTreeNodeIterator.prototype;
  (_SplayTreeNodeIterator.startAt = function(tree, startKey) {
    _SplayTreeNodeIterator.__proto__.startAt.call(this, tree, startKey);
  }).prototype = _SplayTreeNodeIterator.prototype;
  dart.addTypeTests(_SplayTreeNodeIterator);
  _SplayTreeNodeIterator.prototype[_is__SplayTreeNodeIterator_default] = true;
  dart.setMethodSignature(_SplayTreeNodeIterator, () => ({
    __proto__: dart.getMethods(_SplayTreeNodeIterator.__proto__),
    [_getValue]: dart.fnType(collection._SplayTreeNode$(K), [core.Object])
  }));
  return _SplayTreeNodeIterator;
});
collection._SplayTreeNodeIterator = collection._SplayTreeNodeIterator$();
dart.addTypeTests(collection._SplayTreeNodeIterator, _is__SplayTreeNodeIterator_default);
const _clone$ = Symbol('_clone');
const _is_SplayTreeSet_default = Symbol('_is_SplayTreeSet_default');
collection.SplayTreeSet$ = dart.generic(E => {
  let _SplayTreeNodeOfE = () => (_SplayTreeNodeOfE = dart.constFn(collection._SplayTreeNode$(E)))();
  let SplayTreeSetOfE = () => (SplayTreeSetOfE = dart.constFn(collection.SplayTreeSet$(E)))();
  let _SplayTreeKeyIteratorOfE = () => (_SplayTreeKeyIteratorOfE = dart.constFn(collection._SplayTreeKeyIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let SetOfE = () => (SetOfE = dart.constFn(core.Set$(E)))();
  let EAndEToint = () => (EAndEToint = dart.constFn(dart.fnType(core.int, [E, E])))();
  const _SplayTree_IterableMixin$ = class _SplayTree_IterableMixin extends collection._SplayTree$(E, collection._SplayTreeNode$(E)) {};
  (_SplayTree_IterableMixin$.new = function() {
    _SplayTree_IterableMixin$.__proto__.new.call(this);
  }).prototype = _SplayTree_IterableMixin$.prototype;
  dart.applyMixin(_SplayTree_IterableMixin$, collection.IterableMixin$(E));
  const _SplayTree_SetMixin$ = class _SplayTree_SetMixin extends _SplayTree_IterableMixin$ {};
  (_SplayTree_SetMixin$.new = function() {
    _SplayTree_SetMixin$.__proto__.new.call(this);
  }).prototype = _SplayTree_SetMixin$.prototype;
  dart.applyMixin(_SplayTree_SetMixin$, collection.SetMixin$(E));
  class SplayTreeSet extends _SplayTree_SetMixin$ {
    get [_root$]() {
      return this[_root];
    }
    set [_root$](value) {
      this[_root] = _SplayTreeNodeOfE()._check(value);
    }
    static from(elements, compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      let result = new (SplayTreeSetOfE()).new(compare, isValidKey);
      for (let element of elements) {
        let e = E._check(element);
        result.add(e);
      }
      return result;
    }
    static of(elements, compare, isValidKey) {
      if (compare === void 0) compare = null;
      if (isValidKey === void 0) isValidKey = null;
      let _ = new (SplayTreeSetOfE()).new(compare, isValidKey);
      _.addAll(elements);
      return _;
    }
    [_newSet](T) {
      return new (collection.SplayTreeSet$(T)).new(dart.fn((a, b) => this[_comparator](E.as(a), E.as(b)), dart.fnType(core.int, [T, T])), this[_validKey$]);
    }
    cast(R) {
      return core.Set.castFrom(E, R, this, {newSet: dart.bind(this, _newSet)});
    }
    [_compare](e1, e2) {
      E._check(e1);
      E._check(e2);
      return this[_comparator](e1, e2);
    }
    get iterator() {
      return new (_SplayTreeKeyIteratorOfE()).new(this);
    }
    get length() {
      return this[_count$];
    }
    get isEmpty() {
      return this[_root$] == null;
    }
    get isNotEmpty() {
      return this[_root$] != null;
    }
    get first() {
      if (this[_count$] === 0) dart.throw(_internal.IterableElementError.noElement());
      return this[_first$].key;
    }
    get last() {
      if (this[_count$] === 0) dart.throw(_internal.IterableElementError.noElement());
      return this[_last].key;
    }
    get single() {
      if (this[_count$] === 0) dart.throw(_internal.IterableElementError.noElement());
      if (dart.notNull(this[_count$]) > 1) dart.throw(_internal.IterableElementError.tooMany());
      return this[_root$].key;
    }
    contains(element) {
      return dart.test(this[_validKey$](element)) && this[_splay](E._check(element)) === 0;
    }
    add(element) {
      E._check(element);
      let compare = this[_splay](element);
      if (compare === 0) return false;
      this[_addNewRoot](new (_SplayTreeNodeOfE()).new(element), compare);
      return true;
    }
    remove(object) {
      if (!dart.test(this[_validKey$](object))) return false;
      return this[_remove](E._check(object)) != null;
    }
    addAll(elements) {
      IterableOfE()._check(elements);
      for (let element of elements) {
        let compare = this[_splay](element);
        if (compare !== 0) {
          this[_addNewRoot](new (_SplayTreeNodeOfE()).new(element), compare);
        }
      }
    }
    removeAll(elements) {
      for (let element of elements) {
        if (dart.test(this[_validKey$](element))) this[_remove](E._check(element));
      }
    }
    retainAll(elements) {
      let retainSet = new (SplayTreeSetOfE()).new(this[_comparator], this[_validKey$]);
      let modificationCount = this[_modificationCount];
      for (let object of elements) {
        if (modificationCount != this[_modificationCount]) {
          dart.throw(new core.ConcurrentModificationError.new(this));
        }
        if (dart.test(this[_validKey$](object)) && this[_splay](E._check(object)) === 0) {
          retainSet.add(this[_root$].key);
        }
      }
      if (retainSet[_count$] != this[_count$]) {
        this[_root$] = retainSet[_root$];
        this[_count$] = retainSet[_count$];
        this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
      }
    }
    lookup(object) {
      if (!dart.test(this[_validKey$](object))) return null;
      let comp = this[_splay](E._check(object));
      if (comp !== 0) return null;
      return this[_root$].key;
    }
    intersection(other) {
      let result = new (SplayTreeSetOfE()).new(this[_comparator], this[_validKey$]);
      for (let element of this) {
        if (dart.test(other.contains(element))) result.add(element);
      }
      return result;
    }
    difference(other) {
      let result = new (SplayTreeSetOfE()).new(this[_comparator], this[_validKey$]);
      for (let element of this) {
        if (!dart.test(other.contains(element))) result.add(element);
      }
      return result;
    }
    union(other) {
      SetOfE()._check(other);
      let _ = this[_clone$]();
      _.addAll(other);
      return _;
    }
    [_clone$]() {
      let set = new (SplayTreeSetOfE()).new(this[_comparator], this[_validKey$]);
      set[_count$] = this[_count$];
      set[_root$] = this[_copyNode](this[_root$]);
      return set;
    }
    [_copyNode](node) {
      _SplayTreeNodeOfE()._check(node);
      if (node == null) return null;
      let _ = new (_SplayTreeNodeOfE()).new(node.key);
      _.left = this[_copyNode](node.left);
      _.right = this[_copyNode](node.right);
      return _;
    }
    clear() {
      this[_clear]();
    }
    toSet() {
      return this[_clone$]();
    }
    toString() {
      return collection.IterableBase.iterableToFullString(this, "{", "}");
    }
  }
  (SplayTreeSet.new = function(compare, isValidKey) {
    if (compare === void 0) compare = null;
    if (isValidKey === void 0) isValidKey = null;
    this[_root] = null;
    this[_dummy] = new (_SplayTreeNodeOfE()).new(null);
    let l = compare;
    this[_comparator] = l != null ? l : collection._defaultCompare(E);
    let l$ = isValidKey;
    this[_validKey$] = l$ != null ? l$ : dart.fn(v => E.is(v), dynamicTobool());
    SplayTreeSet.__proto__.new.call(this);
  }).prototype = SplayTreeSet.prototype;
  dart.addTypeTests(SplayTreeSet);
  SplayTreeSet.prototype[_is_SplayTreeSet_default] = true;
  const _root = Symbol("SplayTreeSet._root");
  dart.setMethodSignature(SplayTreeSet, () => ({
    __proto__: dart.getMethods(SplayTreeSet.__proto__),
    [_newSet]: dart.gFnType(T => [core.Set$(T), []]),
    [_compare]: dart.fnType(core.int, [core.Object, core.Object]),
    contains: dart.fnType(core.bool, [core.Object]),
    [$contains]: dart.fnType(core.bool, [core.Object]),
    add: dart.fnType(core.bool, [core.Object]),
    remove: dart.fnType(core.bool, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    lookup: dart.fnType(E, [core.Object]),
    union: dart.fnType(core.Set$(E), [core.Object]),
    [_clone$]: dart.fnType(collection.SplayTreeSet$(E), []),
    [_copyNode]: dart.fnType(collection._SplayTreeNode$(E), [core.Object]),
    toSet: dart.fnType(core.Set$(E), []),
    [$toSet]: dart.fnType(core.Set$(E), [])
  }));
  dart.setGetterSignature(SplayTreeSet, () => ({
    __proto__: dart.getGetters(SplayTreeSet.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(SplayTreeSet, () => ({
    __proto__: dart.getFields(SplayTreeSet.__proto__),
    [_root$]: dart.fieldType(_SplayTreeNodeOfE()),
    [_dummy]: dart.finalFieldType(_SplayTreeNodeOfE()),
    [_comparator]: dart.fieldType(EAndEToint()),
    [_validKey$]: dart.fieldType(dynamicTobool())
  }));
  dart.defineExtensionMethods(SplayTreeSet, ['cast', 'contains', 'toSet', 'toString']);
  dart.defineExtensionAccessors(SplayTreeSet, [
    'iterator',
    'length',
    'isEmpty',
    'isNotEmpty',
    'first',
    'last',
    'single'
  ]);
  return SplayTreeSet;
});
collection.SplayTreeSet = collection.SplayTreeSet$();
dart.addTypeTests(collection.SplayTreeSet, _is_SplayTreeSet_default);
const _processed = Symbol('_processed');
const _computeKeys = Symbol('_computeKeys');
const _original = Symbol('_original');
convert._convertJsonToDart = function(json, reviver) {
  if (!(reviver != null)) dart.assertFailed();
  function walk(e) {
    if (e == null || typeof e != "object") {
      return e;
    }
    if (Object.getPrototypeOf(e) === Array.prototype) {
      for (let i = 0; i < e.length; i++) {
        let item = e[i];
        e[i] = reviver(i, walk(item));
      }
      return e;
    }
    let map = new convert._JsonMap.new(e);
    let processed = map[_processed];
    let keys = map[_computeKeys]();
    for (let i = 0; i < dart.notNull(keys[$length]); i++) {
      let key = keys[$_get](i);
      let revived = reviver(key, walk(e[key]));
      processed[key] = revived;
    }
    map[_original] = processed;
    return map;
  }
  dart.fn(walk, dynamicTodynamic());
  return reviver(null, walk(json));
};
convert._convertJsonToDartLazy = function(object) {
  if (object == null) return null;
  if (typeof object != "object") {
    return object;
  }
  if (Object.getPrototypeOf(object) !== Array.prototype) {
    return new convert._JsonMap.new(object);
  }
  for (let i = 0; i < object.length; i++) {
    let item = object[i];
    object[i] = convert._convertJsonToDartLazy(item);
  }
  return object;
};
const _data = Symbol('_data');
const _isUpgraded = Symbol('_isUpgraded');
const _upgradedMap = Symbol('_upgradedMap');
const _process$ = Symbol('_process');
const _upgrade = Symbol('_upgrade');
core.String = class String extends core.Object {
  static fromCharCodes(charCodes, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    if (_interceptors.JSArray.is(charCodes)) {
      return core.String._stringFromJSArray(charCodes, start, end);
    }
    if (_native_typed_data.NativeUint8List.is(charCodes)) {
      return core.String._stringFromUint8List(charCodes, start, end);
    }
    return core.String._stringFromIterable(charCodes, start, end);
  }
  static fromCharCode(charCode) {
    return _js_helper.Primitives.stringFromCharCode(charCode);
  }
  static fromEnvironment(name, opts) {
    let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null;
    dart.throw(new core.UnsupportedError.new("String.fromEnvironment can only be used as a const constructor"));
  }
  static _stringFromJSArray(list, start, endOrNull) {
    let len = core.int._check(dart.dload(list, 'length'));
    let end = core.RangeError.checkValidRange(start, endOrNull, len);
    if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(len)) {
      list = dart.dsend(list, 'sublist', [start, end]);
    }
    return _js_helper.Primitives.stringFromCharCodes(JSArrayOfint()._check(list));
  }
  static _stringFromUint8List(charCodes, start, endOrNull) {
    let len = charCodes[$length];
    let end = core.RangeError.checkValidRange(start, endOrNull, len);
    return _js_helper.Primitives.stringFromNativeUint8List(charCodes, start, end);
  }
  static _stringFromIterable(charCodes, start, end) {
    if (dart.notNull(start) < 0) dart.throw(new core.RangeError.range(start, 0, charCodes[$length]));
    if (end != null && dart.notNull(end) < dart.notNull(start)) {
      dart.throw(new core.RangeError.range(end, start, charCodes[$length]));
    }
    let it = charCodes[$iterator];
    for (let i = 0; i < dart.notNull(start); i++) {
      if (!dart.test(it.moveNext())) {
        dart.throw(new core.RangeError.range(start, 0, i));
      }
    }
    let list = JSArrayOfint().of([]);
    if (end == null) {
      while (dart.test(it.moveNext()))
        list[$add](it.current);
    } else {
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        if (!dart.test(it.moveNext())) {
          dart.throw(new core.RangeError.range(end, start, i));
        }
        list[$add](it.current);
      }
    }
    return _js_helper.Primitives.stringFromCharCodes(JSArrayOfint()._check(list));
  }
};
(core.String[dart.mixinNew] = function() {
}).prototype = core.String.prototype;
core.String.is = function is_String(o) {
  return typeof o == "string";
};
core.String.as = function as_String(o) {
  if (typeof o == "string" || o == null) return o;
  return dart.as(o, core.String, false);
};
core.String._check = function check_String(o) {
  if (typeof o == "string" || o == null) return o;
  return dart.as(o, core.String, true);
};
core.String[dart.implements] = () => [ComparableOfString(), core.Pattern];
convert._JsonMap = class _JsonMap extends collection.MapBase$(core.String, dart.dynamic) {
  _get(key) {
    if (dart.test(this[_isUpgraded])) {
      return this[_upgradedMap][$_get](key);
    } else if (!(typeof key == 'string')) {
      return null;
    } else {
      let result = convert._JsonMap._getProperty(this[_processed], core.String._check(key));
      if (dart.test(convert._JsonMap._isUnprocessed(result))) result = this[_process$](core.String._check(key));
      return result;
    }
  }
  get length() {
    return dart.test(this[_isUpgraded]) ? this[_upgradedMap][$length] : this[_computeKeys]()[$length];
  }
  get isEmpty() {
    return this.length === 0;
  }
  get isNotEmpty() {
    return dart.notNull(this.length) > 0;
  }
  get keys() {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap][$keys];
    return new convert._JsonMapKeyIterable.new(this);
  }
  get values() {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap][$values];
    return MappedIterableOfString$dynamic().new(this[_computeKeys](), dart.fn(each => this._get(each), dynamicTodynamic()));
  }
  _set(key, value) {
    core.String._check(key);
    if (dart.test(this[_isUpgraded])) {
      this[_upgradedMap][$_set](key, value);
    } else if (dart.test(this.containsKey(key))) {
      let processed = this[_processed];
      convert._JsonMap._setProperty(processed, key, value);
      let original = this[_original];
      if (!core.identical(original, processed)) {
        convert._JsonMap._setProperty(original, key, null);
      }
    } else {
      this[_upgrade]()[$_set](key, value);
    }
    return value;
  }
  addAll(other) {
    MapOfString$dynamic()._check(other);
    other[$forEach](dart.fn((key, value) => {
      this._set(key, value);
    }, StringAnddynamicToNull()));
  }
  containsValue(value) {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap][$containsValue](value);
    let keys = this[_computeKeys]();
    for (let i = 0; i < dart.notNull(keys[$length]); i++) {
      let key = keys[$_get](i);
      if (dart.equals(this._get(key), value)) return true;
    }
    return false;
  }
  containsKey(key) {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap][$containsKey](key);
    if (!(typeof key == 'string')) return false;
    return convert._JsonMap._hasProperty(this[_original], core.String._check(key));
  }
  putIfAbsent(key, ifAbsent) {
    core.String._check(key);
    if (dart.test(this.containsKey(key))) return this._get(key);
    let value = ifAbsent();
    this._set(key, value);
    return value;
  }
  remove(key) {
    if (!dart.test(this[_isUpgraded]) && !dart.test(this.containsKey(key))) return null;
    return this[_upgrade]()[$remove](key);
  }
  clear() {
    if (dart.test(this[_isUpgraded])) {
      this[_upgradedMap][$clear]();
    } else {
      if (this[_data] != null) {
        dart.dsend(this[_data], 'clear', []);
      }
      this[_original] = this[_processed] = null;
      this[_data] = new _js_helper.LinkedMap.new();
    }
  }
  forEach(f) {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap][$forEach](f);
    let keys = this[_computeKeys]();
    for (let i = 0; i < dart.notNull(keys[$length]); i++) {
      let key = keys[$_get](i);
      let value = convert._JsonMap._getProperty(this[_processed], key);
      if (dart.test(convert._JsonMap._isUnprocessed(value))) {
        value = convert._convertJsonToDartLazy(convert._JsonMap._getProperty(this[_original], key));
        convert._JsonMap._setProperty(this[_processed], key, value);
      }
      f(key, value);
      if (!core.identical(keys, this[_data])) {
        dart.throw(new core.ConcurrentModificationError.new(this));
      }
    }
  }
  get [_isUpgraded]() {
    return this[_processed] == null;
  }
  get [_upgradedMap]() {
    if (!dart.test(this[_isUpgraded])) dart.assertFailed();
    return this[_data];
  }
  [_computeKeys]() {
    if (!!dart.test(this[_isUpgraded])) dart.assertFailed();
    let keys = core.List._check(this[_data]);
    if (keys == null) {
      keys = this[_data] = convert._JsonMap._getPropertyNames(this[_original]);
    }
    return keys;
  }
  [_upgrade]() {
    if (dart.test(this[_isUpgraded])) return this[_upgradedMap];
    let result = new (IdentityMapOfString$dynamic()).new();
    let keys = this[_computeKeys]();
    for (let i = 0; i < dart.notNull(keys[$length]); i++) {
      let key = keys[$_get](i);
      result[$_set](key, this._get(key));
    }
    if (dart.test(keys[$isEmpty])) {
      keys[$add](null);
    } else {
      keys[$clear]();
    }
    this[_original] = this[_processed] = null;
    this[_data] = result;
    if (!dart.test(this[_isUpgraded])) dart.assertFailed();
    return result;
  }
  [_process$](key) {
    if (!dart.test(convert._JsonMap._hasProperty(this[_original], key))) return null;
    let result = convert._convertJsonToDartLazy(convert._JsonMap._getProperty(this[_original], key));
    return convert._JsonMap._setProperty(this[_processed], key, result);
  }
  static _hasProperty(object, key) {
    return Object.prototype.hasOwnProperty.call(object, key);
  }
  static _getProperty(object, key) {
    return object[key];
  }
  static _setProperty(object, key, value) {
    return object[key] = value;
  }
  static _getPropertyNames(object) {
    return Object.keys(object);
  }
  static _isUnprocessed(object) {
    return typeof object == "undefined";
  }
  static _newJavaScriptObject() {
    return Object.create(null);
  }
};
(convert._JsonMap.new = function(original) {
  this[_processed] = convert._JsonMap._newJavaScriptObject();
  this[_data] = null;
  this[_original] = original;
}).prototype = convert._JsonMap.prototype;
dart.addTypeTests(convert._JsonMap);
dart.setMethodSignature(convert._JsonMap, () => ({
  __proto__: dart.getMethods(convert._JsonMap.__proto__),
  _get: dart.fnType(dart.dynamic, [core.Object]),
  [$_get]: dart.fnType(dart.dynamic, [core.Object]),
  _set: dart.fnType(dart.void, [core.Object, dart.dynamic]),
  [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
  addAll: dart.fnType(dart.void, [core.Object]),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  containsValue: dart.fnType(core.bool, [core.Object]),
  [$containsValue]: dart.fnType(core.bool, [core.Object]),
  containsKey: dart.fnType(core.bool, [core.Object]),
  [$containsKey]: dart.fnType(core.bool, [core.Object]),
  putIfAbsent: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
  [$putIfAbsent]: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
  remove: dart.fnType(dart.dynamic, [core.Object]),
  [$remove]: dart.fnType(dart.dynamic, [core.Object]),
  clear: dart.fnType(dart.void, []),
  [$clear]: dart.fnType(dart.void, []),
  forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
  [_computeKeys]: dart.fnType(core.List$(core.String), []),
  [_upgrade]: dart.fnType(core.Map$(core.String, dart.dynamic), []),
  [_process$]: dart.fnType(dart.dynamic, [core.String])
}));
dart.setGetterSignature(convert._JsonMap, () => ({
  __proto__: dart.getGetters(convert._JsonMap.__proto__),
  length: core.int,
  [$length]: core.int,
  isEmpty: core.bool,
  [$isEmpty]: core.bool,
  isNotEmpty: core.bool,
  [$isNotEmpty]: core.bool,
  keys: core.Iterable$(core.String),
  [$keys]: core.Iterable$(core.String),
  values: core.Iterable,
  [$values]: core.Iterable,
  [_isUpgraded]: core.bool,
  [_upgradedMap]: core.Map$(core.String, dart.dynamic)
}));
dart.setFieldSignature(convert._JsonMap, () => ({
  __proto__: dart.getFields(convert._JsonMap.__proto__),
  [_original]: dart.fieldType(dart.dynamic),
  [_processed]: dart.fieldType(dart.dynamic),
  [_data]: dart.fieldType(dart.dynamic)
}));
dart.defineExtensionMethods(convert._JsonMap, [
  '_get',
  '_set',
  'addAll',
  'containsValue',
  'containsKey',
  'putIfAbsent',
  'remove',
  'clear',
  'forEach'
]);
dart.defineExtensionAccessors(convert._JsonMap, [
  'length',
  'isEmpty',
  'isNotEmpty',
  'keys',
  'values'
]);
const _parent = Symbol('_parent');
convert._JsonMapKeyIterable = class _JsonMapKeyIterable extends _internal.ListIterable$(core.String) {
  get length() {
    return this[_parent].length;
  }
  elementAt(index) {
    return dart.test(this[_parent][_isUpgraded]) ? this[_parent].keys[$elementAt](index) : this[_parent][_computeKeys]()[$_get](index);
  }
  get iterator() {
    return dart.test(this[_parent][_isUpgraded]) ? this[_parent].keys[$iterator] : this[_parent][_computeKeys]()[$iterator];
  }
  contains(key) {
    return this[_parent].containsKey(key);
  }
};
(convert._JsonMapKeyIterable.new = function(parent) {
  this[_parent] = parent;
  convert._JsonMapKeyIterable.__proto__.new.call(this);
}).prototype = convert._JsonMapKeyIterable.prototype;
dart.addTypeTests(convert._JsonMapKeyIterable);
dart.setMethodSignature(convert._JsonMapKeyIterable, () => ({
  __proto__: dart.getMethods(convert._JsonMapKeyIterable.__proto__),
  elementAt: dart.fnType(core.String, [core.int]),
  [$elementAt]: dart.fnType(core.String, [core.int]),
  contains: dart.fnType(core.bool, [core.Object]),
  [$contains]: dart.fnType(core.bool, [core.Object])
}));
dart.setGetterSignature(convert._JsonMapKeyIterable, () => ({
  __proto__: dart.getGetters(convert._JsonMapKeyIterable.__proto__),
  length: core.int,
  [$length]: core.int,
  iterator: core.Iterator$(core.String),
  [$iterator]: core.Iterator$(core.String)
}));
dart.setFieldSignature(convert._JsonMapKeyIterable, () => ({
  __proto__: dart.getFields(convert._JsonMapKeyIterable.__proto__),
  [_parent]: dart.finalFieldType(convert._JsonMap)
}));
dart.defineExtensionMethods(convert._JsonMapKeyIterable, ['elementAt', 'contains']);
dart.defineExtensionAccessors(convert._JsonMapKeyIterable, ['length', 'iterator']);
const _reviver = Symbol('_reviver');
const _sink$ = Symbol('_sink');
const _stringSink = Symbol('_stringSink');
convert.StringConversionSinkMixin = class StringConversionSinkMixin extends core.Object {
  add(str) {
    core.String._check(str);
    this.addSlice(str, 0, str.length, false);
  }
  asUtf8Sink(allowMalformed) {
    return new convert._Utf8ConversionSink.new(this, allowMalformed);
  }
  asStringSink() {
    return new convert._StringConversionSinkAsStringSinkAdapter.new(this);
  }
};
(convert.StringConversionSinkMixin.new = function() {
}).prototype = convert.StringConversionSinkMixin.prototype;
dart.addTypeTests(convert.StringConversionSinkMixin);
convert.StringConversionSinkMixin[dart.implements] = () => [convert.StringConversionSink];
dart.setMethodSignature(convert.StringConversionSinkMixin, () => ({
  __proto__: dart.getMethods(convert.StringConversionSinkMixin.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  asUtf8Sink: dart.fnType(convert.ByteConversionSink, [core.bool]),
  asStringSink: dart.fnType(convert.ClosableStringSink, [])
}));
convert.StringConversionSinkBase = class StringConversionSinkBase extends convert.StringConversionSinkMixin {};
(convert.StringConversionSinkBase.new = function() {
}).prototype = convert.StringConversionSinkBase.prototype;
dart.addTypeTests(convert.StringConversionSinkBase);
const _is__StringSinkConversionSink_default = Symbol('_is__StringSinkConversionSink_default');
convert._StringSinkConversionSink$ = dart.generic(TStringSink => {
  class _StringSinkConversionSink extends convert.StringConversionSinkBase {
    close() {}
    addSlice(str, start, end, isLast) {
      if (start !== 0 || end !== str.length) {
        for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
          this[_stringSink].writeCharCode(str[$codeUnitAt](i));
        }
      } else {
        this[_stringSink].write(str);
      }
      if (dart.test(isLast)) this.close();
    }
    add(str) {
      core.String._check(str);
      this[_stringSink].write(str);
    }
    asUtf8Sink(allowMalformed) {
      return new convert._Utf8StringSinkAdapter.new(this, this[_stringSink], allowMalformed);
    }
    asStringSink() {
      return convert.ClosableStringSink.fromStringSink(this[_stringSink], dart.bind(this, 'close'));
    }
  }
  (_StringSinkConversionSink.new = function(stringSink) {
    this[_stringSink] = stringSink;
  }).prototype = _StringSinkConversionSink.prototype;
  dart.addTypeTests(_StringSinkConversionSink);
  _StringSinkConversionSink.prototype[_is__StringSinkConversionSink_default] = true;
  dart.setMethodSignature(_StringSinkConversionSink, () => ({
    __proto__: dart.getMethods(_StringSinkConversionSink.__proto__),
    close: dart.fnType(dart.void, []),
    addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool]),
    add: dart.fnType(dart.void, [core.Object]),
    asUtf8Sink: dart.fnType(convert.ByteConversionSink, [core.bool]),
    asStringSink: dart.fnType(convert.ClosableStringSink, [])
  }));
  dart.setFieldSignature(_StringSinkConversionSink, () => ({
    __proto__: dart.getFields(_StringSinkConversionSink.__proto__),
    [_stringSink]: dart.fieldType(TStringSink)
  }));
  return _StringSinkConversionSink;
});
convert._StringSinkConversionSink = convert._StringSinkConversionSink$();
dart.addTypeTests(convert._StringSinkConversionSink, _is__StringSinkConversionSink_default);
core.StringSink = class StringSink extends core.Object {};
(core.StringSink.new = function() {
}).prototype = core.StringSink.prototype;
dart.addTypeTests(core.StringSink);
convert._JsonDecoderSink = class _JsonDecoderSink extends convert._StringSinkConversionSink$(core.StringSink) {
  close() {
    super.close();
    let buffer = core.StringBuffer._check(this[_stringSink]);
    let accumulated = dart.toString(buffer);
    buffer.clear();
    let decoded = convert._parseJson(accumulated, this[_reviver]);
    this[_sink$].add(decoded);
    this[_sink$].close();
  }
};
(convert._JsonDecoderSink.new = function(reviver, sink) {
  this[_reviver] = reviver;
  this[_sink$] = sink;
  convert._JsonDecoderSink.__proto__.new.call(this, new core.StringBuffer.new(""));
}).prototype = convert._JsonDecoderSink.prototype;
dart.addTypeTests(convert._JsonDecoderSink);
dart.setMethodSignature(convert._JsonDecoderSink, () => ({
  __proto__: dart.getMethods(convert._JsonDecoderSink.__proto__),
  close: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(convert._JsonDecoderSink, () => ({
  __proto__: dart.getFields(convert._JsonDecoderSink.__proto__),
  [_reviver]: dart.finalFieldType(ObjectAndObjectTodynamic()),
  [_sink$]: dart.finalFieldType(SinkOfObject())
}));
dart.defineLazy(convert, {
  /*convert.ascii*/get ascii() {
    return dart.const(new convert.AsciiCodec.new());
  },
  /*convert._asciiMask*/get _asciiMask() {
    return 127;
  }
});
const _allowInvalid = Symbol('_allowInvalid');
let const$23;
let const$24;
let const$25;
let const$26;
let const$27;
const _is_Codec_default = Symbol('_is_Codec_default');
convert.Codec$ = dart.generic((S, T) => {
  let _InvertedCodecOfT$S = () => (_InvertedCodecOfT$S = dart.constFn(convert._InvertedCodec$(T, S)))();
  class Codec extends core.Object {
    encode(input) {
      S._check(input);
      return this.encoder.convert(input);
    }
    decode(encoded) {
      T._check(encoded);
      return this.decoder.convert(encoded);
    }
    fuse(R, other) {
      convert.Codec$(T, R)._check(other);
      return new (convert._FusedCodec$(S, T, R)).new(this, other);
    }
    get inverted() {
      return new (_InvertedCodecOfT$S()).new(this);
    }
  }
  (Codec.new = function() {
  }).prototype = Codec.prototype;
  dart.addTypeTests(Codec);
  Codec.prototype[_is_Codec_default] = true;
  dart.setMethodSignature(Codec, () => ({
    __proto__: dart.getMethods(Codec.__proto__),
    encode: dart.fnType(T, [core.Object]),
    decode: dart.fnType(S, [core.Object]),
    fuse: dart.gFnType(R => [convert.Codec$(S, R), [core.Object]])
  }));
  dart.setGetterSignature(Codec, () => ({
    __proto__: dart.getGetters(Codec.__proto__),
    inverted: convert.Codec$(T, S)
  }));
  return Codec;
});
convert.Codec = convert.Codec$();
dart.addTypeTests(convert.Codec, _is_Codec_default);
core.List$ = dart.generic(E => {
  let JSArrayOfE = () => (JSArrayOfE = dart.constFn(_interceptors.JSArray$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  let EfficientLengthIterableOfE = () => (EfficientLengthIterableOfE = dart.constFn(_internal.EfficientLengthIterable$(E)))();
  class List extends core.Object {
    static new(_length) {
      let list = null;
      if (_length === void 0) {
        list = [];
      } else {
        let length = _length;
        if (_length == null || length < 0) {
          dart.throw(new core.ArgumentError.new("Length must be a non-negative integer: " + dart.str(_length)));
        }
        list = new Array(length);
        list.fill(null);
        _interceptors.JSArray.markFixedList(list);
      }
      return JSArrayOfE().of(list);
    }
    static filled(length, fill, opts) {
      if (length == null) dart.argumentError(length);
      let growable = opts && 'growable' in opts ? opts.growable : false;
      let list = JSArrayOfE().of(new Array(length));
      list.fill(fill);
      if (!dart.test(growable)) _interceptors.JSArray.markFixedList(list);
      return list;
    }
    static from(elements, opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let list = JSArrayOfE().of([]);
      if (IterableOfE().is(elements)) {
        for (let e of elements) {
          list[$add](e);
        }
      } else {
        for (let e of elements) {
          list[$add](E.as(e));
        }
      }
      if (!dart.test(growable)) _interceptors.JSArray.markFixedList(list);
      return list;
    }
    static of(elements, opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      return ListOfE().from(elements, {growable: growable});
    }
    static generate(length, generator, opts) {
      let growable = opts && 'growable' in opts ? opts.growable : true;
      let result = null;
      if (dart.test(growable)) {
        result = JSArrayOfE().of([]);
        result[$length] = length;
      } else {
        result = ListOfE().new(length);
      }
      for (let i = 0; i < dart.notNull(length); i++) {
        result[$_set](i, generator(i));
      }
      return result;
    }
    static unmodifiable(elements) {
      let list = ListOfE().from(elements);
      _interceptors.JSArray.markUnmodifiableList(list);
      return list;
    }
    static castFrom(S, T, source) {
      return new (_internal.CastList$(S, T)).new(source);
    }
    static copyRange(T, target, at, source, start, end) {
      if (start === void 0) start = null;
      if (end === void 0) end = null;
      let t = start;
      t == null ? start = 0 : t;
      end = core.RangeError.checkValidRange(start, end, source[$length]);
      let length = dart.notNull(end) - dart.notNull(start);
      if (dart.notNull(target[$length]) < dart.notNull(at) + length) {
        dart.throw(new core.ArgumentError.value(target, "target", "Not big enough to hold " + dart.str(length) + " elements at position " + dart.str(at)));
      }
      if (!(source == target) || dart.notNull(start) >= dart.notNull(at)) {
        for (let i = 0; i < length; i++) {
          target[$_set](dart.notNull(at) + i, source[$_get](dart.notNull(start) + i));
        }
      } else {
        for (let i = length; --i >= 0;) {
          target[$_set](dart.notNull(at) + i, source[$_get](dart.notNull(start) + i));
        }
      }
    }
    static writeIterable(T, target, at, source) {
      core.RangeError.checkValueInInterval(at, 0, target[$length], "at");
      let index = at;
      let targetLength = target[$length];
      for (let element of source) {
        if (index == targetLength) {
          dart.throw(new core.IndexError.new(targetLength, target));
        }
        target[$_set](index, element);
        index = dart.notNull(index) + 1;
      }
    }
  }
  (List[dart.mixinNew] = function() {
  }).prototype = List.prototype;
  dart.addTypeTests(List);
  List.prototype[dart.isList] = true;
  List[dart.implements] = () => [EfficientLengthIterableOfE()];
  return List;
});
core.List = core.List$();
dart.addTypeTests(core.List, dart.isList);
convert.Encoding = class Encoding extends convert.Codec$(core.String, core.List$(core.int)) {
  decodeStream(byteStream) {
    return FutureOfString()._check(FutureOfStringBuffer()._check(StreamOfString()._check(byteStream.transform(core.String, this.decoder)).fold(core.StringBuffer, new core.StringBuffer.new(), dart.fn((buffer, string) => {
      buffer.write(string);
      return buffer;
    }, StringBufferAndStringToStringBuffer()))).then(core.String, dart.fn(buffer => dart.toString(buffer), StringBufferToString())));
  }
  static getByName(name) {
    if (name == null) return null;
    name = name[$toLowerCase]();
    return convert.Encoding._nameToEncoding[$_get](name);
  }
};
(convert.Encoding.new = function() {
  convert.Encoding.__proto__.new.call(this);
}).prototype = convert.Encoding.prototype;
dart.addTypeTests(convert.Encoding);
dart.setMethodSignature(convert.Encoding, () => ({
  __proto__: dart.getMethods(convert.Encoding.__proto__),
  decodeStream: dart.fnType(async.Future$(core.String), [async.Stream$(core.List$(core.int))])
}));
dart.defineLazy(convert.Encoding, {
  /*convert.Encoding._nameToEncoding*/get _nameToEncoding() {
    return new (IdentityMapOfString$Encoding()).from(["iso_8859-1:1987", convert.latin1, "iso-ir-100", convert.latin1, "iso_8859-1", convert.latin1, "iso-8859-1", convert.latin1, "latin1", convert.latin1, "l1", convert.latin1, "ibm819", convert.latin1, "cp819", convert.latin1, "csisolatin1", convert.latin1, "iso-ir-6", convert.ascii, "ansi_x3.4-1968", convert.ascii, "ansi_x3.4-1986", convert.ascii, "iso_646.irv:1991", convert.ascii, "iso646-us", convert.ascii, "us-ascii", convert.ascii, "us", convert.ascii, "ibm367", convert.ascii, "cp367", convert.ascii, "csascii", convert.ascii, "ascii", convert.ascii, "csutf8", convert.utf8, "utf-8", convert.utf8]);
  }
});
convert.AsciiCodec = class AsciiCodec extends convert.Encoding {
  get name() {
    return "us-ascii";
  }
  encode(source) {
    core.String._check(source);
    return this.encoder.convert(source);
  }
  decode(bytes, opts) {
    ListOfint()._check(bytes);
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : null;
    let t = allowInvalid;
    t == null ? allowInvalid = this[_allowInvalid] : t;
    if (dart.test(allowInvalid)) {
      return (const$23 || (const$23 = dart.const(new convert.AsciiDecoder.new({allowInvalid: true})))).convert(bytes);
    } else {
      return (const$24 || (const$24 = dart.const(new convert.AsciiDecoder.new({allowInvalid: false})))).convert(bytes);
    }
  }
  get encoder() {
    return const$25 || (const$25 = dart.const(new convert.AsciiEncoder.new()));
  }
  get decoder() {
    return dart.test(this[_allowInvalid]) ? const$26 || (const$26 = dart.const(new convert.AsciiDecoder.new({allowInvalid: true}))) : const$27 || (const$27 = dart.const(new convert.AsciiDecoder.new({allowInvalid: false})));
  }
};
(convert.AsciiCodec.new = function(opts) {
  let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
  this[_allowInvalid] = allowInvalid;
  convert.AsciiCodec.__proto__.new.call(this);
}).prototype = convert.AsciiCodec.prototype;
dart.addTypeTests(convert.AsciiCodec);
dart.setMethodSignature(convert.AsciiCodec, () => ({
  __proto__: dart.getMethods(convert.AsciiCodec.__proto__),
  encode: dart.fnType(typed_data.Uint8List, [core.Object]),
  decode: dart.fnType(core.String, [core.Object], {allowInvalid: core.bool})
}));
dart.setGetterSignature(convert.AsciiCodec, () => ({
  __proto__: dart.getGetters(convert.AsciiCodec.__proto__),
  name: core.String,
  encoder: convert.AsciiEncoder,
  decoder: convert.AsciiDecoder
}));
dart.setFieldSignature(convert.AsciiCodec, () => ({
  __proto__: dart.getFields(convert.AsciiCodec.__proto__),
  [_allowInvalid]: dart.finalFieldType(core.bool)
}));
const _subsetMask = Symbol('_subsetMask');
convert._UnicodeSubsetEncoder = class _UnicodeSubsetEncoder extends convert.Converter$(core.String, core.List$(core.int)) {
  convert(string, start, end) {
    core.String._check(string);
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let stringLength = string.length;
    end = core.RangeError.checkValidRange(start, end, stringLength);
    let length = dart.notNull(end) - dart.notNull(start);
    let result = typed_data.Uint8List.new(length);
    for (let i = 0; i < length; i++) {
      let codeUnit = string[$codeUnitAt](dart.notNull(start) + i);
      if ((codeUnit & ~dart.notNull(this[_subsetMask])) !== 0) {
        dart.throw(new core.ArgumentError.value(string, "string", "Contains invalid characters."));
      }
      result[$_set](i, codeUnit);
    }
    return result;
  }
  startChunkedConversion(sink) {
    SinkOfListOfint()._check(sink);
    return new convert._UnicodeSubsetEncoderSink.new(this[_subsetMask], convert.ByteConversionSink.is(sink) ? sink : convert.ByteConversionSink.from(sink));
  }
  bind(stream) {
    StreamOfString()._check(stream);
    return super.bind(stream);
  }
};
(convert._UnicodeSubsetEncoder.new = function(subsetMask) {
  this[_subsetMask] = subsetMask;
  convert._UnicodeSubsetEncoder.__proto__.new.call(this);
}).prototype = convert._UnicodeSubsetEncoder.prototype;
dart.addTypeTests(convert._UnicodeSubsetEncoder);
dart.setMethodSignature(convert._UnicodeSubsetEncoder, () => ({
  __proto__: dart.getMethods(convert._UnicodeSubsetEncoder.__proto__),
  convert: dart.fnType(typed_data.Uint8List, [core.Object], [core.int, core.int]),
  startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Object]),
  bind: dart.fnType(async.Stream$(core.List$(core.int)), [core.Object])
}));
dart.setFieldSignature(convert._UnicodeSubsetEncoder, () => ({
  __proto__: dart.getFields(convert._UnicodeSubsetEncoder.__proto__),
  [_subsetMask]: dart.finalFieldType(core.int)
}));
convert.AsciiEncoder = class AsciiEncoder extends convert._UnicodeSubsetEncoder {};
(convert.AsciiEncoder.new = function() {
  convert.AsciiEncoder.__proto__.new.call(this, 127);
}).prototype = convert.AsciiEncoder.prototype;
dart.addTypeTests(convert.AsciiEncoder);
convert._UnicodeSubsetEncoderSink = class _UnicodeSubsetEncoderSink extends convert.StringConversionSinkBase {
  close() {
    this[_sink$].close();
  }
  addSlice(source, start, end, isLast) {
    core.RangeError.checkValidRange(start, end, source.length);
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let codeUnit = source[$codeUnitAt](i);
      if ((codeUnit & ~dart.notNull(this[_subsetMask])) !== 0) {
        dart.throw(new core.ArgumentError.new("Source contains invalid character with code point: " + dart.str(codeUnit) + "."));
      }
    }
    this[_sink$].add(source[$codeUnits][$sublist](start, end));
    if (dart.test(isLast)) {
      this.close();
    }
  }
};
(convert._UnicodeSubsetEncoderSink.new = function(subsetMask, sink) {
  this[_subsetMask] = subsetMask;
  this[_sink$] = sink;
}).prototype = convert._UnicodeSubsetEncoderSink.prototype;
dart.addTypeTests(convert._UnicodeSubsetEncoderSink);
dart.setMethodSignature(convert._UnicodeSubsetEncoderSink, () => ({
  __proto__: dart.getMethods(convert._UnicodeSubsetEncoderSink.__proto__),
  close: dart.fnType(dart.void, []),
  addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool])
}));
dart.setFieldSignature(convert._UnicodeSubsetEncoderSink, () => ({
  __proto__: dart.getFields(convert._UnicodeSubsetEncoderSink.__proto__),
  [_sink$]: dart.finalFieldType(convert.ByteConversionSink),
  [_subsetMask]: dart.finalFieldType(core.int)
}));
const _convertInvalid = Symbol('_convertInvalid');
convert._UnicodeSubsetDecoder = class _UnicodeSubsetDecoder extends convert.Converter$(core.List$(core.int), core.String) {
  convert(bytes, start, end) {
    ListOfint()._check(bytes);
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let byteCount = bytes[$length];
    core.RangeError.checkValidRange(start, end, byteCount);
    let t = end;
    t == null ? end = byteCount : t;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let byte = bytes[$_get](i);
      if ((dart.notNull(byte) & ~dart.notNull(this[_subsetMask])) !== 0) {
        if (!dart.test(this[_allowInvalid])) {
          dart.throw(new core.FormatException.new("Invalid value in input: " + dart.str(byte)));
        }
        return this[_convertInvalid](bytes, start, end);
      }
    }
    return core.String.fromCharCodes(bytes, start, end);
  }
  [_convertInvalid](bytes, start, end) {
    let buffer = new core.StringBuffer.new();
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let value = bytes[$_get](i);
      if ((dart.notNull(value) & ~dart.notNull(this[_subsetMask])) !== 0) value = 65533;
      buffer.writeCharCode(value);
    }
    return buffer.toString();
  }
  bind(stream) {
    StreamOfListOfint()._check(stream);
    return super.bind(stream);
  }
};
(convert._UnicodeSubsetDecoder.new = function(allowInvalid, subsetMask) {
  this[_allowInvalid] = allowInvalid;
  this[_subsetMask] = subsetMask;
  convert._UnicodeSubsetDecoder.__proto__.new.call(this);
}).prototype = convert._UnicodeSubsetDecoder.prototype;
dart.addTypeTests(convert._UnicodeSubsetDecoder);
dart.setMethodSignature(convert._UnicodeSubsetDecoder, () => ({
  __proto__: dart.getMethods(convert._UnicodeSubsetDecoder.__proto__),
  convert: dart.fnType(core.String, [core.Object], [core.int, core.int]),
  [_convertInvalid]: dart.fnType(core.String, [core.List$(core.int), core.int, core.int]),
  bind: dart.fnType(async.Stream$(core.String), [core.Object])
}));
dart.setFieldSignature(convert._UnicodeSubsetDecoder, () => ({
  __proto__: dart.getFields(convert._UnicodeSubsetDecoder.__proto__),
  [_allowInvalid]: dart.finalFieldType(core.bool),
  [_subsetMask]: dart.finalFieldType(core.int)
}));
convert.AsciiDecoder = class AsciiDecoder extends convert._UnicodeSubsetDecoder {
  startChunkedConversion(sink) {
    SinkOfString()._check(sink);
    let stringSink = null;
    if (convert.StringConversionSink.is(sink)) {
      stringSink = sink;
    } else {
      stringSink = convert.StringConversionSink.from(sink);
    }
    if (dart.test(this[_allowInvalid])) {
      return new convert._ErrorHandlingAsciiDecoderSink.new(stringSink.asUtf8Sink(false));
    } else {
      return new convert._SimpleAsciiDecoderSink.new(stringSink);
    }
  }
};
(convert.AsciiDecoder.new = function(opts) {
  let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
  convert.AsciiDecoder.__proto__.new.call(this, allowInvalid, 127);
}).prototype = convert.AsciiDecoder.prototype;
dart.addTypeTests(convert.AsciiDecoder);
dart.setMethodSignature(convert.AsciiDecoder, () => ({
  __proto__: dart.getMethods(convert.AsciiDecoder.__proto__),
  startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
}));
const _utf8Sink = Symbol('_utf8Sink');
let const$28;
const _is_ChunkedConversionSink_default = Symbol('_is_ChunkedConversionSink_default');
convert.ChunkedConversionSink$ = dart.generic(T => {
  let _SimpleCallbackSinkOfT = () => (_SimpleCallbackSinkOfT = dart.constFn(convert._SimpleCallbackSink$(T)))();
  let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
  class ChunkedConversionSink extends core.Object {
    static withCallback(callback) {
      return new (_SimpleCallbackSinkOfT()).new(callback);
    }
  }
  (ChunkedConversionSink.new = function() {
  }).prototype = ChunkedConversionSink.prototype;
  dart.addTypeTests(ChunkedConversionSink);
  ChunkedConversionSink.prototype[_is_ChunkedConversionSink_default] = true;
  ChunkedConversionSink[dart.implements] = () => [SinkOfT()];
  return ChunkedConversionSink;
});
convert.ChunkedConversionSink = convert.ChunkedConversionSink$();
dart.addTypeTests(convert.ChunkedConversionSink, _is_ChunkedConversionSink_default);
convert.ByteConversionSink = class ByteConversionSink extends convert.ChunkedConversionSink$(core.List$(core.int)) {
  static withCallback(callback) {
    return new convert._ByteCallbackSink.new(callback);
  }
  static from(sink) {
    return new convert._ByteAdapterSink.new(sink);
  }
};
(convert.ByteConversionSink.new = function() {
  convert.ByteConversionSink.__proto__.new.call(this);
}).prototype = convert.ByteConversionSink.prototype;
dart.addTypeTests(convert.ByteConversionSink);
convert.ByteConversionSinkBase = class ByteConversionSinkBase extends convert.ByteConversionSink {
  addSlice(chunk, start, end, isLast) {
    this.add(chunk[$sublist](start, end));
    if (dart.test(isLast)) this.close();
  }
};
(convert.ByteConversionSinkBase.new = function() {
  convert.ByteConversionSinkBase.__proto__.new.call(this);
}).prototype = convert.ByteConversionSinkBase.prototype;
dart.addTypeTests(convert.ByteConversionSinkBase);
dart.setMethodSignature(convert.ByteConversionSinkBase, () => ({
  __proto__: dart.getMethods(convert.ByteConversionSinkBase.__proto__),
  addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
}));
convert._ErrorHandlingAsciiDecoderSink = class _ErrorHandlingAsciiDecoderSink extends convert.ByteConversionSinkBase {
  close() {
    this[_utf8Sink].close();
  }
  add(source) {
    ListOfint()._check(source);
    this.addSlice(source, 0, source[$length], false);
  }
  addSlice(source, start, end, isLast) {
    core.RangeError.checkValidRange(start, end, source[$length]);
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      if ((dart.notNull(source[$_get](i)) & ~127) !== 0) {
        if (dart.notNull(i) > dart.notNull(start)) this[_utf8Sink].addSlice(source, start, i, false);
        this[_utf8Sink].add(const$28 || (const$28 = dart.constList([239, 191, 189], core.int)));
        start = dart.notNull(i) + 1;
      }
    }
    if (dart.notNull(start) < dart.notNull(end)) {
      this[_utf8Sink].addSlice(source, start, end, isLast);
    } else if (dart.test(isLast)) {
      this.close();
    }
  }
};
(convert._ErrorHandlingAsciiDecoderSink.new = function(utf8Sink) {
  this[_utf8Sink] = utf8Sink;
  convert._ErrorHandlingAsciiDecoderSink.__proto__.new.call(this);
}).prototype = convert._ErrorHandlingAsciiDecoderSink.prototype;
dart.addTypeTests(convert._ErrorHandlingAsciiDecoderSink);
dart.setMethodSignature(convert._ErrorHandlingAsciiDecoderSink, () => ({
  __proto__: dart.getMethods(convert._ErrorHandlingAsciiDecoderSink.__proto__),
  close: dart.fnType(dart.void, []),
  add: dart.fnType(dart.void, [core.Object])
}));
dart.setFieldSignature(convert._ErrorHandlingAsciiDecoderSink, () => ({
  __proto__: dart.getFields(convert._ErrorHandlingAsciiDecoderSink.__proto__),
  [_utf8Sink]: dart.fieldType(convert.ByteConversionSink)
}));
convert._SimpleAsciiDecoderSink = class _SimpleAsciiDecoderSink extends convert.ByteConversionSinkBase {
  close() {
    this[_sink$].close();
  }
  add(source) {
    ListOfint()._check(source);
    for (let i = 0; i < dart.notNull(source[$length]); i++) {
      if ((dart.notNull(source[$_get](i)) & ~127) !== 0) {
        dart.throw(new core.FormatException.new("Source contains non-ASCII bytes."));
      }
    }
    this[_sink$].add(core.String.fromCharCodes(source));
  }
  addSlice(source, start, end, isLast) {
    let length = source[$length];
    core.RangeError.checkValidRange(start, end, length);
    if (dart.notNull(start) < dart.notNull(end)) {
      if (start !== 0 || end != length) {
        source = source[$sublist](start, end);
      }
      this.add(source);
    }
    if (dart.test(isLast)) this.close();
  }
};
(convert._SimpleAsciiDecoderSink.new = function(sink) {
  this[_sink$] = sink;
  convert._SimpleAsciiDecoderSink.__proto__.new.call(this);
}).prototype = convert._SimpleAsciiDecoderSink.prototype;
dart.addTypeTests(convert._SimpleAsciiDecoderSink);
dart.setMethodSignature(convert._SimpleAsciiDecoderSink, () => ({
  __proto__: dart.getMethods(convert._SimpleAsciiDecoderSink.__proto__),
  close: dart.fnType(dart.void, []),
  add: dart.fnType(dart.void, [core.Object])
}));
dart.setFieldSignature(convert._SimpleAsciiDecoderSink, () => ({
  __proto__: dart.getFields(convert._SimpleAsciiDecoderSink.__proto__),
  [_sink$]: dart.fieldType(core.Sink)
}));
dart.defineLazy(convert, {
  /*convert.base64*/get base64() {
    return dart.const(new convert.Base64Codec.new());
  },
  /*convert.base64Url*/get base64Url() {
    return dart.const(new convert.Base64Codec.urlSafe());
  }
});
convert.base64Encode = function(bytes) {
  return convert.base64.encode(bytes);
};
convert.base64UrlEncode = function(bytes) {
  return convert.base64Url.encode(bytes);
};
convert.base64Decode = function(source) {
  return convert.base64.decode(source);
};
dart.defineLazy(convert, {
  /*convert._paddingChar*/get _paddingChar() {
    return 61;
  }
});
const _encoder = Symbol('_encoder');
let const$29;
let const$30;
let const$31;
convert.Base64Codec = class Base64Codec extends convert.Codec$(core.List$(core.int), core.String) {
  get encoder() {
    return this[_encoder];
  }
  get decoder() {
    return const$31 || (const$31 = dart.const(new convert.Base64Decoder.new()));
  }
  decode(encoded) {
    core.String._check(encoded);
    return this.decoder.convert(encoded);
  }
  normalize(source, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    end = core.RangeError.checkValidRange(start, end, source.length);
    let percent = 37;
    let equals = 61;
    let buffer = null;
    let sliceStart = start;
    let alphabet = convert._Base64Encoder._base64Alphabet;
    let inverseAlphabet = convert._Base64Decoder._inverseAlphabet;
    let firstPadding = -1;
    let firstPaddingSourceIndex = -1;
    let paddingCount = 0;
    for (let i = start; dart.notNull(i) < dart.notNull(end);) {
      let sliceEnd = i;
      let char = source[$codeUnitAt]((() => {
        let x = i;
        i = dart.notNull(x) + 1;
        return x;
      })());
      let originalChar = char;
      if (char === percent) {
        if (dart.notNull(i) + 2 <= dart.notNull(end)) {
          char = _internal.parseHexByte(source, i);
          i = dart.notNull(i) + 2;
          if (char === percent) char = -1;
        } else {
          char = -1;
        }
      }
      if (0 <= dart.notNull(char) && dart.notNull(char) <= 127) {
        let value = inverseAlphabet[$_get](char);
        if (dart.notNull(value) >= 0) {
          char = alphabet[$codeUnitAt](value);
          if (char == originalChar) continue;
        } else if (value === convert._Base64Decoder._padding) {
          if (firstPadding < 0) {
            firstPadding = (() => {
              let l = buffer == null ? null : buffer.length;
              return l != null ? l : 0;
            })() + (dart.notNull(sliceEnd) - dart.notNull(sliceStart));
            firstPaddingSourceIndex = sliceEnd;
          }
          paddingCount++;
          if (originalChar === equals) continue;
        }
        if (value !== convert._Base64Decoder._invalid) {
          let t = buffer;
          t == null ? buffer = new core.StringBuffer.new() : t;
          buffer.write(source[$substring](sliceStart, sliceEnd));
          buffer.writeCharCode(char);
          sliceStart = i;
          continue;
        }
      }
      dart.throw(new core.FormatException.new("Invalid base64 data", source, sliceEnd));
    }
    if (buffer != null) {
      buffer.write(source[$substring](sliceStart, end));
      if (firstPadding >= 0) {
        convert.Base64Codec._checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, buffer.length);
      } else {
        let endLength = (dart.notNull(buffer.length) - 1)[$modulo](4) + 1;
        if (endLength === 1) {
          dart.throw(new core.FormatException.new("Invalid base64 encoding length ", source, end));
        }
        while (endLength < 4) {
          buffer.write("=");
          endLength++;
        }
      }
      return source[$replaceRange](start, end, dart.toString(buffer));
    }
    let length = dart.notNull(end) - dart.notNull(start);
    if (firstPadding >= 0) {
      convert.Base64Codec._checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, length);
    } else {
      let endLength = length[$modulo](4);
      if (endLength === 1) {
        dart.throw(new core.FormatException.new("Invalid base64 encoding length ", source, end));
      }
      if (endLength > 1) {
        source = source[$replaceRange](end, end, endLength === 2 ? "==" : "=");
      }
    }
    return source;
  }
  static _checkPadding(source, sourceIndex, sourceEnd, firstPadding, paddingCount, length) {
    if (length[$modulo](4) !== 0) {
      dart.throw(new core.FormatException.new("Invalid base64 padding, padded length must be multiple of four, " + ("is " + dart.str(length)), source, sourceEnd));
    }
    if (dart.notNull(firstPadding) + dart.notNull(paddingCount) !== length) {
      dart.throw(new core.FormatException.new("Invalid base64 padding, '=' not at the end", source, sourceIndex));
    }
    if (dart.notNull(paddingCount) > 2) {
      dart.throw(new core.FormatException.new("Invalid base64 padding, more than two '=' characters", source, sourceIndex));
    }
  }
};
(convert.Base64Codec.new = function() {
  this[_encoder] = const$29 || (const$29 = dart.const(new convert.Base64Encoder.new()));
  convert.Base64Codec.__proto__.new.call(this);
}).prototype = convert.Base64Codec.prototype;
(convert.Base64Codec.urlSafe = function() {
  this[_encoder] = const$30 || (const$30 = dart.const(new convert.Base64Encoder.urlSafe()));
  convert.Base64Codec.__proto__.new.call(this);
}).prototype = convert.Base64Codec.prototype;
dart.addTypeTests(convert.Base64Codec);
dart.setMethodSignature(convert.Base64Codec, () => ({
  __proto__: dart.getMethods(convert.Base64Codec.__proto__),
  decode: dart.fnType(typed_data.Uint8List, [core.Object]),
  normalize: dart.fnType(core.String, [core.String], [core.int, core.int])
}));
dart.setGetterSignature(convert.Base64Codec, () => ({
  __proto__: dart.getGetters(convert.Base64Codec.__proto__),
  encoder: convert.Base64Encoder,
  decoder: convert.Base64Decoder
}));
dart.setFieldSignature(convert.Base64Codec, () => ({
  __proto__: dart.getFields(convert.Base64Codec.__proto__),
  [_encoder]: dart.finalFieldType(convert.Base64Encoder)
}));
const _urlSafe = Symbol('_urlSafe');
convert.Base64Encoder = class Base64Encoder extends convert.Converter$(core.List$(core.int), core.String) {
  convert(input) {
    ListOfint()._check(input);
    if (dart.test(input[$isEmpty])) return "";
    let encoder = new convert._Base64Encoder.new(this[_urlSafe]);
    let buffer = encoder.encode(input, 0, input[$length], true);
    return core.String.fromCharCodes(buffer);
  }
  startChunkedConversion(sink) {
    SinkOfString()._check(sink);
    if (convert.StringConversionSink.is(sink)) {
      return new convert._Utf8Base64EncoderSink.new(sink.asUtf8Sink(false), this[_urlSafe]);
    }
    return new convert._AsciiBase64EncoderSink.new(sink, this[_urlSafe]);
  }
};
(convert.Base64Encoder.new = function() {
  this[_urlSafe] = false;
  convert.Base64Encoder.__proto__.new.call(this);
}).prototype = convert.Base64Encoder.prototype;
(convert.Base64Encoder.urlSafe = function() {
  this[_urlSafe] = true;
  convert.Base64Encoder.__proto__.new.call(this);
}).prototype = convert.Base64Encoder.prototype;
dart.addTypeTests(convert.Base64Encoder);
dart.setMethodSignature(convert.Base64Encoder, () => ({
  __proto__: dart.getMethods(convert.Base64Encoder.__proto__),
  convert: dart.fnType(core.String, [core.Object]),
  startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
}));
dart.setFieldSignature(convert.Base64Encoder, () => ({
  __proto__: dart.getFields(convert.Base64Encoder.__proto__),
  [_urlSafe]: dart.finalFieldType(core.bool)
}));
const _alphabet = Symbol('_alphabet');
const _state$0 = Symbol('_state');
convert._Base64Encoder = class _Base64Encoder extends core.Object {
  static _encodeState(count, bits) {
    if (!(dart.notNull(count) <= 3)) dart.assertFailed();
    return (dart.notNull(bits) << 2 | dart.notNull(count)) >>> 0;
  }
  static _stateBits(state) {
    return state[$rightShift](2);
  }
  static _stateCount(state) {
    return dart.notNull(state) & 3;
  }
  createBuffer(bufferLength) {
    return typed_data.Uint8List.new(bufferLength);
  }
  encode(bytes, start, end, isLast) {
    if (!(0 <= dart.notNull(start))) dart.assertFailed();
    if (!(dart.notNull(start) <= dart.notNull(end))) dart.assertFailed();
    if (!(bytes == null || dart.notNull(end) <= dart.notNull(bytes[$length]))) dart.assertFailed();
    let length = dart.notNull(end) - dart.notNull(start);
    let count = convert._Base64Encoder._stateCount(this[_state$0]);
    let byteCount = dart.notNull(count) + length;
    let fullChunks = (byteCount / 3)[$truncate]();
    let partialChunkLength = byteCount - fullChunks * 3;
    let bufferLength = fullChunks * 4;
    if (dart.test(isLast) && partialChunkLength > 0) {
      bufferLength = bufferLength + 4;
    }
    let output = this.createBuffer(bufferLength);
    this[_state$0] = convert._Base64Encoder.encodeChunk(this[_alphabet], bytes, start, end, isLast, output, 0, this[_state$0]);
    if (bufferLength > 0) return output;
    return null;
  }
  static encodeChunk(alphabet, bytes, start, end, isLast, output, outputIndex, state) {
    let bits = convert._Base64Encoder._stateBits(state);
    let expectedChars = 3 - dart.notNull(convert._Base64Encoder._stateCount(state));
    let byteOr = 0;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let byte = bytes[$_get](i);
      byteOr = (byteOr | dart.notNull(byte)) >>> 0;
      bits = (dart.notNull(bits) << 8 | dart.notNull(byte)) & 16777215;
      expectedChars--;
      if (expectedChars === 0) {
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 18 & 63));
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 12 & 63));
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 6 & 63));
        output[$_set]((() => {
          let x = outputIndex;
          outputIndex = dart.notNull(x) + 1;
          return x;
        })(), alphabet[$codeUnitAt](dart.notNull(bits) & 63));
        expectedChars = 3;
        bits = 0;
      }
    }
    if (byteOr >= 0 && byteOr <= 255) {
      if (dart.test(isLast) && expectedChars < 3) {
        convert._Base64Encoder.writeFinalChunk(alphabet, output, outputIndex, 3 - expectedChars, bits);
        return 0;
      }
      return convert._Base64Encoder._encodeState(3 - expectedChars, bits);
    }
    let i = start;
    while (dart.notNull(i) < dart.notNull(end)) {
      let byte = bytes[$_get](i);
      if (dart.notNull(byte) < 0 || dart.notNull(byte) > 255) break;
      i = dart.notNull(i) + 1;
    }
    dart.throw(new core.ArgumentError.value(bytes, "Not a byte value at index " + dart.str(i) + ": 0x" + bytes[$_get](i)[$toRadixString](16)));
  }
  static writeFinalChunk(alphabet, output, outputIndex, count, bits) {
    if (!(dart.notNull(count) > 0)) dart.assertFailed();
    if (count === 1) {
      output[$_set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 2 & 63));
      output[$_set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), alphabet[$codeUnitAt](dart.notNull(bits) << 4 & 63));
      output[$_set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), 61);
      output[$_set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), 61);
    } else {
      if (!(count === 2)) dart.assertFailed();
      output[$_set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 10 & 63));
      output[$_set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), alphabet[$codeUnitAt](dart.notNull(bits) >> 4 & 63));
      output[$_set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), alphabet[$codeUnitAt](dart.notNull(bits) << 2 & 63));
      output[$_set]((() => {
        let x = outputIndex;
        outputIndex = dart.notNull(x) + 1;
        return x;
      })(), 61);
    }
  }
};
(convert._Base64Encoder.new = function(urlSafe) {
  this[_state$0] = 0;
  this[_alphabet] = dart.test(urlSafe) ? "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
}).prototype = convert._Base64Encoder.prototype;
dart.addTypeTests(convert._Base64Encoder);
dart.setMethodSignature(convert._Base64Encoder, () => ({
  __proto__: dart.getMethods(convert._Base64Encoder.__proto__),
  createBuffer: dart.fnType(typed_data.Uint8List, [core.int]),
  encode: dart.fnType(typed_data.Uint8List, [core.List$(core.int), core.int, core.int, core.bool])
}));
dart.setFieldSignature(convert._Base64Encoder, () => ({
  __proto__: dart.getFields(convert._Base64Encoder.__proto__),
  [_state$0]: dart.fieldType(core.int),
  [_alphabet]: dart.finalFieldType(core.String)
}));
dart.defineLazy(convert._Base64Encoder, {
  /*convert._Base64Encoder._base64Alphabet*/get _base64Alphabet() {
    return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  },
  /*convert._Base64Encoder._base64UrlAlphabet*/get _base64UrlAlphabet() {
    return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
  },
  /*convert._Base64Encoder._valueShift*/get _valueShift() {
    return 2;
  },
  /*convert._Base64Encoder._countMask*/get _countMask() {
    return 3;
  },
  /*convert._Base64Encoder._sixBitMask*/get _sixBitMask() {
    return 63;
  }
});
convert._BufferCachingBase64Encoder = class _BufferCachingBase64Encoder extends convert._Base64Encoder {
  createBuffer(bufferLength) {
    if (this.bufferCache == null || dart.notNull(this.bufferCache[$length]) < dart.notNull(bufferLength)) {
      this.bufferCache = typed_data.Uint8List.new(bufferLength);
    }
    return typed_data.Uint8List.view(this.bufferCache[$buffer], 0, bufferLength);
  }
};
(convert._BufferCachingBase64Encoder.new = function(urlSafe) {
  this.bufferCache = null;
  convert._BufferCachingBase64Encoder.__proto__.new.call(this, urlSafe);
}).prototype = convert._BufferCachingBase64Encoder.prototype;
dart.addTypeTests(convert._BufferCachingBase64Encoder);
dart.setFieldSignature(convert._BufferCachingBase64Encoder, () => ({
  __proto__: dart.getFields(convert._BufferCachingBase64Encoder.__proto__),
  bufferCache: dart.fieldType(typed_data.Uint8List)
}));
const _add$0 = Symbol('_add');
convert._Base64EncoderSink = class _Base64EncoderSink extends convert.ByteConversionSinkBase {
  add(source) {
    ListOfint()._check(source);
    this[_add$0](source, 0, source[$length], false);
  }
  close() {
    this[_add$0](null, 0, 0, true);
  }
  addSlice(source, start, end, isLast) {
    if (end == null) dart.throw(new core.ArgumentError.notNull("end"));
    core.RangeError.checkValidRange(start, end, source[$length]);
    this[_add$0](source, start, end, isLast);
  }
};
(convert._Base64EncoderSink.new = function() {
  convert._Base64EncoderSink.__proto__.new.call(this);
}).prototype = convert._Base64EncoderSink.prototype;
dart.addTypeTests(convert._Base64EncoderSink);
dart.setMethodSignature(convert._Base64EncoderSink, () => ({
  __proto__: dart.getMethods(convert._Base64EncoderSink.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  close: dart.fnType(dart.void, [])
}));
convert._AsciiBase64EncoderSink = class _AsciiBase64EncoderSink extends convert._Base64EncoderSink {
  [_add$0](source, start, end, isLast) {
    let buffer = this[_encoder].encode(source, start, end, isLast);
    if (buffer != null) {
      let string = core.String.fromCharCodes(buffer);
      this[_sink$].add(string);
    }
    if (dart.test(isLast)) {
      this[_sink$].close();
    }
  }
};
(convert._AsciiBase64EncoderSink.new = function(sink, urlSafe) {
  this[_sink$] = sink;
  this[_encoder] = new convert._BufferCachingBase64Encoder.new(urlSafe);
  convert._AsciiBase64EncoderSink.__proto__.new.call(this);
}).prototype = convert._AsciiBase64EncoderSink.prototype;
dart.addTypeTests(convert._AsciiBase64EncoderSink);
dart.setMethodSignature(convert._AsciiBase64EncoderSink, () => ({
  __proto__: dart.getMethods(convert._AsciiBase64EncoderSink.__proto__),
  [_add$0]: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
}));
dart.setFieldSignature(convert._AsciiBase64EncoderSink, () => ({
  __proto__: dart.getFields(convert._AsciiBase64EncoderSink.__proto__),
  [_sink$]: dart.finalFieldType(SinkOfString()),
  [_encoder]: dart.finalFieldType(convert._Base64Encoder)
}));
convert._Utf8Base64EncoderSink = class _Utf8Base64EncoderSink extends convert._Base64EncoderSink {
  [_add$0](source, start, end, isLast) {
    let buffer = this[_encoder].encode(source, start, end, isLast);
    if (buffer != null) {
      this[_sink$].addSlice(buffer, 0, buffer[$length], isLast);
    }
  }
};
(convert._Utf8Base64EncoderSink.new = function(sink, urlSafe) {
  this[_sink$] = sink;
  this[_encoder] = new convert._Base64Encoder.new(urlSafe);
  convert._Utf8Base64EncoderSink.__proto__.new.call(this);
}).prototype = convert._Utf8Base64EncoderSink.prototype;
dart.addTypeTests(convert._Utf8Base64EncoderSink);
dart.setMethodSignature(convert._Utf8Base64EncoderSink, () => ({
  __proto__: dart.getMethods(convert._Utf8Base64EncoderSink.__proto__),
  [_add$0]: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
}));
dart.setFieldSignature(convert._Utf8Base64EncoderSink, () => ({
  __proto__: dart.getFields(convert._Utf8Base64EncoderSink.__proto__),
  [_sink$]: dart.finalFieldType(convert.ByteConversionSink),
  [_encoder]: dart.finalFieldType(convert._Base64Encoder)
}));
convert.Base64Decoder = class Base64Decoder extends convert.Converter$(core.String, core.List$(core.int)) {
  convert(input, start, end) {
    core.String._check(input);
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    end = core.RangeError.checkValidRange(start, end, input.length);
    if (start == end) return typed_data.Uint8List.new(0);
    let decoder = new convert._Base64Decoder.new();
    let buffer = decoder.decode(input, start, end);
    decoder.close(input, end);
    return buffer;
  }
  startChunkedConversion(sink) {
    SinkOfListOfint()._check(sink);
    return new convert._Base64DecoderSink.new(sink);
  }
};
(convert.Base64Decoder.new = function() {
  convert.Base64Decoder.__proto__.new.call(this);
}).prototype = convert.Base64Decoder.prototype;
dart.addTypeTests(convert.Base64Decoder);
dart.setMethodSignature(convert.Base64Decoder, () => ({
  __proto__: dart.getMethods(convert.Base64Decoder.__proto__),
  convert: dart.fnType(typed_data.Uint8List, [core.Object], [core.int, core.int]),
  startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Object])
}));
convert._Base64Decoder = class _Base64Decoder extends core.Object {
  static _encodeCharacterState(count, bits) {
    if (!(count === (dart.notNull(count) & 3))) dart.assertFailed();
    return (dart.notNull(bits) << 2 | dart.notNull(count)) >>> 0;
  }
  static _stateCount(state) {
    if (!(dart.notNull(state) >= 0)) dart.assertFailed();
    return dart.notNull(state) & 3;
  }
  static _stateBits(state) {
    if (!(dart.notNull(state) >= 0)) dart.assertFailed();
    return state[$rightShift](2);
  }
  static _encodePaddingState(expectedPadding) {
    if (!(dart.notNull(expectedPadding) >= 0)) dart.assertFailed();
    if (!(dart.notNull(expectedPadding) <= 5)) dart.assertFailed();
    return -dart.notNull(expectedPadding) - 1;
  }
  static _statePadding(state) {
    if (!(dart.notNull(state) < 0)) dart.assertFailed();
    return -dart.notNull(state) - 1;
  }
  static _hasSeenPadding(state) {
    return dart.notNull(state) < 0;
  }
  decode(input, start, end) {
    if (!(0 <= dart.notNull(start))) dart.assertFailed();
    if (!(dart.notNull(start) <= dart.notNull(end))) dart.assertFailed();
    if (!(dart.notNull(end) <= input.length)) dart.assertFailed();
    if (dart.test(convert._Base64Decoder._hasSeenPadding(this[_state$0]))) {
      this[_state$0] = convert._Base64Decoder._checkPadding(input, start, end, this[_state$0]);
      return null;
    }
    if (start == end) return typed_data.Uint8List.new(0);
    let buffer = convert._Base64Decoder._allocateBuffer(input, start, end, this[_state$0]);
    this[_state$0] = convert._Base64Decoder.decodeChunk(input, start, end, buffer, 0, this[_state$0]);
    return buffer;
  }
  close(input, end) {
    if (dart.notNull(this[_state$0]) < dart.notNull(convert._Base64Decoder._encodePaddingState(0))) {
      dart.throw(new core.FormatException.new("Missing padding character", input, end));
    }
    if (dart.notNull(this[_state$0]) > 0) {
      dart.throw(new core.FormatException.new("Invalid length, must be multiple of four", input, end));
    }
    this[_state$0] = convert._Base64Decoder._encodePaddingState(0);
  }
  static decodeChunk(input, start, end, output, outIndex, state) {
    if (!!dart.test(convert._Base64Decoder._hasSeenPadding(state))) dart.assertFailed();
    let asciiMask = 127;
    let asciiMax = 127;
    let eightBitMask = 255;
    let bitsPerCharacter = 6;
    let bits = convert._Base64Decoder._stateBits(state);
    let count = convert._Base64Decoder._stateCount(state);
    let charOr = 0;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = input[$codeUnitAt](i);
      charOr = (charOr | char) >>> 0;
      let code = convert._Base64Decoder._inverseAlphabet[$_get]((char & asciiMask) >>> 0);
      if (dart.notNull(code) >= 0) {
        bits = (bits[$leftShift](bitsPerCharacter) | dart.notNull(code)) & 16777215;
        count = dart.notNull(count) + 1 & 3;
        if (count === 0) {
          if (!(dart.notNull(outIndex) + 3 <= dart.notNull(output[$length]))) dart.assertFailed();
          output[$_set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), (bits[$rightShift](16) & eightBitMask) >>> 0);
          output[$_set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), (bits[$rightShift](8) & eightBitMask) >>> 0);
          output[$_set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), (dart.notNull(bits) & eightBitMask) >>> 0);
          bits = 0;
        }
        continue;
      } else if (code === -1 && dart.notNull(count) > 1) {
        if (charOr < 0 || charOr > asciiMax) break;
        if (count === 3) {
          if ((dart.notNull(bits) & 3) !== 0) {
            dart.throw(new core.FormatException.new("Invalid encoding before padding", input, i));
          }
          output[$_set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), bits[$rightShift](10));
          output[$_set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), bits[$rightShift](2));
        } else {
          if ((dart.notNull(bits) & 15) !== 0) {
            dart.throw(new core.FormatException.new("Invalid encoding before padding", input, i));
          }
          output[$_set]((() => {
            let x = outIndex;
            outIndex = dart.notNull(x) + 1;
            return x;
          })(), bits[$rightShift](4));
        }
        let expectedPadding = (3 - dart.notNull(count)) * 3;
        if (char === 37) {
          expectedPadding = expectedPadding + 2;
        }
        state = convert._Base64Decoder._encodePaddingState(expectedPadding);
        return convert._Base64Decoder._checkPadding(input, dart.notNull(i) + 1, end, state);
      }
      dart.throw(new core.FormatException.new("Invalid character", input, i));
    }
    if (charOr >= 0 && charOr <= asciiMax) {
      return convert._Base64Decoder._encodeCharacterState(count, bits);
    }
    let i = null;
    for (i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = input[$codeUnitAt](i);
      if (char < 0 || char > asciiMax) break;
    }
    dart.throw(new core.FormatException.new("Invalid character", input, i));
  }
  static _allocateBuffer(input, start, end, state) {
    if (!(dart.notNull(state) >= 0)) dart.assertFailed();
    let paddingStart = convert._Base64Decoder._trimPaddingChars(input, start, end);
    let length = dart.notNull(convert._Base64Decoder._stateCount(state)) + (dart.notNull(paddingStart) - dart.notNull(start));
    let bufferLength = length[$rightShift](2) * 3;
    let remainderLength = length & 3;
    if (remainderLength !== 0 && dart.notNull(paddingStart) < dart.notNull(end)) {
      bufferLength = bufferLength + (remainderLength - 1);
    }
    if (bufferLength > 0) return typed_data.Uint8List.new(bufferLength);
    return null;
  }
  static _trimPaddingChars(input, start, end) {
    let padding = 0;
    let index = end;
    let newEnd = end;
    while (dart.notNull(index) > dart.notNull(start) && padding < 2) {
      index = dart.notNull(index) - 1;
      let char = input[$codeUnitAt](index);
      if (char === 61) {
        padding++;
        newEnd = index;
        continue;
      }
      if ((char | 32) === 100) {
        if (index == start) break;
        index = dart.notNull(index) - 1;
        char = input[$codeUnitAt](index);
      }
      if (char === 51) {
        if (index == start) break;
        index = dart.notNull(index) - 1;
        char = input[$codeUnitAt](index);
      }
      if (char === 37) {
        padding++;
        newEnd = index;
        continue;
      }
      break;
    }
    return newEnd;
  }
  static _checkPadding(input, start, end, state) {
    if (!dart.test(convert._Base64Decoder._hasSeenPadding(state))) dart.assertFailed();
    if (start == end) return state;
    let expectedPadding = convert._Base64Decoder._statePadding(state);
    if (!(dart.notNull(expectedPadding) >= 0)) dart.assertFailed();
    if (!(dart.notNull(expectedPadding) < 6)) dart.assertFailed();
    while (dart.notNull(expectedPadding) > 0) {
      let char = input[$codeUnitAt](start);
      if (expectedPadding === 3) {
        if (char === 61) {
          expectedPadding = dart.notNull(expectedPadding) - 3;
          start = dart.notNull(start) + 1;
          break;
        }
        if (char === 37) {
          expectedPadding = dart.notNull(expectedPadding) - 1;
          start = dart.notNull(start) + 1;
          if (start == end) break;
          char = input[$codeUnitAt](start);
        } else {
          break;
        }
      }
      let expectedPartialPadding = expectedPadding;
      if (dart.notNull(expectedPartialPadding) > 3) {
        expectedPartialPadding = dart.notNull(expectedPartialPadding) - 3;
      }
      if (expectedPartialPadding === 2) {
        if (char !== 51) break;
        start = dart.notNull(start) + 1;
        expectedPadding = dart.notNull(expectedPadding) - 1;
        if (start == end) break;
        char = input[$codeUnitAt](start);
      }
      if ((char | 32) !== 100) break;
      start = dart.notNull(start) + 1;
      expectedPadding = dart.notNull(expectedPadding) - 1;
      if (start == end) break;
    }
    if (start != end) {
      dart.throw(new core.FormatException.new("Invalid padding character", input, start));
    }
    return convert._Base64Decoder._encodePaddingState(expectedPadding);
  }
};
(convert._Base64Decoder.new = function() {
  this[_state$0] = 0;
}).prototype = convert._Base64Decoder.prototype;
dart.addTypeTests(convert._Base64Decoder);
dart.setMethodSignature(convert._Base64Decoder, () => ({
  __proto__: dart.getMethods(convert._Base64Decoder.__proto__),
  decode: dart.fnType(typed_data.Uint8List, [core.String, core.int, core.int]),
  close: dart.fnType(dart.void, [core.String, core.int])
}));
dart.setFieldSignature(convert._Base64Decoder, () => ({
  __proto__: dart.getFields(convert._Base64Decoder.__proto__),
  [_state$0]: dart.fieldType(core.int)
}));
dart.defineLazy(convert._Base64Decoder, {
  /*convert._Base64Decoder._valueShift*/get _valueShift() {
    return 2;
  },
  /*convert._Base64Decoder._countMask*/get _countMask() {
    return 3;
  },
  /*convert._Base64Decoder._invalid*/get _invalid() {
    return -2;
  },
  /*convert._Base64Decoder._padding*/get _padding() {
    return -1;
  },
  /*convert._Base64Decoder.___*/get ___() {
    return -2;
  },
  /*convert._Base64Decoder._p*/get _p() {
    return -1;
  },
  /*convert._Base64Decoder._inverseAlphabet*/get _inverseAlphabet() {
    return typed_data.Int8List.fromList(JSArrayOfint().of([-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]));
  },
  /*convert._Base64Decoder._char_percent*/get _char_percent() {
    return 37;
  },
  /*convert._Base64Decoder._char_3*/get _char_3() {
    return 51;
  },
  /*convert._Base64Decoder._char_d*/get _char_d() {
    return 100;
  }
});
const _decoder = Symbol('_decoder');
convert._Base64DecoderSink = class _Base64DecoderSink extends convert.StringConversionSinkBase {
  add(string) {
    core.String._check(string);
    if (string[$isEmpty]) return;
    let buffer = this[_decoder].decode(string, 0, string.length);
    if (buffer != null) this[_sink$].add(buffer);
  }
  close() {
    this[_decoder].close(null, null);
    this[_sink$].close();
  }
  addSlice(string, start, end, isLast) {
    end = core.RangeError.checkValidRange(start, end, string.length);
    if (start == end) return;
    let buffer = this[_decoder].decode(string, start, end);
    if (buffer != null) this[_sink$].add(buffer);
    if (dart.test(isLast)) {
      this[_decoder].close(string, end);
      this[_sink$].close();
    }
  }
};
(convert._Base64DecoderSink.new = function(sink) {
  this[_decoder] = new convert._Base64Decoder.new();
  this[_sink$] = sink;
}).prototype = convert._Base64DecoderSink.prototype;
dart.addTypeTests(convert._Base64DecoderSink);
dart.setMethodSignature(convert._Base64DecoderSink, () => ({
  __proto__: dart.getMethods(convert._Base64DecoderSink.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  close: dart.fnType(dart.void, []),
  addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool])
}));
dart.setFieldSignature(convert._Base64DecoderSink, () => ({
  __proto__: dart.getFields(convert._Base64DecoderSink.__proto__),
  [_sink$]: dart.finalFieldType(SinkOfListOfint()),
  [_decoder]: dart.finalFieldType(convert._Base64Decoder)
}));
convert._ByteAdapterSink = class _ByteAdapterSink extends convert.ByteConversionSinkBase {
  add(chunk) {
    ListOfint()._check(chunk);
    this[_sink$].add(chunk);
  }
  close() {
    this[_sink$].close();
  }
};
(convert._ByteAdapterSink.new = function(sink) {
  this[_sink$] = sink;
  convert._ByteAdapterSink.__proto__.new.call(this);
}).prototype = convert._ByteAdapterSink.prototype;
dart.addTypeTests(convert._ByteAdapterSink);
dart.setMethodSignature(convert._ByteAdapterSink, () => ({
  __proto__: dart.getMethods(convert._ByteAdapterSink.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  close: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(convert._ByteAdapterSink, () => ({
  __proto__: dart.getFields(convert._ByteAdapterSink.__proto__),
  [_sink$]: dart.finalFieldType(SinkOfListOfint())
}));
const _callback = Symbol('_callback');
const _buffer = Symbol('_buffer');
const _bufferIndex = Symbol('_bufferIndex');
convert._ByteCallbackSink = class _ByteCallbackSink extends convert.ByteConversionSinkBase {
  add(chunk) {
    IterableOfint()._check(chunk);
    let freeCount = dart.notNull(this[_buffer][$length]) - dart.notNull(this[_bufferIndex]);
    if (dart.notNull(chunk[$length]) > freeCount) {
      let oldLength = this[_buffer][$length];
      let newLength = dart.notNull(convert._ByteCallbackSink._roundToPowerOf2(dart.notNull(chunk[$length]) + dart.notNull(oldLength))) * 2;
      let grown = typed_data.Uint8List.new(newLength);
      grown[$setRange](0, this[_buffer][$length], this[_buffer]);
      this[_buffer] = grown;
    }
    this[_buffer][$setRange](this[_bufferIndex], dart.notNull(this[_bufferIndex]) + dart.notNull(chunk[$length]), chunk);
    this[_bufferIndex] = dart.notNull(this[_bufferIndex]) + dart.notNull(chunk[$length]);
  }
  static _roundToPowerOf2(v) {
    if (!(dart.notNull(v) > 0)) dart.assertFailed();
    v = dart.notNull(v) - 1;
    v = (dart.notNull(v) | v[$rightShift](1)) >>> 0;
    v = (dart.notNull(v) | v[$rightShift](2)) >>> 0;
    v = (dart.notNull(v) | v[$rightShift](4)) >>> 0;
    v = (dart.notNull(v) | v[$rightShift](8)) >>> 0;
    v = (dart.notNull(v) | v[$rightShift](16)) >>> 0;
    v = dart.notNull(v) + 1;
    return v;
  }
  close() {
    this[_callback](this[_buffer][$sublist](0, this[_bufferIndex]));
  }
};
(convert._ByteCallbackSink.new = function(callback) {
  this[_buffer] = typed_data.Uint8List.new(1024);
  this[_bufferIndex] = 0;
  this[_callback] = callback;
  convert._ByteCallbackSink.__proto__.new.call(this);
}).prototype = convert._ByteCallbackSink.prototype;
dart.addTypeTests(convert._ByteCallbackSink);
dart.setMethodSignature(convert._ByteCallbackSink, () => ({
  __proto__: dart.getMethods(convert._ByteCallbackSink.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  close: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(convert._ByteCallbackSink, () => ({
  __proto__: dart.getFields(convert._ByteCallbackSink.__proto__),
  [_callback]: dart.finalFieldType(ListOfintTovoid()),
  [_buffer]: dart.fieldType(ListOfint()),
  [_bufferIndex]: dart.fieldType(core.int)
}));
dart.defineLazy(convert._ByteCallbackSink, {
  /*convert._ByteCallbackSink._INITIAL_BUFFER_SIZE*/get _INITIAL_BUFFER_SIZE() {
    return 1024;
  }
});
const _accumulated = Symbol('_accumulated');
const _is__SimpleCallbackSink_default = Symbol('_is__SimpleCallbackSink_default');
convert._SimpleCallbackSink$ = dart.generic(T => {
  let JSArrayOfT = () => (JSArrayOfT = dart.constFn(_interceptors.JSArray$(T)))();
  let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
  let ListOfTTovoid = () => (ListOfTTovoid = dart.constFn(dart.fnType(dart.void, [ListOfT()])))();
  class _SimpleCallbackSink extends convert.ChunkedConversionSink$(T) {
    add(chunk) {
      T._check(chunk);
      this[_accumulated][$add](chunk);
    }
    close() {
      this[_callback](this[_accumulated]);
    }
  }
  (_SimpleCallbackSink.new = function(callback) {
    this[_accumulated] = JSArrayOfT().of([]);
    this[_callback] = callback;
    _SimpleCallbackSink.__proto__.new.call(this);
  }).prototype = _SimpleCallbackSink.prototype;
  dart.addTypeTests(_SimpleCallbackSink);
  _SimpleCallbackSink.prototype[_is__SimpleCallbackSink_default] = true;
  dart.setMethodSignature(_SimpleCallbackSink, () => ({
    __proto__: dart.getMethods(_SimpleCallbackSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_SimpleCallbackSink, () => ({
    __proto__: dart.getFields(_SimpleCallbackSink.__proto__),
    [_callback]: dart.finalFieldType(ListOfTTovoid()),
    [_accumulated]: dart.finalFieldType(ListOfT())
  }));
  return _SimpleCallbackSink;
});
convert._SimpleCallbackSink = convert._SimpleCallbackSink$();
dart.addTypeTests(convert._SimpleCallbackSink, _is__SimpleCallbackSink_default);
const _eventSink = Symbol('_eventSink');
const _chunkedSink = Symbol('_chunkedSink');
const _is__ConverterStreamEventSink_default = Symbol('_is__ConverterStreamEventSink_default');
convert._ConverterStreamEventSink$ = dart.generic((S, T) => {
  let EventSinkOfS = () => (EventSinkOfS = dart.constFn(async.EventSink$(S)))();
  let SinkOfS = () => (SinkOfS = dart.constFn(core.Sink$(S)))();
  let EventSinkOfT = () => (EventSinkOfT = dart.constFn(async.EventSink$(T)))();
  class _ConverterStreamEventSink extends core.Object {
    add(o) {
      S._check(o);
      this[_chunkedSink].add(o);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      this[_eventSink].addError(error, stackTrace);
    }
    close() {
      this[_chunkedSink].close();
    }
  }
  (_ConverterStreamEventSink.new = function(converter, sink) {
    this[_eventSink] = sink;
    this[_chunkedSink] = converter.startChunkedConversion(sink);
  }).prototype = _ConverterStreamEventSink.prototype;
  dart.addTypeTests(_ConverterStreamEventSink);
  _ConverterStreamEventSink.prototype[_is__ConverterStreamEventSink_default] = true;
  _ConverterStreamEventSink[dart.implements] = () => [EventSinkOfS()];
  dart.setMethodSignature(_ConverterStreamEventSink, () => ({
    __proto__: dart.getMethods(_ConverterStreamEventSink.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(_ConverterStreamEventSink, () => ({
    __proto__: dart.getFields(_ConverterStreamEventSink.__proto__),
    [_eventSink]: dart.finalFieldType(EventSinkOfT()),
    [_chunkedSink]: dart.finalFieldType(SinkOfS())
  }));
  return _ConverterStreamEventSink;
});
convert._ConverterStreamEventSink = convert._ConverterStreamEventSink$();
dart.addTypeTests(convert._ConverterStreamEventSink, _is__ConverterStreamEventSink_default);
const _first$0 = Symbol('_first');
const _second$ = Symbol('_second');
const _is__FusedCodec_default = Symbol('_is__FusedCodec_default');
convert._FusedCodec$ = dart.generic((S, M, T) => {
  let ConverterOfS$T = () => (ConverterOfS$T = dart.constFn(convert.Converter$(S, T)))();
  let ConverterOfT$S = () => (ConverterOfT$S = dart.constFn(convert.Converter$(T, S)))();
  let CodecOfS$M = () => (CodecOfS$M = dart.constFn(convert.Codec$(S, M)))();
  let CodecOfM$T = () => (CodecOfM$T = dart.constFn(convert.Codec$(M, T)))();
  class _FusedCodec extends convert.Codec$(S, T) {
    get encoder() {
      return ConverterOfS$T()._check(this[_first$0].encoder.fuse(T, this[_second$].encoder));
    }
    get decoder() {
      return ConverterOfT$S()._check(this[_second$].decoder.fuse(S, this[_first$0].decoder));
    }
  }
  (_FusedCodec.new = function(first, second) {
    this[_first$0] = first;
    this[_second$] = second;
    _FusedCodec.__proto__.new.call(this);
  }).prototype = _FusedCodec.prototype;
  dart.addTypeTests(_FusedCodec);
  _FusedCodec.prototype[_is__FusedCodec_default] = true;
  dart.setGetterSignature(_FusedCodec, () => ({
    __proto__: dart.getGetters(_FusedCodec.__proto__),
    encoder: convert.Converter$(S, T),
    decoder: convert.Converter$(T, S)
  }));
  dart.setFieldSignature(_FusedCodec, () => ({
    __proto__: dart.getFields(_FusedCodec.__proto__),
    [_first$0]: dart.finalFieldType(CodecOfS$M()),
    [_second$]: dart.finalFieldType(CodecOfM$T())
  }));
  return _FusedCodec;
});
convert._FusedCodec = convert._FusedCodec$();
dart.addTypeTests(convert._FusedCodec, _is__FusedCodec_default);
const _codec = Symbol('_codec');
const _is__InvertedCodec_default = Symbol('_is__InvertedCodec_default');
convert._InvertedCodec$ = dart.generic((T, S) => {
  let CodecOfS$T = () => (CodecOfS$T = dart.constFn(convert.Codec$(S, T)))();
  class _InvertedCodec extends convert.Codec$(T, S) {
    get encoder() {
      return this[_codec].decoder;
    }
    get decoder() {
      return this[_codec].encoder;
    }
    get inverted() {
      return this[_codec];
    }
  }
  (_InvertedCodec.new = function(codec) {
    this[_codec] = codec;
    _InvertedCodec.__proto__.new.call(this);
  }).prototype = _InvertedCodec.prototype;
  dart.addTypeTests(_InvertedCodec);
  _InvertedCodec.prototype[_is__InvertedCodec_default] = true;
  dart.setGetterSignature(_InvertedCodec, () => ({
    __proto__: dart.getGetters(_InvertedCodec.__proto__),
    encoder: convert.Converter$(T, S),
    decoder: convert.Converter$(S, T)
  }));
  dart.setFieldSignature(_InvertedCodec, () => ({
    __proto__: dart.getFields(_InvertedCodec.__proto__),
    [_codec]: dart.finalFieldType(CodecOfS$T())
  }));
  return _InvertedCodec;
});
convert._InvertedCodec = convert._InvertedCodec$();
dart.addTypeTests(convert._InvertedCodec, _is__InvertedCodec_default);
const _is__FusedConverter_default = Symbol('_is__FusedConverter_default');
convert._FusedConverter$ = dart.generic((S, M, T) => {
  let ConverterOfS$M = () => (ConverterOfS$M = dart.constFn(convert.Converter$(S, M)))();
  let ConverterOfM$T = () => (ConverterOfM$T = dart.constFn(convert.Converter$(M, T)))();
  let SinkOfT = () => (SinkOfT = dart.constFn(core.Sink$(T)))();
  class _FusedConverter extends convert.Converter$(S, T) {
    convert(input) {
      S._check(input);
      return this[_second$].convert(this[_first$0].convert(input));
    }
    startChunkedConversion(sink) {
      SinkOfT()._check(sink);
      return this[_first$0].startChunkedConversion(this[_second$].startChunkedConversion(sink));
    }
  }
  (_FusedConverter.new = function(first, second) {
    this[_first$0] = first;
    this[_second$] = second;
    _FusedConverter.__proto__.new.call(this);
  }).prototype = _FusedConverter.prototype;
  dart.addTypeTests(_FusedConverter);
  _FusedConverter.prototype[_is__FusedConverter_default] = true;
  dart.setMethodSignature(_FusedConverter, () => ({
    __proto__: dart.getMethods(_FusedConverter.__proto__),
    convert: dart.fnType(T, [core.Object]),
    startChunkedConversion: dart.fnType(core.Sink$(S), [core.Object])
  }));
  dart.setFieldSignature(_FusedConverter, () => ({
    __proto__: dart.getFields(_FusedConverter.__proto__),
    [_first$0]: dart.finalFieldType(ConverterOfS$M()),
    [_second$]: dart.finalFieldType(ConverterOfM$T())
  }));
  return _FusedConverter;
});
convert._FusedConverter = convert._FusedConverter$();
dart.addTypeTests(convert._FusedConverter, _is__FusedConverter_default);
dart.defineLazy(convert, {
  /*convert.htmlEscape*/get htmlEscape() {
    return dart.const(new convert.HtmlEscape.new());
  }
});
const _name$1 = Symbol('_name');
convert.HtmlEscapeMode = class HtmlEscapeMode extends core.Object {
  get escapeLtGt() {
    return this[escapeLtGt$];
  }
  set escapeLtGt(value) {
    super.escapeLtGt = value;
  }
  get escapeQuot() {
    return this[escapeQuot$];
  }
  set escapeQuot(value) {
    super.escapeQuot = value;
  }
  get escapeApos() {
    return this[escapeApos$];
  }
  set escapeApos(value) {
    super.escapeApos = value;
  }
  get escapeSlash() {
    return this[escapeSlash$];
  }
  set escapeSlash(value) {
    super.escapeSlash = value;
  }
  toString() {
    return this[_name$1];
  }
};
(convert.HtmlEscapeMode.__ = function(name, escapeLtGt, escapeQuot, escapeApos, escapeSlash) {
  this[_name$1] = name;
  this[escapeLtGt$] = escapeLtGt;
  this[escapeQuot$] = escapeQuot;
  this[escapeApos$] = escapeApos;
  this[escapeSlash$] = escapeSlash;
}).prototype = convert.HtmlEscapeMode.prototype;
(convert.HtmlEscapeMode.new = function(opts) {
  let name = opts && 'name' in opts ? opts.name : "custom";
  let escapeLtGt = opts && 'escapeLtGt' in opts ? opts.escapeLtGt : false;
  let escapeQuot = opts && 'escapeQuot' in opts ? opts.escapeQuot : false;
  let escapeApos = opts && 'escapeApos' in opts ? opts.escapeApos : false;
  let escapeSlash = opts && 'escapeSlash' in opts ? opts.escapeSlash : false;
  this[escapeLtGt$] = escapeLtGt;
  this[escapeQuot$] = escapeQuot;
  this[escapeApos$] = escapeApos;
  this[escapeSlash$] = escapeSlash;
  this[_name$1] = name;
}).prototype = convert.HtmlEscapeMode.prototype;
dart.addTypeTests(convert.HtmlEscapeMode);
const escapeLtGt$ = Symbol("HtmlEscapeMode.escapeLtGt");
const escapeQuot$ = Symbol("HtmlEscapeMode.escapeQuot");
const escapeApos$ = Symbol("HtmlEscapeMode.escapeApos");
const escapeSlash$ = Symbol("HtmlEscapeMode.escapeSlash");
dart.setFieldSignature(convert.HtmlEscapeMode, () => ({
  __proto__: dart.getFields(convert.HtmlEscapeMode.__proto__),
  [_name$1]: dart.finalFieldType(core.String),
  escapeLtGt: dart.finalFieldType(core.bool),
  escapeQuot: dart.finalFieldType(core.bool),
  escapeApos: dart.finalFieldType(core.bool),
  escapeSlash: dart.finalFieldType(core.bool)
}));
dart.defineExtensionMethods(convert.HtmlEscapeMode, ['toString']);
dart.defineLazy(convert.HtmlEscapeMode, {
  /*convert.HtmlEscapeMode.unknown*/get unknown() {
    return dart.const(new convert.HtmlEscapeMode.__("unknown", true, true, true, true));
  },
  /*convert.HtmlEscapeMode.attribute*/get attribute() {
    return dart.const(new convert.HtmlEscapeMode.__("attribute", true, true, false, false));
  },
  /*convert.HtmlEscapeMode.sqAttribute*/get sqAttribute() {
    return dart.const(new convert.HtmlEscapeMode.__("attribute", true, false, true, false));
  },
  /*convert.HtmlEscapeMode.element*/get element() {
    return dart.const(new convert.HtmlEscapeMode.__("element", true, false, false, false));
  }
});
const _convert = Symbol('_convert');
convert.HtmlEscape = class HtmlEscape extends convert.Converter$(core.String, core.String) {
  get mode() {
    return this[mode$];
  }
  set mode(value) {
    super.mode = value;
  }
  convert(text) {
    core.String._check(text);
    let val = this[_convert](text, 0, text.length);
    return val == null ? text : val;
  }
  [_convert](text, start, end) {
    let result = null;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let ch = text[$_get](i);
      let replacement = null;
      switch (ch) {
        case "&":
        {
          replacement = "&amp;";
          break;
        }
        case "\"":
        {
          if (dart.test(this.mode.escapeQuot)) replacement = "&quot;";
          break;
        }
        case "'":
        {
          if (dart.test(this.mode.escapeApos)) replacement = "&#39;";
          break;
        }
        case "<":
        {
          if (dart.test(this.mode.escapeLtGt)) replacement = "&lt;";
          break;
        }
        case ">":
        {
          if (dart.test(this.mode.escapeLtGt)) replacement = "&gt;";
          break;
        }
        case "/":
        {
          if (dart.test(this.mode.escapeSlash)) replacement = "&#47;";
          break;
        }
      }
      if (replacement != null) {
        let t = result;
        t == null ? result = new core.StringBuffer.new() : t;
        if (dart.notNull(i) > dart.notNull(start)) result.write(text[$substring](start, i));
        result.write(replacement);
        start = dart.notNull(i) + 1;
      }
    }
    if (result == null) return null;
    if (dart.notNull(end) > dart.notNull(start)) result.write(text[$substring](start, end));
    return dart.toString(result);
  }
  startChunkedConversion(sink) {
    SinkOfString()._check(sink);
    return new convert._HtmlEscapeSink.new(this, convert.StringConversionSink.is(sink) ? sink : convert.StringConversionSink.from(sink));
  }
};
(convert.HtmlEscape.new = function(mode) {
  if (mode === void 0) mode = convert.HtmlEscapeMode.unknown;
  this[mode$] = mode;
  convert.HtmlEscape.__proto__.new.call(this);
}).prototype = convert.HtmlEscape.prototype;
dart.addTypeTests(convert.HtmlEscape);
const mode$ = Symbol("HtmlEscape.mode");
dart.setMethodSignature(convert.HtmlEscape, () => ({
  __proto__: dart.getMethods(convert.HtmlEscape.__proto__),
  convert: dart.fnType(core.String, [core.Object]),
  [_convert]: dart.fnType(core.String, [core.String, core.int, core.int]),
  startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Object])
}));
dart.setFieldSignature(convert.HtmlEscape, () => ({
  __proto__: dart.getFields(convert.HtmlEscape.__proto__),
  mode: dart.finalFieldType(convert.HtmlEscapeMode)
}));
const _escape = Symbol('_escape');
convert._HtmlEscapeSink = class _HtmlEscapeSink extends convert.StringConversionSinkBase {
  addSlice(chunk, start, end, isLast) {
    let val = this[_escape][_convert](chunk, start, end);
    if (val == null) {
      this[_sink$].addSlice(chunk, start, end, isLast);
    } else {
      this[_sink$].add(val);
      if (dart.test(isLast)) this[_sink$].close();
    }
  }
  close() {
    this[_sink$].close();
  }
};
(convert._HtmlEscapeSink.new = function(escape, sink) {
  this[_escape] = escape;
  this[_sink$] = sink;
}).prototype = convert._HtmlEscapeSink.prototype;
dart.addTypeTests(convert._HtmlEscapeSink);
dart.setMethodSignature(convert._HtmlEscapeSink, () => ({
  __proto__: dart.getMethods(convert._HtmlEscapeSink.__proto__),
  addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool]),
  close: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(convert._HtmlEscapeSink, () => ({
  __proto__: dart.getFields(convert._HtmlEscapeSink.__proto__),
  [_escape]: dart.finalFieldType(convert.HtmlEscape),
  [_sink$]: dart.finalFieldType(convert.StringConversionSink)
}));
convert.JsonUnsupportedObjectError = class JsonUnsupportedObjectError extends core.Error {
  get unsupportedObject() {
    return this[unsupportedObject$];
  }
  set unsupportedObject(value) {
    super.unsupportedObject = value;
  }
  get cause() {
    return this[cause$];
  }
  set cause(value) {
    super.cause = value;
  }
  get partialResult() {
    return this[partialResult$];
  }
  set partialResult(value) {
    super.partialResult = value;
  }
  toString() {
    let safeString = core.Error.safeToString(this.unsupportedObject);
    let prefix = null;
    if (this.cause != null) {
      prefix = "Converting object to an encodable object failed:";
    } else {
      prefix = "Converting object did not return an encodable object:";
    }
    return dart.str(prefix) + " " + dart.str(safeString);
  }
};
(convert.JsonUnsupportedObjectError.new = function(unsupportedObject, opts) {
  let cause = opts && 'cause' in opts ? opts.cause : null;
  let partialResult = opts && 'partialResult' in opts ? opts.partialResult : null;
  this[unsupportedObject$] = unsupportedObject;
  this[cause$] = cause;
  this[partialResult$] = partialResult;
  convert.JsonUnsupportedObjectError.__proto__.new.call(this);
}).prototype = convert.JsonUnsupportedObjectError.prototype;
dart.addTypeTests(convert.JsonUnsupportedObjectError);
const unsupportedObject$ = Symbol("JsonUnsupportedObjectError.unsupportedObject");
const cause$ = Symbol("JsonUnsupportedObjectError.cause");
const partialResult$ = Symbol("JsonUnsupportedObjectError.partialResult");
dart.setFieldSignature(convert.JsonUnsupportedObjectError, () => ({
  __proto__: dart.getFields(convert.JsonUnsupportedObjectError.__proto__),
  unsupportedObject: dart.finalFieldType(core.Object),
  cause: dart.finalFieldType(core.Object),
  partialResult: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(convert.JsonUnsupportedObjectError, ['toString']);
convert.JsonCyclicError = class JsonCyclicError extends convert.JsonUnsupportedObjectError {
  toString() {
    return "Cyclic error in JSON stringify";
  }
};
(convert.JsonCyclicError.new = function(object) {
  convert.JsonCyclicError.__proto__.new.call(this, object);
}).prototype = convert.JsonCyclicError.prototype;
dart.addTypeTests(convert.JsonCyclicError);
dart.defineExtensionMethods(convert.JsonCyclicError, ['toString']);
dart.defineLazy(convert, {
  /*convert.json*/get json() {
    return dart.const(new convert.JsonCodec.new());
  }
});
convert.jsonEncode = function(object, opts) {
  let toEncodable = opts && 'toEncodable' in opts ? opts.toEncodable : null;
  return convert.json.encode(object, {toEncodable: toEncodable});
};
convert.jsonDecode = function(source, opts) {
  let reviver = opts && 'reviver' in opts ? opts.reviver : null;
  return convert.json.decode(source, {reviver: reviver});
};
const _toEncodable = Symbol('_toEncodable');
let const$32;
let const$33;
convert.JsonCodec = class JsonCodec extends convert.Codec$(core.Object, core.String) {
  decode(source, opts) {
    core.String._check(source);
    let reviver = opts && 'reviver' in opts ? opts.reviver : null;
    let t = reviver;
    t == null ? reviver = this[_reviver] : t;
    if (reviver == null) return this.decoder.convert(source);
    return new convert.JsonDecoder.new(reviver).convert(source);
  }
  encode(value, opts) {
    let toEncodable = opts && 'toEncodable' in opts ? opts.toEncodable : null;
    let t = toEncodable;
    t == null ? toEncodable = this[_toEncodable] : t;
    if (toEncodable == null) return this.encoder.convert(value);
    return new convert.JsonEncoder.new(toEncodable).convert(value);
  }
  get encoder() {
    if (this[_toEncodable] == null) return const$32 || (const$32 = dart.const(new convert.JsonEncoder.new()));
    return new convert.JsonEncoder.new(this[_toEncodable]);
  }
  get decoder() {
    if (this[_reviver] == null) return const$33 || (const$33 = dart.const(new convert.JsonDecoder.new()));
    return new convert.JsonDecoder.new(this[_reviver]);
  }
};
(convert.JsonCodec.new = function(opts) {
  let reviver = opts && 'reviver' in opts ? opts.reviver : null;
  let toEncodable = opts && 'toEncodable' in opts ? opts.toEncodable : null;
  this[_reviver] = reviver;
  this[_toEncodable] = toEncodable;
  convert.JsonCodec.__proto__.new.call(this);
}).prototype = convert.JsonCodec.prototype;
(convert.JsonCodec.withReviver = function(reviver) {
  convert.JsonCodec.new.call(this, {reviver: reviver});
}).prototype = convert.JsonCodec.prototype;
dart.addTypeTests(convert.JsonCodec);
dart.setMethodSignature(convert.JsonCodec, () => ({
  __proto__: dart.getMethods(convert.JsonCodec.__proto__),
  decode: dart.fnType(dart.dynamic, [core.Object], {reviver: dart.fnType(dart.dynamic, [core.Object, core.Object])}),
  encode: dart.fnType(core.String, [core.Object], {toEncodable: dart.fnType(dart.dynamic, [dart.dynamic])})
}));
dart.setGetterSignature(convert.JsonCodec, () => ({
  __proto__: dart.getGetters(convert.JsonCodec.__proto__),
  encoder: convert.JsonEncoder,
  decoder: convert.JsonDecoder
}));
dart.setFieldSignature(convert.JsonCodec, () => ({
  __proto__: dart.getFields(convert.JsonCodec.__proto__),
  [_reviver]: dart.finalFieldType(ObjectAndObjectTodynamic()),
  [_toEncodable]: dart.finalFieldType(dynamicTodynamic())
}));
convert.JsonEncoder = class JsonEncoder extends convert.Converter$(core.Object, core.String) {
  get indent() {
    return this[indent$];
  }
  set indent(value) {
    super.indent = value;
  }
  convert(object) {
    return convert._JsonStringStringifier.stringify(object, this[_toEncodable], this.indent);
  }
  startChunkedConversion(sink) {
    SinkOfString()._check(sink);
    if (convert._Utf8EncoderSink.is(sink)) {
      return new convert._JsonUtf8EncoderSink.new(sink[_sink$], this[_toEncodable], convert.JsonUtf8Encoder._utf8Encode(this.indent), convert.JsonUtf8Encoder._defaultBufferSize);
    }
    return new convert._JsonEncoderSink.new(convert.StringConversionSink.is(sink) ? sink : convert.StringConversionSink.from(sink), this[_toEncodable], this.indent);
  }
  bind(stream) {
    return super.bind(stream);
  }
  fuse(T, other) {
    convert.Converter$(core.String, T)._check(other);
    if (convert.Utf8Encoder.is(other) && ListOfint().is(dart.wrapType(T))) {
      return convert.Converter$(core.Object, T)._check(new convert.JsonUtf8Encoder.new(this.indent, this[_toEncodable]));
    }
    return super.fuse(T, other);
  }
};
(convert.JsonEncoder.new = function(toEncodable) {
  if (toEncodable === void 0) toEncodable = null;
  this[indent$] = null;
  this[_toEncodable] = toEncodable;
  convert.JsonEncoder.__proto__.new.call(this);
}).prototype = convert.JsonEncoder.prototype;
(convert.JsonEncoder.withIndent = function(indent, toEncodable) {
  if (toEncodable === void 0) toEncodable = null;
  this[indent$] = indent;
  this[_toEncodable] = toEncodable;
  convert.JsonEncoder.__proto__.new.call(this);
}).prototype = convert.JsonEncoder.prototype;
dart.addTypeTests(convert.JsonEncoder);
const indent$ = Symbol("JsonEncoder.indent");
dart.setMethodSignature(convert.JsonEncoder, () => ({
  __proto__: dart.getMethods(convert.JsonEncoder.__proto__),
  convert: dart.fnType(core.String, [core.Object]),
  startChunkedConversion: dart.fnType(convert.ChunkedConversionSink$(core.Object), [core.Object]),
  bind: dart.fnType(async.Stream$(core.String), [async.Stream$(core.Object)]),
  fuse: dart.gFnType(T => [convert.Converter$(core.Object, T), [core.Object]])
}));
dart.setFieldSignature(convert.JsonEncoder, () => ({
  __proto__: dart.getFields(convert.JsonEncoder.__proto__),
  indent: dart.finalFieldType(core.String),
  [_toEncodable]: dart.finalFieldType(dynamicTodynamic())
}));
const _indent = Symbol('_indent');
const _bufferSize = Symbol('_bufferSize');
convert.JsonUtf8Encoder = class JsonUtf8Encoder extends convert.Converter$(core.Object, core.List$(core.int)) {
  static _utf8Encode(string) {
    if (string == null) return null;
    if (string[$isEmpty]) return typed_data.Uint8List.new(0);
    checkAscii: {
      for (let i = 0; i < string.length; i++) {
        if (string[$codeUnitAt](i) >= 128) break checkAscii;
      }
      return string[$codeUnits];
    }
    return convert.utf8.encode(string);
  }
  convert(object) {
    let bytes = JSArrayOfListOfint().of([]);
    function addChunk(chunk, start, end) {
      if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(chunk[$length])) {
        let length = dart.notNull(end) - dart.notNull(start);
        chunk = typed_data.Uint8List.view(chunk[$buffer], dart.notNull(chunk[$offsetInBytes]) + dart.notNull(start), length);
      }
      bytes[$add](chunk);
    }
    dart.fn(addChunk, Uint8ListAndintAndintTovoid());
    convert._JsonUtf8Stringifier.stringify(object, this[_indent], this[_toEncodable], this[_bufferSize], addChunk);
    if (bytes[$length] === 1) return bytes[$_get](0);
    let length = 0;
    for (let i = 0; i < dart.notNull(bytes[$length]); i++) {
      length = length + dart.notNull(bytes[$_get](i)[$length]);
    }
    let result = typed_data.Uint8List.new(length);
    for (let i = 0, offset = 0; i < dart.notNull(bytes[$length]); i++) {
      let byteList = bytes[$_get](i);
      let end = offset + dart.notNull(byteList[$length]);
      result[$setRange](offset, end, byteList);
      offset = end;
    }
    return result;
  }
  startChunkedConversion(sink) {
    SinkOfListOfint()._check(sink);
    let byteSink = null;
    if (convert.ByteConversionSink.is(sink)) {
      byteSink = sink;
    } else {
      byteSink = convert.ByteConversionSink.from(sink);
    }
    return new convert._JsonUtf8EncoderSink.new(byteSink, this[_toEncodable], this[_indent], this[_bufferSize]);
  }
  bind(stream) {
    return super.bind(stream);
  }
};
(convert.JsonUtf8Encoder.new = function(indent, toEncodable, bufferSize) {
  if (indent === void 0) indent = null;
  if (toEncodable === void 0) toEncodable = null;
  if (bufferSize === void 0) bufferSize = 256;
  this[_indent] = convert.JsonUtf8Encoder._utf8Encode(indent);
  this[_toEncodable] = toEncodable;
  this[_bufferSize] = bufferSize;
  convert.JsonUtf8Encoder.__proto__.new.call(this);
}).prototype = convert.JsonUtf8Encoder.prototype;
dart.addTypeTests(convert.JsonUtf8Encoder);
dart.setMethodSignature(convert.JsonUtf8Encoder, () => ({
  __proto__: dart.getMethods(convert.JsonUtf8Encoder.__proto__),
  convert: dart.fnType(core.List$(core.int), [core.Object]),
  startChunkedConversion: dart.fnType(convert.ChunkedConversionSink$(core.Object), [core.Object]),
  bind: dart.fnType(async.Stream$(core.List$(core.int)), [async.Stream$(core.Object)])
}));
dart.setFieldSignature(convert.JsonUtf8Encoder, () => ({
  __proto__: dart.getFields(convert.JsonUtf8Encoder.__proto__),
  [_indent]: dart.finalFieldType(ListOfint()),
  [_toEncodable]: dart.finalFieldType(dynamicTodynamic()),
  [_bufferSize]: dart.finalFieldType(core.int)
}));
dart.defineLazy(convert.JsonUtf8Encoder, {
  /*convert.JsonUtf8Encoder._defaultBufferSize*/get _defaultBufferSize() {
    return 256;
  },
  /*convert.JsonUtf8Encoder.DEFAULT_BUFFER_SIZE*/get DEFAULT_BUFFER_SIZE() {
    return 256;
  }
});
const _isDone = Symbol('_isDone');
convert._JsonEncoderSink = class _JsonEncoderSink extends convert.ChunkedConversionSink$(core.Object) {
  add(o) {
    if (dart.test(this[_isDone])) {
      dart.throw(new core.StateError.new("Only one call to add allowed"));
    }
    this[_isDone] = true;
    let stringSink = this[_sink$].asStringSink();
    convert._JsonStringStringifier.printOn(o, stringSink, this[_toEncodable], this[_indent]);
    stringSink.close();
  }
  close() {}
};
(convert._JsonEncoderSink.new = function(sink, toEncodable, indent) {
  this[_isDone] = false;
  this[_sink$] = sink;
  this[_toEncodable] = toEncodable;
  this[_indent] = indent;
  convert._JsonEncoderSink.__proto__.new.call(this);
}).prototype = convert._JsonEncoderSink.prototype;
dart.addTypeTests(convert._JsonEncoderSink);
dart.setMethodSignature(convert._JsonEncoderSink, () => ({
  __proto__: dart.getMethods(convert._JsonEncoderSink.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  close: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(convert._JsonEncoderSink, () => ({
  __proto__: dart.getFields(convert._JsonEncoderSink.__proto__),
  [_indent]: dart.finalFieldType(core.String),
  [_toEncodable]: dart.finalFieldType(dynamicTodynamic()),
  [_sink$]: dart.finalFieldType(convert.StringConversionSink),
  [_isDone]: dart.fieldType(core.bool)
}));
const _addChunk = Symbol('_addChunk');
convert._JsonUtf8EncoderSink = class _JsonUtf8EncoderSink extends convert.ChunkedConversionSink$(core.Object) {
  [_addChunk](chunk, start, end) {
    this[_sink$].addSlice(chunk, start, end, false);
  }
  add(object) {
    if (dart.test(this[_isDone])) {
      dart.throw(new core.StateError.new("Only one call to add allowed"));
    }
    this[_isDone] = true;
    convert._JsonUtf8Stringifier.stringify(object, this[_indent], this[_toEncodable], this[_bufferSize], dart.bind(this, _addChunk));
    this[_sink$].close();
  }
  close() {
    if (!dart.test(this[_isDone])) {
      this[_isDone] = true;
      this[_sink$].close();
    }
  }
};
(convert._JsonUtf8EncoderSink.new = function(sink, toEncodable, indent, bufferSize) {
  this[_isDone] = false;
  this[_sink$] = sink;
  this[_toEncodable] = toEncodable;
  this[_indent] = indent;
  this[_bufferSize] = bufferSize;
  convert._JsonUtf8EncoderSink.__proto__.new.call(this);
}).prototype = convert._JsonUtf8EncoderSink.prototype;
dart.addTypeTests(convert._JsonUtf8EncoderSink);
dart.setMethodSignature(convert._JsonUtf8EncoderSink, () => ({
  __proto__: dart.getMethods(convert._JsonUtf8EncoderSink.__proto__),
  [_addChunk]: dart.fnType(dart.void, [typed_data.Uint8List, core.int, core.int]),
  add: dart.fnType(dart.void, [core.Object]),
  close: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(convert._JsonUtf8EncoderSink, () => ({
  __proto__: dart.getFields(convert._JsonUtf8EncoderSink.__proto__),
  [_sink$]: dart.finalFieldType(convert.ByteConversionSink),
  [_indent]: dart.finalFieldType(ListOfint()),
  [_toEncodable]: dart.finalFieldType(dynamicTodynamic()),
  [_bufferSize]: dart.finalFieldType(core.int),
  [_isDone]: dart.fieldType(core.bool)
}));
convert.JsonDecoder = class JsonDecoder extends convert.Converter$(core.String, core.Object) {
  convert(input) {
    core.String._check(input);
    return convert._parseJson(input, this[_reviver]);
  }
  startChunkedConversion(sink) {
    return new convert._JsonDecoderSink.new(this[_reviver], sink);
  }
  bind(stream) {
    StreamOfString()._check(stream);
    return super.bind(stream);
  }
};
(convert.JsonDecoder.new = function(reviver) {
  if (reviver === void 0) reviver = null;
  this[_reviver] = reviver;
  convert.JsonDecoder.__proto__.new.call(this);
}).prototype = convert.JsonDecoder.prototype;
dart.addTypeTests(convert.JsonDecoder);
dart.setMethodSignature(convert.JsonDecoder, () => ({
  __proto__: dart.getMethods(convert.JsonDecoder.__proto__),
  convert: dart.fnType(dart.dynamic, [core.Object]),
  startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Sink$(core.Object)]),
  bind: dart.fnType(async.Stream$(core.Object), [core.Object])
}));
dart.setFieldSignature(convert.JsonDecoder, () => ({
  __proto__: dart.getFields(convert.JsonDecoder.__proto__),
  [_reviver]: dart.finalFieldType(ObjectAndObjectTodynamic())
}));
convert._parseJson = function(source, reviver) {
  if (!(typeof source == 'string')) dart.throw(_js_helper.argumentErrorValue(source));
  let parsed = null;
  try {
    parsed = JSON.parse(source);
  } catch (e$) {
    let e = dart.getThrown(e$);
    dart.throw(new core.FormatException.new(String(e)));
  }
  if (reviver == null) {
    return convert._convertJsonToDartLazy(parsed);
  } else {
    return convert._convertJsonToDart(parsed, reviver);
  }
};
convert._defaultToEncodable = function(object) {
  return dart.dsend(object, 'toJson', []);
};
const _seen = Symbol('_seen');
const _checkCycle = Symbol('_checkCycle');
const _removeSeen = Symbol('_removeSeen');
const _partialResult = Symbol('_partialResult');
convert._JsonStringifier = class _JsonStringifier extends core.Object {
  static hexDigit(x) {
    return dart.notNull(x) < 10 ? 48 + dart.notNull(x) : 87 + dart.notNull(x);
  }
  writeStringContent(s) {
    let offset = 0;
    let length = s.length;
    for (let i = 0; i < length; i++) {
      let charCode = s[$codeUnitAt](i);
      if (charCode > 92) continue;
      if (charCode < 32) {
        if (i > offset) this.writeStringSlice(s, offset, i);
        offset = i + 1;
        this.writeCharCode(92);
        switch (charCode) {
          case 8:
          {
            this.writeCharCode(98);
            break;
          }
          case 9:
          {
            this.writeCharCode(116);
            break;
          }
          case 10:
          {
            this.writeCharCode(110);
            break;
          }
          case 12:
          {
            this.writeCharCode(102);
            break;
          }
          case 13:
          {
            this.writeCharCode(114);
            break;
          }
          default:
          {
            this.writeCharCode(117);
            this.writeCharCode(48);
            this.writeCharCode(48);
            this.writeCharCode(convert._JsonStringifier.hexDigit(charCode >> 4 & 15));
            this.writeCharCode(convert._JsonStringifier.hexDigit(charCode & 15));
            break;
          }
        }
      } else if (charCode === 34 || charCode === 92) {
        if (i > offset) this.writeStringSlice(s, offset, i);
        offset = i + 1;
        this.writeCharCode(92);
        this.writeCharCode(charCode);
      }
    }
    if (offset === 0) {
      this.writeString(s);
    } else if (offset < length) {
      this.writeStringSlice(s, offset, length);
    }
  }
  [_checkCycle](object) {
    for (let i = 0; i < dart.notNull(this[_seen][$length]); i++) {
      if (core.identical(object, this[_seen][$_get](i))) {
        dart.throw(new convert.JsonCyclicError.new(object));
      }
    }
    this[_seen][$add](object);
  }
  [_removeSeen](object) {
    if (!dart.test(this[_seen][$isNotEmpty])) dart.assertFailed();
    if (!core.identical(this[_seen][$last], object)) dart.assertFailed();
    this[_seen][$removeLast]();
  }
  writeObject(object) {
    if (dart.test(this.writeJsonValue(object))) return;
    this[_checkCycle](object);
    try {
      let customJson = this[_toEncodable](object);
      if (!dart.test(this.writeJsonValue(customJson))) {
        dart.throw(new convert.JsonUnsupportedObjectError.new(object, {partialResult: this[_partialResult]}));
      }
      this[_removeSeen](object);
    } catch (e$) {
      let e = dart.getThrown(e$);
      dart.throw(new convert.JsonUnsupportedObjectError.new(object, {cause: e, partialResult: this[_partialResult]}));
    }
  }
  writeJsonValue(object) {
    if (typeof object == 'number') {
      if (!object[$isFinite]) return false;
      this.writeNumber(object);
      return true;
    } else if (object === true) {
      this.writeString("true");
      return true;
    } else if (object === false) {
      this.writeString("false");
      return true;
    } else if (object == null) {
      this.writeString("null");
      return true;
    } else if (typeof object == 'string') {
      this.writeString("\"");
      this.writeStringContent(object);
      this.writeString("\"");
      return true;
    } else if (core.List.is(object)) {
      this[_checkCycle](object);
      this.writeList(object);
      this[_removeSeen](object);
      return true;
    } else if (core.Map.is(object)) {
      this[_checkCycle](object);
      let success = this.writeMap(object);
      this[_removeSeen](object);
      return success;
    } else {
      return false;
    }
  }
  writeList(list) {
    this.writeString("[");
    if (dart.test(list[$isNotEmpty])) {
      this.writeObject(list[$_get](0));
      for (let i = 1; i < dart.notNull(list[$length]); i++) {
        this.writeString(",");
        this.writeObject(list[$_get](i));
      }
    }
    this.writeString("]");
  }
  writeMap(map) {
    if (dart.test(map[$isEmpty])) {
      this.writeString("{}");
      return true;
    }
    let keyValueList = core.List.new(dart.notNull(map[$length]) * 2);
    let i = 0;
    let allStringKeys = true;
    map[$forEach](dart.fn((key, value) => {
      if (!(typeof key == 'string')) {
        allStringKeys = false;
      }
      keyValueList[$_set](i++, key);
      keyValueList[$_set](i++, value);
    }, dynamicAnddynamicToNull()));
    if (!allStringKeys) return false;
    this.writeString("{");
    let separator = "\"";
    for (let i = 0; i < dart.notNull(keyValueList[$length]); i = i + 2) {
      this.writeString(separator);
      separator = ",\"";
      this.writeStringContent(core.String._check(keyValueList[$_get](i)));
      this.writeString("\":");
      this.writeObject(keyValueList[$_get](i + 1));
    }
    this.writeString("}");
    return true;
  }
};
(convert._JsonStringifier.new = function(toEncodable) {
  this[_seen] = [];
  let l = toEncodable;
  this[_toEncodable] = l != null ? l : dart.fn(convert._defaultToEncodable, dynamicTodynamic());
}).prototype = convert._JsonStringifier.prototype;
dart.addTypeTests(convert._JsonStringifier);
dart.setMethodSignature(convert._JsonStringifier, () => ({
  __proto__: dart.getMethods(convert._JsonStringifier.__proto__),
  writeStringContent: dart.fnType(dart.void, [core.String]),
  [_checkCycle]: dart.fnType(dart.void, [dart.dynamic]),
  [_removeSeen]: dart.fnType(dart.void, [dart.dynamic]),
  writeObject: dart.fnType(dart.void, [dart.dynamic]),
  writeJsonValue: dart.fnType(core.bool, [dart.dynamic]),
  writeList: dart.fnType(dart.void, [core.List]),
  writeMap: dart.fnType(core.bool, [core.Map])
}));
dart.setFieldSignature(convert._JsonStringifier, () => ({
  __proto__: dart.getFields(convert._JsonStringifier.__proto__),
  [_seen]: dart.finalFieldType(core.List),
  [_toEncodable]: dart.finalFieldType(dynamicTodynamic())
}));
dart.defineLazy(convert._JsonStringifier, {
  /*convert._JsonStringifier.backspace*/get backspace() {
    return 8;
  },
  /*convert._JsonStringifier.tab*/get tab() {
    return 9;
  },
  /*convert._JsonStringifier.newline*/get newline() {
    return 10;
  },
  /*convert._JsonStringifier.carriageReturn*/get carriageReturn() {
    return 13;
  },
  /*convert._JsonStringifier.formFeed*/get formFeed() {
    return 12;
  },
  /*convert._JsonStringifier.quote*/get quote() {
    return 34;
  },
  /*convert._JsonStringifier.char_0*/get char_0() {
    return 48;
  },
  /*convert._JsonStringifier.backslash*/get backslash() {
    return 92;
  },
  /*convert._JsonStringifier.char_b*/get char_b() {
    return 98;
  },
  /*convert._JsonStringifier.char_f*/get char_f() {
    return 102;
  },
  /*convert._JsonStringifier.char_n*/get char_n() {
    return 110;
  },
  /*convert._JsonStringifier.char_r*/get char_r() {
    return 114;
  },
  /*convert._JsonStringifier.char_t*/get char_t() {
    return 116;
  },
  /*convert._JsonStringifier.char_u*/get char_u() {
    return 117;
  }
});
const _indentLevel = Symbol('_indentLevel');
convert._JsonPrettyPrintMixin = class _JsonPrettyPrintMixin extends core.Object {
  writeList(list) {
    if (dart.test(list[$isEmpty])) {
      this.writeString("[]");
    } else {
      this.writeString("[\n");
      this[_indentLevel] = dart.notNull(this[_indentLevel]) + 1;
      this.writeIndentation(this[_indentLevel]);
      this.writeObject(list[$_get](0));
      for (let i = 1; i < dart.notNull(list[$length]); i++) {
        this.writeString(",\n");
        this.writeIndentation(this[_indentLevel]);
        this.writeObject(list[$_get](i));
      }
      this.writeString("\n");
      this[_indentLevel] = dart.notNull(this[_indentLevel]) - 1;
      this.writeIndentation(this[_indentLevel]);
      this.writeString("]");
    }
  }
  writeMap(map) {
    if (dart.test(map[$isEmpty])) {
      this.writeString("{}");
      return true;
    }
    let keyValueList = core.List.new(dart.notNull(map[$length]) * 2);
    let i = 0;
    let allStringKeys = true;
    map[$forEach](dart.fn((key, value) => {
      if (!(typeof key == 'string')) {
        allStringKeys = false;
      }
      keyValueList[$_set](i++, key);
      keyValueList[$_set](i++, value);
    }, dynamicAnddynamicToNull()));
    if (!allStringKeys) return false;
    this.writeString("{\n");
    this[_indentLevel] = dart.notNull(this[_indentLevel]) + 1;
    let separator = "";
    for (let i = 0; i < dart.notNull(keyValueList[$length]); i = i + 2) {
      this.writeString(separator);
      separator = ",\n";
      this.writeIndentation(this[_indentLevel]);
      this.writeString("\"");
      this.writeStringContent(core.String._check(keyValueList[$_get](i)));
      this.writeString("\": ");
      this.writeObject(keyValueList[$_get](i + 1));
    }
    this.writeString("\n");
    this[_indentLevel] = dart.notNull(this[_indentLevel]) - 1;
    this.writeIndentation(this[_indentLevel]);
    this.writeString("}");
    return true;
  }
};
(convert._JsonPrettyPrintMixin.new = function() {
  this[_indentLevel] = 0;
}).prototype = convert._JsonPrettyPrintMixin.prototype;
dart.addTypeTests(convert._JsonPrettyPrintMixin);
convert._JsonPrettyPrintMixin[dart.implements] = () => [convert._JsonStringifier];
dart.setMethodSignature(convert._JsonPrettyPrintMixin, () => ({
  __proto__: dart.getMethods(convert._JsonPrettyPrintMixin.__proto__),
  writeList: dart.fnType(dart.void, [core.List]),
  writeMap: dart.fnType(core.bool, [core.Map])
}));
dart.setFieldSignature(convert._JsonPrettyPrintMixin, () => ({
  __proto__: dart.getFields(convert._JsonPrettyPrintMixin.__proto__),
  [_indentLevel]: dart.fieldType(core.int)
}));
convert._JsonStringStringifier = class _JsonStringStringifier extends convert._JsonStringifier {
  static stringify(object, toEncodable, indent) {
    let output = new core.StringBuffer.new();
    convert._JsonStringStringifier.printOn(object, output, toEncodable, indent);
    return output.toString();
  }
  static printOn(object, output, toEncodable, indent) {
    let stringifier = null;
    if (indent == null) {
      stringifier = new convert._JsonStringStringifier.new(output, toEncodable);
    } else {
      stringifier = new convert._JsonStringStringifierPretty.new(output, toEncodable, indent);
    }
    stringifier.writeObject(object);
  }
  get [_partialResult]() {
    return core.StringBuffer.is(this[_sink$]) ? dart.toString(this[_sink$]) : null;
  }
  writeNumber(number) {
    this[_sink$].write(dart.toString(number));
  }
  writeString(string) {
    this[_sink$].write(string);
  }
  writeStringSlice(string, start, end) {
    this[_sink$].write(string[$substring](start, end));
  }
  writeCharCode(charCode) {
    this[_sink$].writeCharCode(charCode);
  }
};
(convert._JsonStringStringifier.new = function(sink, _toEncodable) {
  this[_sink$] = sink;
  convert._JsonStringStringifier.__proto__.new.call(this, _toEncodable);
}).prototype = convert._JsonStringStringifier.prototype;
dart.addTypeTests(convert._JsonStringStringifier);
dart.setMethodSignature(convert._JsonStringStringifier, () => ({
  __proto__: dart.getMethods(convert._JsonStringStringifier.__proto__),
  writeNumber: dart.fnType(dart.void, [core.num]),
  writeString: dart.fnType(dart.void, [core.String]),
  writeStringSlice: dart.fnType(dart.void, [core.String, core.int, core.int]),
  writeCharCode: dart.fnType(dart.void, [core.int])
}));
dart.setGetterSignature(convert._JsonStringStringifier, () => ({
  __proto__: dart.getGetters(convert._JsonStringStringifier.__proto__),
  [_partialResult]: core.String
}));
dart.setFieldSignature(convert._JsonStringStringifier, () => ({
  __proto__: dart.getFields(convert._JsonStringStringifier.__proto__),
  [_sink$]: dart.finalFieldType(core.StringSink)
}));
const _JsonStringStringifier__JsonPrettyPrintMixin$ = class _JsonStringStringifier__JsonPrettyPrintMixin extends convert._JsonStringStringifier {};
(_JsonStringStringifier__JsonPrettyPrintMixin$.new = function(_sink, _toEncodable) {
  convert._JsonPrettyPrintMixin.new.call(this);
  _JsonStringStringifier__JsonPrettyPrintMixin$.__proto__.new.call(this, _sink, _toEncodable);
}).prototype = _JsonStringStringifier__JsonPrettyPrintMixin$.prototype;
dart.applyMixin(_JsonStringStringifier__JsonPrettyPrintMixin$, convert._JsonPrettyPrintMixin);
convert._JsonStringStringifierPretty = class _JsonStringStringifierPretty extends _JsonStringStringifier__JsonPrettyPrintMixin$ {
  writeIndentation(count) {
    for (let i = 0; i < dart.notNull(count); i++)
      this.writeString(this[_indent]);
  }
};
(convert._JsonStringStringifierPretty.new = function(sink, toEncodable, indent) {
  this[_indent] = indent;
  convert._JsonStringStringifierPretty.__proto__.new.call(this, sink, toEncodable);
}).prototype = convert._JsonStringStringifierPretty.prototype;
dart.addTypeTests(convert._JsonStringStringifierPretty);
dart.setMethodSignature(convert._JsonStringStringifierPretty, () => ({
  __proto__: dart.getMethods(convert._JsonStringStringifierPretty.__proto__),
  writeIndentation: dart.fnType(dart.void, [core.int])
}));
dart.setFieldSignature(convert._JsonStringStringifierPretty, () => ({
  __proto__: dart.getFields(convert._JsonStringStringifierPretty.__proto__),
  [_indent]: dart.finalFieldType(core.String)
}));
convert._JsonUtf8Stringifier = class _JsonUtf8Stringifier extends convert._JsonStringifier {
  static stringify(object, indent, toEncodable, bufferSize, addChunk) {
    let stringifier = null;
    if (indent != null) {
      stringifier = new convert._JsonUtf8StringifierPretty.new(toEncodable, indent, bufferSize, addChunk);
    } else {
      stringifier = new convert._JsonUtf8Stringifier.new(toEncodable, bufferSize, addChunk);
    }
    stringifier.writeObject(object);
    stringifier.flush();
  }
  flush() {
    if (dart.notNull(this.index) > 0) {
      this.addChunk(this.buffer, 0, this.index);
    }
    this.buffer = null;
    this.index = 0;
  }
  get [_partialResult]() {
    return null;
  }
  writeNumber(number) {
    this.writeAsciiString(dart.toString(number));
  }
  writeAsciiString(string) {
    for (let i = 0; i < string.length; i++) {
      let char = string[$codeUnitAt](i);
      if (!(char <= 127)) dart.assertFailed();
      this.writeByte(char);
    }
  }
  writeString(string) {
    this.writeStringSlice(string, 0, string.length);
  }
  writeStringSlice(string, start, end) {
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = string[$codeUnitAt](i);
      if (char <= 127) {
        this.writeByte(char);
      } else {
        if ((char & 64512) === 55296 && dart.notNull(i) + 1 < dart.notNull(end)) {
          let nextChar = string[$codeUnitAt](dart.notNull(i) + 1);
          if ((nextChar & 64512) === 56320) {
            char = 65536 + ((char & 1023) << 10) + (nextChar & 1023);
            this.writeFourByteCharCode(char);
            i = dart.notNull(i) + 1;
            continue;
          }
        }
        this.writeMultiByteCharCode(char);
      }
    }
  }
  writeCharCode(charCode) {
    if (dart.notNull(charCode) <= 127) {
      this.writeByte(charCode);
      return;
    }
    this.writeMultiByteCharCode(charCode);
  }
  writeMultiByteCharCode(charCode) {
    if (dart.notNull(charCode) <= 2047) {
      this.writeByte((192 | charCode[$rightShift](6)) >>> 0);
      this.writeByte(128 | dart.notNull(charCode) & 63);
      return;
    }
    if (dart.notNull(charCode) <= 65535) {
      this.writeByte((224 | charCode[$rightShift](12)) >>> 0);
      this.writeByte(128 | dart.notNull(charCode) >> 6 & 63);
      this.writeByte(128 | dart.notNull(charCode) & 63);
      return;
    }
    this.writeFourByteCharCode(charCode);
  }
  writeFourByteCharCode(charCode) {
    if (!(dart.notNull(charCode) <= 1114111)) dart.assertFailed();
    this.writeByte((240 | charCode[$rightShift](18)) >>> 0);
    this.writeByte(128 | dart.notNull(charCode) >> 12 & 63);
    this.writeByte(128 | dart.notNull(charCode) >> 6 & 63);
    this.writeByte(128 | dart.notNull(charCode) & 63);
  }
  writeByte(byte) {
    if (!(dart.notNull(byte) <= 255)) dart.assertFailed();
    if (this.index == this.buffer[$length]) {
      this.addChunk(this.buffer, 0, this.index);
      this.buffer = typed_data.Uint8List.new(this.bufferSize);
      this.index = 0;
    }
    this.buffer[$_set]((() => {
      let x = this.index;
      this.index = dart.notNull(x) + 1;
      return x;
    })(), byte);
  }
};
(convert._JsonUtf8Stringifier.new = function(toEncodable, bufferSize, addChunk) {
  this.index = 0;
  this.bufferSize = bufferSize;
  this.addChunk = addChunk;
  this.buffer = typed_data.Uint8List.new(bufferSize);
  convert._JsonUtf8Stringifier.__proto__.new.call(this, toEncodable);
}).prototype = convert._JsonUtf8Stringifier.prototype;
dart.addTypeTests(convert._JsonUtf8Stringifier);
dart.setMethodSignature(convert._JsonUtf8Stringifier, () => ({
  __proto__: dart.getMethods(convert._JsonUtf8Stringifier.__proto__),
  flush: dart.fnType(dart.void, []),
  writeNumber: dart.fnType(dart.void, [core.num]),
  writeAsciiString: dart.fnType(dart.void, [core.String]),
  writeString: dart.fnType(dart.void, [core.String]),
  writeStringSlice: dart.fnType(dart.void, [core.String, core.int, core.int]),
  writeCharCode: dart.fnType(dart.void, [core.int]),
  writeMultiByteCharCode: dart.fnType(dart.void, [core.int]),
  writeFourByteCharCode: dart.fnType(dart.void, [core.int]),
  writeByte: dart.fnType(dart.void, [core.int])
}));
dart.setGetterSignature(convert._JsonUtf8Stringifier, () => ({
  __proto__: dart.getGetters(convert._JsonUtf8Stringifier.__proto__),
  [_partialResult]: core.String
}));
dart.setFieldSignature(convert._JsonUtf8Stringifier, () => ({
  __proto__: dart.getFields(convert._JsonUtf8Stringifier.__proto__),
  bufferSize: dart.finalFieldType(core.int),
  addChunk: dart.finalFieldType(Uint8ListAndintAndintTovoid()),
  buffer: dart.fieldType(typed_data.Uint8List),
  index: dart.fieldType(core.int)
}));
const _JsonUtf8Stringifier__JsonPrettyPrintMixin$ = class _JsonUtf8Stringifier__JsonPrettyPrintMixin extends convert._JsonUtf8Stringifier {};
(_JsonUtf8Stringifier__JsonPrettyPrintMixin$.new = function(toEncodable, bufferSize, addChunk) {
  convert._JsonPrettyPrintMixin.new.call(this);
  _JsonUtf8Stringifier__JsonPrettyPrintMixin$.__proto__.new.call(this, toEncodable, bufferSize, addChunk);
}).prototype = _JsonUtf8Stringifier__JsonPrettyPrintMixin$.prototype;
dart.applyMixin(_JsonUtf8Stringifier__JsonPrettyPrintMixin$, convert._JsonPrettyPrintMixin);
convert._JsonUtf8StringifierPretty = class _JsonUtf8StringifierPretty extends _JsonUtf8Stringifier__JsonPrettyPrintMixin$ {
  writeIndentation(count) {
    let indent = this.indent;
    let indentLength = indent[$length];
    if (indentLength === 1) {
      let char = indent[$_get](0);
      while (dart.notNull(count) > 0) {
        this.writeByte(char);
        count = dart.notNull(count) - 1;
      }
      return;
    }
    while (dart.notNull(count) > 0) {
      count = dart.notNull(count) - 1;
      let end = dart.notNull(this.index) + dart.notNull(indentLength);
      if (end <= dart.notNull(this.buffer[$length])) {
        this.buffer[$setRange](this.index, end, indent);
        this.index = end;
      } else {
        for (let i = 0; i < dart.notNull(indentLength); i++) {
          this.writeByte(indent[$_get](i));
        }
      }
    }
  }
};
(convert._JsonUtf8StringifierPretty.new = function(toEncodable, indent, bufferSize, addChunk) {
  this.indent = indent;
  convert._JsonUtf8StringifierPretty.__proto__.new.call(this, toEncodable, bufferSize, addChunk);
}).prototype = convert._JsonUtf8StringifierPretty.prototype;
dart.addTypeTests(convert._JsonUtf8StringifierPretty);
dart.setMethodSignature(convert._JsonUtf8StringifierPretty, () => ({
  __proto__: dart.getMethods(convert._JsonUtf8StringifierPretty.__proto__),
  writeIndentation: dart.fnType(dart.void, [core.int])
}));
dart.setFieldSignature(convert._JsonUtf8StringifierPretty, () => ({
  __proto__: dart.getFields(convert._JsonUtf8StringifierPretty.__proto__),
  indent: dart.finalFieldType(ListOfint())
}));
dart.defineLazy(convert, {
  /*convert.latin1*/get latin1() {
    return dart.const(new convert.Latin1Codec.new());
  },
  /*convert._latin1Mask*/get _latin1Mask() {
    return 255;
  }
});
let const$34;
let const$35;
let const$36;
let const$37;
let const$38;
convert.Latin1Codec = class Latin1Codec extends convert.Encoding {
  get name() {
    return "iso-8859-1";
  }
  encode(source) {
    core.String._check(source);
    return this.encoder.convert(source);
  }
  decode(bytes, opts) {
    ListOfint()._check(bytes);
    let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : null;
    let t = allowInvalid;
    t == null ? allowInvalid = this[_allowInvalid] : t;
    if (dart.test(allowInvalid)) {
      return (const$34 || (const$34 = dart.const(new convert.Latin1Decoder.new({allowInvalid: true})))).convert(bytes);
    } else {
      return (const$35 || (const$35 = dart.const(new convert.Latin1Decoder.new({allowInvalid: false})))).convert(bytes);
    }
  }
  get encoder() {
    return const$36 || (const$36 = dart.const(new convert.Latin1Encoder.new()));
  }
  get decoder() {
    return dart.test(this[_allowInvalid]) ? const$37 || (const$37 = dart.const(new convert.Latin1Decoder.new({allowInvalid: true}))) : const$38 || (const$38 = dart.const(new convert.Latin1Decoder.new({allowInvalid: false})));
  }
};
(convert.Latin1Codec.new = function(opts) {
  let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
  this[_allowInvalid] = allowInvalid;
  convert.Latin1Codec.__proto__.new.call(this);
}).prototype = convert.Latin1Codec.prototype;
dart.addTypeTests(convert.Latin1Codec);
dart.setMethodSignature(convert.Latin1Codec, () => ({
  __proto__: dart.getMethods(convert.Latin1Codec.__proto__),
  encode: dart.fnType(typed_data.Uint8List, [core.Object]),
  decode: dart.fnType(core.String, [core.Object], {allowInvalid: core.bool})
}));
dart.setGetterSignature(convert.Latin1Codec, () => ({
  __proto__: dart.getGetters(convert.Latin1Codec.__proto__),
  name: core.String,
  encoder: convert.Latin1Encoder,
  decoder: convert.Latin1Decoder
}));
dart.setFieldSignature(convert.Latin1Codec, () => ({
  __proto__: dart.getFields(convert.Latin1Codec.__proto__),
  [_allowInvalid]: dart.finalFieldType(core.bool)
}));
convert.Latin1Encoder = class Latin1Encoder extends convert._UnicodeSubsetEncoder {};
(convert.Latin1Encoder.new = function() {
  convert.Latin1Encoder.__proto__.new.call(this, 255);
}).prototype = convert.Latin1Encoder.prototype;
dart.addTypeTests(convert.Latin1Encoder);
convert.Latin1Decoder = class Latin1Decoder extends convert._UnicodeSubsetDecoder {
  startChunkedConversion(sink) {
    SinkOfString()._check(sink);
    let stringSink = null;
    if (convert.StringConversionSink.is(sink)) {
      stringSink = sink;
    } else {
      stringSink = convert.StringConversionSink.from(sink);
    }
    if (!dart.test(this[_allowInvalid])) return new convert._Latin1DecoderSink.new(stringSink);
    return new convert._Latin1AllowInvalidDecoderSink.new(stringSink);
  }
};
(convert.Latin1Decoder.new = function(opts) {
  let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false;
  convert.Latin1Decoder.__proto__.new.call(this, allowInvalid, 255);
}).prototype = convert.Latin1Decoder.prototype;
dart.addTypeTests(convert.Latin1Decoder);
dart.setMethodSignature(convert.Latin1Decoder, () => ({
  __proto__: dart.getMethods(convert.Latin1Decoder.__proto__),
  startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
}));
const _addSliceToSink = Symbol('_addSliceToSink');
convert._Latin1DecoderSink = class _Latin1DecoderSink extends convert.ByteConversionSinkBase {
  close() {
    this[_sink$].close();
    this[_sink$] = null;
  }
  add(source) {
    ListOfint()._check(source);
    this.addSlice(source, 0, source[$length], false);
  }
  [_addSliceToSink](source, start, end, isLast) {
    this[_sink$].add(core.String.fromCharCodes(source, start, end));
    if (dart.test(isLast)) this.close();
  }
  addSlice(source, start, end, isLast) {
    end = core.RangeError.checkValidRange(start, end, source[$length]);
    if (start == end) return;
    if (!typed_data.Uint8List.is(source)) {
      convert._Latin1DecoderSink._checkValidLatin1(source, start, end);
    }
    this[_addSliceToSink](source, start, end, isLast);
  }
  static _checkValidLatin1(source, start, end) {
    let mask = 0;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      mask = (mask | dart.notNull(source[$_get](i))) >>> 0;
    }
    if (mask >= 0 && mask <= 255) {
      return;
    }
    convert._Latin1DecoderSink._reportInvalidLatin1(source, start, end);
  }
  static _reportInvalidLatin1(source, start, end) {
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = source[$_get](i);
      if (dart.notNull(char) < 0 || dart.notNull(char) > 255) {
        dart.throw(new core.FormatException.new("Source contains non-Latin-1 characters.", source, i));
      }
    }
    if (!false) dart.assertFailed();
  }
};
(convert._Latin1DecoderSink.new = function(sink) {
  this[_sink$] = sink;
  convert._Latin1DecoderSink.__proto__.new.call(this);
}).prototype = convert._Latin1DecoderSink.prototype;
dart.addTypeTests(convert._Latin1DecoderSink);
dart.setMethodSignature(convert._Latin1DecoderSink, () => ({
  __proto__: dart.getMethods(convert._Latin1DecoderSink.__proto__),
  close: dart.fnType(dart.void, []),
  add: dart.fnType(dart.void, [core.Object]),
  [_addSliceToSink]: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
}));
dart.setFieldSignature(convert._Latin1DecoderSink, () => ({
  __proto__: dart.getFields(convert._Latin1DecoderSink.__proto__),
  [_sink$]: dart.fieldType(convert.StringConversionSink)
}));
let const$39;
convert._Latin1AllowInvalidDecoderSink = class _Latin1AllowInvalidDecoderSink extends convert._Latin1DecoderSink {
  addSlice(source, start, end, isLast) {
    core.RangeError.checkValidRange(start, end, source[$length]);
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = source[$_get](i);
      if (dart.notNull(char) > 255 || dart.notNull(char) < 0) {
        if (dart.notNull(i) > dart.notNull(start)) this[_addSliceToSink](source, start, i, false);
        this[_addSliceToSink](const$39 || (const$39 = dart.constList([65533], core.int)), 0, 1, false);
        start = dart.notNull(i) + 1;
      }
    }
    if (dart.notNull(start) < dart.notNull(end)) {
      this[_addSliceToSink](source, start, end, isLast);
    }
    if (dart.test(isLast)) {
      this.close();
    }
  }
};
(convert._Latin1AllowInvalidDecoderSink.new = function(sink) {
  convert._Latin1AllowInvalidDecoderSink.__proto__.new.call(this, sink);
}).prototype = convert._Latin1AllowInvalidDecoderSink.prototype;
dart.addTypeTests(convert._Latin1AllowInvalidDecoderSink);
dart.defineLazy(convert, {
  /*convert._LF*/get _LF() {
    return 10;
  },
  /*convert._CR*/get _CR() {
    return 13;
  }
});
convert.LineSplitter = class LineSplitter extends async.StreamTransformerBase$(core.String, core.String) {
  static split(lines, start, end) {
    return new (SyncIterableOfString()).new(() => (function* split(end) {
      if (start === void 0) start = 0;
      if (end === void 0) end = null;
      end = core.RangeError.checkValidRange(start, end, lines.length);
      let sliceStart = start;
      let char = 0;
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let previousChar = char;
        char = lines[$codeUnitAt](i);
        if (char !== 13) {
          if (char !== 10) continue;
          if (previousChar === 13) {
            sliceStart = dart.notNull(i) + 1;
            continue;
          }
        }
        yield lines[$substring](sliceStart, i);
        sliceStart = dart.notNull(i) + 1;
      }
      if (dart.notNull(sliceStart) < dart.notNull(end)) {
        yield lines[$substring](sliceStart, end);
      }
    })(end));
  }
  convert(data) {
    let lines = JSArrayOfString().of([]);
    let end = data.length;
    let sliceStart = 0;
    let char = 0;
    for (let i = 0; i < end; i++) {
      let previousChar = char;
      char = data[$codeUnitAt](i);
      if (char !== 13) {
        if (char !== 10) continue;
        if (previousChar === 13) {
          sliceStart = i + 1;
          continue;
        }
      }
      lines[$add](data[$substring](sliceStart, i));
      sliceStart = i + 1;
    }
    if (sliceStart < end) {
      lines[$add](data[$substring](sliceStart, end));
    }
    return lines;
  }
  startChunkedConversion(sink) {
    return new convert._LineSplitterSink.new(convert.StringConversionSink.is(sink) ? sink : convert.StringConversionSink.from(sink));
  }
  bind(stream) {
    StreamOfString()._check(stream);
    return StreamOfString().eventTransformed(stream, dart.fn(sink => new convert._LineSplitterEventSink.new(sink), EventSinkOfStringTo_LineSplitterEventSink()));
  }
};
(convert.LineSplitter.new = function() {
  convert.LineSplitter.__proto__.new.call(this);
}).prototype = convert.LineSplitter.prototype;
dart.addTypeTests(convert.LineSplitter);
dart.setMethodSignature(convert.LineSplitter, () => ({
  __proto__: dart.getMethods(convert.LineSplitter.__proto__),
  convert: dart.fnType(core.List$(core.String), [core.String]),
  startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Sink$(core.String)]),
  bind: dart.fnType(async.Stream$(core.String), [core.Object])
}));
const _carry = Symbol('_carry');
const _skipLeadingLF = Symbol('_skipLeadingLF');
const _addLines = Symbol('_addLines');
convert._LineSplitterSink = class _LineSplitterSink extends convert.StringConversionSinkBase {
  addSlice(chunk, start, end, isLast) {
    end = core.RangeError.checkValidRange(start, end, chunk.length);
    if (dart.notNull(start) >= dart.notNull(end)) {
      if (dart.test(isLast)) this.close();
      return;
    }
    if (this[_carry] != null) {
      if (!!dart.test(this[_skipLeadingLF])) dart.assertFailed();
      chunk = dart.notNull(this[_carry]) + chunk[$substring](start, end);
      start = 0;
      end = chunk.length;
      this[_carry] = null;
    } else if (dart.test(this[_skipLeadingLF])) {
      if (chunk[$codeUnitAt](start) === 10) {
        start = dart.notNull(start) + 1;
      }
      this[_skipLeadingLF] = false;
    }
    this[_addLines](chunk, start, end);
    if (dart.test(isLast)) this.close();
  }
  close() {
    if (this[_carry] != null) {
      this[_sink$].add(this[_carry]);
      this[_carry] = null;
    }
    this[_sink$].close();
  }
  [_addLines](lines, start, end) {
    let sliceStart = start;
    let char = 0;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let previousChar = char;
      char = lines[$codeUnitAt](i);
      if (char !== 13) {
        if (char !== 10) continue;
        if (previousChar === 13) {
          sliceStart = dart.notNull(i) + 1;
          continue;
        }
      }
      this[_sink$].add(lines[$substring](sliceStart, i));
      sliceStart = dart.notNull(i) + 1;
    }
    if (dart.notNull(sliceStart) < dart.notNull(end)) {
      this[_carry] = lines[$substring](sliceStart, end);
    } else {
      this[_skipLeadingLF] = char === 13;
    }
  }
};
(convert._LineSplitterSink.new = function(sink) {
  this[_carry] = null;
  this[_skipLeadingLF] = false;
  this[_sink$] = sink;
}).prototype = convert._LineSplitterSink.prototype;
dart.addTypeTests(convert._LineSplitterSink);
dart.setMethodSignature(convert._LineSplitterSink, () => ({
  __proto__: dart.getMethods(convert._LineSplitterSink.__proto__),
  addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool]),
  close: dart.fnType(dart.void, []),
  [_addLines]: dart.fnType(dart.void, [core.String, core.int, core.int])
}));
dart.setFieldSignature(convert._LineSplitterSink, () => ({
  __proto__: dart.getFields(convert._LineSplitterSink.__proto__),
  [_sink$]: dart.finalFieldType(convert.StringConversionSink),
  [_carry]: dart.fieldType(core.String),
  [_skipLeadingLF]: dart.fieldType(core.bool)
}));
convert._LineSplitterEventSink = class _LineSplitterEventSink extends convert._LineSplitterSink {
  addError(o, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    this[_eventSink].addError(o, stackTrace);
  }
};
(convert._LineSplitterEventSink.new = function(eventSink) {
  this[_eventSink] = eventSink;
  convert._LineSplitterEventSink.__proto__.new.call(this, convert.StringConversionSink.from(eventSink));
}).prototype = convert._LineSplitterEventSink.prototype;
dart.addTypeTests(convert._LineSplitterEventSink);
convert._LineSplitterEventSink[dart.implements] = () => [EventSinkOfString()];
dart.setMethodSignature(convert._LineSplitterEventSink, () => ({
  __proto__: dart.getMethods(convert._LineSplitterEventSink.__proto__),
  addError: dart.fnType(dart.void, [core.Object], [core.StackTrace])
}));
dart.setFieldSignature(convert._LineSplitterEventSink, () => ({
  __proto__: dart.getFields(convert._LineSplitterEventSink.__proto__),
  [_eventSink]: dart.finalFieldType(EventSinkOfString())
}));
convert.StringConversionSink = class StringConversionSink extends convert.ChunkedConversionSink$(core.String) {
  static withCallback(callback) {
    return new convert._StringCallbackSink.new(callback);
  }
  static from(sink) {
    return new convert._StringAdapterSink.new(sink);
  }
  static fromStringSink(sink) {
    return new (_StringSinkConversionSinkOfStringSink()).new(sink);
  }
};
(convert.StringConversionSink.new = function() {
  convert.StringConversionSink.__proto__.new.call(this);
}).prototype = convert.StringConversionSink.prototype;
dart.addTypeTests(convert.StringConversionSink);
convert.ClosableStringSink = class ClosableStringSink extends core.StringSink {
  static fromStringSink(sink, onClose) {
    return new convert._ClosableStringSink.new(sink, onClose);
  }
};
dart.addTypeTests(convert.ClosableStringSink);
convert._ClosableStringSink = class _ClosableStringSink extends core.Object {
  close() {
    this[_callback]();
  }
  writeCharCode(charCode) {
    this[_sink$].writeCharCode(charCode);
  }
  write(o) {
    this[_sink$].write(o);
  }
  writeln(o) {
    if (o === void 0) o = "";
    this[_sink$].writeln(o);
  }
  writeAll(objects, separator) {
    if (separator === void 0) separator = "";
    this[_sink$].writeAll(objects, separator);
  }
};
(convert._ClosableStringSink.new = function(sink, callback) {
  this[_sink$] = sink;
  this[_callback] = callback;
}).prototype = convert._ClosableStringSink.prototype;
dart.addTypeTests(convert._ClosableStringSink);
convert._ClosableStringSink[dart.implements] = () => [convert.ClosableStringSink];
dart.setMethodSignature(convert._ClosableStringSink, () => ({
  __proto__: dart.getMethods(convert._ClosableStringSink.__proto__),
  close: dart.fnType(dart.void, []),
  writeCharCode: dart.fnType(dart.void, [core.int]),
  write: dart.fnType(dart.void, [core.Object]),
  writeln: dart.fnType(dart.void, [], [core.Object]),
  writeAll: dart.fnType(dart.void, [core.Iterable], [core.String])
}));
dart.setFieldSignature(convert._ClosableStringSink, () => ({
  __proto__: dart.getFields(convert._ClosableStringSink.__proto__),
  [_callback]: dart.finalFieldType(VoidTovoid()),
  [_sink$]: dart.finalFieldType(core.StringSink)
}));
const _flush = Symbol('_flush');
convert._StringConversionSinkAsStringSinkAdapter = class _StringConversionSinkAsStringSinkAdapter extends core.Object {
  close() {
    if (dart.test(this[_buffer].isNotEmpty)) this[_flush]();
    this[_chunkedSink].close();
  }
  writeCharCode(charCode) {
    this[_buffer].writeCharCode(charCode);
    if (dart.notNull(this[_buffer].length) > 16) this[_flush]();
  }
  write(o) {
    if (dart.test(this[_buffer].isNotEmpty)) this[_flush]();
    this[_chunkedSink].add(dart.toString(o));
  }
  writeln(o) {
    if (o === void 0) o = "";
    this[_buffer].writeln(o);
    if (dart.notNull(this[_buffer].length) > 16) this[_flush]();
  }
  writeAll(objects, separator) {
    if (separator === void 0) separator = "";
    if (dart.test(this[_buffer].isNotEmpty)) this[_flush]();
    let iterator = objects[$iterator];
    if (!dart.test(iterator.moveNext())) return;
    if (separator[$isEmpty]) {
      do {
        this[_chunkedSink].add(dart.toString(iterator.current));
      } while (dart.test(iterator.moveNext()));
    } else {
      this[_chunkedSink].add(dart.toString(iterator.current));
      while (dart.test(iterator.moveNext())) {
        this.write(separator);
        this[_chunkedSink].add(dart.toString(iterator.current));
      }
    }
  }
  [_flush]() {
    let accumulated = dart.toString(this[_buffer]);
    this[_buffer].clear();
    this[_chunkedSink].add(accumulated);
  }
};
(convert._StringConversionSinkAsStringSinkAdapter.new = function(chunkedSink) {
  this[_chunkedSink] = chunkedSink;
  this[_buffer] = new core.StringBuffer.new();
}).prototype = convert._StringConversionSinkAsStringSinkAdapter.prototype;
dart.addTypeTests(convert._StringConversionSinkAsStringSinkAdapter);
convert._StringConversionSinkAsStringSinkAdapter[dart.implements] = () => [convert.ClosableStringSink];
dart.setMethodSignature(convert._StringConversionSinkAsStringSinkAdapter, () => ({
  __proto__: dart.getMethods(convert._StringConversionSinkAsStringSinkAdapter.__proto__),
  close: dart.fnType(dart.void, []),
  writeCharCode: dart.fnType(dart.void, [core.int]),
  write: dart.fnType(dart.void, [core.Object]),
  writeln: dart.fnType(dart.void, [], [core.Object]),
  writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
  [_flush]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(convert._StringConversionSinkAsStringSinkAdapter, () => ({
  __proto__: dart.getFields(convert._StringConversionSinkAsStringSinkAdapter.__proto__),
  [_buffer]: dart.fieldType(core.StringBuffer),
  [_chunkedSink]: dart.fieldType(convert.StringConversionSink)
}));
dart.defineLazy(convert._StringConversionSinkAsStringSinkAdapter, {
  /*convert._StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE*/get _MIN_STRING_SIZE() {
    return 16;
  }
});
const _contents = Symbol('_contents');
const _writeString = Symbol('_writeString');
core.StringBuffer = class StringBuffer extends core.Object {
  get length() {
    return this[_contents].length;
  }
  get isEmpty() {
    return this.length === 0;
  }
  get isNotEmpty() {
    return !dart.test(this.isEmpty);
  }
  write(obj) {
    this[_writeString](dart.str(obj));
  }
  writeCharCode(charCode) {
    this[_writeString](core.String.fromCharCode(charCode));
  }
  writeAll(objects, separator) {
    if (separator === void 0) separator = "";
    this[_contents] = core.StringBuffer._writeAll(this[_contents], objects, separator);
  }
  writeln(obj) {
    if (obj === void 0) obj = "";
    this[_writeString](dart.str(obj) + "\n");
  }
  clear() {
    this[_contents] = "";
  }
  toString() {
    return _js_helper.Primitives.flattenString(this[_contents]);
  }
  [_writeString](str) {
    this[_contents] = _js_helper.Primitives.stringConcatUnchecked(this[_contents], core.String._check(str));
  }
  static _writeAll(string, objects, separator) {
    let iterator = objects[$iterator];
    if (!dart.test(iterator.moveNext())) return string;
    if (separator[$isEmpty]) {
      do {
        string = core.StringBuffer._writeOne(string, iterator.current);
      } while (dart.test(iterator.moveNext()));
    } else {
      string = core.StringBuffer._writeOne(string, iterator.current);
      while (dart.test(iterator.moveNext())) {
        string = core.StringBuffer._writeOne(string, separator);
        string = core.StringBuffer._writeOne(string, iterator.current);
      }
    }
    return string;
  }
  static _writeOne(string, obj) {
    return _js_helper.Primitives.stringConcatUnchecked(string, dart.str(obj));
  }
};
(core.StringBuffer.new = function(content) {
  if (content === void 0) content = "";
  this[_contents] = dart.str(content);
}).prototype = core.StringBuffer.prototype;
dart.addTypeTests(core.StringBuffer);
core.StringBuffer[dart.implements] = () => [core.StringSink];
dart.setMethodSignature(core.StringBuffer, () => ({
  __proto__: dart.getMethods(core.StringBuffer.__proto__),
  write: dart.fnType(dart.void, [core.Object]),
  writeCharCode: dart.fnType(dart.void, [core.int]),
  writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
  writeln: dart.fnType(dart.void, [], [core.Object]),
  clear: dart.fnType(dart.void, []),
  [_writeString]: dart.fnType(dart.void, [dart.dynamic])
}));
dart.setGetterSignature(core.StringBuffer, () => ({
  __proto__: dart.getGetters(core.StringBuffer.__proto__),
  length: core.int,
  isEmpty: core.bool,
  isNotEmpty: core.bool
}));
dart.setFieldSignature(core.StringBuffer, () => ({
  __proto__: dart.getFields(core.StringBuffer.__proto__),
  [_contents]: dart.fieldType(core.String)
}));
dart.defineExtensionMethods(core.StringBuffer, ['toString']);
convert._StringCallbackSink = class _StringCallbackSink extends convert._StringSinkConversionSink$(core.StringBuffer) {
  close() {
    let accumulated = dart.toString(this[_stringSink]);
    this[_stringSink].clear();
    this[_callback](accumulated);
  }
  asUtf8Sink(allowMalformed) {
    return new convert._Utf8StringSinkAdapter.new(this, this[_stringSink], allowMalformed);
  }
};
(convert._StringCallbackSink.new = function(callback) {
  this[_callback] = callback;
  convert._StringCallbackSink.__proto__.new.call(this, new core.StringBuffer.new());
}).prototype = convert._StringCallbackSink.prototype;
dart.addTypeTests(convert._StringCallbackSink);
dart.setMethodSignature(convert._StringCallbackSink, () => ({
  __proto__: dart.getMethods(convert._StringCallbackSink.__proto__),
  close: dart.fnType(dart.void, []),
  asUtf8Sink: dart.fnType(convert.ByteConversionSink, [core.bool])
}));
dart.setFieldSignature(convert._StringCallbackSink, () => ({
  __proto__: dart.getFields(convert._StringCallbackSink.__proto__),
  [_callback]: dart.finalFieldType(StringTovoid())
}));
convert._StringAdapterSink = class _StringAdapterSink extends convert.StringConversionSinkBase {
  add(str) {
    core.String._check(str);
    this[_sink$].add(str);
  }
  addSlice(str, start, end, isLast) {
    if (start === 0 && end === str.length) {
      this.add(str);
    } else {
      this.add(str[$substring](start, end));
    }
    if (dart.test(isLast)) this.close();
  }
  close() {
    this[_sink$].close();
  }
};
(convert._StringAdapterSink.new = function(sink) {
  this[_sink$] = sink;
}).prototype = convert._StringAdapterSink.prototype;
dart.addTypeTests(convert._StringAdapterSink);
dart.setMethodSignature(convert._StringAdapterSink, () => ({
  __proto__: dart.getMethods(convert._StringAdapterSink.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool]),
  close: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(convert._StringAdapterSink, () => ({
  __proto__: dart.getFields(convert._StringAdapterSink.__proto__),
  [_sink$]: dart.finalFieldType(SinkOfString())
}));
convert._Utf8StringSinkAdapter = class _Utf8StringSinkAdapter extends convert.ByteConversionSink {
  close() {
    this[_decoder].close();
    if (this[_sink$] != null) this[_sink$].close();
  }
  add(chunk) {
    ListOfint()._check(chunk);
    this.addSlice(chunk, 0, chunk[$length], false);
  }
  addSlice(codeUnits, startIndex, endIndex, isLast) {
    this[_decoder].convert(codeUnits, startIndex, endIndex);
    if (dart.test(isLast)) this.close();
  }
};
(convert._Utf8StringSinkAdapter.new = function(sink, stringSink, allowMalformed) {
  this[_sink$] = sink;
  this[_decoder] = new convert._Utf8Decoder.new(stringSink, allowMalformed);
  convert._Utf8StringSinkAdapter.__proto__.new.call(this);
}).prototype = convert._Utf8StringSinkAdapter.prototype;
dart.addTypeTests(convert._Utf8StringSinkAdapter);
dart.setMethodSignature(convert._Utf8StringSinkAdapter, () => ({
  __proto__: dart.getMethods(convert._Utf8StringSinkAdapter.__proto__),
  close: dart.fnType(dart.void, []),
  add: dart.fnType(dart.void, [core.Object]),
  addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
}));
dart.setFieldSignature(convert._Utf8StringSinkAdapter, () => ({
  __proto__: dart.getFields(convert._Utf8StringSinkAdapter.__proto__),
  [_decoder]: dart.finalFieldType(convert._Utf8Decoder),
  [_sink$]: dart.finalFieldType(core.Sink)
}));
convert._Utf8ConversionSink = class _Utf8ConversionSink extends convert.ByteConversionSink {
  close() {
    this[_decoder].close();
    if (dart.test(this[_buffer].isNotEmpty)) {
      let accumulated = dart.toString(this[_buffer]);
      this[_buffer].clear();
      this[_chunkedSink].addSlice(accumulated, 0, accumulated.length, true);
    } else {
      this[_chunkedSink].close();
    }
  }
  add(chunk) {
    ListOfint()._check(chunk);
    this.addSlice(chunk, 0, chunk[$length], false);
  }
  addSlice(chunk, startIndex, endIndex, isLast) {
    this[_decoder].convert(chunk, startIndex, endIndex);
    if (dart.test(this[_buffer].isNotEmpty)) {
      let accumulated = dart.toString(this[_buffer]);
      this[_chunkedSink].addSlice(accumulated, 0, accumulated.length, isLast);
      this[_buffer].clear();
      return;
    }
    if (dart.test(isLast)) this.close();
  }
};
(convert._Utf8ConversionSink.new = function(sink, allowMalformed) {
  convert._Utf8ConversionSink.__.call(this, sink, new core.StringBuffer.new(), allowMalformed);
}).prototype = convert._Utf8ConversionSink.prototype;
(convert._Utf8ConversionSink.__ = function(chunkedSink, stringBuffer, allowMalformed) {
  this[_chunkedSink] = chunkedSink;
  this[_decoder] = new convert._Utf8Decoder.new(stringBuffer, allowMalformed);
  this[_buffer] = stringBuffer;
  convert._Utf8ConversionSink.__proto__.new.call(this);
}).prototype = convert._Utf8ConversionSink.prototype;
dart.addTypeTests(convert._Utf8ConversionSink);
dart.setMethodSignature(convert._Utf8ConversionSink, () => ({
  __proto__: dart.getMethods(convert._Utf8ConversionSink.__proto__),
  close: dart.fnType(dart.void, []),
  add: dart.fnType(dart.void, [core.Object]),
  addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool])
}));
dart.setFieldSignature(convert._Utf8ConversionSink, () => ({
  __proto__: dart.getFields(convert._Utf8ConversionSink.__proto__),
  [_decoder]: dart.finalFieldType(convert._Utf8Decoder),
  [_chunkedSink]: dart.finalFieldType(convert.StringConversionSink),
  [_buffer]: dart.finalFieldType(core.StringBuffer)
}));
dart.defineLazy(convert, {
  /*convert.unicodeReplacementCharacterRune*/get unicodeReplacementCharacterRune() {
    return 65533;
  },
  /*convert.unicodeBomCharacterRune*/get unicodeBomCharacterRune() {
    return 65279;
  },
  /*convert.utf8*/get utf8() {
    return dart.const(new convert.Utf8Codec.new());
  }
});
const _allowMalformed = Symbol('_allowMalformed');
let const$40;
convert.Utf8Codec = class Utf8Codec extends convert.Encoding {
  get name() {
    return "utf-8";
  }
  decode(codeUnits, opts) {
    ListOfint()._check(codeUnits);
    let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : null;
    let t = allowMalformed;
    t == null ? allowMalformed = this[_allowMalformed] : t;
    return new convert.Utf8Decoder.new({allowMalformed: allowMalformed}).convert(codeUnits);
  }
  get encoder() {
    return const$40 || (const$40 = dart.const(new convert.Utf8Encoder.new()));
  }
  get decoder() {
    return new convert.Utf8Decoder.new({allowMalformed: this[_allowMalformed]});
  }
};
(convert.Utf8Codec.new = function(opts) {
  let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : false;
  this[_allowMalformed] = allowMalformed;
  convert.Utf8Codec.__proto__.new.call(this);
}).prototype = convert.Utf8Codec.prototype;
dart.addTypeTests(convert.Utf8Codec);
dart.setMethodSignature(convert.Utf8Codec, () => ({
  __proto__: dart.getMethods(convert.Utf8Codec.__proto__),
  decode: dart.fnType(core.String, [core.Object], {allowMalformed: core.bool})
}));
dart.setGetterSignature(convert.Utf8Codec, () => ({
  __proto__: dart.getGetters(convert.Utf8Codec.__proto__),
  name: core.String,
  encoder: convert.Utf8Encoder,
  decoder: convert.Utf8Decoder
}));
dart.setFieldSignature(convert.Utf8Codec, () => ({
  __proto__: dart.getFields(convert.Utf8Codec.__proto__),
  [_allowMalformed]: dart.finalFieldType(core.bool)
}));
const _fillBuffer = Symbol('_fillBuffer');
const _writeSurrogate = Symbol('_writeSurrogate');
convert.Utf8Encoder = class Utf8Encoder extends convert.Converter$(core.String, core.List$(core.int)) {
  convert(string, start, end) {
    core.String._check(string);
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let stringLength = string.length;
    end = core.RangeError.checkValidRange(start, end, stringLength);
    let length = dart.notNull(end) - dart.notNull(start);
    if (length === 0) return typed_data.Uint8List.new(0);
    let encoder = new convert._Utf8Encoder.withBufferSize(length * 3);
    let endPosition = encoder[_fillBuffer](string, start, end);
    if (!(dart.notNull(endPosition) >= dart.notNull(end) - 1)) dart.assertFailed();
    if (endPosition != end) {
      let lastCodeUnit = string[$codeUnitAt](dart.notNull(end) - 1);
      if (!dart.test(convert._isLeadSurrogate(lastCodeUnit))) dart.assertFailed();
      let wasCombined = encoder[_writeSurrogate](lastCodeUnit, 0);
      if (!!dart.test(wasCombined)) dart.assertFailed();
    }
    return encoder[_buffer][$sublist](0, encoder[_bufferIndex]);
  }
  startChunkedConversion(sink) {
    SinkOfListOfint()._check(sink);
    return new convert._Utf8EncoderSink.new(convert.ByteConversionSink.is(sink) ? sink : convert.ByteConversionSink.from(sink));
  }
  bind(stream) {
    StreamOfString()._check(stream);
    return super.bind(stream);
  }
};
(convert.Utf8Encoder.new = function() {
  convert.Utf8Encoder.__proto__.new.call(this);
}).prototype = convert.Utf8Encoder.prototype;
dart.addTypeTests(convert.Utf8Encoder);
dart.setMethodSignature(convert.Utf8Encoder, () => ({
  __proto__: dart.getMethods(convert.Utf8Encoder.__proto__),
  convert: dart.fnType(core.List$(core.int), [core.Object], [core.int, core.int]),
  startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Object]),
  bind: dart.fnType(async.Stream$(core.List$(core.int)), [core.Object])
}));
convert._Utf8Encoder = class _Utf8Encoder extends core.Object {
  static _createBuffer(size) {
    return typed_data.Uint8List.new(size);
  }
  [_writeSurrogate](leadingSurrogate, nextCodeUnit) {
    if (dart.test(convert._isTailSurrogate(nextCodeUnit))) {
      let rune = convert._combineSurrogatePair(leadingSurrogate, nextCodeUnit);
      if (!(dart.notNull(rune) > 65535)) dart.assertFailed();
      if (!(dart.notNull(rune) <= 1114111)) dart.assertFailed();
      this[_buffer][$_set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), (240 | rune[$rightShift](18)) >>> 0);
      this[_buffer][$_set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), 128 | dart.notNull(rune) >> 12 & 63);
      this[_buffer][$_set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), 128 | dart.notNull(rune) >> 6 & 63);
      this[_buffer][$_set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), 128 | dart.notNull(rune) & 63);
      return true;
    } else {
      this[_buffer][$_set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), (224 | leadingSurrogate[$rightShift](12)) >>> 0);
      this[_buffer][$_set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), 128 | dart.notNull(leadingSurrogate) >> 6 & 63);
      this[_buffer][$_set]((() => {
        let x = this[_bufferIndex];
        this[_bufferIndex] = dart.notNull(x) + 1;
        return x;
      })(), 128 | dart.notNull(leadingSurrogate) & 63);
      return false;
    }
  }
  [_fillBuffer](str, start, end) {
    if (start != end && dart.test(convert._isLeadSurrogate(str[$codeUnitAt](dart.notNull(end) - 1)))) {
      end = dart.notNull(end) - 1;
    }
    let stringIndex = null;
    for (stringIndex = start; dart.notNull(stringIndex) < dart.notNull(end); stringIndex = dart.notNull(stringIndex) + 1) {
      let codeUnit = str[$codeUnitAt](stringIndex);
      if (codeUnit <= 127) {
        if (dart.notNull(this[_bufferIndex]) >= dart.notNull(this[_buffer][$length])) break;
        this[_buffer][$_set]((() => {
          let x = this[_bufferIndex];
          this[_bufferIndex] = dart.notNull(x) + 1;
          return x;
        })(), codeUnit);
      } else if (dart.test(convert._isLeadSurrogate(codeUnit))) {
        if (dart.notNull(this[_bufferIndex]) + 3 >= dart.notNull(this[_buffer][$length])) break;
        let nextCodeUnit = str[$codeUnitAt](dart.notNull(stringIndex) + 1);
        let wasCombined = this[_writeSurrogate](codeUnit, nextCodeUnit);
        if (dart.test(wasCombined)) {
          stringIndex = dart.notNull(stringIndex) + 1;
        }
      } else {
        let rune = codeUnit;
        if (rune <= 2047) {
          if (dart.notNull(this[_bufferIndex]) + 1 >= dart.notNull(this[_buffer][$length])) break;
          this[_buffer][$_set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), (192 | rune[$rightShift](6)) >>> 0);
          this[_buffer][$_set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), 128 | rune & 63);
        } else {
          if (!(rune <= 65535)) dart.assertFailed();
          if (dart.notNull(this[_bufferIndex]) + 2 >= dart.notNull(this[_buffer][$length])) break;
          this[_buffer][$_set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), (224 | rune[$rightShift](12)) >>> 0);
          this[_buffer][$_set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), 128 | rune >> 6 & 63);
          this[_buffer][$_set]((() => {
            let x = this[_bufferIndex];
            this[_bufferIndex] = dart.notNull(x) + 1;
            return x;
          })(), 128 | rune & 63);
        }
      }
    }
    return stringIndex;
  }
};
(convert._Utf8Encoder.new = function() {
  convert._Utf8Encoder.withBufferSize.call(this, 1024);
}).prototype = convert._Utf8Encoder.prototype;
(convert._Utf8Encoder.withBufferSize = function(bufferSize) {
  this[_carry] = 0;
  this[_bufferIndex] = 0;
  this[_buffer] = convert._Utf8Encoder._createBuffer(bufferSize);
}).prototype = convert._Utf8Encoder.prototype;
dart.addTypeTests(convert._Utf8Encoder);
dart.setMethodSignature(convert._Utf8Encoder, () => ({
  __proto__: dart.getMethods(convert._Utf8Encoder.__proto__),
  [_writeSurrogate]: dart.fnType(core.bool, [core.int, core.int]),
  [_fillBuffer]: dart.fnType(core.int, [core.String, core.int, core.int])
}));
dart.setFieldSignature(convert._Utf8Encoder, () => ({
  __proto__: dart.getFields(convert._Utf8Encoder.__proto__),
  [_carry]: dart.fieldType(core.int),
  [_bufferIndex]: dart.fieldType(core.int),
  [_buffer]: dart.finalFieldType(ListOfint())
}));
dart.defineLazy(convert._Utf8Encoder, {
  /*convert._Utf8Encoder._DEFAULT_BYTE_BUFFER_SIZE*/get _DEFAULT_BYTE_BUFFER_SIZE() {
    return 1024;
  }
});
const _Utf8Encoder_StringConversionSinkMixin$ = class _Utf8Encoder_StringConversionSinkMixin extends convert._Utf8Encoder {};
(_Utf8Encoder_StringConversionSinkMixin$.new = function() {
  _Utf8Encoder_StringConversionSinkMixin$.__proto__.new.call(this);
}).prototype = _Utf8Encoder_StringConversionSinkMixin$.prototype;
(_Utf8Encoder_StringConversionSinkMixin$.withBufferSize = function(bufferSize) {
  _Utf8Encoder_StringConversionSinkMixin$.__proto__.withBufferSize.call(this, bufferSize);
}).prototype = _Utf8Encoder_StringConversionSinkMixin$.prototype;
dart.applyMixin(_Utf8Encoder_StringConversionSinkMixin$, convert.StringConversionSinkMixin);
convert._Utf8EncoderSink = class _Utf8EncoderSink extends _Utf8Encoder_StringConversionSinkMixin$ {
  close() {
    if (this[_carry] !== 0) {
      this.addSlice("", 0, 0, true);
      return;
    }
    this[_sink$].close();
  }
  addSlice(str, start, end, isLast) {
    this[_bufferIndex] = 0;
    if (start == end && !dart.test(isLast)) {
      return;
    }
    if (this[_carry] !== 0) {
      let nextCodeUnit = 0;
      if (start != end) {
        nextCodeUnit = str[$codeUnitAt](start);
      } else {
        if (!dart.test(isLast)) dart.assertFailed();
      }
      let wasCombined = this[_writeSurrogate](this[_carry], nextCodeUnit);
      if (!(!dart.test(wasCombined) || start != end)) dart.assertFailed();
      if (dart.test(wasCombined)) {
        start = dart.notNull(start) + 1;
      }
      this[_carry] = 0;
    }
    do {
      start = this[_fillBuffer](str, start, end);
      let isLastSlice = dart.test(isLast) && start == end;
      if (start === dart.notNull(end) - 1 && dart.test(convert._isLeadSurrogate(str[$codeUnitAt](start)))) {
        if (dart.test(isLast) && dart.notNull(this[_bufferIndex]) < dart.notNull(this[_buffer][$length]) - 3) {
          let hasBeenCombined = this[_writeSurrogate](str[$codeUnitAt](start), 0);
          if (!!dart.test(hasBeenCombined)) dart.assertFailed();
        } else {
          this[_carry] = str[$codeUnitAt](start);
        }
        start = dart.notNull(start) + 1;
      }
      this[_sink$].addSlice(this[_buffer], 0, this[_bufferIndex], isLastSlice);
      this[_bufferIndex] = 0;
    } while (dart.notNull(start) < dart.notNull(end));
    if (dart.test(isLast)) this.close();
  }
};
(convert._Utf8EncoderSink.new = function(sink) {
  this[_sink$] = sink;
  convert._Utf8EncoderSink.__proto__.new.call(this);
}).prototype = convert._Utf8EncoderSink.prototype;
dart.addTypeTests(convert._Utf8EncoderSink);
dart.setMethodSignature(convert._Utf8EncoderSink, () => ({
  __proto__: dart.getMethods(convert._Utf8EncoderSink.__proto__),
  close: dart.fnType(dart.void, []),
  addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool])
}));
dart.setFieldSignature(convert._Utf8EncoderSink, () => ({
  __proto__: dart.getFields(convert._Utf8EncoderSink.__proto__),
  [_sink$]: dart.finalFieldType(convert.ByteConversionSink)
}));
convert.Utf8Decoder = class Utf8Decoder extends convert.Converter$(core.List$(core.int), core.String) {
  convert(codeUnits, start, end) {
    ListOfint()._check(codeUnits);
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let result = convert.Utf8Decoder._convertIntercepted(this[_allowMalformed], codeUnits, start, end);
    if (result != null) {
      return result;
    }
    let length = codeUnits[$length];
    end = core.RangeError.checkValidRange(start, end, length);
    let buffer = new core.StringBuffer.new();
    let decoder = new convert._Utf8Decoder.new(buffer, this[_allowMalformed]);
    decoder.convert(codeUnits, start, end);
    decoder.flush(codeUnits, end);
    return buffer.toString();
  }
  startChunkedConversion(sink) {
    SinkOfString()._check(sink);
    let stringSink = null;
    if (convert.StringConversionSink.is(sink)) {
      stringSink = sink;
    } else {
      stringSink = convert.StringConversionSink.from(sink);
    }
    return stringSink.asUtf8Sink(this[_allowMalformed]);
  }
  bind(stream) {
    StreamOfListOfint()._check(stream);
    return super.bind(stream);
  }
  fuse(T, next) {
    convert.Converter$(core.String, T)._check(next);
    return super.fuse(T, next);
  }
  static _convertIntercepted(allowMalformed, codeUnits, start, end) {
    if (codeUnits instanceof Uint8Array) {
      let casted = codeUnits;
      return convert.Utf8Decoder._convertInterceptedUint8List(allowMalformed, casted, start, end);
    }
  }
  static _convertInterceptedUint8List(allowMalformed, codeUnits, start, end) {
    if (dart.test(allowMalformed)) {
      return null;
    }
    let decoder = convert.Utf8Decoder._decoder;
    if (decoder == null) return null;
    if (0 === start && end == null) {
      return convert.Utf8Decoder._useTextDecoderChecked(decoder, codeUnits);
    }
    let length = codeUnits[$length];
    end = core.RangeError.checkValidRange(start, end, length);
    if (0 === start && end == codeUnits[$length]) {
      return convert.Utf8Decoder._useTextDecoderChecked(decoder, codeUnits);
    }
    return convert.Utf8Decoder._useTextDecoderChecked(decoder, codeUnits.subarray(start, end));
  }
  static _useTextDecoderChecked(decoder, codeUnits) {
    if (dart.test(convert.Utf8Decoder._unsafe(codeUnits))) return null;
    return convert.Utf8Decoder._useTextDecoderUnchecked(decoder, codeUnits);
  }
  static _useTextDecoderUnchecked(decoder, codeUnits) {
    try {
      return decoder.decode(codeUnits);
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
    return null;
  }
  static _unsafe(codeUnits) {
    let limit = dart.notNull(codeUnits[$length]) - 2;
    for (let i = 0; i < limit; i++) {
      let unit1 = codeUnits[$_get](i);
      if (unit1 === 237) {
        let unit2 = codeUnits[$_get](i + 1);
        if ((unit2 & 224) === 160) return true;
      }
    }
    return false;
  }
};
(convert.Utf8Decoder.new = function(opts) {
  let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : false;
  this[_allowMalformed] = allowMalformed;
  convert.Utf8Decoder.__proto__.new.call(this);
}).prototype = convert.Utf8Decoder.prototype;
dart.addTypeTests(convert.Utf8Decoder);
dart.setMethodSignature(convert.Utf8Decoder, () => ({
  __proto__: dart.getMethods(convert.Utf8Decoder.__proto__),
  convert: dart.fnType(core.String, [core.Object], [core.int, core.int]),
  startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object]),
  bind: dart.fnType(async.Stream$(core.String), [core.Object]),
  fuse: dart.gFnType(T => [convert.Converter$(core.List$(core.int), T), [core.Object]])
}));
dart.setFieldSignature(convert.Utf8Decoder, () => ({
  __proto__: dart.getFields(convert.Utf8Decoder.__proto__),
  [_allowMalformed]: dart.finalFieldType(core.bool)
}));
dart.defineLazy(convert.Utf8Decoder, {
  /*convert.Utf8Decoder._decoder*/get _decoder() {
    return dart.fn(() => {
      try {
        return new TextDecoder("utf-8", {fatal: true});
      } catch (e$) {
        let e = dart.getThrown(e$);
      }
      return null;
    }, VoidTodynamic())();
  }
});
dart.defineLazy(convert, {
  /*convert._ONE_BYTE_LIMIT*/get _ONE_BYTE_LIMIT() {
    return 127;
  },
  /*convert._TWO_BYTE_LIMIT*/get _TWO_BYTE_LIMIT() {
    return 2047;
  },
  /*convert._THREE_BYTE_LIMIT*/get _THREE_BYTE_LIMIT() {
    return 65535;
  },
  /*convert._FOUR_BYTE_LIMIT*/get _FOUR_BYTE_LIMIT() {
    return 1114111;
  },
  /*convert._SURROGATE_TAG_MASK*/get _SURROGATE_TAG_MASK() {
    return 64512;
  },
  /*convert._SURROGATE_VALUE_MASK*/get _SURROGATE_VALUE_MASK() {
    return 1023;
  },
  /*convert._LEAD_SURROGATE_MIN*/get _LEAD_SURROGATE_MIN() {
    return 55296;
  },
  /*convert._TAIL_SURROGATE_MIN*/get _TAIL_SURROGATE_MIN() {
    return 56320;
  }
});
convert._isLeadSurrogate = function(codeUnit) {
  return (dart.notNull(codeUnit) & 64512) === 55296;
};
convert._isTailSurrogate = function(codeUnit) {
  return (dart.notNull(codeUnit) & 64512) === 56320;
};
convert._combineSurrogatePair = function(lead, tail) {
  return (65536 + ((dart.notNull(lead) & 1023) << 10) | dart.notNull(tail) & 1023) >>> 0;
};
const _isFirstCharacter = Symbol('_isFirstCharacter');
const _value$ = Symbol('_value');
const _expectedUnits = Symbol('_expectedUnits');
const _extraUnits = Symbol('_extraUnits');
convert._Utf8Decoder = class _Utf8Decoder extends core.Object {
  get hasPartialInput() {
    return dart.notNull(this[_expectedUnits]) > 0;
  }
  close() {
    this.flush();
  }
  flush(source, offset) {
    if (source === void 0) source = null;
    if (offset === void 0) offset = null;
    if (dart.test(this.hasPartialInput)) {
      if (!dart.test(this[_allowMalformed])) {
        dart.throw(new core.FormatException.new("Unfinished UTF-8 octet sequence", source, offset));
      }
      this[_stringSink].writeCharCode(65533);
      this[_value$] = 0;
      this[_expectedUnits] = 0;
      this[_extraUnits] = 0;
    }
  }
  convert(codeUnits, startIndex, endIndex) {
    let value = this[_value$];
    let expectedUnits = this[_expectedUnits];
    let extraUnits = this[_extraUnits];
    this[_value$] = 0;
    this[_expectedUnits] = 0;
    this[_extraUnits] = 0;
    const addSingleBytes = (function(from, to) {
      if (!(dart.notNull(from) >= dart.notNull(startIndex) && dart.notNull(from) <= dart.notNull(endIndex))) dart.assertFailed();
      if (!(dart.notNull(to) >= dart.notNull(startIndex) && dart.notNull(to) <= dart.notNull(endIndex))) dart.assertFailed();
      this[_stringSink].write(core.String.fromCharCodes(codeUnits, from, to));
    }).bind(this);
    dart.fn(addSingleBytes, intAndintTovoid());
    let i = startIndex;
    loop:
      while (true) {
        multibyte:
          if (dart.notNull(expectedUnits) > 0) {
            do {
              if (i == endIndex) {
                break loop;
              }
              let unit = codeUnits[$_get](i);
              if ((dart.notNull(unit) & 192) !== 128) {
                expectedUnits = 0;
                if (!dart.test(this[_allowMalformed])) {
                  dart.throw(new core.FormatException.new("Bad UTF-8 encoding 0x" + unit[$toRadixString](16), codeUnits, i));
                }
                this[_isFirstCharacter] = false;
                this[_stringSink].writeCharCode(65533);
                break multibyte;
              } else {
                value = (dart.notNull(value) << 6 | dart.notNull(unit) & 63) >>> 0;
                expectedUnits = dart.notNull(expectedUnits) - 1;
                i = dart.notNull(i) + 1;
              }
            } while (dart.notNull(expectedUnits) > 0);
            if (dart.notNull(value) <= dart.notNull(convert._Utf8Decoder._LIMITS[$_get](dart.notNull(extraUnits) - 1))) {
              if (!dart.test(this[_allowMalformed])) {
                dart.throw(new core.FormatException.new("Overlong encoding of 0x" + value[$toRadixString](16), codeUnits, dart.notNull(i) - dart.notNull(extraUnits) - 1));
              }
              expectedUnits = extraUnits = 0;
              value = 65533;
            }
            if (dart.notNull(value) > 1114111) {
              if (!dart.test(this[_allowMalformed])) {
                dart.throw(new core.FormatException.new("Character outside valid Unicode range: " + ("0x" + value[$toRadixString](16)), codeUnits, dart.notNull(i) - dart.notNull(extraUnits) - 1));
              }
              value = 65533;
            }
            if (!dart.test(this[_isFirstCharacter]) || value !== 65279) {
              this[_stringSink].writeCharCode(value);
            }
            this[_isFirstCharacter] = false;
          }
        while (dart.notNull(i) < dart.notNull(endIndex)) {
          let oneBytes = convert._scanOneByteCharacters(codeUnits, i, endIndex);
          if (dart.notNull(oneBytes) > 0) {
            this[_isFirstCharacter] = false;
            addSingleBytes(i, dart.notNull(i) + dart.notNull(oneBytes));
            i = dart.notNull(i) + dart.notNull(oneBytes);
            if (i == endIndex) break;
          }
          let unit = codeUnits[$_get]((() => {
            let x = i;
            i = dart.notNull(x) + 1;
            return x;
          })());
          if (dart.notNull(unit) < 0) {
            if (!dart.test(this[_allowMalformed])) {
              dart.throw(new core.FormatException.new("Negative UTF-8 code unit: -0x" + (-dart.notNull(unit))[$toRadixString](16), codeUnits, dart.notNull(i) - 1));
            }
            this[_stringSink].writeCharCode(65533);
          } else {
            if (!(dart.notNull(unit) > 127)) dart.assertFailed();
            if ((dart.notNull(unit) & 224) === 192) {
              value = dart.notNull(unit) & 31;
              expectedUnits = extraUnits = 1;
              continue loop;
            }
            if ((dart.notNull(unit) & 240) === 224) {
              value = dart.notNull(unit) & 15;
              expectedUnits = extraUnits = 2;
              continue loop;
            }
            if ((dart.notNull(unit) & 248) === 240 && dart.notNull(unit) < 245) {
              value = dart.notNull(unit) & 7;
              expectedUnits = extraUnits = 3;
              continue loop;
            }
            if (!dart.test(this[_allowMalformed])) {
              dart.throw(new core.FormatException.new("Bad UTF-8 encoding 0x" + unit[$toRadixString](16), codeUnits, dart.notNull(i) - 1));
            }
            value = 65533;
            expectedUnits = extraUnits = 0;
            this[_isFirstCharacter] = false;
            this[_stringSink].writeCharCode(value);
          }
        }
        break loop;
      }
    if (dart.notNull(expectedUnits) > 0) {
      this[_value$] = value;
      this[_expectedUnits] = expectedUnits;
      this[_extraUnits] = extraUnits;
    }
  }
};
(convert._Utf8Decoder.new = function(stringSink, allowMalformed) {
  this[_isFirstCharacter] = true;
  this[_value$] = 0;
  this[_expectedUnits] = 0;
  this[_extraUnits] = 0;
  this[_stringSink] = stringSink;
  this[_allowMalformed] = allowMalformed;
}).prototype = convert._Utf8Decoder.prototype;
dart.addTypeTests(convert._Utf8Decoder);
dart.setMethodSignature(convert._Utf8Decoder, () => ({
  __proto__: dart.getMethods(convert._Utf8Decoder.__proto__),
  close: dart.fnType(dart.void, []),
  flush: dart.fnType(dart.void, [], [core.List$(core.int), core.int]),
  convert: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int])
}));
dart.setGetterSignature(convert._Utf8Decoder, () => ({
  __proto__: dart.getGetters(convert._Utf8Decoder.__proto__),
  hasPartialInput: core.bool
}));
dart.setFieldSignature(convert._Utf8Decoder, () => ({
  __proto__: dart.getFields(convert._Utf8Decoder.__proto__),
  [_allowMalformed]: dart.finalFieldType(core.bool),
  [_stringSink]: dart.finalFieldType(core.StringSink),
  [_isFirstCharacter]: dart.fieldType(core.bool),
  [_value$]: dart.fieldType(core.int),
  [_expectedUnits]: dart.fieldType(core.int),
  [_extraUnits]: dart.fieldType(core.int)
}));
dart.defineLazy(convert._Utf8Decoder, {
  /*convert._Utf8Decoder._LIMITS*/get _LIMITS() {
    return dart.constList([127, 2047, 65535, 1114111], core.int);
  }
});
convert._scanOneByteCharacters = function(units, from, endIndex) {
  let to = endIndex;
  for (let i = from; dart.notNull(i) < dart.notNull(to); i = dart.notNull(i) + 1) {
    let unit = units[$_get](i);
    if ((dart.notNull(unit) & 127) !== unit) return dart.notNull(i) - dart.notNull(from);
  }
  return dart.notNull(to) - dart.notNull(from);
};
core._symbolToString = function(symbol) {
  return _js_helper.PrivateSymbol.is(symbol) ? _js_helper.PrivateSymbol.getName(symbol) : _internal.Symbol.getName(_internal.Symbol._check(symbol));
};
core._kNull = function(_) {
  return null;
};
const _errorMsg = Symbol('_errorMsg');
core._CompileTimeError = class _CompileTimeError extends core.Error {
  toString() {
    return this[_errorMsg];
  }
};
(core._CompileTimeError.new = function(errorMsg) {
  this[_errorMsg] = errorMsg;
  core._CompileTimeError.__proto__.new.call(this);
}).prototype = core._CompileTimeError.prototype;
dart.addTypeTests(core._CompileTimeError);
dart.setFieldSignature(core._CompileTimeError, () => ({
  __proto__: dart.getFields(core._CompileTimeError.__proto__),
  [_errorMsg]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(core._CompileTimeError, ['toString']);
const _name$2 = Symbol('_name');
core._DuplicatedFieldInitializerError = class _DuplicatedFieldInitializerError extends core.Object {
  toString() {
    return "Error: field '" + dart.str(this[_name$2]) + "' is already initialized.";
  }
};
(core._DuplicatedFieldInitializerError.new = function(name) {
  this[_name$2] = name;
}).prototype = core._DuplicatedFieldInitializerError.prototype;
dart.addTypeTests(core._DuplicatedFieldInitializerError);
dart.setFieldSignature(core._DuplicatedFieldInitializerError, () => ({
  __proto__: dart.getFields(core._DuplicatedFieldInitializerError.__proto__),
  [_name$2]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(core._DuplicatedFieldInitializerError, ['toString']);
core._max = function(a, b) {
  return dart.notNull(a) > dart.notNull(b) ? a : b;
};
core._min = function(a, b) {
  return dart.notNull(a) < dart.notNull(b) ? a : b;
};
const _used = Symbol('_used');
const _digits = Symbol('_digits');
const _isNegative = Symbol('_isNegative');
const _isZero = Symbol('_isZero');
const _dlShift = Symbol('_dlShift');
const _drShift = Symbol('_drShift');
const _absCompare = Symbol('_absCompare');
const _absAddSetSign = Symbol('_absAddSetSign');
const _absSubSetSign = Symbol('_absSubSetSign');
const _absAndSetSign = Symbol('_absAndSetSign');
const _absAndNotSetSign = Symbol('_absAndNotSetSign');
const _absOrSetSign = Symbol('_absOrSetSign');
const _absXorSetSign = Symbol('_absXorSetSign');
const _divRem = Symbol('_divRem');
const _div = Symbol('_div');
const _rem = Symbol('_rem');
let const$41;
let const$42;
let const$43;
const _toRadixCodeUnit = Symbol('_toRadixCodeUnit');
const _toHexString = Symbol('_toHexString');
core._BigIntImpl = class _BigIntImpl extends core.Object {
  static parse(source, opts) {
    let radix = opts && 'radix' in opts ? opts.radix : null;
    let result = core._BigIntImpl._tryParse(source, {radix: radix});
    if (result == null) {
      dart.throw(new core.FormatException.new("Could not parse BigInt", source));
    }
    return result;
  }
  static _parseDecimal(source, isNegative) {
    let _0 = 48;
    let part = 0;
    let result = core._BigIntImpl.zero;
    let digitInPartCount = dart.asInt(4 - source.length[$remainder](4));
    if (digitInPartCount === 4) digitInPartCount = 0;
    for (let i = 0; i < source.length; i++) {
      part = part * 10 + source[$codeUnitAt](i) - _0;
      if ((digitInPartCount = dart.notNull(digitInPartCount) + 1) === 4) {
        result = result['*'](core._BigIntImpl._bigInt10000)['+'](core._BigIntImpl._fromInt(part));
        part = 0;
        digitInPartCount = 0;
      }
    }
    if (dart.test(isNegative)) return result._negate();
    return result;
  }
  static _codeUnitToRadixValue(codeUnit) {
    let _0 = 48;
    let _9 = 57;
    let _a = 97;
    if (_0 <= dart.notNull(codeUnit) && dart.notNull(codeUnit) <= _9) return dart.notNull(codeUnit) - _0;
    codeUnit = (dart.notNull(codeUnit) | 32) >>> 0;
    let result = dart.notNull(codeUnit) - _a + 10;
    return result;
  }
  static _parseHex(source, startPos, isNegative) {
    let hexDigitsPerChunk = (16 / 4)[$truncate]();
    let sourceLength = source.length - dart.notNull(startPos);
    let chunkCount = (sourceLength / hexDigitsPerChunk)[$ceil]();
    let digits = typed_data.Uint16List.new(chunkCount);
    let lastDigitLength = sourceLength - (chunkCount - 1) * hexDigitsPerChunk;
    let digitIndex = dart.notNull(digits[$length]) - 1;
    let i = startPos;
    let chunk = 0;
    for (let j = 0; j < lastDigitLength; j++) {
      let digitValue = core._BigIntImpl._codeUnitToRadixValue(source[$codeUnitAt]((() => {
        let x = i;
        i = dart.notNull(x) + 1;
        return x;
      })()));
      if (dart.notNull(digitValue) >= 16) return null;
      chunk = chunk * 16 + dart.notNull(digitValue);
    }
    digits[$_set](digitIndex--, chunk);
    while (dart.notNull(i) < source.length) {
      chunk = 0;
      for (let j = 0; j < hexDigitsPerChunk; j++) {
        let digitValue = core._BigIntImpl._codeUnitToRadixValue(source[$codeUnitAt]((() => {
          let x = i;
          i = dart.notNull(x) + 1;
          return x;
        })()));
        if (dart.notNull(digitValue) >= 16) return null;
        chunk = chunk * 16 + dart.notNull(digitValue);
      }
      digits[$_set](digitIndex--, chunk);
    }
    if (digits[$length] === 1 && digits[$_get](0) === 0) return core._BigIntImpl.zero;
    return new core._BigIntImpl.__(isNegative, digits[$length], digits);
  }
  static _parseRadix(source, radix, isNegative) {
    let result = core._BigIntImpl.zero;
    let base = core._BigIntImpl._fromInt(radix);
    for (let i = 0; i < source.length; i++) {
      let digitValue = core._BigIntImpl._codeUnitToRadixValue(source[$codeUnitAt](i));
      if (dart.notNull(digitValue) >= dart.notNull(radix)) return null;
      result = result['*'](base)['+'](core._BigIntImpl._fromInt(digitValue));
    }
    if (dart.test(isNegative)) return result._negate();
    return result;
  }
  static _tryParse(source, opts) {
    let radix = opts && 'radix' in opts ? opts.radix : null;
    if (source === "") return null;
    let re = core.RegExp.new("^\\s*([+-]?)((0x[a-f0-9]+)|(\\d+)|([a-z0-9]+))\\s*$", {caseSensitive: false});
    let match = re.firstMatch(source);
    let signIndex = 1;
    let hexIndex = 3;
    let decimalIndex = 4;
    let nonDecimalHexIndex = 5;
    if (match == null) return null;
    let isNegative = match._get(signIndex) === "-";
    let decimalMatch = match._get(decimalIndex);
    let hexMatch = match._get(hexIndex);
    let nonDecimalMatch = match._get(nonDecimalHexIndex);
    if (radix == null) {
      if (decimalMatch != null) {
        return core._BigIntImpl._parseDecimal(decimalMatch, isNegative);
      }
      if (hexMatch != null) {
        return core._BigIntImpl._parseHex(hexMatch, 2, isNegative);
      }
      return null;
    }
    if (!core.int.is(radix)) {
      dart.throw(new core.ArgumentError.value(radix, "radix", "is not an integer"));
    }
    if (dart.notNull(radix) < 2 || dart.notNull(radix) > 36) {
      dart.throw(new core.RangeError.range(radix, 2, 36, "radix"));
    }
    if (radix === 10 && decimalMatch != null) {
      return core._BigIntImpl._parseDecimal(decimalMatch, isNegative);
    }
    if (radix === 16 && (decimalMatch != null || nonDecimalMatch != null)) {
      return core._BigIntImpl._parseHex(decimalMatch != null ? decimalMatch : nonDecimalMatch, 0, isNegative);
    }
    return core._BigIntImpl._parseRadix((() => {
      let l = decimalMatch != null ? decimalMatch : nonDecimalMatch;
      return l != null ? l : hexMatch;
    })(), radix, isNegative);
  }
  static _normalize(used, digits) {
    while (dart.notNull(used) > 0 && digits[$_get](dart.notNull(used) - 1) === 0) {
      used = dart.notNull(used) - 1;
    }
    return used;
  }
  get [_isZero]() {
    return this[_used] === 0;
  }
  static _cloneDigits(digits, from, to, length) {
    let resultDigits = typed_data.Uint16List.new(length);
    let n = dart.notNull(to) - dart.notNull(from);
    for (let i = 0; i < n; i++) {
      resultDigits[$_set](i, digits[$_get](dart.notNull(from) + i));
    }
    return resultDigits;
  }
  static from(value) {
    if (value === 0) return core._BigIntImpl.zero;
    if (value === 1) return core._BigIntImpl.one;
    if (value === 2) return core._BigIntImpl.two;
    if (value[$abs]() < 4294967296) return core._BigIntImpl._fromInt(value[$toInt]());
    if (typeof value == 'number') return core._BigIntImpl._fromDouble(value);
    return core._BigIntImpl._fromInt(dart.asInt(value));
  }
  static _fromInt(value) {
    let isNegative = dart.notNull(value) < 0;
    if (!(16 === 16)) dart.assertFailed();
    if (isNegative) {
      let minInt64 = -2147483648 * 4294967296;
      if (value === minInt64) {
        let digits = typed_data.Uint16List.new(4);
        digits[$_set](3, 32768);
        return new core._BigIntImpl.__(true, 4, digits);
      }
      value = -dart.notNull(value);
    }
    if (dart.notNull(value) < 65536) {
      let digits = typed_data.Uint16List.new(1);
      digits[$_set](0, value);
      return new core._BigIntImpl.__(isNegative, 1, digits);
    }
    if (dart.notNull(value) <= 4294967295) {
      let digits = typed_data.Uint16List.new(2);
      digits[$_set](0, dart.notNull(value) & 65535);
      digits[$_set](1, value[$rightShift](16));
      return new core._BigIntImpl.__(isNegative, 2, digits);
    }
    let bits = value[$bitLength];
    let digits = typed_data.Uint16List.new(((bits - 1) / 16)[$truncate]() + 1);
    let i = 0;
    while (value !== 0) {
      digits[$_set](i++, dart.notNull(value) & 65535);
      value = (dart.notNull(value) / 65536)[$truncate]();
    }
    return new core._BigIntImpl.__(isNegative, digits[$length], digits);
  }
  static _fromDouble(value) {
    let exponentBias = 1075;
    if (value[$isNaN] || value[$isInfinite]) {
      dart.throw(new core.ArgumentError.new("Value must be finite: " + dart.str(value)));
    }
    let isNegative = dart.notNull(value) < 0;
    if (isNegative) value = -dart.notNull(value);
    value = value[$floorToDouble]();
    if (value === 0) return core._BigIntImpl.zero;
    let bits = core._BigIntImpl._bitsForFromDouble;
    for (let i = 0; i < 8; i++) {
      bits[$_set](i, 0);
    }
    bits[$buffer][$asByteData]()[$setFloat64](0, value, typed_data.Endian.little);
    let biasedExponent = (dart.notNull(bits[$_get](7)) << 4 >>> 0) + bits[$_get](6)[$rightShift](4);
    let exponent = biasedExponent - exponentBias;
    if (!(16 === 16)) dart.assertFailed();
    let unshiftedDigits = typed_data.Uint16List.new(4);
    unshiftedDigits[$_set](0, (dart.notNull(bits[$_get](1)) << 8 >>> 0) + dart.notNull(bits[$_get](0)));
    unshiftedDigits[$_set](1, (dart.notNull(bits[$_get](3)) << 8 >>> 0) + dart.notNull(bits[$_get](2)));
    unshiftedDigits[$_set](2, (dart.notNull(bits[$_get](5)) << 8 >>> 0) + dart.notNull(bits[$_get](4)));
    unshiftedDigits[$_set](3, 16 | dart.notNull(bits[$_get](6)) & 15);
    let unshiftedBig = new core._BigIntImpl._normalized(false, 4, unshiftedDigits);
    let absResult = unshiftedBig;
    if (exponent < 0) {
      absResult = unshiftedBig['>>'](-exponent);
    } else if (exponent > 0) {
      absResult = unshiftedBig['<<'](exponent);
    }
    if (isNegative) return absResult._negate();
    return absResult;
  }
  _negate() {
    if (this[_used] === 0) return this;
    return new core._BigIntImpl.__(!dart.test(this[_isNegative]), this[_used], this[_digits]);
  }
  abs() {
    return dart.test(this[_isNegative]) ? this._negate() : this;
  }
  [_dlShift](n) {
    let used = this[_used];
    if (used === 0) {
      return core._BigIntImpl.zero;
    }
    let resultUsed = dart.notNull(used) + dart.notNull(n);
    let digits = this[_digits];
    let resultDigits = typed_data.Uint16List.new(resultUsed);
    for (let i = dart.notNull(used) - 1; i >= 0; i--) {
      resultDigits[$_set](i + dart.notNull(n), digits[$_get](i));
    }
    return new core._BigIntImpl.__(this[_isNegative], resultUsed, resultDigits);
  }
  static _dlShiftDigits(xDigits, xUsed, n, resultDigits) {
    if (xUsed === 0) {
      return 0;
    }
    if (n === 0 && resultDigits == xDigits) {
      return xUsed;
    }
    let resultUsed = dart.notNull(xUsed) + dart.notNull(n);
    for (let i = dart.notNull(xUsed) - 1; i >= 0; i--) {
      resultDigits[$_set](i + dart.notNull(n), xDigits[$_get](i));
    }
    for (let i = dart.notNull(n) - 1; i >= 0; i--) {
      resultDigits[$_set](i, 0);
    }
    return resultUsed;
  }
  [_drShift](n) {
    let used = this[_used];
    if (used === 0) {
      return core._BigIntImpl.zero;
    }
    let resultUsed = dart.notNull(used) - dart.notNull(n);
    if (resultUsed <= 0) {
      return dart.test(this[_isNegative]) ? core._BigIntImpl._minusOne : core._BigIntImpl.zero;
    }
    let digits = this[_digits];
    let resultDigits = typed_data.Uint16List.new(resultUsed);
    for (let i = n; dart.notNull(i) < dart.notNull(used); i = dart.notNull(i) + 1) {
      resultDigits[$_set](dart.notNull(i) - dart.notNull(n), digits[$_get](i));
    }
    let result = new core._BigIntImpl.__(this[_isNegative], resultUsed, resultDigits);
    if (dart.test(this[_isNegative])) {
      for (let i = 0; i < dart.notNull(n); i++) {
        if (digits[$_get](i) !== 0) {
          return result['-'](core._BigIntImpl.one);
        }
      }
    }
    return result;
  }
  static _lsh(xDigits, xUsed, n, resultDigits) {
    if (!(dart.notNull(xUsed) > 0)) dart.assertFailed();
    let digitShift = (dart.notNull(n) / 16)[$truncate]();
    let bitShift = n[$modulo](16);
    let carryBitShift = 16 - bitShift;
    let bitMask = (1)[$leftShift](carryBitShift) - 1;
    let carry = 0;
    for (let i = dart.notNull(xUsed) - 1; i >= 0; i--) {
      let digit = xDigits[$_get](i);
      resultDigits[$_set](i + digitShift + 1, (digit[$rightShift](carryBitShift) | carry) >>> 0);
      carry = ((dart.notNull(digit) & bitMask) >>> 0)[$leftShift](bitShift);
    }
    resultDigits[$_set](digitShift, carry);
  }
  ['<<'](shiftAmount) {
    if (dart.notNull(shiftAmount) < 0) {
      dart.throw(new core.ArgumentError.new("shift-amount must be posititve " + dart.str(shiftAmount)));
    }
    if (dart.test(this[_isZero])) return this;
    let digitShift = (dart.notNull(shiftAmount) / 16)[$truncate]();
    let bitShift = shiftAmount[$modulo](16);
    if (bitShift === 0) {
      return this[_dlShift](digitShift);
    }
    let resultUsed = dart.notNull(this[_used]) + digitShift + 1;
    let resultDigits = typed_data.Uint16List.new(resultUsed);
    core._BigIntImpl._lsh(this[_digits], this[_used], shiftAmount, resultDigits);
    return new core._BigIntImpl.__(this[_isNegative], resultUsed, resultDigits);
  }
  static _lShiftDigits(xDigits, xUsed, n, resultDigits) {
    let digitsShift = (dart.notNull(n) / 16)[$truncate]();
    let bitShift = n[$modulo](16);
    if (bitShift === 0) {
      return core._BigIntImpl._dlShiftDigits(xDigits, xUsed, digitsShift, resultDigits);
    }
    let resultUsed = dart.notNull(xUsed) + digitsShift + 1;
    core._BigIntImpl._lsh(xDigits, xUsed, n, resultDigits);
    let i = digitsShift;
    while (--i >= 0) {
      resultDigits[$_set](i, 0);
    }
    if (resultDigits[$_get](resultUsed - 1) === 0) {
      resultUsed--;
    }
    return resultUsed;
  }
  static _rsh(xDigits, xUsed, n, resultDigits) {
    if (!(dart.notNull(xUsed) > 0)) dart.assertFailed();
    let digitsShift = (dart.notNull(n) / 16)[$truncate]();
    let bitShift = n[$modulo](16);
    let carryBitShift = 16 - bitShift;
    let bitMask = (1)[$leftShift](bitShift) - 1;
    let carry = xDigits[$_get](digitsShift)[$rightShift](bitShift);
    let last = dart.notNull(xUsed) - digitsShift - 1;
    for (let i = 0; i < last; i++) {
      let digit = xDigits[$_get](i + digitsShift + 1);
      resultDigits[$_set](i, (((dart.notNull(digit) & bitMask) >>> 0)[$leftShift](carryBitShift) | carry) >>> 0);
      carry = digit[$rightShift](bitShift);
    }
    resultDigits[$_set](last, carry);
  }
  ['>>'](shiftAmount) {
    if (dart.notNull(shiftAmount) < 0) {
      dart.throw(new core.ArgumentError.new("shift-amount must be posititve " + dart.str(shiftAmount)));
    }
    if (dart.test(this[_isZero])) return this;
    let digitShift = (dart.notNull(shiftAmount) / 16)[$truncate]();
    let bitShift = shiftAmount[$modulo](16);
    if (bitShift === 0) {
      return this[_drShift](digitShift);
    }
    let used = this[_used];
    let resultUsed = dart.notNull(used) - digitShift;
    if (resultUsed <= 0) {
      return dart.test(this[_isNegative]) ? core._BigIntImpl._minusOne : core._BigIntImpl.zero;
    }
    let digits = this[_digits];
    let resultDigits = typed_data.Uint16List.new(resultUsed);
    core._BigIntImpl._rsh(digits, used, shiftAmount, resultDigits);
    let result = new core._BigIntImpl.__(this[_isNegative], resultUsed, resultDigits);
    if (dart.test(this[_isNegative])) {
      if ((dart.notNull(digits[$_get](digitShift)) & (1)[$leftShift](bitShift) - 1) !== 0) {
        return result['-'](core._BigIntImpl.one);
      }
      for (let i = 0; i < digitShift; i++) {
        if (digits[$_get](i) !== 0) {
          return result['-'](core._BigIntImpl.one);
        }
      }
    }
    return result;
  }
  [_absCompare](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    return core._BigIntImpl._compareDigits(this[_digits], this[_used], other[_digits], other[_used]);
  }
  compareTo(bigInt) {
    core.BigInt._check(bigInt);
    let other = core._BigIntImpl._check(bigInt);
    if (this[_isNegative] == other[_isNegative]) {
      let result = this[_absCompare](other);
      return dart.test(this[_isNegative]) ? 0 - dart.notNull(result) : result;
    }
    return dart.test(this[_isNegative]) ? -1 : 1;
  }
  static _compareDigits(digits, used, otherDigits, otherUsed) {
    let result = dart.notNull(used) - dart.notNull(otherUsed);
    if (result === 0) {
      for (let i = dart.notNull(used) - 1; i >= 0; i--) {
        result = dart.notNull(digits[$_get](i)) - dart.notNull(otherDigits[$_get](i));
        if (result !== 0) return result;
      }
    }
    return result;
  }
  static _absAdd(digits, used, otherDigits, otherUsed, resultDigits) {
    if (!(dart.notNull(used) >= dart.notNull(otherUsed) && dart.notNull(otherUsed) > 0)) dart.assertFailed();
    let carry = 0;
    for (let i = 0; i < dart.notNull(otherUsed); i++) {
      carry = carry + (dart.notNull(digits[$_get](i)) + dart.notNull(otherDigits[$_get](i)));
      resultDigits[$_set](i, carry & 65535);
      carry = carry[$rightShift](16);
    }
    for (let i = otherUsed; dart.notNull(i) < dart.notNull(used); i = dart.notNull(i) + 1) {
      carry = carry + dart.notNull(digits[$_get](i));
      resultDigits[$_set](i, carry & 65535);
      carry = carry[$rightShift](16);
    }
    resultDigits[$_set](used, carry);
  }
  static _absSub(digits, used, otherDigits, otherUsed, resultDigits) {
    if (!(dart.notNull(used) >= dart.notNull(otherUsed) && dart.notNull(otherUsed) > 0)) dart.assertFailed();
    let carry = 0;
    for (let i = 0; i < dart.notNull(otherUsed); i++) {
      carry = carry + (dart.notNull(digits[$_get](i)) - dart.notNull(otherDigits[$_get](i)));
      resultDigits[$_set](i, carry & 65535);
      carry = 0 - (carry >> 16 & 1);
    }
    for (let i = otherUsed; dart.notNull(i) < dart.notNull(used); i = dart.notNull(i) + 1) {
      carry = carry + dart.notNull(digits[$_get](i));
      resultDigits[$_set](i, carry & 65535);
      carry = 0 - (carry >> 16 & 1);
    }
  }
  [_absAddSetSign](other, isNegative) {
    let used = this[_used];
    let otherUsed = other[_used];
    if (dart.notNull(used) < dart.notNull(otherUsed)) {
      return other[_absAddSetSign](this, isNegative);
    }
    if (used === 0) {
      if (!!dart.test(isNegative)) dart.assertFailed();
      return core._BigIntImpl.zero;
    }
    if (otherUsed === 0) {
      return this[_isNegative] == isNegative ? this : this._negate();
    }
    let resultUsed = dart.notNull(used) + 1;
    let resultDigits = typed_data.Uint16List.new(resultUsed);
    core._BigIntImpl._absAdd(this[_digits], used, other[_digits], otherUsed, resultDigits);
    return new core._BigIntImpl.__(isNegative, resultUsed, resultDigits);
  }
  [_absSubSetSign](other, isNegative) {
    if (!(dart.notNull(this[_absCompare](other)) >= 0)) dart.assertFailed();
    let used = this[_used];
    if (used === 0) {
      if (!!dart.test(isNegative)) dart.assertFailed();
      return core._BigIntImpl.zero;
    }
    let otherUsed = other[_used];
    if (otherUsed === 0) {
      return this[_isNegative] == isNegative ? this : this._negate();
    }
    let resultDigits = typed_data.Uint16List.new(used);
    core._BigIntImpl._absSub(this[_digits], used, other[_digits], otherUsed, resultDigits);
    return new core._BigIntImpl.__(isNegative, used, resultDigits);
  }
  [_absAndSetSign](other, isNegative) {
    let resultUsed = core._min(this[_used], other[_used]);
    let digits = this[_digits];
    let otherDigits = other[_digits];
    let resultDigits = typed_data.Uint16List.new(resultUsed);
    for (let i = 0; i < dart.notNull(resultUsed); i++) {
      resultDigits[$_set](i, (dart.notNull(digits[$_get](i)) & dart.notNull(otherDigits[$_get](i))) >>> 0);
    }
    return new core._BigIntImpl.__(isNegative, resultUsed, resultDigits);
  }
  [_absAndNotSetSign](other, isNegative) {
    let resultUsed = this[_used];
    let digits = this[_digits];
    let otherDigits = other[_digits];
    let resultDigits = typed_data.Uint16List.new(resultUsed);
    let m = core._min(resultUsed, other[_used]);
    for (let i = 0; i < dart.notNull(m); i++) {
      resultDigits[$_set](i, (dart.notNull(digits[$_get](i)) & dart.notNull(core.int._check(~dart.notNull(otherDigits[$_get](i)) >>> 0))) >>> 0);
    }
    for (let i = m; dart.notNull(i) < dart.notNull(resultUsed); i = dart.notNull(i) + 1) {
      resultDigits[$_set](i, digits[$_get](i));
    }
    return new core._BigIntImpl.__(isNegative, resultUsed, resultDigits);
  }
  [_absOrSetSign](other, isNegative) {
    let used = this[_used];
    let otherUsed = other[_used];
    let resultUsed = core._max(used, otherUsed);
    let digits = this[_digits];
    let otherDigits = other[_digits];
    let resultDigits = typed_data.Uint16List.new(resultUsed);
    let l = null, m = null;
    if (dart.notNull(used) < dart.notNull(otherUsed)) {
      l = other;
      m = used;
    } else {
      l = this;
      m = otherUsed;
    }
    for (let i = 0; i < dart.notNull(core.num._check(m)); i++) {
      resultDigits[$_set](i, (dart.notNull(digits[$_get](i)) | dart.notNull(otherDigits[$_get](i))) >>> 0);
    }
    let lDigits = dart.dload(l, _digits);
    for (let i = m; dart.dtest(dart.dsend(i, '<', [resultUsed])); i = dart.dsend(i, '+', [1])) {
      resultDigits[$_set](core.int._check(i), core.int._check(dart.dindex(lDigits, i)));
    }
    return new core._BigIntImpl.__(isNegative, resultUsed, resultDigits);
  }
  [_absXorSetSign](other, isNegative) {
    let used = this[_used];
    let otherUsed = other[_used];
    let resultUsed = core._max(used, otherUsed);
    let digits = this[_digits];
    let otherDigits = other[_digits];
    let resultDigits = typed_data.Uint16List.new(resultUsed);
    let l = null, m = null;
    if (dart.notNull(used) < dart.notNull(otherUsed)) {
      l = other;
      m = used;
    } else {
      l = this;
      m = otherUsed;
    }
    for (let i = 0; i < dart.notNull(core.num._check(m)); i++) {
      resultDigits[$_set](i, (dart.notNull(digits[$_get](i)) ^ dart.notNull(otherDigits[$_get](i))) >>> 0);
    }
    let lDigits = dart.dload(l, _digits);
    for (let i = m; dart.dtest(dart.dsend(i, '<', [resultUsed])); i = dart.dsend(i, '+', [1])) {
      resultDigits[$_set](core.int._check(i), core.int._check(dart.dindex(lDigits, i)));
    }
    return new core._BigIntImpl.__(isNegative, resultUsed, resultDigits);
  }
  ['&'](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (dart.test(this[_isZero]) || dart.test(other[_isZero])) return core._BigIntImpl.zero;
    if (this[_isNegative] == other[_isNegative]) {
      if (dart.test(this[_isNegative])) {
        let this1 = this[_absSubSetSign](core._BigIntImpl.one, true);
        let other1 = other[_absSubSetSign](core._BigIntImpl.one, true);
        return this1[_absOrSetSign](other1, true)[_absAddSetSign](core._BigIntImpl.one, true);
      }
      return this[_absAndSetSign](other, false);
    }
    let p = null, n = null;
    if (dart.test(this[_isNegative])) {
      p = other;
      n = this;
    } else {
      p = this;
      n = other;
    }
    let n1 = dart.dsend(n, _absSubSetSign, [core._BigIntImpl.one, false]);
    return core._BigIntImpl._check(dart.dsend(p, _absAndNotSetSign, [n1, false]));
  }
  ['|'](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (dart.test(this[_isZero])) return other;
    if (dart.test(other[_isZero])) return this;
    if (this[_isNegative] == other[_isNegative]) {
      if (dart.test(this[_isNegative])) {
        let this1 = this[_absSubSetSign](core._BigIntImpl.one, true);
        let other1 = other[_absSubSetSign](core._BigIntImpl.one, true);
        return this1[_absAndSetSign](other1, true)[_absAddSetSign](core._BigIntImpl.one, true);
      }
      return this[_absOrSetSign](other, false);
    }
    let p = null, n = null;
    if (dart.test(this[_isNegative])) {
      p = other;
      n = this;
    } else {
      p = this;
      n = other;
    }
    let n1 = dart.dsend(n, _absSubSetSign, [core._BigIntImpl.one, true]);
    return core._BigIntImpl._check(dart.dsend(dart.dsend(n1, _absAndNotSetSign, [p, true]), _absAddSetSign, [core._BigIntImpl.one, true]));
  }
  ['^'](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (dart.test(this[_isZero])) return other;
    if (dart.test(other[_isZero])) return this;
    if (this[_isNegative] == other[_isNegative]) {
      if (dart.test(this[_isNegative])) {
        let this1 = this[_absSubSetSign](core._BigIntImpl.one, true);
        let other1 = other[_absSubSetSign](core._BigIntImpl.one, true);
        return this1[_absXorSetSign](other1, false);
      }
      return this[_absXorSetSign](other, false);
    }
    let p = null, n = null;
    if (dart.test(this[_isNegative])) {
      p = other;
      n = this;
    } else {
      p = this;
      n = other;
    }
    let n1 = dart.dsend(n, _absSubSetSign, [core._BigIntImpl.one, true]);
    return core._BigIntImpl._check(dart.dsend(dart.dsend(p, _absXorSetSign, [n1, true]), _absAddSetSign, [core._BigIntImpl.one, true]));
  }
  ['~']() {
    if (dart.test(this[_isZero])) return core._BigIntImpl._minusOne;
    if (dart.test(this[_isNegative])) {
      return this[_absSubSetSign](core._BigIntImpl.one, false);
    }
    return this[_absAddSetSign](core._BigIntImpl.one, true);
  }
  ['+'](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (dart.test(this[_isZero])) return other;
    if (dart.test(other[_isZero])) return this;
    let isNegative = this[_isNegative];
    if (isNegative == other[_isNegative]) {
      return this[_absAddSetSign](other, isNegative);
    }
    if (dart.notNull(this[_absCompare](other)) >= 0) {
      return this[_absSubSetSign](other, isNegative);
    }
    return other[_absSubSetSign](this, !dart.test(isNegative));
  }
  ['-'](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (dart.test(this[_isZero])) return other._negate();
    if (dart.test(other[_isZero])) return this;
    let isNegative = this[_isNegative];
    if (isNegative != other[_isNegative]) {
      return this[_absAddSetSign](other, isNegative);
    }
    if (dart.notNull(this[_absCompare](other)) >= 0) {
      return this[_absSubSetSign](other, isNegative);
    }
    return other[_absSubSetSign](this, !dart.test(isNegative));
  }
  static _mulAdd(x, multiplicandDigits, i, accumulatorDigits, j, n) {
    if (x === 0) {
      return;
    }
    let c = 0;
    while ((n = dart.notNull(n) - 1) >= 0) {
      let product = dart.notNull(x) * dart.notNull(multiplicandDigits[$_get]((() => {
        let x = i;
        i = dart.notNull(x) + 1;
        return x;
      })()));
      let combined = product + dart.notNull(accumulatorDigits[$_get](j)) + c;
      accumulatorDigits[$_set]((() => {
        let x = j;
        j = dart.notNull(x) + 1;
        return x;
      })(), combined & 65535);
      c = (combined / 65536)[$truncate]();
    }
    while (c !== 0) {
      let l = dart.notNull(accumulatorDigits[$_get](j)) + c;
      accumulatorDigits[$_set]((() => {
        let x = j;
        j = dart.notNull(x) + 1;
        return x;
      })(), l & 65535);
      c = (l / 65536)[$truncate]();
    }
  }
  ['*'](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    let used = this[_used];
    let otherUsed = other[_used];
    if (used === 0 || otherUsed === 0) {
      return core._BigIntImpl.zero;
    }
    let resultUsed = dart.notNull(used) + dart.notNull(otherUsed);
    let digits = this[_digits];
    let otherDigits = other[_digits];
    let resultDigits = typed_data.Uint16List.new(resultUsed);
    let i = 0;
    while (i < dart.notNull(otherUsed)) {
      core._BigIntImpl._mulAdd(otherDigits[$_get](i), digits, 0, resultDigits, i, used);
      i++;
    }
    return new core._BigIntImpl.__(this[_isNegative] != other[_isNegative], resultUsed, resultDigits);
  }
  static _mulDigits(xDigits, xUsed, otherDigits, otherUsed, resultDigits) {
    let resultUsed = dart.notNull(xUsed) + dart.notNull(otherUsed);
    let i = resultUsed;
    if (!(dart.notNull(resultDigits[$length]) >= i)) dart.assertFailed();
    while (--i >= 0) {
      resultDigits[$_set](i, 0);
    }
    i = 0;
    while (i < dart.notNull(otherUsed)) {
      core._BigIntImpl._mulAdd(otherDigits[$_get](i), xDigits, 0, resultDigits, i, xUsed);
      i++;
    }
    return resultUsed;
  }
  static _estimateQuotientDigit(topDigitDivisor, digits, i) {
    if (digits[$_get](i) == topDigitDivisor) return 65535;
    let quotientDigit = (((dart.notNull(digits[$_get](i)) << 16 | dart.notNull(digits[$_get](dart.notNull(i) - 1))) >>> 0) / dart.notNull(topDigitDivisor))[$truncate]();
    if (quotientDigit > 65535) return 65535;
    return quotientDigit;
  }
  [_div](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (!(dart.notNull(other[_used]) > 0)) dart.assertFailed();
    if (dart.notNull(this[_used]) < dart.notNull(other[_used])) {
      return core._BigIntImpl.zero;
    }
    this[_divRem](other);
    let lastQuo_used = dart.notNull(core._BigIntImpl._lastQuoRemUsed) - dart.notNull(core._BigIntImpl._lastRemUsed);
    let quo_digits = core._BigIntImpl._cloneDigits(core._BigIntImpl._lastQuoRemDigits, core._BigIntImpl._lastRemUsed, core._BigIntImpl._lastQuoRemUsed, lastQuo_used);
    let quo = new core._BigIntImpl.__(false, lastQuo_used, quo_digits);
    if (this[_isNegative] != other[_isNegative] && dart.notNull(quo[_used]) > 0) {
      quo = quo._negate();
    }
    return quo;
  }
  [_rem](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (!(dart.notNull(other[_used]) > 0)) dart.assertFailed();
    if (dart.notNull(this[_used]) < dart.notNull(other[_used])) {
      return this;
    }
    this[_divRem](other);
    let remDigits = core._BigIntImpl._cloneDigits(core._BigIntImpl._lastQuoRemDigits, 0, core._BigIntImpl._lastRemUsed, core._BigIntImpl._lastRemUsed);
    let rem = new core._BigIntImpl.__(false, core._BigIntImpl._lastRemUsed, remDigits);
    if (dart.notNull(core._BigIntImpl._lastRem_nsh) > 0) {
      rem = rem['>>'](core._BigIntImpl._lastRem_nsh);
    }
    if (dart.test(this[_isNegative]) && dart.notNull(rem[_used]) > 0) {
      rem = rem._negate();
    }
    return rem;
  }
  [_divRem](other) {
    if (this[_used] == core._BigIntImpl._lastDividendUsed && other[_used] == core._BigIntImpl._lastDivisorUsed && this[_digits] == core._BigIntImpl._lastDividendDigits && other[_digits] == core._BigIntImpl._lastDivisorDigits) {
      return;
    }
    if (!(dart.notNull(this[_used]) >= dart.notNull(other[_used]))) dart.assertFailed();
    let nsh = 16 - other[_digits][$_get](dart.notNull(other[_used]) - 1)[$bitLength];
    let resultDigits = null;
    let resultUsed = null;
    let yDigits = null;
    let yUsed = null;
    if (nsh > 0) {
      yDigits = typed_data.Uint16List.new(dart.notNull(other[_used]) + 5);
      yUsed = core._BigIntImpl._lShiftDigits(other[_digits], other[_used], nsh, yDigits);
      resultDigits = typed_data.Uint16List.new(dart.notNull(this[_used]) + 5);
      resultUsed = core._BigIntImpl._lShiftDigits(this[_digits], this[_used], nsh, resultDigits);
    } else {
      yDigits = other[_digits];
      yUsed = other[_used];
      resultDigits = core._BigIntImpl._cloneDigits(this[_digits], 0, this[_used], dart.notNull(this[_used]) + 2);
      resultUsed = this[_used];
    }
    let topDigitDivisor = yDigits[$_get](dart.notNull(yUsed) - 1);
    let i = resultUsed;
    let j = dart.notNull(i) - dart.notNull(yUsed);
    let tmpDigits = typed_data.Uint16List.new(i);
    let tmpUsed = core._BigIntImpl._dlShiftDigits(yDigits, yUsed, j, tmpDigits);
    if (dart.notNull(core._BigIntImpl._compareDigits(resultDigits, resultUsed, tmpDigits, tmpUsed)) >= 0) {
      if (!(i == resultUsed)) dart.assertFailed();
      resultDigits[$_set]((() => {
        let x = resultUsed;
        resultUsed = dart.notNull(x) + 1;
        return x;
      })(), 1);
      core._BigIntImpl._absSub(resultDigits, resultUsed, tmpDigits, tmpUsed, resultDigits);
    } else {
      resultDigits[$_set]((() => {
        let x = resultUsed;
        resultUsed = dart.notNull(x) + 1;
        return x;
      })(), 0);
    }
    let nyDigits = typed_data.Uint16List.new(dart.notNull(yUsed) + 2);
    nyDigits[$_set](yUsed, 1);
    core._BigIntImpl._absSub(nyDigits, dart.notNull(yUsed) + 1, yDigits, yUsed, nyDigits);
    i = dart.notNull(i) - 1;
    while (j > 0) {
      let estimatedQuotientDigit = core._BigIntImpl._estimateQuotientDigit(topDigitDivisor, resultDigits, i);
      j--;
      core._BigIntImpl._mulAdd(estimatedQuotientDigit, nyDigits, 0, resultDigits, j, yUsed);
      if (dart.notNull(resultDigits[$_get](i)) < dart.notNull(estimatedQuotientDigit)) {
        let tmpUsed = core._BigIntImpl._dlShiftDigits(nyDigits, yUsed, j, tmpDigits);
        core._BigIntImpl._absSub(resultDigits, resultUsed, tmpDigits, tmpUsed, resultDigits);
        while (dart.notNull(resultDigits[$_get](i)) < (estimatedQuotientDigit = dart.notNull(estimatedQuotientDigit) - 1)) {
          core._BigIntImpl._absSub(resultDigits, resultUsed, tmpDigits, tmpUsed, resultDigits);
        }
      }
      i = dart.notNull(i) - 1;
    }
    core._BigIntImpl._lastDividendDigits = this[_digits];
    core._BigIntImpl._lastDividendUsed = this[_used];
    core._BigIntImpl._lastDivisorDigits = other[_digits];
    core._BigIntImpl._lastDivisorUsed = other[_used];
    core._BigIntImpl._lastQuoRemDigits = resultDigits;
    core._BigIntImpl._lastQuoRemUsed = resultUsed;
    core._BigIntImpl._lastRemUsed = yUsed;
    core._BigIntImpl._lastRem_nsh = nsh;
  }
  get hashCode() {
    function combine(hash, value) {
      hash = 536870911 & dart.notNull(hash) + dart.notNull(value);
      hash = 536870911 & dart.notNull(hash) + ((524287 & dart.notNull(hash)) << 10);
      return (dart.notNull(hash) ^ hash[$rightShift](6)) >>> 0;
    }
    dart.fn(combine, intAndintToint());
    function finish(hash) {
      hash = 536870911 & dart.notNull(hash) + ((67108863 & dart.notNull(hash)) << 3);
      hash = (dart.notNull(hash) ^ hash[$rightShift](11)) >>> 0;
      return 536870911 & dart.notNull(hash) + ((16383 & dart.notNull(hash)) << 15);
    }
    dart.fn(finish, intToint());
    if (dart.test(this[_isZero])) return 6707;
    let hash = dart.test(this[_isNegative]) ? 83585 : 429689;
    for (let i = 0; i < dart.notNull(this[_used]); i++) {
      hash = combine(hash, this[_digits][$_get](i));
    }
    return finish(hash);
  }
  _equals(other) {
    return core._BigIntImpl.is(other) && this.compareTo(other) === 0;
  }
  get bitLength() {
    if (this[_used] === 0) return 0;
    if (dart.test(this[_isNegative])) return this['~']().bitLength;
    return 16 * (dart.notNull(this[_used]) - 1) + this[_digits][$_get](dart.notNull(this[_used]) - 1)[$bitLength];
  }
  ['~/'](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (other[_used] === 0) {
      dart.throw(const$41 || (const$41 = dart.const(new core.IntegerDivisionByZeroException.new())));
    }
    return this[_div](other);
  }
  remainder(bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (other[_used] === 0) {
      dart.throw(const$42 || (const$42 = dart.const(new core.IntegerDivisionByZeroException.new())));
    }
    return this[_rem](other);
  }
  ['/'](other) {
    return dart.notNull(this.toDouble()) / dart.notNull(other.toDouble());
  }
  ['<'](other) {
    return dart.notNull(this.compareTo(other)) < 0;
  }
  ['<='](other) {
    return dart.notNull(this.compareTo(other)) <= 0;
  }
  ['>'](other) {
    return dart.notNull(this.compareTo(other)) > 0;
  }
  ['>='](other) {
    return dart.notNull(this.compareTo(other)) >= 0;
  }
  ['%'](bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (other[_used] === 0) {
      dart.throw(const$43 || (const$43 = dart.const(new core.IntegerDivisionByZeroException.new())));
    }
    let result = this[_rem](other);
    if (dart.test(result[_isNegative])) {
      if (dart.test(other[_isNegative])) {
        result = result['-'](other);
      } else {
        result = result['+'](other);
      }
    }
    return result;
  }
  get sign() {
    if (this[_used] === 0) return 0;
    return dart.test(this[_isNegative]) ? -1 : 1;
  }
  get isEven() {
    return this[_used] === 0 || (dart.notNull(this[_digits][$_get](0)) & 1) === 0;
  }
  get isOdd() {
    return !dart.test(this.isEven);
  }
  get isNegative() {
    return this[_isNegative];
  }
  pow(exponent) {
    if (dart.notNull(exponent) < 0) {
      dart.throw(new core.ArgumentError.new("Exponent must not be negative: " + dart.str(exponent)));
    }
    if (exponent === 0) return core._BigIntImpl.one;
    let result = core._BigIntImpl.one;
    let base = this;
    while (exponent !== 0) {
      if ((dart.notNull(exponent) & 1) === 1) {
        result = result['*'](base);
      }
      exponent = exponent[$rightShift](1);
      if (exponent !== 0) {
        base = base['*'](base);
      }
    }
    return result;
  }
  modPow(bigExponent, bigModulus) {
    let exponent = core._BigIntImpl._check(bigExponent);
    let modulus = core._BigIntImpl._check(bigModulus);
    if (dart.test(exponent[_isNegative])) {
      dart.throw(new core.ArgumentError.new("exponent must be positive: " + dart.str(exponent)));
    }
    if (dart.test(modulus['<='](core._BigIntImpl.zero))) {
      dart.throw(new core.ArgumentError.new("modulus must be strictly positive: " + dart.str(modulus)));
    }
    if (dart.test(exponent[_isZero])) return core._BigIntImpl.one;
    let modulusUsed = modulus[_used];
    let modulusUsed2p4 = 2 * dart.notNull(modulusUsed) + 4;
    let exponentBitlen = exponent.bitLength;
    if (dart.notNull(exponentBitlen) <= 0) return core._BigIntImpl.one;
    let z = new core._BigIntClassic.new(modulus);
    let resultDigits = typed_data.Uint16List.new(modulusUsed2p4);
    let result2Digits = typed_data.Uint16List.new(modulusUsed2p4);
    let gDigits = typed_data.Uint16List.new(modulusUsed);
    let gUsed = z.convert(this, gDigits);
    for (let j = dart.notNull(gUsed) - 1; j >= 0; j--) {
      resultDigits[$_set](j, gDigits[$_get](j));
    }
    let resultUsed = gUsed;
    let result2Used = null;
    for (let i = dart.notNull(exponentBitlen) - 2; i >= 0; i--) {
      result2Used = z.sqr(resultDigits, resultUsed, result2Digits);
      if (!dart.test(exponent['&'](core._BigIntImpl.one['<<'](i))[_isZero])) {
        resultUsed = z.mul(result2Digits, core.int._check(result2Used), gDigits, gUsed, resultDigits);
      } else {
        let tmpDigits = resultDigits;
        let tmpUsed = resultUsed;
        resultDigits = result2Digits;
        resultUsed = core.int._check(result2Used);
        result2Digits = tmpDigits;
        result2Used = tmpUsed;
      }
    }
    return z.revert(resultDigits, resultUsed);
  }
  static _binaryGcd(x, y, inv) {
    let xDigits = x[_digits];
    let yDigits = y[_digits];
    let xUsed = x[_used];
    let yUsed = y[_used];
    let maxUsed = dart.notNull(xUsed) > dart.notNull(yUsed) ? xUsed : yUsed;
    let unshiftedMaxUsed = maxUsed;
    xDigits = core._BigIntImpl._cloneDigits(xDigits, 0, xUsed, maxUsed);
    yDigits = core._BigIntImpl._cloneDigits(yDigits, 0, yUsed, maxUsed);
    let shiftAmount = 0;
    if (dart.test(inv)) {
      if (yUsed === 1 && yDigits[$_get](0) === 1) return core._BigIntImpl.one;
      if (yUsed === 0 || yDigits[$_get](0)[$isEven] && xDigits[$_get](0)[$isEven]) {
        dart.throw(core.Exception.new("Not coprime"));
      }
    } else {
      if (dart.test(x[_isZero])) {
        dart.throw(new core.ArgumentError.value(0, "this", "must not be zero"));
      }
      if (dart.test(y[_isZero])) {
        dart.throw(new core.ArgumentError.value(0, "other", "must not be zero"));
      }
      if (xUsed === 1 && xDigits[$_get](0) === 1 || yUsed === 1 && yDigits[$_get](0) === 1) return core._BigIntImpl.one;
      while ((dart.notNull(xDigits[$_get](0)) & 1) === 0 && (dart.notNull(yDigits[$_get](0)) & 1) === 0) {
        core._BigIntImpl._rsh(xDigits, xUsed, 1, xDigits);
        core._BigIntImpl._rsh(yDigits, yUsed, 1, yDigits);
        shiftAmount++;
      }
      if (shiftAmount >= 16) {
        let digitShiftAmount = (shiftAmount / 16)[$truncate]();
        xUsed = dart.notNull(xUsed) - digitShiftAmount;
        yUsed = dart.notNull(yUsed) - digitShiftAmount;
        maxUsed = dart.notNull(maxUsed) - digitShiftAmount;
      }
      if ((dart.notNull(yDigits[$_get](0)) & 1) === 1) {
        let tmpDigits = xDigits;
        let tmpUsed = xUsed;
        xDigits = yDigits;
        xUsed = yUsed;
        yDigits = tmpDigits;
        yUsed = tmpUsed;
      }
    }
    let uDigits = core._BigIntImpl._cloneDigits(xDigits, 0, xUsed, unshiftedMaxUsed);
    let vDigits = core._BigIntImpl._cloneDigits(yDigits, 0, yUsed, dart.notNull(unshiftedMaxUsed) + 2);
    let ac = (dart.notNull(xDigits[$_get](0)) & 1) === 0;
    let abcdUsed = dart.notNull(maxUsed) + 1;
    let abcdLen = abcdUsed + 2;
    let aDigits = null, bDigits = null, cDigits = null, dDigits = null;
    let aIsNegative = null, bIsNegative = null, cIsNegative = null, dIsNegative = null;
    if (ac) {
      aDigits = typed_data.Uint16List.new(abcdLen);
      aIsNegative = false;
      dart.dsetindex(aDigits, 0, 1);
      cDigits = typed_data.Uint16List.new(abcdLen);
      cIsNegative = false;
    }
    bDigits = typed_data.Uint16List.new(abcdLen);
    bIsNegative = false;
    dDigits = typed_data.Uint16List.new(abcdLen);
    dIsNegative = false;
    dart.dsetindex(dDigits, 0, 1);
    while (true) {
      while ((dart.notNull(uDigits[$_get](0)) & 1) === 0) {
        core._BigIntImpl._rsh(uDigits, maxUsed, 1, uDigits);
        if (ac) {
          if (dart.equals(dart.dsend(dart.dindex(aDigits, 0), '&', [1]), 1) || dart.equals(dart.dsend(dart.dindex(bDigits, 0), '&', [1]), 1)) {
            if (dart.test(aIsNegative)) {
              if (!dart.equals(dart.dindex(aDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(aDigits), maxUsed, yDigits, maxUsed)) > 0) {
                core._BigIntImpl._absSub(typed_data.Uint16List._check(aDigits), abcdUsed, yDigits, maxUsed, typed_data.Uint16List._check(aDigits));
              } else {
                core._BigIntImpl._absSub(yDigits, maxUsed, typed_data.Uint16List._check(aDigits), maxUsed, typed_data.Uint16List._check(aDigits));
                aIsNegative = false;
              }
            } else {
              core._BigIntImpl._absAdd(typed_data.Uint16List._check(aDigits), abcdUsed, yDigits, maxUsed, typed_data.Uint16List._check(aDigits));
            }
            if (dart.test(bIsNegative)) {
              core._BigIntImpl._absAdd(typed_data.Uint16List._check(bDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(bDigits));
            } else if (!dart.equals(dart.dindex(bDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(bDigits), maxUsed, xDigits, maxUsed)) > 0) {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(bDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(bDigits));
            } else {
              core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(bDigits), maxUsed, typed_data.Uint16List._check(bDigits));
              bIsNegative = true;
            }
          }
          core._BigIntImpl._rsh(typed_data.Uint16List._check(aDigits), abcdUsed, 1, typed_data.Uint16List._check(aDigits));
        } else if (dart.equals(dart.dsend(dart.dindex(bDigits, 0), '&', [1]), 1)) {
          if (dart.test(bIsNegative)) {
            core._BigIntImpl._absAdd(typed_data.Uint16List._check(bDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(bDigits));
          } else if (!dart.equals(dart.dindex(bDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(bDigits), maxUsed, xDigits, maxUsed)) > 0) {
            core._BigIntImpl._absSub(typed_data.Uint16List._check(bDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(bDigits));
          } else {
            core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(bDigits), maxUsed, typed_data.Uint16List._check(bDigits));
            bIsNegative = true;
          }
        }
        core._BigIntImpl._rsh(typed_data.Uint16List._check(bDigits), abcdUsed, 1, typed_data.Uint16List._check(bDigits));
      }
      while ((dart.notNull(vDigits[$_get](0)) & 1) === 0) {
        core._BigIntImpl._rsh(vDigits, maxUsed, 1, vDigits);
        if (ac) {
          if (dart.equals(dart.dsend(dart.dindex(cDigits, 0), '&', [1]), 1) || dart.equals(dart.dsend(dart.dindex(dDigits, 0), '&', [1]), 1)) {
            if (dart.test(cIsNegative)) {
              if (!dart.equals(dart.dindex(cDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(cDigits), maxUsed, yDigits, maxUsed)) > 0) {
                core._BigIntImpl._absSub(typed_data.Uint16List._check(cDigits), abcdUsed, yDigits, maxUsed, typed_data.Uint16List._check(cDigits));
              } else {
                core._BigIntImpl._absSub(yDigits, maxUsed, typed_data.Uint16List._check(cDigits), maxUsed, typed_data.Uint16List._check(cDigits));
                cIsNegative = false;
              }
            } else {
              core._BigIntImpl._absAdd(typed_data.Uint16List._check(cDigits), abcdUsed, yDigits, maxUsed, typed_data.Uint16List._check(cDigits));
            }
            if (dart.test(dIsNegative)) {
              core._BigIntImpl._absAdd(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
            } else if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
            } else {
              core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(dDigits), maxUsed, typed_data.Uint16List._check(dDigits));
              dIsNegative = true;
            }
          }
          core._BigIntImpl._rsh(typed_data.Uint16List._check(cDigits), abcdUsed, 1, typed_data.Uint16List._check(cDigits));
        } else if (dart.equals(dart.dsend(dart.dindex(dDigits, 0), '&', [1]), 1)) {
          if (dart.test(dIsNegative)) {
            core._BigIntImpl._absAdd(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
          } else if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
            core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
          } else {
            core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(dDigits), maxUsed, typed_data.Uint16List._check(dDigits));
            dIsNegative = true;
          }
        }
        core._BigIntImpl._rsh(typed_data.Uint16List._check(dDigits), abcdUsed, 1, typed_data.Uint16List._check(dDigits));
      }
      if (dart.notNull(core._BigIntImpl._compareDigits(uDigits, maxUsed, vDigits, maxUsed)) >= 0) {
        core._BigIntImpl._absSub(uDigits, maxUsed, vDigits, maxUsed, uDigits);
        if (ac) {
          if (aIsNegative == cIsNegative) {
            let a_cmp_c = core._BigIntImpl._compareDigits(typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits), abcdUsed);
            if (dart.notNull(a_cmp_c) > 0) {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits));
            } else {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(aDigits));
              aIsNegative = !dart.test(aIsNegative) && a_cmp_c !== 0;
            }
          } else {
            core._BigIntImpl._absAdd(typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits));
          }
        }
        if (bIsNegative == dIsNegative) {
          let b_cmp_d = core._BigIntImpl._compareDigits(typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits), abcdUsed);
          if (dart.notNull(b_cmp_d) > 0) {
            core._BigIntImpl._absSub(typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits));
          } else {
            core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(bDigits));
            bIsNegative = !dart.test(bIsNegative) && b_cmp_d !== 0;
          }
        } else {
          core._BigIntImpl._absAdd(typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits));
        }
      } else {
        core._BigIntImpl._absSub(vDigits, maxUsed, uDigits, maxUsed, vDigits);
        if (ac) {
          if (cIsNegative == aIsNegative) {
            let c_cmp_a = core._BigIntImpl._compareDigits(typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits), abcdUsed);
            if (dart.notNull(c_cmp_a) > 0) {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits));
            } else {
              core._BigIntImpl._absSub(typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(cDigits));
              cIsNegative = !dart.test(cIsNegative) && c_cmp_a !== 0;
            }
          } else {
            core._BigIntImpl._absAdd(typed_data.Uint16List._check(cDigits), abcdUsed, typed_data.Uint16List._check(aDigits), abcdUsed, typed_data.Uint16List._check(cDigits));
          }
        }
        if (dIsNegative == bIsNegative) {
          let d_cmp_b = core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits), abcdUsed);
          if (dart.notNull(d_cmp_b) > 0) {
            core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits));
          } else {
            core._BigIntImpl._absSub(typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(dDigits));
            dIsNegative = !dart.test(dIsNegative) && d_cmp_b !== 0;
          }
        } else {
          core._BigIntImpl._absAdd(typed_data.Uint16List._check(dDigits), abcdUsed, typed_data.Uint16List._check(bDigits), abcdUsed, typed_data.Uint16List._check(dDigits));
        }
      }
      let i = maxUsed;
      while (dart.notNull(i) > 0 && uDigits[$_get](dart.notNull(i) - 1) === 0) {
        i = dart.notNull(i) - 1;
      }
      if (i === 0) break;
    }
    if (!dart.test(inv)) {
      if (shiftAmount > 0) {
        maxUsed = core._BigIntImpl._lShiftDigits(vDigits, maxUsed, shiftAmount, vDigits);
      }
      return new core._BigIntImpl.__(false, maxUsed, vDigits);
    }
    let i = dart.notNull(maxUsed) - 1;
    while (i > 0 && vDigits[$_get](i) === 0)
      --i;
    if (i !== 0 || vDigits[$_get](0) !== 1) {
      dart.throw(core.Exception.new("Not coprime"));
    }
    if (dart.test(dIsNegative)) {
      if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
        core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
        if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
          core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
        } else {
          core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(dDigits), maxUsed, typed_data.Uint16List._check(dDigits));
          dIsNegative = false;
        }
      } else {
        core._BigIntImpl._absSub(xDigits, maxUsed, typed_data.Uint16List._check(dDigits), maxUsed, typed_data.Uint16List._check(dDigits));
        dIsNegative = false;
      }
    } else if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
      core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
      if (!dart.equals(dart.dindex(dDigits, maxUsed), 0) || dart.notNull(core._BigIntImpl._compareDigits(typed_data.Uint16List._check(dDigits), maxUsed, xDigits, maxUsed)) > 0) {
        core._BigIntImpl._absSub(typed_data.Uint16List._check(dDigits), abcdUsed, xDigits, maxUsed, typed_data.Uint16List._check(dDigits));
      }
    }
    return new core._BigIntImpl.__(false, maxUsed, typed_data.Uint16List._check(dDigits));
  }
  modInverse(bigInt) {
    let modulus = core._BigIntImpl._check(bigInt);
    if (dart.test(modulus['<='](core._BigIntImpl.zero))) {
      dart.throw(new core.ArgumentError.new("Modulus must be strictly positive: " + dart.str(modulus)));
    }
    if (dart.equals(modulus, core._BigIntImpl.one)) return core._BigIntImpl.zero;
    let tmp = this;
    if (dart.test(tmp[_isNegative]) || dart.notNull(tmp[_absCompare](modulus)) >= 0) {
      tmp = tmp['%'](modulus);
    }
    return core._BigIntImpl._binaryGcd(modulus, tmp, true);
  }
  gcd(bigInt) {
    let other = core._BigIntImpl._check(bigInt);
    if (dart.test(this[_isZero])) return other.abs();
    if (dart.test(other[_isZero])) return this.abs();
    return core._BigIntImpl._binaryGcd(this, other, false);
  }
  toUnsigned(width) {
    return this['&'](core._BigIntImpl.one['<<'](width)['-'](core._BigIntImpl.one));
  }
  toSigned(width) {
    let signMask = core._BigIntImpl.one['<<'](dart.notNull(width) - 1);
    return this['&'](signMask['-'](core._BigIntImpl.one))['-'](this['&'](signMask));
  }
  get isValidInt() {
    if (dart.notNull(this[_used]) <= 3) return true;
    let asInt = this.toInt();
    if (!asInt[$toDouble]()[$isFinite]) return false;
    return this._equals(core._BigIntImpl._fromInt(asInt));
  }
  toInt() {
    let result = 0;
    for (let i = dart.notNull(this[_used]) - 1; i >= 0; i--) {
      result = result * 65536 + dart.notNull(this[_digits][$_get](i));
    }
    return dart.test(this[_isNegative]) ? -result : result;
  }
  toDouble() {
    let exponentBias = 1075;
    let maxDoubleExponent = 2046 - exponentBias;
    if (dart.test(this[_isZero])) return 0.0;
    let resultBits = typed_data.Uint8List.new(8);
    let length = 16 * (dart.notNull(this[_used]) - 1) + this[_digits][$_get](dart.notNull(this[_used]) - 1)[$bitLength];
    if (length - 53 > maxDoubleExponent) return core.double.infinity;
    if (dart.test(this[_isNegative])) resultBits[$_set](7, 128);
    let biasedExponent = length - 53 + exponentBias;
    resultBits[$_set](6, (biasedExponent & 15) << 4);
    let i$ = 7;
    resultBits[$_set](i$, (dart.notNull(resultBits[$_get](i$)) | biasedExponent[$rightShift](4)) >>> 0);
    let cachedBits = 0;
    let cachedBitsLength = 0;
    let digitIndex = dart.notNull(this[_used]) - 1;
    const readBits = (function(n) {
      while (cachedBitsLength < dart.notNull(n)) {
        let nextDigit = null;
        let nextDigitLength = 16;
        if (digitIndex < 0) {
          nextDigit = 0;
          digitIndex--;
        } else {
          nextDigit = this[_digits][$_get](digitIndex);
          if (digitIndex === dart.notNull(this[_used]) - 1) nextDigitLength = nextDigit[$bitLength];
          digitIndex--;
        }
        cachedBits = cachedBits[$leftShift](nextDigitLength) + dart.notNull(nextDigit);
        cachedBitsLength = cachedBitsLength + nextDigitLength;
      }
      let result = cachedBits[$rightShift](cachedBitsLength - dart.notNull(n));
      cachedBits = cachedBits - result[$leftShift](cachedBitsLength - dart.notNull(n));
      cachedBitsLength = cachedBitsLength - dart.notNull(n);
      return result;
    }).bind(this);
    dart.fn(readBits, intToint());
    let leadingBits = dart.notNull(readBits(5)) & 15;
    let i$0 = 6;
    resultBits[$_set](i$0, (dart.notNull(resultBits[$_get](i$0)) | leadingBits) >>> 0);
    for (let i = 5; i >= 0; i--) {
      resultBits[$_set](i, readBits(8));
    }
    function roundUp() {
      let carry = 1;
      for (let i = 0; i < 8; i++) {
        if (carry === 0) break;
        let sum = dart.notNull(resultBits[$_get](i)) + carry;
        resultBits[$_set](i, sum & 255);
        carry = sum[$rightShift](8);
      }
    }
    dart.fn(roundUp, VoidTovoid());
    if (readBits(1) === 1) {
      if (resultBits[$_get](0)[$isOdd]) {
        roundUp();
      } else {
        if (cachedBits !== 0) {
          roundUp();
        } else {
          for (let i = digitIndex; digitIndex >= 0; i--) {
            if (this[_digits][$_get](i) !== 0) {
              roundUp();
              break;
            }
          }
        }
      }
    }
    return resultBits[$buffer][$asByteData]()[$getFloat64](0, typed_data.Endian.little);
  }
  toString() {
    if (this[_used] === 0) return "0";
    if (this[_used] === 1) {
      if (dart.test(this[_isNegative])) return (-dart.notNull(this[_digits][$_get](0)))[$toString]();
      return dart.toString(this[_digits][$_get](0));
    }
    let decimalDigitChunks = JSArrayOfString().of([]);
    let rest = dart.test(this.isNegative) ? this._negate() : this;
    while (dart.notNull(rest[_used]) > 1) {
      let digits4 = dart.toString(rest.remainder(core._BigIntImpl._bigInt10000));
      decimalDigitChunks[$add](digits4);
      if (digits4.length === 1) decimalDigitChunks[$add]("000");
      if (digits4.length === 2) decimalDigitChunks[$add]("00");
      if (digits4.length === 3) decimalDigitChunks[$add]("0");
      rest = rest['~/'](core._BigIntImpl._bigInt10000);
    }
    decimalDigitChunks[$add](dart.toString(rest[_digits][$_get](0)));
    if (dart.test(this[_isNegative])) decimalDigitChunks[$add]("-");
    return decimalDigitChunks[$reversed][$join]();
  }
  [_toRadixCodeUnit](digit) {
    let _0 = 48;
    let _a = 97;
    if (dart.notNull(digit) < 10) return _0 + dart.notNull(digit);
    return _a + dart.notNull(digit) - 10;
  }
  toRadixString(radix) {
    if (dart.notNull(radix) > 36) dart.throw(new core.RangeError.range(radix, 2, 36));
    if (this[_used] === 0) return "0";
    if (this[_used] === 1) {
      let digitString = this[_digits][$_get](0)[$toRadixString](radix);
      if (dart.test(this[_isNegative])) return "-" + digitString;
      return digitString;
    }
    if (radix === 16) return this[_toHexString]();
    let base = core._BigIntImpl._fromInt(radix);
    let reversedDigitCodeUnits = JSArrayOfint().of([]);
    let rest = this.abs();
    while (!dart.test(rest[_isZero])) {
      let digit = rest.remainder(base).toInt();
      rest = rest['~/'](base);
      reversedDigitCodeUnits[$add](this[_toRadixCodeUnit](digit));
    }
    let digitString = core.String.fromCharCodes(reversedDigitCodeUnits[$reversed]);
    if (dart.test(this[_isNegative])) return "-" + digitString;
    return digitString;
  }
  [_toHexString]() {
    let chars = JSArrayOfint().of([]);
    for (let i = 0; i < dart.notNull(this[_used]) - 1; i++) {
      let chunk = this[_digits][$_get](i);
      for (let j = 0; j < (16 / 4)[$truncate](); j++) {
        chars[$add](this[_toRadixCodeUnit](dart.notNull(chunk) & 15));
        chunk = chunk[$rightShift](4);
      }
    }
    let msbChunk = this[_digits][$_get](dart.notNull(this[_used]) - 1);
    while (msbChunk !== 0) {
      chars[$add](this[_toRadixCodeUnit](dart.notNull(msbChunk) & 15));
      msbChunk = msbChunk[$rightShift](4);
    }
    if (dart.test(this[_isNegative])) {
      let _dash = 45;
      chars[$add](_dash);
    }
    return core.String.fromCharCodes(chars[$reversed]);
  }
};
(core._BigIntImpl.__ = function(isNegative, used, digits) {
  core._BigIntImpl._normalized.call(this, isNegative, core._BigIntImpl._normalize(used, digits), digits);
}).prototype = core._BigIntImpl.prototype;
(core._BigIntImpl._normalized = function(isNegative, used, digits) {
  this[_used] = used;
  this[_digits] = digits;
  this[_isNegative] = used === 0 ? false : isNegative;
}).prototype = core._BigIntImpl.prototype;
dart.addTypeTests(core._BigIntImpl);
core._BigIntImpl[dart.implements] = () => [core.BigInt];
dart.setMethodSignature(core._BigIntImpl, () => ({
  __proto__: dart.getMethods(core._BigIntImpl.__proto__),
  _negate: dart.fnType(core._BigIntImpl, []),
  abs: dart.fnType(core._BigIntImpl, []),
  [_dlShift]: dart.fnType(core._BigIntImpl, [core.int]),
  [_drShift]: dart.fnType(core._BigIntImpl, [core.int]),
  '<<': dart.fnType(core._BigIntImpl, [core.int]),
  '>>': dart.fnType(core._BigIntImpl, [core.int]),
  [_absCompare]: dart.fnType(core.int, [core.BigInt]),
  compareTo: dart.fnType(core.int, [core.Object]),
  [$compareTo]: dart.fnType(core.int, [core.Object]),
  [_absAddSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
  [_absSubSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
  [_absAndSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
  [_absAndNotSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
  [_absOrSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
  [_absXorSetSign]: dart.fnType(core._BigIntImpl, [core._BigIntImpl, core.bool]),
  '&': dart.fnType(core._BigIntImpl, [core.BigInt]),
  '|': dart.fnType(core._BigIntImpl, [core.BigInt]),
  '^': dart.fnType(core._BigIntImpl, [core.BigInt]),
  '~': dart.fnType(core._BigIntImpl, []),
  '+': dart.fnType(core._BigIntImpl, [core.BigInt]),
  '-': dart.fnType(core._BigIntImpl, [core.BigInt]),
  '*': dart.fnType(core._BigIntImpl, [core.BigInt]),
  [_div]: dart.fnType(core._BigIntImpl, [core.BigInt]),
  [_rem]: dart.fnType(core._BigIntImpl, [core.BigInt]),
  [_divRem]: dart.fnType(dart.void, [core._BigIntImpl]),
  _equals: dart.fnType(core.bool, [core.Object]),
  [$_equals]: dart.fnType(core.bool, [core.Object]),
  '~/': dart.fnType(core._BigIntImpl, [core.BigInt]),
  remainder: dart.fnType(core._BigIntImpl, [core.BigInt]),
  '/': dart.fnType(core.double, [core.BigInt]),
  '<': dart.fnType(core.bool, [core.BigInt]),
  '<=': dart.fnType(core.bool, [core.BigInt]),
  '>': dart.fnType(core.bool, [core.BigInt]),
  '>=': dart.fnType(core.bool, [core.BigInt]),
  '%': dart.fnType(core._BigIntImpl, [core.BigInt]),
  pow: dart.fnType(core._BigIntImpl, [core.int]),
  modPow: dart.fnType(core._BigIntImpl, [core.BigInt, core.BigInt]),
  modInverse: dart.fnType(core._BigIntImpl, [core.BigInt]),
  gcd: dart.fnType(core._BigIntImpl, [core.BigInt]),
  toUnsigned: dart.fnType(core._BigIntImpl, [core.int]),
  toSigned: dart.fnType(core._BigIntImpl, [core.int]),
  toInt: dart.fnType(core.int, []),
  toDouble: dart.fnType(core.double, []),
  [_toRadixCodeUnit]: dart.fnType(core.int, [core.int]),
  toRadixString: dart.fnType(core.String, [core.int]),
  [_toHexString]: dart.fnType(core.String, [])
}));
dart.setGetterSignature(core._BigIntImpl, () => ({
  __proto__: dart.getGetters(core._BigIntImpl.__proto__),
  [_isZero]: core.bool,
  bitLength: core.int,
  sign: core.int,
  isEven: core.bool,
  isOdd: core.bool,
  isNegative: core.bool,
  isValidInt: core.bool
}));
dart.setFieldSignature(core._BigIntImpl, () => ({
  __proto__: dart.getFields(core._BigIntImpl.__proto__),
  [_isNegative]: dart.finalFieldType(core.bool),
  [_digits]: dart.finalFieldType(typed_data.Uint16List),
  [_used]: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(core._BigIntImpl, ['compareTo', '_equals', 'toString']);
dart.defineExtensionAccessors(core._BigIntImpl, ['hashCode']);
dart.defineLazy(core._BigIntImpl, {
  /*core._BigIntImpl._digitBits*/get _digitBits() {
    return 16;
  },
  /*core._BigIntImpl._digitBase*/get _digitBase() {
    return 1 << 16;
  },
  /*core._BigIntImpl._digitMask*/get _digitMask() {
    return (1 << 16) - 1;
  },
  /*core._BigIntImpl.zero*/get zero() {
    return core._BigIntImpl._fromInt(0);
  },
  /*core._BigIntImpl.one*/get one() {
    return core._BigIntImpl._fromInt(1);
  },
  /*core._BigIntImpl.two*/get two() {
    return core._BigIntImpl._fromInt(2);
  },
  /*core._BigIntImpl._minusOne*/get _minusOne() {
    return core._BigIntImpl.one._negate();
  },
  /*core._BigIntImpl._bigInt10000*/get _bigInt10000() {
    return core._BigIntImpl._fromInt(10000);
  },
  /*core._BigIntImpl._lastDividendDigits*/get _lastDividendDigits() {
    return null;
  },
  set _lastDividendDigits(_) {},
  /*core._BigIntImpl._lastDividendUsed*/get _lastDividendUsed() {
    return null;
  },
  set _lastDividendUsed(_) {},
  /*core._BigIntImpl._lastDivisorDigits*/get _lastDivisorDigits() {
    return null;
  },
  set _lastDivisorDigits(_) {},
  /*core._BigIntImpl._lastDivisorUsed*/get _lastDivisorUsed() {
    return null;
  },
  set _lastDivisorUsed(_) {},
  /*core._BigIntImpl._lastQuoRemDigits*/get _lastQuoRemDigits() {
    return null;
  },
  set _lastQuoRemDigits(_) {},
  /*core._BigIntImpl._lastQuoRemUsed*/get _lastQuoRemUsed() {
    return null;
  },
  set _lastQuoRemUsed(_) {},
  /*core._BigIntImpl._lastRemUsed*/get _lastRemUsed() {
    return null;
  },
  set _lastRemUsed(_) {},
  /*core._BigIntImpl._lastRem_nsh*/get _lastRem_nsh() {
    return null;
  },
  set _lastRem_nsh(_) {},
  /*core._BigIntImpl._bitsForFromDouble*/get _bitsForFromDouble() {
    return typed_data.Uint8List.new(8);
  },
  /*core._BigIntImpl._simpleValidIntDigits*/get _simpleValidIntDigits() {
    return (53 / 16)[$truncate]();
  }
});
core._BigIntReduction = class _BigIntReduction extends core.Object {};
(core._BigIntReduction.new = function() {
}).prototype = core._BigIntReduction.prototype;
dart.addTypeTests(core._BigIntReduction);
const _modulus = Symbol('_modulus');
const _normalizedModulus = Symbol('_normalizedModulus');
const _reduce = Symbol('_reduce');
core._BigIntClassic = class _BigIntClassic extends core.Object {
  convert(x, resultDigits) {
    let digits = null;
    let used = null;
    if (dart.test(x[_isNegative]) || dart.notNull(x[_absCompare](this[_modulus])) >= 0) {
      let remainder = x[_rem](this[_modulus]);
      if (dart.test(x[_isNegative]) && dart.notNull(remainder[_used]) > 0) {
        if (!dart.test(remainder[_isNegative])) dart.assertFailed();
        remainder = remainder['+'](this[_modulus]);
      }
      if (!!dart.test(remainder[_isNegative])) dart.assertFailed();
      used = remainder[_used];
      digits = remainder[_digits];
    } else {
      used = x[_used];
      digits = x[_digits];
    }
    let i = used;
    while (dart.dtest(dart.dsend(i = dart.dsend(i, '-', [1]), '>=', [0]))) {
      resultDigits[$_set](core.int._check(i), core.int._check(dart.dindex(digits, i)));
    }
    return core.int._check(used);
  }
  revert(xDigits, xUsed) {
    return new core._BigIntImpl.__(false, xUsed, xDigits);
  }
  [_reduce](xDigits, xUsed) {
    if (dart.notNull(xUsed) < dart.notNull(this[_modulus][_used])) {
      return xUsed;
    }
    let reverted = this.revert(xDigits, xUsed);
    let rem = reverted[_rem](this[_normalizedModulus]);
    return this.convert(rem, xDigits);
  }
  sqr(xDigits, xUsed, resultDigits) {
    let b = new core._BigIntImpl.__(false, xUsed, xDigits);
    let b2 = b['*'](b);
    for (let i = 0; i < dart.notNull(b2[_used]); i++) {
      resultDigits[$_set](i, b2[_digits][$_get](i));
    }
    for (let i = b2[_used]; dart.notNull(i) < 2 * dart.notNull(xUsed); i = dart.notNull(i) + 1) {
      resultDigits[$_set](i, 0);
    }
    return this[_reduce](resultDigits, 2 * dart.notNull(xUsed));
  }
  mul(xDigits, xUsed, yDigits, yUsed, resultDigits) {
    let resultUsed = core._BigIntImpl._mulDigits(xDigits, xUsed, yDigits, yUsed, resultDigits);
    return this[_reduce](resultDigits, resultUsed);
  }
};
(core._BigIntClassic.new = function(modulus) {
  this[_modulus] = modulus;
  this[_normalizedModulus] = modulus['<<'](core._BigIntImpl._digitBits - modulus[_digits][$_get](dart.notNull(modulus[_used]) - 1)[$bitLength]);
}).prototype = core._BigIntClassic.prototype;
dart.addTypeTests(core._BigIntClassic);
core._BigIntClassic[dart.implements] = () => [core._BigIntReduction];
dart.setMethodSignature(core._BigIntClassic, () => ({
  __proto__: dart.getMethods(core._BigIntClassic.__proto__),
  convert: dart.fnType(core.int, [core._BigIntImpl, typed_data.Uint16List]),
  revert: dart.fnType(core._BigIntImpl, [typed_data.Uint16List, core.int]),
  [_reduce]: dart.fnType(core.int, [typed_data.Uint16List, core.int]),
  sqr: dart.fnType(core.int, [typed_data.Uint16List, core.int, typed_data.Uint16List]),
  mul: dart.fnType(core.int, [typed_data.Uint16List, core.int, typed_data.Uint16List, core.int, typed_data.Uint16List])
}));
dart.setFieldSignature(core._BigIntClassic, () => ({
  __proto__: dart.getFields(core._BigIntClassic.__proto__),
  [_modulus]: dart.finalFieldType(core._BigIntImpl),
  [_normalizedModulus]: dart.finalFieldType(core._BigIntImpl)
}));
core.Deprecated = class Deprecated extends core.Object {
  get message() {
    return this[message$1];
  }
  set message(value) {
    super.message = value;
  }
  get expires() {
    return this.message;
  }
  toString() {
    return "Deprecated feature: " + dart.str(this.message);
  }
};
(core.Deprecated.new = function(message) {
  this[message$1] = message;
}).prototype = core.Deprecated.prototype;
dart.addTypeTests(core.Deprecated);
const message$1 = Symbol("Deprecated.message");
dart.setGetterSignature(core.Deprecated, () => ({
  __proto__: dart.getGetters(core.Deprecated.__proto__),
  expires: core.String
}));
dart.setFieldSignature(core.Deprecated, () => ({
  __proto__: dart.getFields(core.Deprecated.__proto__),
  message: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(core.Deprecated, ['toString']);
dart.defineLazy(core, {
  /*core.deprecated*/get deprecated() {
    return dart.const(new core.Deprecated.new("next release"));
  }
});
core._Override = class _Override extends core.Object {};
(core._Override.new = function() {
}).prototype = core._Override.prototype;
dart.addTypeTests(core._Override);
dart.defineLazy(core, {
  /*core.override*/get override() {
    return dart.const(new core._Override.new());
  }
});
core.Provisional = class Provisional extends core.Object {
  get message() {
    return null;
  }
};
(core.Provisional.new = function(opts) {
  let message = opts && 'message' in opts ? opts.message : null;
}).prototype = core.Provisional.prototype;
dart.addTypeTests(core.Provisional);
dart.setGetterSignature(core.Provisional, () => ({
  __proto__: dart.getGetters(core.Provisional.__proto__),
  message: core.String
}));
dart.defineLazy(core, {
  /*core.provisional*/get provisional() {
    return null;
  }
});
core._Proxy = class _Proxy extends core.Object {};
(core._Proxy.new = function() {
}).prototype = core._Proxy.prototype;
dart.addTypeTests(core._Proxy);
dart.defineLazy(core, {
  /*core.proxy*/get proxy() {
    return dart.const(new core._Proxy.new());
  }
});
core.pragma = class pragma extends core.Object {
  get name() {
    return this[name$0];
  }
  set name(value) {
    super.name = value;
  }
  get options() {
    return this[options$];
  }
  set options(value) {
    super.options = value;
  }
  static new(name, options) {
    return new core.pragma.__(name, options);
  }
};
(core.pragma.__ = function(name, options) {
  if (options === void 0) options = null;
  this[name$0] = name;
  this[options$] = options;
}).prototype = core.pragma.prototype;
dart.addTypeTests(core.pragma);
const name$0 = Symbol("pragma.name");
const options$ = Symbol("pragma.options");
dart.setFieldSignature(core.pragma, () => ({
  __proto__: dart.getFields(core.pragma.__proto__),
  name: dart.finalFieldType(core.String),
  options: dart.finalFieldType(core.Object)
}));
core.BigInt = class BigInt extends core.Object {
  static get zero() {
    return core._BigIntImpl.zero;
  }
  static get one() {
    return core._BigIntImpl.one;
  }
  static get two() {
    return core._BigIntImpl.two;
  }
  static parse(source, opts) {
    let radix = opts && 'radix' in opts ? opts.radix : null;
    return core._BigIntImpl.parse(source, {radix: radix});
  }
  static tryParse(source, opts) {
    let radix = opts && 'radix' in opts ? opts.radix : null;
    return core._BigIntImpl._tryParse(source, {radix: radix});
  }
  static from(value) {
    return core._BigIntImpl.from(value);
  }
};
(core.BigInt[dart.mixinNew] = function() {
}).prototype = core.BigInt.prototype;
dart.addTypeTests(core.BigInt);
core.BigInt[dart.implements] = () => [ComparableOfBigInt()];
core.bool = class bool extends core.Object {
  static fromEnvironment(name, opts) {
    let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : false;
    dart.throw(new core.UnsupportedError.new("bool.fromEnvironment can only be used as a const constructor"));
  }
  get [$hashCode]() {
    return super[$hashCode];
  }
  [$bitAnd](other) {
    return dart.test(other) && this;
  }
  [$bitOr](other) {
    return dart.test(other) || this;
  }
  [$bitXor](other) {
    return !dart.test(other) === this;
  }
  [$toString]() {
    return this ? "true" : "false";
  }
};
(core.bool[dart.mixinNew] = function() {
}).prototype = core.bool.prototype;
core.bool.is = function is_bool(o) {
  return o === true || o === false;
};
core.bool.as = function as_bool(o) {
  if (o === true || o === false || o == null) return o;
  return dart.as(o, core.bool, false);
};
core.bool._check = function check_bool(o) {
  if (o === true || o === false || o == null) return o;
  return dart.as(o, core.bool, true);
};
dart.setMethodSignature(core.bool, () => ({
  __proto__: dart.getMethods(core.bool.__proto__),
  [$bitAnd]: dart.fnType(core.bool, [core.bool]),
  [$bitOr]: dart.fnType(core.bool, [core.bool]),
  [$bitXor]: dart.fnType(core.bool, [core.bool])
}));
const _is_Comparable_default = Symbol('_is_Comparable_default');
core.Comparable$ = dart.generic(T => {
  class Comparable extends core.Object {
    static compare(a, b) {
      return a[$compareTo](b);
    }
  }
  (Comparable.new = function() {
  }).prototype = Comparable.prototype;
  dart.addTypeTests(Comparable);
  Comparable.prototype[_is_Comparable_default] = true;
  return Comparable;
});
core.Comparable = core.Comparable$();
dart.addTypeTests(core.Comparable, _is_Comparable_default);
const _value$0 = Symbol('_value');
core.DateTime = class DateTime extends core.Object {
  get isUtc() {
    return this[isUtc$];
  }
  set isUtc(value) {
    super.isUtc = value;
  }
  static parse(formattedString) {
    let re = core.DateTime._parseFormat;
    let match = re.firstMatch(formattedString);
    if (match != null) {
      function parseIntOrZero(matched) {
        if (matched == null) return 0;
        return core.int.parse(matched);
      }
      dart.fn(parseIntOrZero, StringToint());
      function parseMilliAndMicroseconds(matched) {
        if (matched == null) return 0;
        let length = matched.length;
        if (!(length >= 1)) dart.assertFailed();
        if (!(length <= 6)) dart.assertFailed();
        let result = 0;
        for (let i = 0; i < 6; i++) {
          result = result * 10;
          if (i < matched.length) {
            result = result + ((matched[$codeUnitAt](i) ^ 48) >>> 0);
          }
        }
        return result;
      }
      dart.fn(parseMilliAndMicroseconds, StringToint());
      let years = core.int.parse(match._get(1));
      let month = core.int.parse(match._get(2));
      let day = core.int.parse(match._get(3));
      let hour = parseIntOrZero(match._get(4));
      let minute = parseIntOrZero(match._get(5));
      let second = parseIntOrZero(match._get(6));
      let addOneMillisecond = false;
      let milliAndMicroseconds = parseMilliAndMicroseconds(match._get(7));
      let millisecond = (dart.notNull(milliAndMicroseconds) / core.Duration.microsecondsPerMillisecond)[$truncate]();
      let microsecond = dart.asInt(milliAndMicroseconds[$remainder](core.Duration.microsecondsPerMillisecond));
      let isUtc = false;
      if (match._get(8) != null) {
        isUtc = true;
        if (match._get(9) != null) {
          let sign = match._get(9) === "-" ? -1 : 1;
          let hourDifference = core.int.parse(match._get(10));
          let minuteDifference = parseIntOrZero(match._get(11));
          minuteDifference = dart.notNull(minuteDifference) + 60 * dart.notNull(hourDifference);
          minute = dart.notNull(minute) - sign * dart.notNull(minuteDifference);
        }
      }
      let value = core.DateTime._brokenDownDateToValue(years, month, day, hour, minute, second, millisecond, microsecond, isUtc);
      if (value == null) {
        dart.throw(new core.FormatException.new("Time out of range", formattedString));
      }
      return new core.DateTime._withValue(value, {isUtc: isUtc});
    } else {
      dart.throw(new core.FormatException.new("Invalid date format", formattedString));
    }
  }
  static tryParse(formattedString) {
    try {
      return core.DateTime.parse(formattedString);
    } catch (e) {
      let ex = dart.getThrown(e);
      if (core.FormatException.is(ex)) {
        return null;
      } else
        throw e;
    }
  }
  _equals(other) {
    return core.DateTime.is(other) && this[_value$0] == other.millisecondsSinceEpoch && this.isUtc == other.isUtc;
  }
  isBefore(other) {
    return dart.notNull(this[_value$0]) < dart.notNull(other.millisecondsSinceEpoch);
  }
  isAfter(other) {
    return dart.notNull(this[_value$0]) > dart.notNull(other.millisecondsSinceEpoch);
  }
  isAtSameMomentAs(other) {
    return this[_value$0] == other.millisecondsSinceEpoch;
  }
  compareTo(other) {
    core.DateTime._check(other);
    return this[_value$0][$compareTo](other.millisecondsSinceEpoch);
  }
  get hashCode() {
    return (dart.notNull(this[_value$0]) ^ this[_value$0][$rightShift](30)) & 1073741823;
  }
  toLocal() {
    if (dart.test(this.isUtc)) {
      return new core.DateTime._withValue(this[_value$0], {isUtc: false});
    }
    return this;
  }
  toUtc() {
    if (dart.test(this.isUtc)) return this;
    return new core.DateTime._withValue(this[_value$0], {isUtc: true});
  }
  static _fourDigits(n) {
    let absN = n[$abs]();
    let sign = dart.notNull(n) < 0 ? "-" : "";
    if (absN >= 1000) return dart.str(n);
    if (absN >= 100) return sign + "0" + dart.str(absN);
    if (absN >= 10) return sign + "00" + dart.str(absN);
    return sign + "000" + dart.str(absN);
  }
  static _sixDigits(n) {
    if (!(dart.notNull(n) < -9999 || dart.notNull(n) > 9999)) dart.assertFailed();
    let absN = n[$abs]();
    let sign = dart.notNull(n) < 0 ? "-" : "+";
    if (absN >= 100000) return sign + dart.str(absN);
    return sign + "0" + dart.str(absN);
  }
  static _threeDigits(n) {
    if (dart.notNull(n) >= 100) return dart.str(n);
    if (dart.notNull(n) >= 10) return "0" + dart.str(n);
    return "00" + dart.str(n);
  }
  static _twoDigits(n) {
    if (dart.notNull(n) >= 10) return dart.str(n);
    return "0" + dart.str(n);
  }
  toString() {
    let y = core.DateTime._fourDigits(this.year);
    let m = core.DateTime._twoDigits(this.month);
    let d = core.DateTime._twoDigits(this.day);
    let h = core.DateTime._twoDigits(this.hour);
    let min = core.DateTime._twoDigits(this.minute);
    let sec = core.DateTime._twoDigits(this.second);
    let ms = core.DateTime._threeDigits(this.millisecond);
    let us = this.microsecond === 0 ? "" : core.DateTime._threeDigits(this.microsecond);
    if (dart.test(this.isUtc)) {
      return dart.str(y) + "-" + dart.str(m) + "-" + dart.str(d) + " " + dart.str(h) + ":" + dart.str(min) + ":" + dart.str(sec) + "." + dart.str(ms) + dart.str(us) + "Z";
    } else {
      return dart.str(y) + "-" + dart.str(m) + "-" + dart.str(d) + " " + dart.str(h) + ":" + dart.str(min) + ":" + dart.str(sec) + "." + dart.str(ms) + dart.str(us);
    }
  }
  toIso8601String() {
    let y = dart.notNull(this.year) >= -9999 && dart.notNull(this.year) <= 9999 ? core.DateTime._fourDigits(this.year) : core.DateTime._sixDigits(this.year);
    let m = core.DateTime._twoDigits(this.month);
    let d = core.DateTime._twoDigits(this.day);
    let h = core.DateTime._twoDigits(this.hour);
    let min = core.DateTime._twoDigits(this.minute);
    let sec = core.DateTime._twoDigits(this.second);
    let ms = core.DateTime._threeDigits(this.millisecond);
    let us = this.microsecond === 0 ? "" : core.DateTime._threeDigits(this.microsecond);
    if (dart.test(this.isUtc)) {
      return dart.str(y) + "-" + dart.str(m) + "-" + dart.str(d) + "T" + dart.str(h) + ":" + dart.str(min) + ":" + dart.str(sec) + "." + dart.str(ms) + dart.str(us) + "Z";
    } else {
      return dart.str(y) + "-" + dart.str(m) + "-" + dart.str(d) + "T" + dart.str(h) + ":" + dart.str(min) + ":" + dart.str(sec) + "." + dart.str(ms) + dart.str(us);
    }
  }
  add(duration) {
    return new core.DateTime._withValue(dart.notNull(this[_value$0]) + dart.notNull(duration.inMilliseconds), {isUtc: this.isUtc});
  }
  subtract(duration) {
    return new core.DateTime._withValue(dart.notNull(this[_value$0]) - dart.notNull(duration.inMilliseconds), {isUtc: this.isUtc});
  }
  difference(other) {
    return new core.Duration.new({milliseconds: dart.notNull(this[_value$0]) - dart.notNull(other[_value$0])});
  }
  static _brokenDownDateToValue(year, month, day, hour, minute, second, millisecond, microsecond, isUtc) {
    return dart.asInt(_js_helper.Primitives.valueFromDecomposedDate(year, month, day, hour, minute, second, dart.notNull(millisecond) + dart.notNull(core.DateTime._microsecondInRoundedMilliseconds(microsecond)), isUtc));
  }
  get millisecondsSinceEpoch() {
    return this[_value$0];
  }
  get microsecondsSinceEpoch() {
    return dart.notNull(this[_value$0]) * 1000;
  }
  get timeZoneName() {
    if (dart.test(this.isUtc)) return "UTC";
    return _js_helper.Primitives.getTimeZoneName(this);
  }
  get timeZoneOffset() {
    if (dart.test(this.isUtc)) return new core.Duration.new();
    return new core.Duration.new({minutes: _js_helper.Primitives.getTimeZoneOffsetInMinutes(this)});
  }
  get year() {
    return _js_helper.Primitives.getYear(this);
  }
  get month() {
    return _js_helper.Primitives.getMonth(this);
  }
  get day() {
    return _js_helper.Primitives.getDay(this);
  }
  get hour() {
    return _js_helper.Primitives.getHours(this);
  }
  get minute() {
    return _js_helper.Primitives.getMinutes(this);
  }
  get second() {
    return _js_helper.Primitives.getSeconds(this);
  }
  get millisecond() {
    return _js_helper.Primitives.getMilliseconds(this);
  }
  get microsecond() {
    return 0;
  }
  get weekday() {
    return _js_helper.Primitives.getWeekday(this);
  }
  static _microsecondInRoundedMilliseconds(microsecond) {
    return (dart.notNull(microsecond) / 1000)[$round]();
  }
};
(core.DateTime.new = function(year, month, day, hour, minute, second, millisecond, microsecond) {
  if (month === void 0) month = 1;
  if (day === void 0) day = 1;
  if (hour === void 0) hour = 0;
  if (minute === void 0) minute = 0;
  if (second === void 0) second = 0;
  if (millisecond === void 0) millisecond = 0;
  if (microsecond === void 0) microsecond = 0;
  core.DateTime._internal.call(this, year, month, day, hour, minute, second, millisecond, microsecond, false);
}).prototype = core.DateTime.prototype;
(core.DateTime.utc = function(year, month, day, hour, minute, second, millisecond, microsecond) {
  if (month === void 0) month = 1;
  if (day === void 0) day = 1;
  if (hour === void 0) hour = 0;
  if (minute === void 0) minute = 0;
  if (second === void 0) second = 0;
  if (millisecond === void 0) millisecond = 0;
  if (microsecond === void 0) microsecond = 0;
  core.DateTime._internal.call(this, year, month, day, hour, minute, second, millisecond, microsecond, true);
}).prototype = core.DateTime.prototype;
(core.DateTime.now = function() {
  core.DateTime._now.call(this);
}).prototype = core.DateTime.prototype;
(core.DateTime.fromMillisecondsSinceEpoch = function(millisecondsSinceEpoch, opts) {
  let isUtc = opts && 'isUtc' in opts ? opts.isUtc : false;
  core.DateTime._withValue.call(this, millisecondsSinceEpoch, {isUtc: isUtc});
}).prototype = core.DateTime.prototype;
(core.DateTime.fromMicrosecondsSinceEpoch = function(microsecondsSinceEpoch, opts) {
  let isUtc = opts && 'isUtc' in opts ? opts.isUtc : false;
  core.DateTime._withValue.call(this, core.DateTime._microsecondInRoundedMilliseconds(microsecondsSinceEpoch), {isUtc: isUtc});
}).prototype = core.DateTime.prototype;
(core.DateTime._withValue = function(value, opts) {
  let isUtc = opts && 'isUtc' in opts ? opts.isUtc : null;
  this[_value$0] = value;
  this[isUtc$] = isUtc;
  if (this.millisecondsSinceEpoch[$abs]() > 8640000000000000 || this.millisecondsSinceEpoch[$abs]() === 8640000000000000 && this.microsecond !== 0) {
    dart.throw(new core.ArgumentError.new("DateTime is outside valid range: " + dart.str(this.millisecondsSinceEpoch)));
  }
  if (this.isUtc == null) {
    dart.throw(new core.ArgumentError.new("'isUtc' flag may not be 'null'"));
  }
}).prototype = core.DateTime.prototype;
(core.DateTime._internal = function(year, month, day, hour, minute, second, millisecond, microsecond, isUtc) {
  this[isUtc$] = typeof isUtc == 'boolean' ? isUtc : dart.throw(new core.ArgumentError.value(isUtc, "isUtc"));
  this[_value$0] = core.int._check(_js_helper.checkInt(_js_helper.Primitives.valueFromDecomposedDate(year, month, day, hour, minute, second, dart.notNull(millisecond) + dart.notNull(core.DateTime._microsecondInRoundedMilliseconds(microsecond)), isUtc)));
}).prototype = core.DateTime.prototype;
(core.DateTime._now = function() {
  this[isUtc$] = false;
  this[_value$0] = _js_helper.Primitives.dateNow();
}).prototype = core.DateTime.prototype;
dart.addTypeTests(core.DateTime);
const isUtc$ = Symbol("DateTime.isUtc");
core.DateTime[dart.implements] = () => [ComparableOfDateTime()];
dart.setMethodSignature(core.DateTime, () => ({
  __proto__: dart.getMethods(core.DateTime.__proto__),
  isBefore: dart.fnType(core.bool, [core.DateTime]),
  isAfter: dart.fnType(core.bool, [core.DateTime]),
  isAtSameMomentAs: dart.fnType(core.bool, [core.DateTime]),
  compareTo: dart.fnType(core.int, [core.Object]),
  [$compareTo]: dart.fnType(core.int, [core.Object]),
  toLocal: dart.fnType(core.DateTime, []),
  toUtc: dart.fnType(core.DateTime, []),
  toIso8601String: dart.fnType(core.String, []),
  add: dart.fnType(core.DateTime, [core.Duration]),
  subtract: dart.fnType(core.DateTime, [core.Duration]),
  difference: dart.fnType(core.Duration, [core.DateTime])
}));
dart.setGetterSignature(core.DateTime, () => ({
  __proto__: dart.getGetters(core.DateTime.__proto__),
  millisecondsSinceEpoch: core.int,
  microsecondsSinceEpoch: core.int,
  timeZoneName: core.String,
  timeZoneOffset: core.Duration,
  year: core.int,
  month: core.int,
  day: core.int,
  hour: core.int,
  minute: core.int,
  second: core.int,
  millisecond: core.int,
  microsecond: core.int,
  weekday: core.int
}));
dart.setFieldSignature(core.DateTime, () => ({
  __proto__: dart.getFields(core.DateTime.__proto__),
  [_value$0]: dart.finalFieldType(core.int),
  isUtc: dart.finalFieldType(core.bool)
}));
dart.defineExtensionMethods(core.DateTime, ['_equals', 'compareTo', 'toString']);
dart.defineExtensionAccessors(core.DateTime, ['hashCode']);
dart.defineLazy(core.DateTime, {
  /*core.DateTime.monday*/get monday() {
    return 1;
  },
  /*core.DateTime.tuesday*/get tuesday() {
    return 2;
  },
  /*core.DateTime.wednesday*/get wednesday() {
    return 3;
  },
  /*core.DateTime.thursday*/get thursday() {
    return 4;
  },
  /*core.DateTime.friday*/get friday() {
    return 5;
  },
  /*core.DateTime.saturday*/get saturday() {
    return 6;
  },
  /*core.DateTime.sunday*/get sunday() {
    return 7;
  },
  /*core.DateTime.daysPerWeek*/get daysPerWeek() {
    return 7;
  },
  /*core.DateTime.january*/get january() {
    return 1;
  },
  /*core.DateTime.february*/get february() {
    return 2;
  },
  /*core.DateTime.march*/get march() {
    return 3;
  },
  /*core.DateTime.april*/get april() {
    return 4;
  },
  /*core.DateTime.may*/get may() {
    return 5;
  },
  /*core.DateTime.june*/get june() {
    return 6;
  },
  /*core.DateTime.july*/get july() {
    return 7;
  },
  /*core.DateTime.august*/get august() {
    return 8;
  },
  /*core.DateTime.september*/get september() {
    return 9;
  },
  /*core.DateTime.october*/get october() {
    return 10;
  },
  /*core.DateTime.november*/get november() {
    return 11;
  },
  /*core.DateTime.december*/get december() {
    return 12;
  },
  /*core.DateTime.monthsPerYear*/get monthsPerYear() {
    return 12;
  },
  /*core.DateTime._maxMillisecondsSinceEpoch*/get _maxMillisecondsSinceEpoch() {
    return 8640000000000000;
  },
  /*core.DateTime._parseFormat*/get _parseFormat() {
    return core.RegExp.new("^([+-]?\\d{4,6})-?(\\d\\d)-?(\\d\\d)" + "(?:[ T](\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,6}))?)?)?" + "( ?[zZ]| ?([-+])(\\d\\d)(?::?(\\d\\d))?)?)?$");
  }
});
const _duration = Symbol('_duration');
core.Duration = class Duration extends core.Object {
  ['+'](other) {
    return new core.Duration._microseconds(dart.notNull(this[_duration]) + dart.notNull(other[_duration]));
  }
  ['-'](other) {
    return new core.Duration._microseconds(dart.notNull(this[_duration]) - dart.notNull(other[_duration]));
  }
  ['*'](factor) {
    return new core.Duration._microseconds((dart.notNull(this[_duration]) * dart.notNull(factor))[$round]());
  }
  ['~/'](quotient) {
    if (quotient === 0) dart.throw(new core.IntegerDivisionByZeroException.new());
    return new core.Duration._microseconds((dart.notNull(this[_duration]) / dart.notNull(quotient))[$truncate]());
  }
  ['<'](other) {
    return dart.notNull(this[_duration]) < dart.notNull(other[_duration]);
  }
  ['>'](other) {
    return dart.notNull(this[_duration]) > dart.notNull(other[_duration]);
  }
  ['<='](other) {
    return dart.notNull(this[_duration]) <= dart.notNull(other[_duration]);
  }
  ['>='](other) {
    return dart.notNull(this[_duration]) >= dart.notNull(other[_duration]);
  }
  get inDays() {
    return (dart.notNull(this[_duration]) / core.Duration.microsecondsPerDay)[$truncate]();
  }
  get inHours() {
    return (dart.notNull(this[_duration]) / core.Duration.microsecondsPerHour)[$truncate]();
  }
  get inMinutes() {
    return (dart.notNull(this[_duration]) / core.Duration.microsecondsPerMinute)[$truncate]();
  }
  get inSeconds() {
    return (dart.notNull(this[_duration]) / core.Duration.microsecondsPerSecond)[$truncate]();
  }
  get inMilliseconds() {
    return (dart.notNull(this[_duration]) / core.Duration.microsecondsPerMillisecond)[$truncate]();
  }
  get inMicroseconds() {
    return this[_duration];
  }
  _equals(other) {
    return core.Duration.is(other) && this[_duration] == other.inMicroseconds;
  }
  get hashCode() {
    return dart.hashCode(this[_duration]);
  }
  compareTo(other) {
    core.Duration._check(other);
    return this[_duration][$compareTo](other[_duration]);
  }
  toString() {
    function sixDigits(n) {
      if (dart.notNull(n) >= 100000) return dart.str(n);
      if (dart.notNull(n) >= 10000) return "0" + dart.str(n);
      if (dart.notNull(n) >= 1000) return "00" + dart.str(n);
      if (dart.notNull(n) >= 100) return "000" + dart.str(n);
      if (dart.notNull(n) >= 10) return "0000" + dart.str(n);
      return "00000" + dart.str(n);
    }
    dart.fn(sixDigits, intToString());
    function twoDigits(n) {
      if (dart.notNull(n) >= 10) return dart.str(n);
      return "0" + dart.str(n);
    }
    dart.fn(twoDigits, intToString());
    if (dart.notNull(this.inMicroseconds) < 0) {
      return "-" + dart.str(this._negate());
    }
    let twoDigitMinutes = twoDigits(dart.asInt(this.inMinutes[$remainder](60)));
    let twoDigitSeconds = twoDigits(dart.asInt(this.inSeconds[$remainder](60)));
    let sixDigitUs = sixDigits(dart.asInt(this.inMicroseconds[$remainder](1000000)));
    return dart.str(this.inHours) + ":" + dart.str(twoDigitMinutes) + ":" + dart.str(twoDigitSeconds) + "." + dart.str(sixDigitUs);
  }
  get isNegative() {
    return dart.notNull(this[_duration]) < 0;
  }
  abs() {
    return new core.Duration._microseconds(this[_duration][$abs]());
  }
  _negate() {
    return new core.Duration._microseconds(0 - dart.notNull(this[_duration]));
  }
};
(core.Duration.new = function(opts) {
  let days = opts && 'days' in opts ? opts.days : 0;
  let hours = opts && 'hours' in opts ? opts.hours : 0;
  let minutes = opts && 'minutes' in opts ? opts.minutes : 0;
  let seconds = opts && 'seconds' in opts ? opts.seconds : 0;
  let milliseconds = opts && 'milliseconds' in opts ? opts.milliseconds : 0;
  let microseconds = opts && 'microseconds' in opts ? opts.microseconds : 0;
  core.Duration._microseconds.call(this, 86400000000 * dart.notNull(days) + 3600000000 * dart.notNull(hours) + 60000000 * dart.notNull(minutes) + 1000000 * dart.notNull(seconds) + 1000 * dart.notNull(milliseconds) + dart.notNull(microseconds));
}).prototype = core.Duration.prototype;
(core.Duration._microseconds = function(duration) {
  this[_duration] = duration;
}).prototype = core.Duration.prototype;
dart.addTypeTests(core.Duration);
core.Duration[dart.implements] = () => [ComparableOfDuration()];
dart.setMethodSignature(core.Duration, () => ({
  __proto__: dart.getMethods(core.Duration.__proto__),
  '+': dart.fnType(core.Duration, [core.Duration]),
  '-': dart.fnType(core.Duration, [core.Duration]),
  '*': dart.fnType(core.Duration, [core.num]),
  '~/': dart.fnType(core.Duration, [core.int]),
  '<': dart.fnType(core.bool, [core.Duration]),
  '>': dart.fnType(core.bool, [core.Duration]),
  '<=': dart.fnType(core.bool, [core.Duration]),
  '>=': dart.fnType(core.bool, [core.Duration]),
  compareTo: dart.fnType(core.int, [core.Object]),
  [$compareTo]: dart.fnType(core.int, [core.Object]),
  abs: dart.fnType(core.Duration, []),
  _negate: dart.fnType(core.Duration, [])
}));
dart.setGetterSignature(core.Duration, () => ({
  __proto__: dart.getGetters(core.Duration.__proto__),
  inDays: core.int,
  inHours: core.int,
  inMinutes: core.int,
  inSeconds: core.int,
  inMilliseconds: core.int,
  inMicroseconds: core.int,
  isNegative: core.bool
}));
dart.setFieldSignature(core.Duration, () => ({
  __proto__: dart.getFields(core.Duration.__proto__),
  [_duration]: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(core.Duration, ['_equals', 'compareTo', 'toString']);
dart.defineExtensionAccessors(core.Duration, ['hashCode']);
dart.defineLazy(core.Duration, {
  /*core.Duration.microsecondsPerMillisecond*/get microsecondsPerMillisecond() {
    return 1000;
  },
  /*core.Duration.millisecondsPerSecond*/get millisecondsPerSecond() {
    return 1000;
  },
  /*core.Duration.secondsPerMinute*/get secondsPerMinute() {
    return 60;
  },
  /*core.Duration.minutesPerHour*/get minutesPerHour() {
    return 60;
  },
  /*core.Duration.hoursPerDay*/get hoursPerDay() {
    return 24;
  },
  /*core.Duration.microsecondsPerSecond*/get microsecondsPerSecond() {
    return 1000 * 1000;
  },
  /*core.Duration.microsecondsPerMinute*/get microsecondsPerMinute() {
    return 1000000 * 60;
  },
  /*core.Duration.microsecondsPerHour*/get microsecondsPerHour() {
    return 60000000 * 60;
  },
  /*core.Duration.microsecondsPerDay*/get microsecondsPerDay() {
    return 3600000000 * 24;
  },
  /*core.Duration.millisecondsPerMinute*/get millisecondsPerMinute() {
    return 1000 * 60;
  },
  /*core.Duration.millisecondsPerHour*/get millisecondsPerHour() {
    return 60000 * 60;
  },
  /*core.Duration.millisecondsPerDay*/get millisecondsPerDay() {
    return 3600000 * 24;
  },
  /*core.Duration.secondsPerHour*/get secondsPerHour() {
    return 60 * 60;
  },
  /*core.Duration.secondsPerDay*/get secondsPerDay() {
    return 3600 * 24;
  },
  /*core.Duration.minutesPerDay*/get minutesPerDay() {
    return 60 * 24;
  },
  /*core.Duration.zero*/get zero() {
    return dart.const(new core.Duration.new({seconds: 0}));
  }
});
core.TypeError = class TypeError extends core.AssertionError {};
(core.TypeError.new = function() {
  core.TypeError.__proto__.new.call(this);
}).prototype = core.TypeError.prototype;
dart.addTypeTests(core.TypeError);
core.CastError = class CastError extends core.Error {};
(core.CastError.new = function() {
  core.CastError.__proto__.new.call(this);
}).prototype = core.CastError.prototype;
dart.addTypeTests(core.CastError);
core.NullThrownError = class NullThrownError extends core.Error {
  toString() {
    return "Throw of null.";
  }
};
(core.NullThrownError.new = function() {
  core.NullThrownError.__proto__.new.call(this);
}).prototype = core.NullThrownError.prototype;
dart.addTypeTests(core.NullThrownError);
dart.defineExtensionMethods(core.NullThrownError, ['toString']);
const _hasValue = Symbol('_hasValue');
const _errorName = Symbol('_errorName');
const _errorExplanation = Symbol('_errorExplanation');
core.ArgumentError = class ArgumentError extends core.Error {
  get invalidValue() {
    return this[invalidValue];
  }
  set invalidValue(value) {
    super.invalidValue = value;
  }
  get name() {
    return this[name$1];
  }
  set name(value) {
    super.name = value;
  }
  get message() {
    return this[message$2];
  }
  set message(value) {
    super.message = value;
  }
  static checkNotNull(argument, name) {
    if (name === void 0) name = null;
    if (argument == null) dart.throw(new core.ArgumentError.notNull(name));
  }
  get [_errorName]() {
    return "Invalid argument" + (!dart.test(this[_hasValue]) ? "(s)" : "");
  }
  get [_errorExplanation]() {
    return "";
  }
  toString() {
    let nameString = "";
    if (this[$name] != null) {
      nameString = " (" + dart.str(this[$name]) + ")";
    }
    let message = this[$message] == null ? "" : ": " + dart.str(this[$message]);
    let prefix = dart.str(this[_errorName]) + nameString + message;
    if (!dart.test(this[_hasValue])) return prefix;
    let explanation = this[_errorExplanation];
    let errorValue = core.Error.safeToString(this[$invalidValue]);
    return prefix + dart.str(explanation) + ": " + dart.str(errorValue);
  }
};
(core.ArgumentError.new = function(message) {
  if (message === void 0) message = null;
  this[message$2] = message;
  this[invalidValue] = null;
  this[_hasValue] = false;
  this[name$1] = null;
  core.ArgumentError.__proto__.new.call(this);
}).prototype = core.ArgumentError.prototype;
(core.ArgumentError.value = function(value, name, message) {
  if (name === void 0) name = null;
  if (message === void 0) message = null;
  this[name$1] = name;
  this[message$2] = message;
  this[invalidValue] = value;
  this[_hasValue] = true;
  core.ArgumentError.__proto__.new.call(this);
}).prototype = core.ArgumentError.prototype;
(core.ArgumentError.notNull = function(name) {
  if (name === void 0) name = null;
  this[name$1] = name;
  this[_hasValue] = false;
  this[message$2] = "Must not be null";
  this[invalidValue] = null;
  core.ArgumentError.__proto__.new.call(this);
}).prototype = core.ArgumentError.prototype;
dart.addTypeTests(core.ArgumentError);
const invalidValue = Symbol("ArgumentError.invalidValue");
const name$1 = Symbol("ArgumentError.name");
const message$2 = Symbol("ArgumentError.message");
dart.setGetterSignature(core.ArgumentError, () => ({
  __proto__: dart.getGetters(core.ArgumentError.__proto__),
  [_errorName]: core.String,
  [_errorExplanation]: core.String
}));
dart.setFieldSignature(core.ArgumentError, () => ({
  __proto__: dart.getFields(core.ArgumentError.__proto__),
  [_hasValue]: dart.finalFieldType(core.bool),
  invalidValue: dart.finalFieldType(dart.dynamic),
  name: dart.finalFieldType(core.String),
  message: dart.finalFieldType(dart.dynamic)
}));
dart.defineExtensionMethods(core.ArgumentError, ['toString']);
dart.defineExtensionAccessors(core.ArgumentError, ['invalidValue', 'name', 'message']);
core.RangeError = class RangeError extends core.ArgumentError {
  get start() {
    return this[start];
  }
  set start(value) {
    super.start = value;
  }
  get end() {
    return this[end];
  }
  set end(value) {
    super.end = value;
  }
  static index(index, indexable, name, message, length) {
    return new core.IndexError.new(index, indexable, name, message, length);
  }
  static checkValueInInterval(value, minValue, maxValue, name, message) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    if (dart.notNull(value) < dart.notNull(minValue) || dart.notNull(value) > dart.notNull(maxValue)) {
      dart.throw(new core.RangeError.range(value, minValue, maxValue, name, message));
    }
  }
  static checkValidIndex(index, indexable, name, length, message) {
    if (name === void 0) name = null;
    if (length === void 0) length = null;
    if (message === void 0) message = null;
    let t = length;
    t == null ? length = core.int._check(dart.dload(indexable, 'length')) : t;
    if (0 > dart.notNull(index) || dart.notNull(index) >= dart.notNull(length)) {
      let t$ = name;
      t$ == null ? name = "index" : t$;
      dart.throw(core.RangeError.index(index, indexable, name, message, length));
    }
  }
  static checkValidRange(start, end, length, startName, endName, message) {
    if (startName === void 0) startName = null;
    if (endName === void 0) endName = null;
    if (message === void 0) message = null;
    if (0 > dart.notNull(start) || dart.notNull(start) > dart.notNull(length)) {
      let t = startName;
      t == null ? startName = "start" : t;
      dart.throw(new core.RangeError.range(start, 0, length, startName, message));
    }
    if (end != null) {
      if (dart.notNull(start) > dart.notNull(end) || dart.notNull(end) > dart.notNull(length)) {
        let t$ = endName;
        t$ == null ? endName = "end" : t$;
        dart.throw(new core.RangeError.range(end, start, length, endName, message));
      }
      return end;
    }
    return length;
  }
  static checkNotNegative(value, name, message) {
    if (name === void 0) name = null;
    if (message === void 0) message = null;
    if (dart.notNull(value) < 0) dart.throw(new core.RangeError.range(value, 0, null, name, message));
  }
  get [_errorName]() {
    return "RangeError";
  }
  get [_errorExplanation]() {
    if (!dart.test(this[_hasValue])) dart.assertFailed();
    let explanation = "";
    if (this.start == null) {
      if (this.end != null) {
        explanation = ": Not less than or equal to " + dart.str(this.end);
      }
    } else if (this.end == null) {
      explanation = ": Not greater than or equal to " + dart.str(this.start);
    } else if (dart.notNull(this.end) > dart.notNull(this.start)) {
      explanation = ": Not in range " + dart.str(this.start) + ".." + dart.str(this.end) + ", inclusive";
    } else if (dart.notNull(this.end) < dart.notNull(this.start)) {
      explanation = ": Valid value range is empty";
    } else {
      explanation = ": Only valid value is " + dart.str(this.start);
    }
    return explanation;
  }
};
(core.RangeError.new = function(message) {
  this[start] = null;
  this[end] = null;
  core.RangeError.__proto__.new.call(this, message);
}).prototype = core.RangeError.prototype;
(core.RangeError.value = function(value, name, message) {
  if (name === void 0) name = null;
  if (message === void 0) message = null;
  this[start] = null;
  this[end] = null;
  core.RangeError.__proto__.value.call(this, value, name, message != null ? message : "Value not in range");
}).prototype = core.RangeError.prototype;
(core.RangeError.range = function(invalidValue, minValue, maxValue, name, message) {
  if (name === void 0) name = null;
  if (message === void 0) message = null;
  this[start] = minValue;
  this[end] = maxValue;
  core.RangeError.__proto__.value.call(this, invalidValue, name, message != null ? message : "Invalid value");
}).prototype = core.RangeError.prototype;
dart.addTypeTests(core.RangeError);
const start = Symbol("RangeError.start");
const end = Symbol("RangeError.end");
dart.setFieldSignature(core.RangeError, () => ({
  __proto__: dart.getFields(core.RangeError.__proto__),
  start: dart.finalFieldType(core.num),
  end: dart.finalFieldType(core.num)
}));
core.IndexError = class IndexError extends core.ArgumentError {
  get indexable() {
    return this[indexable$];
  }
  set indexable(value) {
    super.indexable = value;
  }
  get length() {
    return this[length$];
  }
  set length(value) {
    super.length = value;
  }
  get start() {
    return 0;
  }
  get end() {
    return dart.notNull(this.length) - 1;
  }
  get [_errorName]() {
    return "RangeError";
  }
  get [_errorExplanation]() {
    if (!dart.test(this[_hasValue])) dart.assertFailed();
    let invalidValue = core.int._check(this.invalidValue);
    if (dart.notNull(invalidValue) < 0) {
      return ": index must not be negative";
    }
    if (this.length === 0) {
      return ": no indices are valid";
    }
    return ": index should be less than " + dart.str(this.length);
  }
};
(core.IndexError.new = function(invalidValue, indexable, name, message, length) {
  if (name === void 0) name = null;
  if (message === void 0) message = null;
  if (length === void 0) length = null;
  this[indexable$] = indexable;
  this[length$] = core.int._check((() => {
    let l = length;
    return l != null ? l : dart.dload(indexable, 'length');
  })());
  core.IndexError.__proto__.value.call(this, invalidValue, name, message != null ? message : "Index out of range");
}).prototype = core.IndexError.prototype;
dart.addTypeTests(core.IndexError);
const indexable$ = Symbol("IndexError.indexable");
const length$ = Symbol("IndexError.length");
core.IndexError[dart.implements] = () => [core.RangeError];
dart.setGetterSignature(core.IndexError, () => ({
  __proto__: dart.getGetters(core.IndexError.__proto__),
  start: core.int,
  end: core.int
}));
dart.setFieldSignature(core.IndexError, () => ({
  __proto__: dart.getFields(core.IndexError.__proto__),
  indexable: dart.finalFieldType(dart.dynamic),
  length: dart.finalFieldType(core.int)
}));
const _className = Symbol('_className');
core.AbstractClassInstantiationError = class AbstractClassInstantiationError extends core.Error {
  toString() {
    return "Cannot instantiate abstract class: '" + dart.str(this[_className]) + "'";
  }
};
(core.AbstractClassInstantiationError.new = function(className) {
  this[_className] = className;
  core.AbstractClassInstantiationError.__proto__.new.call(this);
}).prototype = core.AbstractClassInstantiationError.prototype;
dart.addTypeTests(core.AbstractClassInstantiationError);
dart.setFieldSignature(core.AbstractClassInstantiationError, () => ({
  __proto__: dart.getFields(core.AbstractClassInstantiationError.__proto__),
  [_className]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(core.AbstractClassInstantiationError, ['toString']);
const _receiver$ = Symbol('_receiver');
const _memberName = Symbol('_memberName');
const _arguments = Symbol('_arguments');
const _namedArguments = Symbol('_namedArguments');
const _existingArgumentNames = Symbol('_existingArgumentNames');
core.NoSuchMethodError = class NoSuchMethodError extends core.Error {
  toString() {
    let sb = new core.StringBuffer.new("");
    let comma = "";
    if (this[_arguments] != null) {
      for (let argument of this[_arguments]) {
        sb.write(comma);
        sb.write(core.Error.safeToString(argument));
        comma = ", ";
      }
    }
    if (this[_namedArguments] != null) {
      this[_namedArguments][$forEach](dart.fn((key, value) => {
        sb.write(comma);
        sb.write(core._symbolToString(key));
        sb.write(": ");
        sb.write(core.Error.safeToString(value));
        comma = ", ";
      }, SymbolAnddynamicToNull()));
    }
    let memberName = core._symbolToString(this[_memberName]);
    let receiverText = core.Error.safeToString(this[_receiver$]);
    let actualParameters = dart.str(sb);
    if (this[_existingArgumentNames] == null) {
      return "NoSuchMethodError: method not found: '" + dart.str(memberName) + "'\n" + ("Receiver: " + dart.str(receiverText) + "\n") + ("Arguments: [" + actualParameters + "]");
    } else {
      let formalParameters = this[_existingArgumentNames][$join](", ");
      return "NoSuchMethodError: incorrect number of arguments passed to " + ("method named '" + dart.str(memberName) + "'\n") + ("Receiver: " + dart.str(receiverText) + "\n") + ("Tried calling: " + dart.str(memberName) + "(" + actualParameters + ")\n") + ("Found: " + dart.str(memberName) + "(" + dart.str(formalParameters) + ")");
    }
  }
};
(core.NoSuchMethodError.withInvocation = function(receiver, invocation) {
  this[_receiver$] = receiver;
  this[_memberName] = invocation.memberName;
  this[_arguments] = invocation.positionalArguments;
  this[_namedArguments] = invocation.namedArguments;
  this[_existingArgumentNames] = null;
  core.NoSuchMethodError.__proto__.new.call(this);
}).prototype = core.NoSuchMethodError.prototype;
(core.NoSuchMethodError.new = function(receiver, memberName, positionalArguments, namedArguments, existingArgumentNames) {
  if (existingArgumentNames === void 0) existingArgumentNames = null;
  this[_receiver$] = receiver;
  this[_memberName] = memberName;
  this[_arguments] = positionalArguments;
  this[_namedArguments] = namedArguments;
  this[_existingArgumentNames] = existingArgumentNames;
  core.NoSuchMethodError.__proto__.new.call(this);
}).prototype = core.NoSuchMethodError.prototype;
dart.addTypeTests(core.NoSuchMethodError);
dart.setFieldSignature(core.NoSuchMethodError, () => ({
  __proto__: dart.getFields(core.NoSuchMethodError.__proto__),
  [_receiver$]: dart.finalFieldType(core.Object),
  [_memberName]: dart.finalFieldType(core.Symbol),
  [_arguments]: dart.finalFieldType(core.List),
  [_namedArguments]: dart.finalFieldType(MapOfSymbol$dynamic()),
  [_existingArgumentNames]: dart.finalFieldType(core.List)
}));
dart.defineExtensionMethods(core.NoSuchMethodError, ['toString']);
core.UnsupportedError = class UnsupportedError extends core.Error {
  get message() {
    return this[message$3];
  }
  set message(value) {
    super.message = value;
  }
  toString() {
    return "Unsupported operation: " + dart.str(this.message);
  }
};
(core.UnsupportedError.new = function(message) {
  this[message$3] = message;
  core.UnsupportedError.__proto__.new.call(this);
}).prototype = core.UnsupportedError.prototype;
dart.addTypeTests(core.UnsupportedError);
const message$3 = Symbol("UnsupportedError.message");
dart.setFieldSignature(core.UnsupportedError, () => ({
  __proto__: dart.getFields(core.UnsupportedError.__proto__),
  message: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(core.UnsupportedError, ['toString']);
core.UnimplementedError = class UnimplementedError extends core.Error {
  get message() {
    return this[message$4];
  }
  set message(value) {
    super.message = value;
  }
  toString() {
    return this.message != null ? "UnimplementedError: " + dart.str(this.message) : "UnimplementedError";
  }
};
(core.UnimplementedError.new = function(message) {
  if (message === void 0) message = null;
  this[message$4] = message;
  core.UnimplementedError.__proto__.new.call(this);
}).prototype = core.UnimplementedError.prototype;
dart.addTypeTests(core.UnimplementedError);
const message$4 = Symbol("UnimplementedError.message");
core.UnimplementedError[dart.implements] = () => [core.UnsupportedError];
dart.setFieldSignature(core.UnimplementedError, () => ({
  __proto__: dart.getFields(core.UnimplementedError.__proto__),
  message: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(core.UnimplementedError, ['toString']);
core.StateError = class StateError extends core.Error {
  get message() {
    return this[message$5];
  }
  set message(value) {
    super.message = value;
  }
  toString() {
    return "Bad state: " + dart.str(this.message);
  }
};
(core.StateError.new = function(message) {
  this[message$5] = message;
  core.StateError.__proto__.new.call(this);
}).prototype = core.StateError.prototype;
dart.addTypeTests(core.StateError);
const message$5 = Symbol("StateError.message");
dart.setFieldSignature(core.StateError, () => ({
  __proto__: dart.getFields(core.StateError.__proto__),
  message: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(core.StateError, ['toString']);
core.ConcurrentModificationError = class ConcurrentModificationError extends core.Error {
  get modifiedObject() {
    return this[modifiedObject$];
  }
  set modifiedObject(value) {
    super.modifiedObject = value;
  }
  toString() {
    if (this.modifiedObject == null) {
      return "Concurrent modification during iteration.";
    }
    return "Concurrent modification during iteration: " + (dart.str(core.Error.safeToString(this.modifiedObject)) + ".");
  }
};
(core.ConcurrentModificationError.new = function(modifiedObject) {
  if (modifiedObject === void 0) modifiedObject = null;
  this[modifiedObject$] = modifiedObject;
  core.ConcurrentModificationError.__proto__.new.call(this);
}).prototype = core.ConcurrentModificationError.prototype;
dart.addTypeTests(core.ConcurrentModificationError);
const modifiedObject$ = Symbol("ConcurrentModificationError.modifiedObject");
dart.setFieldSignature(core.ConcurrentModificationError, () => ({
  __proto__: dart.getFields(core.ConcurrentModificationError.__proto__),
  modifiedObject: dart.finalFieldType(core.Object)
}));
dart.defineExtensionMethods(core.ConcurrentModificationError, ['toString']);
core.OutOfMemoryError = class OutOfMemoryError extends core.Object {
  toString() {
    return "Out of Memory";
  }
  get stackTrace() {
    return null;
  }
};
(core.OutOfMemoryError.new = function() {
}).prototype = core.OutOfMemoryError.prototype;
dart.addTypeTests(core.OutOfMemoryError);
core.OutOfMemoryError[dart.implements] = () => [core.Error];
dart.setGetterSignature(core.OutOfMemoryError, () => ({
  __proto__: dart.getGetters(core.OutOfMemoryError.__proto__),
  stackTrace: core.StackTrace,
  [$stackTrace]: core.StackTrace
}));
dart.defineExtensionMethods(core.OutOfMemoryError, ['toString']);
dart.defineExtensionAccessors(core.OutOfMemoryError, ['stackTrace']);
core.StackOverflowError = class StackOverflowError extends core.Object {
  toString() {
    return "Stack Overflow";
  }
  get stackTrace() {
    return null;
  }
};
(core.StackOverflowError.new = function() {
}).prototype = core.StackOverflowError.prototype;
dart.addTypeTests(core.StackOverflowError);
core.StackOverflowError[dart.implements] = () => [core.Error];
dart.setGetterSignature(core.StackOverflowError, () => ({
  __proto__: dart.getGetters(core.StackOverflowError.__proto__),
  stackTrace: core.StackTrace,
  [$stackTrace]: core.StackTrace
}));
dart.defineExtensionMethods(core.StackOverflowError, ['toString']);
dart.defineExtensionAccessors(core.StackOverflowError, ['stackTrace']);
core.CyclicInitializationError = class CyclicInitializationError extends core.Error {
  get variableName() {
    return this[variableName$];
  }
  set variableName(value) {
    super.variableName = value;
  }
  toString() {
    return this.variableName == null ? "Reading static variable during its initialization" : "Reading static variable '" + dart.str(this.variableName) + "' during its initialization";
  }
};
(core.CyclicInitializationError.new = function(variableName) {
  if (variableName === void 0) variableName = null;
  this[variableName$] = variableName;
  core.CyclicInitializationError.__proto__.new.call(this);
}).prototype = core.CyclicInitializationError.prototype;
dart.addTypeTests(core.CyclicInitializationError);
const variableName$ = Symbol("CyclicInitializationError.variableName");
dart.setFieldSignature(core.CyclicInitializationError, () => ({
  __proto__: dart.getFields(core.CyclicInitializationError.__proto__),
  variableName: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(core.CyclicInitializationError, ['toString']);
core.Exception = class Exception extends core.Object {
  static new(message) {
    if (message === void 0) message = null;
    return new core._Exception.new(message);
  }
};
(core.Exception[dart.mixinNew] = function() {
}).prototype = core.Exception.prototype;
dart.addTypeTests(core.Exception);
core._Exception = class _Exception extends core.Object {
  toString() {
    if (this.message == null) return "Exception";
    return "Exception: " + dart.str(this.message);
  }
};
(core._Exception.new = function(message) {
  if (message === void 0) message = null;
  this.message = message;
}).prototype = core._Exception.prototype;
dart.addTypeTests(core._Exception);
core._Exception[dart.implements] = () => [core.Exception];
dart.setFieldSignature(core._Exception, () => ({
  __proto__: dart.getFields(core._Exception.__proto__),
  message: dart.finalFieldType(dart.dynamic)
}));
dart.defineExtensionMethods(core._Exception, ['toString']);
core.FormatException = class FormatException extends core.Object {
  get message() {
    return this[message$6];
  }
  set message(value) {
    super.message = value;
  }
  get source() {
    return this[source$];
  }
  set source(value) {
    super.source = value;
  }
  get offset() {
    return this[offset$];
  }
  set offset(value) {
    super.offset = value;
  }
  toString() {
    let report = "FormatException";
    if (this.message != null && "" !== this.message) {
      report = report + ": " + dart.str(this.message);
    }
    let offset = this.offset;
    let objectSource = this.source;
    if (typeof objectSource == 'string') {
      let source = objectSource;
      if (offset != null && (dart.notNull(offset) < 0 || dart.notNull(offset) > source.length)) {
        offset = null;
      }
      if (offset == null) {
        if (source.length > 78) {
          source = source[$substring](0, 75) + "...";
        }
        return report + "\n" + dart.str(source);
      }
      let lineNum = 1;
      let lineStart = 0;
      let previousCharWasCR = false;
      for (let i = 0; i < dart.notNull(offset); i++) {
        let char = source[$codeUnitAt](i);
        if (char === 10) {
          if (lineStart !== i || !previousCharWasCR) {
            lineNum++;
          }
          lineStart = i + 1;
          previousCharWasCR = false;
        } else if (char === 13) {
          lineNum++;
          lineStart = i + 1;
          previousCharWasCR = true;
        }
      }
      if (lineNum > 1) {
        report = report + (" (at line " + dart.str(lineNum) + ", character " + dart.str(dart.notNull(offset) - lineStart + 1) + ")\n");
      } else {
        report = report + (" (at character " + dart.str(dart.notNull(offset) + 1) + ")\n");
      }
      let lineEnd = source.length;
      for (let i = offset; dart.notNull(i) < source.length; i = dart.notNull(i) + 1) {
        let char = source[$codeUnitAt](i);
        if (char === 10 || char === 13) {
          lineEnd = i;
          break;
        }
      }
      let length = dart.notNull(lineEnd) - lineStart;
      let start = lineStart;
      let end = lineEnd;
      let prefix = "";
      let postfix = "";
      if (length > 78) {
        let index = dart.notNull(offset) - lineStart;
        if (index < 75) {
          end = start + 75;
          postfix = "...";
        } else if (dart.notNull(end) - dart.notNull(offset) < 75) {
          start = dart.notNull(end) - 75;
          prefix = "...";
        } else {
          start = dart.notNull(offset) - 36;
          end = dart.notNull(offset) + 36;
          prefix = postfix = "...";
        }
      }
      let slice = source[$substring](start, end);
      let markOffset = dart.notNull(offset) - start + prefix.length;
      return report + prefix + slice + postfix + "\n" + " "[$times](markOffset) + "^\n";
    } else {
      if (offset != null) {
        report = report + (" (at offset " + dart.str(offset) + ")");
      }
      return report;
    }
  }
};
(core.FormatException.new = function(message, source, offset) {
  if (message === void 0) message = "";
  if (source === void 0) source = null;
  if (offset === void 0) offset = null;
  this[message$6] = message;
  this[source$] = source;
  this[offset$] = offset;
}).prototype = core.FormatException.prototype;
dart.addTypeTests(core.FormatException);
const message$6 = Symbol("FormatException.message");
const source$ = Symbol("FormatException.source");
const offset$ = Symbol("FormatException.offset");
core.FormatException[dart.implements] = () => [core.Exception];
dart.setFieldSignature(core.FormatException, () => ({
  __proto__: dart.getFields(core.FormatException.__proto__),
  message: dart.finalFieldType(core.String),
  source: dart.finalFieldType(dart.dynamic),
  offset: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(core.FormatException, ['toString']);
core.IntegerDivisionByZeroException = class IntegerDivisionByZeroException extends core.Object {
  toString() {
    return "IntegerDivisionByZeroException";
  }
};
(core.IntegerDivisionByZeroException.new = function() {
}).prototype = core.IntegerDivisionByZeroException.prototype;
dart.addTypeTests(core.IntegerDivisionByZeroException);
core.IntegerDivisionByZeroException[dart.implements] = () => [core.Exception];
dart.defineExtensionMethods(core.IntegerDivisionByZeroException, ['toString']);
const _getKey = Symbol('_getKey');
const _is_Expando_default = Symbol('_is_Expando_default');
core.Expando$ = dart.generic(T => {
  class Expando extends core.Object {
    get name() {
      return this[name$];
    }
    set name(value) {
      super.name = value;
    }
    toString() {
      return "Expando:" + dart.str(this.name);
    }
    _get(object) {
      let values = _js_helper.Primitives.getProperty(object, "expando$values");
      return T._check(values == null ? null : _js_helper.Primitives.getProperty(values, this[_getKey]()));
    }
    _set(object, value) {
      T._check(value);
      let values = _js_helper.Primitives.getProperty(object, "expando$values");
      if (values == null) {
        values = new core.Object.new();
        _js_helper.Primitives.setProperty(object, "expando$values", values);
      }
      _js_helper.Primitives.setProperty(values, this[_getKey](), value);
      return value;
    }
    [_getKey]() {
      let key = core.String._check(_js_helper.Primitives.getProperty(this, "expando$key"));
      if (key == null) {
        key = "expando$key$" + dart.str((() => {
          let x = core.Expando._keyCount;
          core.Expando._keyCount = dart.notNull(x) + 1;
          return x;
        })());
        _js_helper.Primitives.setProperty(this, "expando$key", key);
      }
      return key;
    }
  }
  (Expando.new = function(name) {
    if (name === void 0) name = null;
    this[name$] = name;
  }).prototype = Expando.prototype;
  dart.addTypeTests(Expando);
  Expando.prototype[_is_Expando_default] = true;
  const name$ = Symbol("Expando.name");
  dart.setMethodSignature(Expando, () => ({
    __proto__: dart.getMethods(Expando.__proto__),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, []),
    _get: dart.fnType(T, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [_getKey]: dart.fnType(core.String, [])
  }));
  dart.setFieldSignature(Expando, () => ({
    __proto__: dart.getFields(Expando.__proto__),
    name: dart.finalFieldType(core.String)
  }));
  dart.defineExtensionMethods(Expando, ['toString']);
  return Expando;
});
core.Expando = core.Expando$();
dart.defineLazy(core.Expando, {
  /*core.Expando._KEY_PROPERTY_NAME*/get _KEY_PROPERTY_NAME() {
    return "expando$key";
  },
  /*core.Expando._EXPANDO_PROPERTY_NAME*/get _EXPANDO_PROPERTY_NAME() {
    return "expando$values";
  },
  /*core.Expando._keyCount*/get _keyCount() {
    return 0;
  },
  set _keyCount(_) {}
});
dart.addTypeTests(core.Expando, _is_Expando_default);
core.Function = class Function extends core.Object {
  static apply(f, positionalArguments, namedArguments) {
    if (namedArguments === void 0) namedArguments = null;
    let t = positionalArguments;
    t == null ? positionalArguments = [] : t;
    if (namedArguments != null && dart.test(namedArguments[$isNotEmpty])) {
      let map = {};
      namedArguments[$forEach](dart.fn((symbol, arg) => {
        map[core._symbolToString(symbol)] = arg;
      }, SymbolAnddynamicToNull()));
      return dart.dcall(f, positionalArguments, map);
    }
    return dart.dcall(f, positionalArguments);
  }
  static _toMangledNames(namedArguments) {
    let result = new (IdentityMapOfString$dynamic()).new();
    namedArguments[$forEach](dart.fn((symbol, value) => {
      result[$_set](core._symbolToString(symbol), value);
    }, SymbolAnddynamicToNull()));
    return result;
  }
};
(core.Function.new = function() {
}).prototype = core.Function.prototype;
core.Function.is = function is_Function(o) {
  return typeof o == "function";
};
core.Function.as = function as_Function(o) {
  if (typeof o == "function" || o == null) return o;
  return dart.as(o, core.Function, false);
};
core.Function._check = function check_Function(o) {
  if (typeof o == "function" || o == null) return o;
  return dart.as(o, core.Function, true);
};
core.identical = function(a, b) {
  return a == null ? b == null : a === b;
};
core.identityHashCode = function(object) {
  if (object == null) return 0;
  let hash = object[dart.identityHashCode_];
  if (hash == null) {
    hash = Math.random() * 0x3fffffff | 0;
    object[dart.identityHashCode_] = hash;
  }
  return hash;
};
const _positional = Symbol('_positional');
let const$44;
const _named = Symbol('_named');
let const$45;
let const$46;
let const$47;
let const$48;
let const$49;
let const$50;
core._Invocation = class _Invocation extends core.Object {
  get positionalArguments() {
    return this[_positional] != null ? this[_positional] : const$48 || (const$48 = dart.constList([], core.Object));
  }
  get namedArguments() {
    return this[_named] != null ? this[_named] : const$49 || (const$49 = dart.constMap(core.Symbol, core.Object, []));
  }
  get isMethod() {
    return this[_named] != null;
  }
  get isGetter() {
    return this[_positional] == null;
  }
  get isSetter() {
    return this[_positional] != null && this[_named] == null;
  }
  get isAccessor() {
    return this[_named] == null;
  }
  static _ensureNonNullTypes(types) {
    if (types == null) return const$50 || (const$50 = dart.constList([], core.Type));
    for (let i = 0; i < dart.notNull(types[$length]); i++) {
      if (types[$_get](i) == null) {
        dart.throw(new core.ArgumentError.new("Type arguments must be non-null, was null at index " + dart.str(i) + "."));
      }
    }
    return types;
  }
  static _makeUnmodifiable(T, elements) {
    if (elements == null) return null;
    return core.List$(T).unmodifiable(elements);
  }
};
(core._Invocation.method = function(memberName, types, positional, named) {
  this.memberName = memberName;
  this.typeArguments = core._Invocation._ensureNonNullTypes(core._Invocation._makeUnmodifiable(core.Type, types));
  let l = core._Invocation._makeUnmodifiable(core.Object, positional);
  this[_positional] = l != null ? l : const$44 || (const$44 = dart.constList([], core.Object));
  this[_named] = named == null || dart.test(named[$isEmpty]) ? const$45 || (const$45 = dart.constMap(core.Symbol, core.Object, [])) : MapOfSymbol$Object().unmodifiable(named);
}).prototype = core._Invocation.prototype;
(core._Invocation.getter = function(memberName) {
  this.memberName = memberName;
  this.typeArguments = const$46 || (const$46 = dart.constList([], core.Type));
  this[_positional] = null;
  this[_named] = null;
}).prototype = core._Invocation.prototype;
(core._Invocation.setter = function(memberName, argument) {
  this.memberName = memberName;
  this.typeArguments = const$47 || (const$47 = dart.constList([], core.Type));
  this[_positional] = ListOfObject().unmodifiable([argument]);
  this[_named] = null;
}).prototype = core._Invocation.prototype;
dart.addTypeTests(core._Invocation);
core._Invocation[dart.implements] = () => [core.Invocation];
dart.setGetterSignature(core._Invocation, () => ({
  __proto__: dart.getGetters(core._Invocation.__proto__),
  positionalArguments: core.List,
  namedArguments: core.Map$(core.Symbol, dart.dynamic),
  isMethod: core.bool,
  isGetter: core.bool,
  isSetter: core.bool,
  isAccessor: core.bool
}));
dart.setFieldSignature(core._Invocation, () => ({
  __proto__: dart.getFields(core._Invocation.__proto__),
  memberName: dart.finalFieldType(core.Symbol),
  typeArguments: dart.finalFieldType(ListOfType()),
  [_positional]: dart.finalFieldType(ListOfObject()),
  [_named]: dart.finalFieldType(MapOfSymbol$Object())
}));
const _generator = Symbol('_generator');
const _is__GeneratorIterable_default = Symbol('_is__GeneratorIterable_default');
core._GeneratorIterable$ = dart.generic(E => {
  let intToE = () => (intToE = dart.constFn(dart.fnType(E, [core.int])))();
  class _GeneratorIterable extends _internal.ListIterable$(E) {
    get length() {
      return this[length$];
    }
    set length(value) {
      super.length = value;
    }
    elementAt(index) {
      core.RangeError.checkValidIndex(index, this);
      return this[_generator](index);
    }
    static _id(n) {
      return n;
    }
  }
  (_GeneratorIterable.new = function(length, generator) {
    this[length$] = length;
    this[_generator] = generator != null ? generator : intToE().as(dart.fn(core._GeneratorIterable._id, intToint()));
    _GeneratorIterable.__proto__.new.call(this);
  }).prototype = _GeneratorIterable.prototype;
  dart.addTypeTests(_GeneratorIterable);
  _GeneratorIterable.prototype[_is__GeneratorIterable_default] = true;
  const length$ = Symbol("_GeneratorIterable.length");
  dart.setMethodSignature(_GeneratorIterable, () => ({
    __proto__: dart.getMethods(_GeneratorIterable.__proto__),
    elementAt: dart.fnType(E, [core.int]),
    [$elementAt]: dart.fnType(E, [core.int])
  }));
  dart.setFieldSignature(_GeneratorIterable, () => ({
    __proto__: dart.getFields(_GeneratorIterable.__proto__),
    length: dart.finalFieldType(core.int),
    [_generator]: dart.finalFieldType(intToE())
  }));
  dart.defineExtensionMethods(_GeneratorIterable, ['elementAt']);
  dart.defineExtensionAccessors(_GeneratorIterable, ['length']);
  return _GeneratorIterable;
});
core._GeneratorIterable = core._GeneratorIterable$();
dart.addTypeTests(core._GeneratorIterable, _is__GeneratorIterable_default);
const _is_BidirectionalIterator_default = Symbol('_is_BidirectionalIterator_default');
core.BidirectionalIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class BidirectionalIterator extends core.Object {}
  (BidirectionalIterator.new = function() {
  }).prototype = BidirectionalIterator.prototype;
  dart.addTypeTests(BidirectionalIterator);
  BidirectionalIterator.prototype[_is_BidirectionalIterator_default] = true;
  BidirectionalIterator[dart.implements] = () => [IteratorOfE()];
  return BidirectionalIterator;
});
core.BidirectionalIterator = core.BidirectionalIterator$();
dart.addTypeTests(core.BidirectionalIterator, _is_BidirectionalIterator_default);
core.Map$ = dart.generic((K, V) => {
  let LinkedMapOfK$V = () => (LinkedMapOfK$V = dart.constFn(_js_helper.LinkedMap$(K, V)))();
  let LinkedHashMapOfK$V = () => (LinkedHashMapOfK$V = dart.constFn(collection.LinkedHashMap$(K, V)))();
  let MapOfK$V = () => (MapOfK$V = dart.constFn(core.Map$(K, V)))();
  let UnmodifiableMapViewOfK$V = () => (UnmodifiableMapViewOfK$V = dart.constFn(collection.UnmodifiableMapView$(K, V)))();
  class Map extends core.Object {
    static new() {
      return new (LinkedMapOfK$V()).new();
    }
    static from(other) {
      return LinkedHashMapOfK$V().from(other);
    }
    static of(other) {
      return LinkedHashMapOfK$V().of(other);
    }
    static unmodifiable(other) {
      return new (UnmodifiableMapViewOfK$V()).new(MapOfK$V().from(other));
    }
    static identity() {
      return LinkedHashMapOfK$V().identity();
    }
    static fromIterable(iterable, opts) {
      return LinkedHashMapOfK$V().fromIterable(iterable, opts);
    }
    static fromIterables(keys, values) {
      return LinkedHashMapOfK$V().fromIterables(keys, values);
    }
    static castFrom(K, V, K2, V2, source) {
      return new (_internal.CastMap$(K, V, K2, V2)).new(source);
    }
    static fromEntries(entries) {
      let _ = new (LinkedMapOfK$V()).new();
      _[$addEntries](entries);
      return _;
    }
  }
  (Map[dart.mixinNew] = function() {
  }).prototype = Map.prototype;
  dart.addTypeTests(Map);
  Map.prototype[dart.isMap] = true;
  return Map;
});
core.Map = core.Map$();
dart.addTypeTests(core.Map, dart.isMap);
const _is_MapEntry_default = Symbol('_is_MapEntry_default');
core.MapEntry$ = dart.generic((K, V) => {
  let MapEntryOfK$V = () => (MapEntryOfK$V = dart.constFn(core.MapEntry$(K, V)))();
  class MapEntry extends core.Object {
    get key() {
      return this[key$];
    }
    set key(value) {
      super.key = value;
    }
    get value() {
      return this[value$];
    }
    set value(value) {
      super.value = value;
    }
    static new(key, value) {
      return new (MapEntryOfK$V()).__(key, value);
    }
    toString() {
      return "MapEntry(" + dart.str(this.key) + ": " + dart.str(this.value) + ")";
    }
  }
  (MapEntry.__ = function(key, value) {
    this[key$] = key;
    this[value$] = value;
  }).prototype = MapEntry.prototype;
  dart.addTypeTests(MapEntry);
  MapEntry.prototype[_is_MapEntry_default] = true;
  const key$ = Symbol("MapEntry.key");
  const value$ = Symbol("MapEntry.value");
  dart.setMethodSignature(MapEntry, () => ({
    __proto__: dart.getMethods(MapEntry.__proto__),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, [])
  }));
  dart.setFieldSignature(MapEntry, () => ({
    __proto__: dart.getFields(MapEntry.__proto__),
    key: dart.finalFieldType(K),
    value: dart.finalFieldType(V)
  }));
  dart.defineExtensionMethods(MapEntry, ['toString']);
  return MapEntry;
});
core.MapEntry = core.MapEntry$();
dart.addTypeTests(core.MapEntry, _is_MapEntry_default);
core.Null = class Null extends core.Object {
  get hashCode() {
    return super.hashCode;
  }
  toString() {
    return "null";
  }
};
(core.Null[dart.mixinNew] = function() {
}).prototype = core.Null.prototype;
core.Null.is = function is_Null(o) {
  return o == null;
};
core.Null.as = function as_Null(o) {
  if (o == null) return o;
  return dart.as(o, core.Null, false);
};
core.Null._check = function check_Null(o) {
  if (o == null) return o;
  return dart.as(o, core.Null, true);
};
dart.defineExtensionMethods(core.Null, ['toString']);
dart.defineExtensionAccessors(core.Null, ['hashCode']);
core.Pattern = class Pattern extends core.Object {};
(core.Pattern.new = function() {
}).prototype = core.Pattern.prototype;
dart.addTypeTests(core.Pattern);
core.print = function(object) {
  let line = dart.str(object);
  if (_internal.printToZone == null) {
    _internal.printToConsole(line);
  } else {
    _internal.printToZone(line);
  }
};
core.RegExp = class RegExp extends core.Object {
  static new(source, opts) {
    let multiLine = opts && 'multiLine' in opts ? opts.multiLine : false;
    let caseSensitive = opts && 'caseSensitive' in opts ? opts.caseSensitive : true;
    return new _js_helper.JSSyntaxRegExp.new(source, {multiLine: multiLine, caseSensitive: caseSensitive});
  }
  static escape(text) {
    return _js_helper.quoteStringForRegExp(text);
  }
};
(core.RegExp[dart.mixinNew] = function() {
}).prototype = core.RegExp.prototype;
dart.addTypeTests(core.RegExp);
core.RegExp[dart.implements] = () => [core.Pattern];
const _is_Set_default = Symbol('_is_Set_default');
core.Set$ = dart.generic(E => {
  let LinkedHashSetOfE = () => (LinkedHashSetOfE = dart.constFn(collection.LinkedHashSet$(E)))();
  class Set extends _internal.EfficientLengthIterable$(E) {
    static new() {
      return LinkedHashSetOfE().new();
    }
    static identity() {
      return LinkedHashSetOfE().identity();
    }
    static from(elements) {
      return LinkedHashSetOfE().from(elements);
    }
    static of(elements) {
      return LinkedHashSetOfE().of(elements);
    }
    static castFrom(S, T, source, opts) {
      let newSet = opts && 'newSet' in opts ? opts.newSet : null;
      return new (_internal.CastSet$(S, T)).new(source, newSet);
    }
  }
  dart.addTypeTests(Set);
  Set.prototype[_is_Set_default] = true;
  return Set;
});
core.Set = core.Set$();
dart.addTypeTests(core.Set, _is_Set_default);
const _is_Sink_default = Symbol('_is_Sink_default');
core.Sink$ = dart.generic(T => {
  class Sink extends core.Object {}
  (Sink.new = function() {
  }).prototype = Sink.prototype;
  dart.addTypeTests(Sink);
  Sink.prototype[_is_Sink_default] = true;
  return Sink;
});
core.Sink = core.Sink$();
dart.addTypeTests(core.Sink, _is_Sink_default);
core.StackTrace = class StackTrace extends core.Object {
  static fromString(stackTraceString) {
    return new core._StringStackTrace.new(stackTraceString);
  }
  static get current() {
    return dart.stackTrace(Error());
  }
};
(core.StackTrace.new = function() {
}).prototype = core.StackTrace.prototype;
dart.addTypeTests(core.StackTrace);
const _stackTrace = Symbol('_stackTrace');
core._StringStackTrace = class _StringStackTrace extends core.Object {
  toString() {
    return this[_stackTrace];
  }
};
(core._StringStackTrace.new = function(stackTrace) {
  this[_stackTrace] = stackTrace;
}).prototype = core._StringStackTrace.prototype;
dart.addTypeTests(core._StringStackTrace);
core._StringStackTrace[dart.implements] = () => [core.StackTrace];
dart.setFieldSignature(core._StringStackTrace, () => ({
  __proto__: dart.getFields(core._StringStackTrace.__proto__),
  [_stackTrace]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(core._StringStackTrace, ['toString']);
const _start$0 = Symbol('_start');
const _stop = Symbol('_stop');
core.Stopwatch = class Stopwatch extends core.Object {
  get frequency() {
    return core.Stopwatch._frequency;
  }
  start() {
    if (this[_stop] != null) {
      this[_start$0] = dart.notNull(this[_start$0]) + (dart.notNull(core.Stopwatch._now()) - dart.notNull(this[_stop]));
      this[_stop] = null;
    }
  }
  stop() {
    let t = this[_stop];
    t == null ? this[_stop] = core.Stopwatch._now() : t;
  }
  reset() {
    let l = this[_stop];
    this[_start$0] = l != null ? l : core.Stopwatch._now();
  }
  get elapsedTicks() {
    return dart.notNull((() => {
      let l = this[_stop];
      return l != null ? l : core.Stopwatch._now();
    })()) - dart.notNull(this[_start$0]);
  }
  get elapsed() {
    return new core.Duration.new({microseconds: this.elapsedMicroseconds});
  }
  get elapsedMicroseconds() {
    return (dart.notNull(this.elapsedTicks) * 1000000 / dart.notNull(this.frequency))[$truncate]();
  }
  get elapsedMilliseconds() {
    return (dart.notNull(this.elapsedTicks) * 1000 / dart.notNull(this.frequency))[$truncate]();
  }
  get isRunning() {
    return this[_stop] == null;
  }
  static _initTicker() {
    _js_helper.Primitives.initTicker();
    core.Stopwatch._frequency = _js_helper.Primitives.timerFrequency;
  }
  static _now() {
    return core.int._check(dart.dsend(_js_helper.Primitives, 'timerTicks', []));
  }
};
(core.Stopwatch.new = function() {
  this[_start$0] = 0;
  this[_stop] = 0;
  if (core.Stopwatch._frequency == null) core.Stopwatch._initTicker();
}).prototype = core.Stopwatch.prototype;
dart.addTypeTests(core.Stopwatch);
dart.setMethodSignature(core.Stopwatch, () => ({
  __proto__: dart.getMethods(core.Stopwatch.__proto__),
  start: dart.fnType(dart.void, []),
  stop: dart.fnType(dart.void, []),
  reset: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(core.Stopwatch, () => ({
  __proto__: dart.getGetters(core.Stopwatch.__proto__),
  frequency: core.int,
  elapsedTicks: core.int,
  elapsed: core.Duration,
  elapsedMicroseconds: core.int,
  elapsedMilliseconds: core.int,
  isRunning: core.bool
}));
dart.setFieldSignature(core.Stopwatch, () => ({
  __proto__: dart.getFields(core.Stopwatch.__proto__),
  [_start$0]: dart.fieldType(core.int),
  [_stop]: dart.fieldType(core.int)
}));
dart.defineLazy(core.Stopwatch, {
  /*core.Stopwatch._frequency*/get _frequency() {
    return null;
  },
  set _frequency(_) {}
});
core.Runes = class Runes extends core.Iterable$(core.int) {
  get string() {
    return this[string$];
  }
  set string(value) {
    super.string = value;
  }
  get iterator() {
    return new core.RuneIterator.new(this.string);
  }
  get last() {
    if (this.string.length === 0) {
      dart.throw(new core.StateError.new("No elements."));
    }
    let length = this.string.length;
    let code = this.string[$codeUnitAt](length - 1);
    if (dart.test(core._isTrailSurrogate(code)) && this.string.length > 1) {
      let previousCode = this.string[$codeUnitAt](length - 2);
      if (dart.test(core._isLeadSurrogate(previousCode))) {
        return core._combineSurrogatePair(previousCode, code);
      }
    }
    return code;
  }
};
(core.Runes.new = function(string) {
  this[string$] = string;
  core.Runes.__proto__.new.call(this);
}).prototype = core.Runes.prototype;
dart.addTypeTests(core.Runes);
const string$ = Symbol("Runes.string");
dart.setGetterSignature(core.Runes, () => ({
  __proto__: dart.getGetters(core.Runes.__proto__),
  iterator: core.RuneIterator,
  [$iterator]: core.RuneIterator,
  last: core.int,
  [$last]: core.int
}));
dart.setFieldSignature(core.Runes, () => ({
  __proto__: dart.getFields(core.Runes.__proto__),
  string: dart.finalFieldType(core.String)
}));
dart.defineExtensionAccessors(core.Runes, ['iterator', 'last']);
core._isLeadSurrogate = function(code) {
  return (dart.notNull(code) & 64512) === 55296;
};
core._isTrailSurrogate = function(code) {
  return (dart.notNull(code) & 64512) === 56320;
};
core._combineSurrogatePair = function(start, end) {
  return 65536 + ((dart.notNull(start) & 1023) << 10) + (dart.notNull(end) & 1023);
};
const _position$ = Symbol('_position');
const _nextPosition = Symbol('_nextPosition');
const _currentCodePoint = Symbol('_currentCodePoint');
const _checkSplitSurrogate = Symbol('_checkSplitSurrogate');
core.RuneIterator = class RuneIterator extends core.Object {
  get string() {
    return this[string$0];
  }
  set string(value) {
    super.string = value;
  }
  [_checkSplitSurrogate](index) {
    if (dart.notNull(index) > 0 && dart.notNull(index) < this.string.length && dart.test(core._isLeadSurrogate(this.string[$codeUnitAt](dart.notNull(index) - 1))) && dart.test(core._isTrailSurrogate(this.string[$codeUnitAt](index)))) {
      dart.throw(new core.ArgumentError.new("Index inside surrogate pair: " + dart.str(index)));
    }
  }
  get rawIndex() {
    return this[_position$] != this[_nextPosition] ? this[_position$] : null;
  }
  set rawIndex(rawIndex) {
    core.RangeError.checkValidIndex(rawIndex, this.string, "rawIndex");
    this.reset(rawIndex);
    this.moveNext();
  }
  reset(rawIndex) {
    if (rawIndex === void 0) rawIndex = 0;
    core.RangeError.checkValueInInterval(rawIndex, 0, this.string.length, "rawIndex");
    this[_checkSplitSurrogate](rawIndex);
    this[_position$] = this[_nextPosition] = rawIndex;
    this[_currentCodePoint] = null;
  }
  get current() {
    return this[_currentCodePoint];
  }
  get currentSize() {
    return dart.notNull(this[_nextPosition]) - dart.notNull(this[_position$]);
  }
  get currentAsString() {
    if (this[_position$] == this[_nextPosition]) return null;
    if (dart.notNull(this[_position$]) + 1 === this[_nextPosition]) return this.string[$_get](this[_position$]);
    return this.string[$substring](this[_position$], this[_nextPosition]);
  }
  moveNext() {
    this[_position$] = this[_nextPosition];
    if (this[_position$] === this.string.length) {
      this[_currentCodePoint] = null;
      return false;
    }
    let codeUnit = this.string[$codeUnitAt](this[_position$]);
    let nextPosition = dart.notNull(this[_position$]) + 1;
    if (dart.test(core._isLeadSurrogate(codeUnit)) && nextPosition < this.string.length) {
      let nextCodeUnit = this.string[$codeUnitAt](nextPosition);
      if (dart.test(core._isTrailSurrogate(nextCodeUnit))) {
        this[_nextPosition] = nextPosition + 1;
        this[_currentCodePoint] = core._combineSurrogatePair(codeUnit, nextCodeUnit);
        return true;
      }
    }
    this[_nextPosition] = nextPosition;
    this[_currentCodePoint] = codeUnit;
    return true;
  }
  movePrevious() {
    this[_nextPosition] = this[_position$];
    if (this[_position$] === 0) {
      this[_currentCodePoint] = null;
      return false;
    }
    let position = dart.notNull(this[_position$]) - 1;
    let codeUnit = this.string[$codeUnitAt](position);
    if (dart.test(core._isTrailSurrogate(codeUnit)) && position > 0) {
      let prevCodeUnit = this.string[$codeUnitAt](position - 1);
      if (dart.test(core._isLeadSurrogate(prevCodeUnit))) {
        this[_position$] = position - 1;
        this[_currentCodePoint] = core._combineSurrogatePair(prevCodeUnit, codeUnit);
        return true;
      }
    }
    this[_position$] = position;
    this[_currentCodePoint] = codeUnit;
    return true;
  }
};
(core.RuneIterator.new = function(string) {
  this[_currentCodePoint] = null;
  this[string$0] = string;
  this[_position$] = 0;
  this[_nextPosition] = 0;
}).prototype = core.RuneIterator.prototype;
(core.RuneIterator.at = function(string, index) {
  this[_currentCodePoint] = null;
  this[string$0] = string;
  this[_position$] = index;
  this[_nextPosition] = index;
  core.RangeError.checkValueInInterval(index, 0, string.length);
  this[_checkSplitSurrogate](index);
}).prototype = core.RuneIterator.prototype;
dart.addTypeTests(core.RuneIterator);
const string$0 = Symbol("RuneIterator.string");
core.RuneIterator[dart.implements] = () => [BidirectionalIteratorOfint()];
dart.setMethodSignature(core.RuneIterator, () => ({
  __proto__: dart.getMethods(core.RuneIterator.__proto__),
  [_checkSplitSurrogate]: dart.fnType(dart.void, [core.int]),
  reset: dart.fnType(dart.void, [], [core.int]),
  moveNext: dart.fnType(core.bool, []),
  movePrevious: dart.fnType(core.bool, [])
}));
dart.setGetterSignature(core.RuneIterator, () => ({
  __proto__: dart.getGetters(core.RuneIterator.__proto__),
  rawIndex: core.int,
  current: core.int,
  currentSize: core.int,
  currentAsString: core.String
}));
dart.setSetterSignature(core.RuneIterator, () => ({
  __proto__: dart.getSetters(core.RuneIterator.__proto__),
  rawIndex: core.int
}));
dart.setFieldSignature(core.RuneIterator, () => ({
  __proto__: dart.getFields(core.RuneIterator.__proto__),
  string: dart.finalFieldType(core.String),
  [_position$]: dart.fieldType(core.int),
  [_nextPosition]: dart.fieldType(core.int),
  [_currentCodePoint]: dart.fieldType(core.int)
}));
core.Symbol = class Symbol extends core.Object {
  static new(name) {
    return new _internal.Symbol.new(name);
  }
};
(core.Symbol[dart.mixinNew] = function() {
}).prototype = core.Symbol.prototype;
dart.addTypeTests(core.Symbol);
dart.defineLazy(core.Symbol, {
  /*core.Symbol.unaryMinus*/get unaryMinus() {
    return dart.const(core.Symbol.new("unary-"));
  },
  /*core.Symbol.empty*/get empty() {
    return dart.const(core.Symbol.new(""));
  }
});
dart.defineLazy(core, {
  /*core._SPACE*/get _SPACE() {
    return 32;
  },
  /*core._PERCENT*/get _PERCENT() {
    return 37;
  },
  /*core._AMPERSAND*/get _AMPERSAND() {
    return 38;
  },
  /*core._PLUS*/get _PLUS() {
    return 43;
  },
  /*core._DOT*/get _DOT() {
    return 46;
  },
  /*core._SLASH*/get _SLASH() {
    return 47;
  },
  /*core._COLON*/get _COLON() {
    return 58;
  },
  /*core._EQUALS*/get _EQUALS() {
    return 61;
  },
  /*core._UPPER_CASE_A*/get _UPPER_CASE_A() {
    return 65;
  },
  /*core._UPPER_CASE_Z*/get _UPPER_CASE_Z() {
    return 90;
  },
  /*core._LEFT_BRACKET*/get _LEFT_BRACKET() {
    return 91;
  },
  /*core._BACKSLASH*/get _BACKSLASH() {
    return 92;
  },
  /*core._RIGHT_BRACKET*/get _RIGHT_BRACKET() {
    return 93;
  },
  /*core._LOWER_CASE_A*/get _LOWER_CASE_A() {
    return 97;
  },
  /*core._LOWER_CASE_F*/get _LOWER_CASE_F() {
    return 102;
  },
  /*core._LOWER_CASE_Z*/get _LOWER_CASE_Z() {
    return 122;
  },
  /*core._hexDigits*/get _hexDigits() {
    return "0123456789ABCDEF";
  }
});
core.Uri = class Uri extends core.Object {
  static get base() {
    let uri = _js_helper.Primitives.currentUri();
    if (uri != null) return core.Uri.parse(uri);
    dart.throw(new core.UnsupportedError.new("'Uri.base' is not supported"));
  }
  static new(opts) {
    return core._Uri.new(opts);
  }
  static http(authority, unencodedPath, queryParameters) {
    return core._Uri.http(authority, unencodedPath, queryParameters);
  }
  static https(authority, unencodedPath, queryParameters) {
    return core._Uri.https(authority, unencodedPath, queryParameters);
  }
  static file(path, opts) {
    return core._Uri.file(path, opts);
  }
  static directory(path, opts) {
    return core._Uri.directory(path, opts);
  }
  static dataFromString(content, opts) {
    let mimeType = opts && 'mimeType' in opts ? opts.mimeType : null;
    let encoding = opts && 'encoding' in opts ? opts.encoding : null;
    let parameters = opts && 'parameters' in opts ? opts.parameters : null;
    let base64 = opts && 'base64' in opts ? opts.base64 : false;
    let data = core.UriData.fromString(content, {mimeType: mimeType, encoding: encoding, parameters: parameters, base64: base64});
    return data.uri;
  }
  static dataFromBytes(bytes, opts) {
    let mimeType = opts && 'mimeType' in opts ? opts.mimeType : "application/octet-stream";
    let parameters = opts && 'parameters' in opts ? opts.parameters : null;
    let percentEncoded = opts && 'percentEncoded' in opts ? opts.percentEncoded : false;
    let data = core.UriData.fromBytes(bytes, {mimeType: mimeType, parameters: parameters, percentEncoded: percentEncoded});
    return data.uri;
  }
  get hasScheme() {
    return this.scheme[$isNotEmpty];
  }
  static parse(uri, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let t = end;
    t == null ? end = uri.length : t;
    if (dart.notNull(end) >= dart.notNull(start) + 5) {
      let dataDelta = core._startsWithData(uri, start);
      if (dataDelta === 0) {
        if (dart.notNull(start) > 0 || dart.notNull(end) < uri.length) uri = uri[$substring](start, end);
        return core.UriData._parse(uri, 5, null).uri;
      } else if (dataDelta === 32) {
        return core.UriData._parse(uri[$substring](dart.notNull(start) + 5, end), 0, null).uri;
      }
    }
    let indices = ListOfint().new(8);
    indices[$_set](0, 0);
    indices[$_set](1, dart.notNull(start) - 1);
    indices[$_set](2, dart.notNull(start) - 1);
    indices[$_set](7, dart.notNull(start) - 1);
    indices[$_set](3, start);
    indices[$_set](4, start);
    indices[$_set](5, end);
    indices[$_set](6, end);
    let state = core._scan(uri, start, end, 0, indices);
    if (dart.notNull(state) >= 14) {
      indices[$_set](7, end);
    }
    let schemeEnd = indices[$_get](1);
    if (dart.notNull(schemeEnd) >= dart.notNull(start)) {
      state = core._scan(uri, start, schemeEnd, 20, indices);
      if (state === 20) {
        indices[$_set](7, schemeEnd);
      }
    }
    let hostStart = dart.notNull(indices[$_get](2)) + 1;
    let portStart = indices[$_get](3);
    let pathStart = indices[$_get](4);
    let queryStart = indices[$_get](5);
    let fragmentStart = indices[$_get](6);
    let scheme = null;
    if (dart.notNull(fragmentStart) < dart.notNull(queryStart)) queryStart = fragmentStart;
    if (dart.notNull(pathStart) < hostStart) {
      pathStart = queryStart;
    } else if (dart.notNull(pathStart) <= dart.notNull(schemeEnd)) {
      pathStart = dart.notNull(schemeEnd) + 1;
    }
    if (dart.notNull(portStart) < hostStart) portStart = pathStart;
    if (!(hostStart === start || dart.notNull(schemeEnd) <= hostStart)) dart.assertFailed();
    if (!(hostStart <= dart.notNull(portStart))) dart.assertFailed();
    if (!(dart.notNull(schemeEnd) <= dart.notNull(pathStart))) dart.assertFailed();
    if (!(dart.notNull(portStart) <= dart.notNull(pathStart))) dart.assertFailed();
    if (!(dart.notNull(pathStart) <= dart.notNull(queryStart))) dart.assertFailed();
    if (!(dart.notNull(queryStart) <= dart.notNull(fragmentStart))) dart.assertFailed();
    let isSimple = dart.notNull(indices[$_get](7)) < dart.notNull(start);
    if (isSimple) {
      if (hostStart > dart.notNull(schemeEnd) + 3) {
        isSimple = false;
      } else if (dart.notNull(portStart) > dart.notNull(start) && dart.notNull(portStart) + 1 === pathStart) {
        isSimple = false;
      } else if (dart.notNull(queryStart) < dart.notNull(end) && queryStart === dart.notNull(pathStart) + 2 && uri[$startsWith]("..", pathStart) || dart.notNull(queryStart) > dart.notNull(pathStart) + 2 && uri[$startsWith]("/..", dart.notNull(queryStart) - 3)) {
        isSimple = false;
      } else {
        if (schemeEnd === dart.notNull(start) + 4) {
          if (uri[$startsWith]("file", start)) {
            scheme = "file";
            if (hostStart <= dart.notNull(start)) {
              let schemeAuth = "file://";
              let delta = 2;
              if (!uri[$startsWith]("/", pathStart)) {
                schemeAuth = "file:///";
                delta = 3;
              }
              uri = schemeAuth + uri[$substring](pathStart, end);
              schemeEnd = dart.notNull(schemeEnd) - dart.notNull(start);
              hostStart = 7;
              portStart = 7;
              pathStart = 7;
              queryStart = dart.notNull(queryStart) + (delta - dart.notNull(start));
              fragmentStart = dart.notNull(fragmentStart) + (delta - dart.notNull(start));
              start = 0;
              end = uri.length;
            } else if (pathStart == queryStart) {
              if (start === 0 && end === uri.length) {
                uri = uri[$replaceRange](pathStart, queryStart, "/");
                queryStart = dart.notNull(queryStart) + 1;
                fragmentStart = dart.notNull(fragmentStart) + 1;
                end = dart.notNull(end) + 1;
              } else {
                uri = uri[$substring](start, pathStart) + "/" + uri[$substring](queryStart, end);
                schemeEnd = dart.notNull(schemeEnd) - dart.notNull(start);
                hostStart = hostStart - dart.notNull(start);
                portStart = dart.notNull(portStart) - dart.notNull(start);
                pathStart = dart.notNull(pathStart) - dart.notNull(start);
                queryStart = dart.notNull(queryStart) + (1 - dart.notNull(start));
                fragmentStart = dart.notNull(fragmentStart) + (1 - dart.notNull(start));
                start = 0;
                end = uri.length;
              }
            }
          } else if (uri[$startsWith]("http", start)) {
            scheme = "http";
            if (dart.notNull(portStart) > dart.notNull(start) && dart.notNull(portStart) + 3 === pathStart && uri[$startsWith]("80", dart.notNull(portStart) + 1)) {
              if (start === 0 && end === uri.length) {
                uri = uri[$replaceRange](portStart, pathStart, "");
                pathStart = dart.notNull(pathStart) - 3;
                queryStart = dart.notNull(queryStart) - 3;
                fragmentStart = dart.notNull(fragmentStart) - 3;
                end = dart.notNull(end) - 3;
              } else {
                uri = uri[$substring](start, portStart) + uri[$substring](pathStart, end);
                schemeEnd = dart.notNull(schemeEnd) - dart.notNull(start);
                hostStart = hostStart - dart.notNull(start);
                portStart = dart.notNull(portStart) - dart.notNull(start);
                pathStart = dart.notNull(pathStart) - (3 + dart.notNull(start));
                queryStart = dart.notNull(queryStart) - (3 + dart.notNull(start));
                fragmentStart = dart.notNull(fragmentStart) - (3 + dart.notNull(start));
                start = 0;
                end = uri.length;
              }
            }
          }
        } else if (schemeEnd === dart.notNull(start) + 5 && uri[$startsWith]("https", start)) {
          scheme = "https";
          if (dart.notNull(portStart) > dart.notNull(start) && dart.notNull(portStart) + 4 === pathStart && uri[$startsWith]("443", dart.notNull(portStart) + 1)) {
            if (start === 0 && end === uri.length) {
              uri = uri[$replaceRange](portStart, pathStart, "");
              pathStart = dart.notNull(pathStart) - 4;
              queryStart = dart.notNull(queryStart) - 4;
              fragmentStart = dart.notNull(fragmentStart) - 4;
              end = dart.notNull(end) - 3;
            } else {
              uri = uri[$substring](start, portStart) + uri[$substring](pathStart, end);
              schemeEnd = dart.notNull(schemeEnd) - dart.notNull(start);
              hostStart = hostStart - dart.notNull(start);
              portStart = dart.notNull(portStart) - dart.notNull(start);
              pathStart = dart.notNull(pathStart) - (4 + dart.notNull(start));
              queryStart = dart.notNull(queryStart) - (4 + dart.notNull(start));
              fragmentStart = dart.notNull(fragmentStart) - (4 + dart.notNull(start));
              start = 0;
              end = uri.length;
            }
          }
        }
      }
    }
    if (isSimple) {
      if (dart.notNull(start) > 0 || dart.notNull(end) < uri.length) {
        uri = uri[$substring](start, end);
        schemeEnd = dart.notNull(schemeEnd) - dart.notNull(start);
        hostStart = hostStart - dart.notNull(start);
        portStart = dart.notNull(portStart) - dart.notNull(start);
        pathStart = dart.notNull(pathStart) - dart.notNull(start);
        queryStart = dart.notNull(queryStart) - dart.notNull(start);
        fragmentStart = dart.notNull(fragmentStart) - dart.notNull(start);
      }
      return new core._SimpleUri.new(uri, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme);
    }
    return core._Uri.notSimple(uri, start, end, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme);
  }
  static tryParse(uri, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    try {
      return core.Uri.parse(uri, start, end);
    } catch (e) {
      let ex = dart.getThrown(e);
      if (core.FormatException.is(ex)) {
        return null;
      } else
        throw e;
    }
  }
  static encodeComponent(component) {
    return core._Uri._uriEncode(core._Uri._unreserved2396Table, component, convert.utf8, false);
  }
  static encodeQueryComponent(component, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    return core._Uri._uriEncode(core._Uri._unreservedTable, component, encoding, true);
  }
  static decodeComponent(encodedComponent) {
    return core._Uri._uriDecode(encodedComponent, 0, encodedComponent.length, convert.utf8, false);
  }
  static decodeQueryComponent(encodedComponent, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    return core._Uri._uriDecode(encodedComponent, 0, encodedComponent.length, encoding, true);
  }
  static encodeFull(uri) {
    return core._Uri._uriEncode(core._Uri._encodeFullTable, uri, convert.utf8, false);
  }
  static decodeFull(uri) {
    return core._Uri._uriDecode(uri, 0, uri.length, convert.utf8, false);
  }
  static splitQueryString(query, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    return MapOfString$String()._check(query[$split]("&")[$fold](MapOfString$String(), new (IdentityMapOfString$String()).new(), dart.fn((map, element) => {
      let index = element[$indexOf]("=");
      if (index === -1) {
        if (element !== "") {
          map[$_set](core.Uri.decodeQueryComponent(element, {encoding: encoding}), "");
        }
      } else if (index !== 0) {
        let key = element[$substring](0, index);
        let value = element[$substring](index + 1);
        map[$_set](core.Uri.decodeQueryComponent(key, {encoding: encoding}), core.Uri.decodeQueryComponent(value, {encoding: encoding}));
      }
      return map;
    }, MapOfString$StringAndStringToMapOfString$String())));
  }
  static parseIPv4Address(host) {
    return core.Uri._parseIPv4Address(host, 0, host.length);
  }
  static _parseIPv4Address(host, start, end) {
    function error(msg, position) {
      dart.throw(new core.FormatException.new("Illegal IPv4 address, " + dart.str(msg), host, position));
    }
    dart.fn(error, StringAndintTovoid());
    let result = typed_data.Uint8List.new(4);
    let partIndex = 0;
    let partStart = start;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = host[$codeUnitAt](i);
      if (char !== 46) {
        if ((char ^ 48) >>> 0 > 9) {
          error("invalid character", i);
        }
      } else {
        if (partIndex === 3) {
          error("IPv4 address should contain exactly 4 parts", i);
        }
        let part = core.int.parse(host[$substring](partStart, i));
        if (dart.notNull(part) > 255) {
          error("each part must be in the range 0..255", partStart);
        }
        result[$_set](partIndex++, part);
        partStart = dart.notNull(i) + 1;
      }
    }
    if (partIndex !== 3) {
      error("IPv4 address should contain exactly 4 parts", end);
    }
    let part = core.int.parse(host[$substring](partStart, end));
    if (dart.notNull(part) > 255) {
      error("each part must be in the range 0..255", partStart);
    }
    result[$_set](partIndex, part);
    return result;
  }
  static parseIPv6Address(host, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    let t = end;
    t == null ? end = host.length : t;
    function error(msg, position) {
      if (position === void 0) position = null;
      dart.throw(new core.FormatException.new("Illegal IPv6 address, " + dart.str(msg), host, core.int._check(position)));
    }
    dart.fn(error, String__Tovoid());
    function parseHex(start, end) {
      if (dart.notNull(end) - dart.notNull(start) > 4) {
        error("an IPv6 part can only contain a maximum of 4 hex digits", start);
      }
      let value = core.int.parse(host[$substring](start, end), {radix: 16});
      if (dart.notNull(value) < 0 || dart.notNull(value) > 65535) {
        error("each part must be in the range of `0x0..0xFFFF`", start);
      }
      return value;
    }
    dart.fn(parseHex, intAndintToint());
    if (host.length < 2) error("address is too short");
    let parts = JSArrayOfint().of([]);
    let wildcardSeen = false;
    let seenDot = false;
    let partStart = start;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = host[$codeUnitAt](i);
      if (char === 58) {
        if (i == start) {
          i = dart.notNull(i) + 1;
          if (host[$codeUnitAt](i) !== 58) {
            error("invalid start colon.", i);
          }
          partStart = i;
        }
        if (i == partStart) {
          if (wildcardSeen) {
            error("only one wildcard `::` is allowed", i);
          }
          wildcardSeen = true;
          parts[$add](-1);
        } else {
          parts[$add](parseHex(partStart, i));
        }
        partStart = dart.notNull(i) + 1;
      } else if (char === 46) {
        seenDot = true;
      }
    }
    if (parts[$length] === 0) error("too few parts");
    let atEnd = partStart == end;
    let isLastWildcard = parts[$last] === -1;
    if (atEnd && !isLastWildcard) {
      error("expected a part after last `:`", end);
    }
    if (!atEnd) {
      if (!seenDot) {
        parts[$add](parseHex(partStart, end));
      } else {
        let last = core.Uri._parseIPv4Address(host, partStart, end);
        parts[$add]((dart.notNull(last[$_get](0)) << 8 | dart.notNull(last[$_get](1))) >>> 0);
        parts[$add]((dart.notNull(last[$_get](2)) << 8 | dart.notNull(last[$_get](3))) >>> 0);
      }
    }
    if (wildcardSeen) {
      if (dart.notNull(parts[$length]) > 7) {
        error("an address with a wildcard must have less than 7 parts");
      }
    } else if (parts[$length] !== 8) {
      error("an address without a wildcard must contain exactly 8 parts");
    }
    let bytes = typed_data.Uint8List.new(16);
    for (let i = 0, index = 0; i < dart.notNull(parts[$length]); i++) {
      let value = parts[$_get](i);
      if (value === -1) {
        let wildCardLength = 9 - dart.notNull(parts[$length]);
        for (let j = 0; j < wildCardLength; j++) {
          bytes[$_set](index, 0);
          bytes[$_set](index + 1, 0);
          index = index + 2;
        }
      } else {
        bytes[$_set](index, value[$rightShift](8));
        bytes[$_set](index + 1, dart.notNull(value) & 255);
        index = index + 2;
      }
    }
    return bytes;
  }
};
(core.Uri[dart.mixinNew] = function() {
}).prototype = core.Uri.prototype;
dart.addTypeTests(core.Uri);
dart.setGetterSignature(core.Uri, () => ({
  __proto__: dart.getGetters(core.Uri.__proto__),
  hasScheme: core.bool
}));
const _userInfo = Symbol('_userInfo');
const _host = Symbol('_host');
const _port = Symbol('_port');
const _query = Symbol('_query');
const _fragment = Symbol('_fragment');
const _pathSegments = Symbol('_pathSegments');
const _text = Symbol('_text');
const _hashCodeCache = Symbol('_hashCodeCache');
const _queryParameters = Symbol('_queryParameters');
const _queryParameterLists = Symbol('_queryParameterLists');
const _writeAuthority = Symbol('_writeAuthority');
let const$51;
const _mergePaths = Symbol('_mergePaths');
const _toFilePath = Symbol('_toFilePath');
const _isPathAbsolute = Symbol('_isPathAbsolute');
const _initializeText = Symbol('_initializeText');
core._Uri = class _Uri extends core.Object {
  static notSimple(uri, start, end, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme) {
    if (scheme == null) {
      scheme = "";
      if (dart.notNull(schemeEnd) > dart.notNull(start)) {
        scheme = core._Uri._makeScheme(uri, start, schemeEnd);
      } else if (schemeEnd == start) {
        core._Uri._fail(uri, start, "Invalid empty scheme");
      }
    }
    let userInfo = "";
    let host = null;
    let port = null;
    if (dart.notNull(hostStart) > dart.notNull(start)) {
      let userInfoStart = dart.notNull(schemeEnd) + 3;
      if (userInfoStart < dart.notNull(hostStart)) {
        userInfo = core._Uri._makeUserInfo(uri, userInfoStart, dart.notNull(hostStart) - 1);
      }
      host = core._Uri._makeHost(uri, hostStart, portStart, false);
      if (dart.notNull(portStart) + 1 < dart.notNull(pathStart)) {
        port = core.int.parse(uri[$substring](dart.notNull(portStart) + 1, pathStart), {onError: dart.fn(_ => {
            dart.throw(new core.FormatException.new("Invalid port", uri, dart.notNull(portStart) + 1));
          }, StringToNull())});
        port = core._Uri._makePort(port, scheme);
      }
    }
    let path = core._Uri._makePath(uri, pathStart, queryStart, null, scheme, host != null);
    let query = null;
    if (dart.notNull(queryStart) < dart.notNull(fragmentStart)) {
      query = core._Uri._makeQuery(uri, dart.notNull(queryStart) + 1, fragmentStart, null);
    }
    let fragment = null;
    if (dart.notNull(fragmentStart) < dart.notNull(end)) {
      fragment = core._Uri._makeFragment(uri, dart.notNull(fragmentStart) + 1, end);
    }
    return new core._Uri._internal(scheme, userInfo, host, port, path, query, fragment);
  }
  static new(opts) {
    let scheme = opts && 'scheme' in opts ? opts.scheme : null;
    let userInfo = opts && 'userInfo' in opts ? opts.userInfo : null;
    let host = opts && 'host' in opts ? opts.host : null;
    let port = opts && 'port' in opts ? opts.port : null;
    let path = opts && 'path' in opts ? opts.path : null;
    let pathSegments = opts && 'pathSegments' in opts ? opts.pathSegments : null;
    let query = opts && 'query' in opts ? opts.query : null;
    let queryParameters = opts && 'queryParameters' in opts ? opts.queryParameters : null;
    let fragment = opts && 'fragment' in opts ? opts.fragment : null;
    scheme = core._Uri._makeScheme(scheme, 0, core._stringOrNullLength(scheme));
    userInfo = core._Uri._makeUserInfo(userInfo, 0, core._stringOrNullLength(userInfo));
    host = core._Uri._makeHost(host, 0, core._stringOrNullLength(host), false);
    if (query === "") query = null;
    query = core._Uri._makeQuery(query, 0, core._stringOrNullLength(query), queryParameters);
    fragment = core._Uri._makeFragment(fragment, 0, core._stringOrNullLength(fragment));
    port = core._Uri._makePort(port, scheme);
    let isFile = scheme === "file";
    if (host == null && (userInfo[$isNotEmpty] || port != null || isFile)) {
      host = "";
    }
    let hasAuthority = host != null;
    path = core._Uri._makePath(path, 0, core._stringOrNullLength(path), pathSegments, scheme, hasAuthority);
    if (scheme[$isEmpty] && host == null && !path[$startsWith]("/")) {
      let allowScheme = scheme[$isNotEmpty] || host != null;
      path = core._Uri._normalizeRelativePath(path, allowScheme);
    } else {
      path = core._Uri._removeDotSegments(path);
    }
    if (host == null && path[$startsWith]("//")) {
      host = "";
    }
    return new core._Uri._internal(scheme, userInfo, host, port, path, query, fragment);
  }
  static http(authority, unencodedPath, queryParameters) {
    if (queryParameters === void 0) queryParameters = null;
    return core._Uri._check(core._Uri._makeHttpUri("http", authority, unencodedPath, queryParameters));
  }
  static https(authority, unencodedPath, queryParameters) {
    if (queryParameters === void 0) queryParameters = null;
    return core._Uri._check(core._Uri._makeHttpUri("https", authority, unencodedPath, queryParameters));
  }
  get authority() {
    if (!dart.test(this.hasAuthority)) return "";
    let sb = new core.StringBuffer.new();
    this[_writeAuthority](sb);
    return sb.toString();
  }
  get userInfo() {
    return this[_userInfo];
  }
  get host() {
    if (this[_host] == null) return "";
    if (this[_host][$startsWith]("[")) {
      return this[_host][$substring](1, this[_host].length - 1);
    }
    return this[_host];
  }
  get port() {
    if (this[_port] == null) return core._Uri._defaultPort(this.scheme);
    return this[_port];
  }
  static _defaultPort(scheme) {
    if (scheme === "http") return 80;
    if (scheme === "https") return 443;
    return 0;
  }
  get query() {
    return this[_query] != null ? this[_query] : "";
  }
  get fragment() {
    return this[_fragment] != null ? this[_fragment] : "";
  }
  isScheme(scheme) {
    let thisScheme = this.scheme;
    if (scheme == null) return thisScheme[$isEmpty];
    if (scheme.length !== thisScheme.length) return false;
    return core._Uri._compareScheme(scheme, thisScheme);
  }
  static _compareScheme(scheme, uri) {
    for (let i = 0; i < scheme.length; i++) {
      let schemeChar = scheme[$codeUnitAt](i);
      let uriChar = uri[$codeUnitAt](i);
      let delta = (schemeChar ^ uriChar) >>> 0;
      if (delta !== 0) {
        if (delta === 32) {
          let lowerChar = (uriChar | delta) >>> 0;
          if (97 <= lowerChar && lowerChar <= 122) {
            continue;
          }
        }
        return false;
      }
    }
    return true;
  }
  static _fail(uri, index, message) {
    dart.throw(new core.FormatException.new(message, uri, index));
  }
  static _makeHttpUri(scheme, authority, unencodedPath, queryParameters) {
    let userInfo = "";
    let host = null;
    let port = null;
    if (authority != null && authority[$isNotEmpty]) {
      let hostStart = 0;
      let hasUserInfo = false;
      for (let i = 0; i < authority.length; i++) {
        let atSign = 64;
        if (authority[$codeUnitAt](i) === atSign) {
          hasUserInfo = true;
          userInfo = authority[$substring](0, i);
          hostStart = i + 1;
          break;
        }
      }
      let hostEnd = hostStart;
      if (hostStart < authority.length && authority[$codeUnitAt](hostStart) === 91) {
        for (; hostEnd < authority.length; hostEnd++) {
          if (authority[$codeUnitAt](hostEnd) === 93) break;
        }
        if (hostEnd === authority.length) {
          dart.throw(new core.FormatException.new("Invalid IPv6 host entry.", authority, hostStart));
        }
        core.Uri.parseIPv6Address(authority, hostStart + 1, hostEnd);
        hostEnd++;
        if (hostEnd !== authority.length && authority[$codeUnitAt](hostEnd) !== 58) {
          dart.throw(new core.FormatException.new("Invalid end of authority", authority, hostEnd));
        }
      }
      let hasPort = false;
      for (; hostEnd < authority.length; hostEnd++) {
        if (authority[$codeUnitAt](hostEnd) === 58) {
          let portString = authority[$substring](hostEnd + 1);
          if (portString[$isNotEmpty]) port = core.int.parse(portString);
          break;
        }
      }
      host = authority[$substring](hostStart, hostEnd);
    }
    return core.Uri.new({scheme: scheme, userInfo: userInfo, host: host, port: port, pathSegments: unencodedPath[$split]("/"), queryParameters: queryParameters});
  }
  static file(path, opts) {
    let windows = opts && 'windows' in opts ? opts.windows : null;
    windows = windows == null ? core._Uri._isWindows : windows;
    return core._Uri._check(dart.test(windows) ? core._Uri._makeWindowsFileUrl(path, false) : core._Uri._makeFileUri(path, false));
  }
  static directory(path, opts) {
    let windows = opts && 'windows' in opts ? opts.windows : null;
    windows = windows == null ? core._Uri._isWindows : windows;
    return core._Uri._check(dart.test(windows) ? core._Uri._makeWindowsFileUrl(path, true) : core._Uri._makeFileUri(path, true));
  }
  static get _isWindows() {
    return core._Uri._isWindowsCached;
  }
  static _checkNonWindowsPathReservedCharacters(segments, argumentError) {
    segments[$forEach](dart.fn(segment => {
      if (segment[$contains]("/")) {
        if (dart.test(argumentError)) {
          dart.throw(new core.ArgumentError.new("Illegal path character " + dart.str(segment)));
        } else {
          dart.throw(new core.UnsupportedError.new("Illegal path character " + dart.str(segment)));
        }
      }
    }, StringToNull()));
  }
  static _checkWindowsPathReservedCharacters(segments, argumentError, firstSegment) {
    if (firstSegment === void 0) firstSegment = 0;
    for (let segment of segments[$skip](firstSegment)) {
      if (segment[$contains](core.RegExp.new("[\"*/:<>?\\\\|]"))) {
        if (dart.test(argumentError)) {
          dart.throw(new core.ArgumentError.new("Illegal character in path"));
        } else {
          dart.throw(new core.UnsupportedError.new("Illegal character in path: " + dart.str(segment)));
        }
      }
    }
  }
  static _checkWindowsDriveLetter(charCode, argumentError) {
    if (65 <= dart.notNull(charCode) && dart.notNull(charCode) <= 90 || 97 <= dart.notNull(charCode) && dart.notNull(charCode) <= 122) {
      return;
    }
    if (dart.test(argumentError)) {
      dart.throw(new core.ArgumentError.new("Illegal drive letter " + core.String.fromCharCode(charCode)));
    } else {
      dart.throw(new core.UnsupportedError.new("Illegal drive letter " + core.String.fromCharCode(charCode)));
    }
  }
  static _makeFileUri(path, slashTerminated) {
    let sep = "/";
    let segments = path[$split](sep);
    if (dart.test(slashTerminated) && dart.test(segments[$isNotEmpty]) && segments[$last][$isNotEmpty]) {
      segments[$add]("");
    }
    if (path[$startsWith](sep)) {
      return core.Uri.new({scheme: "file", pathSegments: segments});
    } else {
      return core.Uri.new({pathSegments: segments});
    }
  }
  static _makeWindowsFileUrl(path, slashTerminated) {
    if (path[$startsWith]("\\\\?\\")) {
      if (path[$startsWith]("UNC\\", 4)) {
        path = path[$replaceRange](0, 7, "\\");
      } else {
        path = path[$substring](4);
        if (path.length < 3 || path[$codeUnitAt](1) !== 58 || path[$codeUnitAt](2) !== 92) {
          dart.throw(new core.ArgumentError.new("Windows paths with \\\\?\\ prefix must be absolute"));
        }
      }
    } else {
      path = path[$replaceAll]("/", "\\");
    }
    let sep = "\\";
    if (path.length > 1 && path[$codeUnitAt](1) === 58) {
      core._Uri._checkWindowsDriveLetter(path[$codeUnitAt](0), true);
      if (path.length === 2 || path[$codeUnitAt](2) !== 92) {
        dart.throw(new core.ArgumentError.new("Windows paths with drive letter must be absolute"));
      }
      let pathSegments = path[$split](sep);
      if (dart.test(slashTerminated) && pathSegments[$last][$isNotEmpty]) {
        pathSegments[$add]("");
      }
      core._Uri._checkWindowsPathReservedCharacters(pathSegments, true, 1);
      return core.Uri.new({scheme: "file", pathSegments: pathSegments});
    }
    if (path[$startsWith](sep)) {
      if (path[$startsWith](sep, 1)) {
        let pathStart = path[$indexOf]("\\", 2);
        let hostPart = pathStart < 0 ? path[$substring](2) : path[$substring](2, pathStart);
        let pathPart = pathStart < 0 ? "" : path[$substring](pathStart + 1);
        let pathSegments = pathPart[$split](sep);
        core._Uri._checkWindowsPathReservedCharacters(pathSegments, true);
        if (dart.test(slashTerminated) && pathSegments[$last][$isNotEmpty]) {
          pathSegments[$add]("");
        }
        return core.Uri.new({scheme: "file", host: hostPart, pathSegments: pathSegments});
      } else {
        let pathSegments = path[$split](sep);
        if (dart.test(slashTerminated) && pathSegments[$last][$isNotEmpty]) {
          pathSegments[$add]("");
        }
        core._Uri._checkWindowsPathReservedCharacters(pathSegments, true);
        return core.Uri.new({scheme: "file", pathSegments: pathSegments});
      }
    } else {
      let pathSegments = path[$split](sep);
      core._Uri._checkWindowsPathReservedCharacters(pathSegments, true);
      if (dart.test(slashTerminated) && dart.test(pathSegments[$isNotEmpty]) && pathSegments[$last][$isNotEmpty]) {
        pathSegments[$add]("");
      }
      return core.Uri.new({pathSegments: pathSegments});
    }
  }
  replace(opts) {
    let scheme = opts && 'scheme' in opts ? opts.scheme : null;
    let userInfo = opts && 'userInfo' in opts ? opts.userInfo : null;
    let host = opts && 'host' in opts ? opts.host : null;
    let port = opts && 'port' in opts ? opts.port : null;
    let path = opts && 'path' in opts ? opts.path : null;
    let pathSegments = opts && 'pathSegments' in opts ? opts.pathSegments : null;
    let query = opts && 'query' in opts ? opts.query : null;
    let queryParameters = opts && 'queryParameters' in opts ? opts.queryParameters : null;
    let fragment = opts && 'fragment' in opts ? opts.fragment : null;
    let schemeChanged = false;
    if (scheme != null) {
      scheme = core._Uri._makeScheme(scheme, 0, scheme.length);
      schemeChanged = scheme != this.scheme;
    } else {
      scheme = this.scheme;
    }
    let isFile = scheme === "file";
    if (userInfo != null) {
      userInfo = core._Uri._makeUserInfo(userInfo, 0, userInfo.length);
    } else {
      userInfo = this[_userInfo];
    }
    if (port != null) {
      port = core._Uri._makePort(port, scheme);
    } else {
      port = this[_port];
      if (schemeChanged) {
        port = core._Uri._makePort(port, scheme);
      }
    }
    if (host != null) {
      host = core._Uri._makeHost(host, 0, host.length, false);
    } else if (dart.test(this.hasAuthority)) {
      host = this[_host];
    } else if (userInfo[$isNotEmpty] || port != null || isFile) {
      host = "";
    }
    let hasAuthority = host != null;
    if (path != null || pathSegments != null) {
      path = core._Uri._makePath(path, 0, core._stringOrNullLength(path), pathSegments, scheme, hasAuthority);
    } else {
      path = this.path;
      if ((isFile || hasAuthority && !path[$isEmpty]) && !path[$startsWith]("/")) {
        path = "/" + dart.notNull(path);
      }
    }
    if (query != null || queryParameters != null) {
      query = core._Uri._makeQuery(query, 0, core._stringOrNullLength(query), queryParameters);
    } else {
      query = this[_query];
    }
    if (fragment != null) {
      fragment = core._Uri._makeFragment(fragment, 0, fragment.length);
    } else {
      fragment = this[_fragment];
    }
    return new core._Uri._internal(scheme, userInfo, host, port, path, query, fragment);
  }
  removeFragment() {
    if (!dart.test(this.hasFragment)) return this;
    return new core._Uri._internal(this.scheme, this[_userInfo], this[_host], this[_port], this.path, this[_query], null);
  }
  get pathSegments() {
    let result = this[_pathSegments];
    if (result != null) return result;
    let pathToSplit = this.path;
    if (pathToSplit[$isNotEmpty] && pathToSplit[$codeUnitAt](0) === 47) {
      pathToSplit = pathToSplit[$substring](1);
    }
    result = pathToSplit === "" ? const$51 || (const$51 = dart.constList([], core.String)) : ListOfString().unmodifiable(pathToSplit[$split]("/")[$map](dart.dynamic, dart.fn(core.Uri.decodeComponent, StringToString())));
    this[_pathSegments] = result;
    return result;
  }
  get queryParameters() {
    let t = this[_queryParameters];
    t == null ? this[_queryParameters] = new (UnmodifiableMapViewOfString$String()).new(core.Uri.splitQueryString(this.query)) : t;
    return this[_queryParameters];
  }
  get queryParametersAll() {
    if (this[_queryParameterLists] == null) {
      let queryParameterLists = core._Uri._splitQueryStringAll(this.query);
      for (let key of queryParameterLists[$keys]) {
        queryParameterLists[$_set](key, ListOfString().unmodifiable(core.Iterable._check(queryParameterLists[$_get](key))));
      }
      this[_queryParameterLists] = MapOfString$ListOfString().unmodifiable(queryParameterLists);
    }
    return this[_queryParameterLists];
  }
  normalizePath() {
    let path = core._Uri._normalizePath(this.path, this.scheme, this.hasAuthority);
    if (path == this.path) return this;
    return this.replace({path: path});
  }
  static _makePort(port, scheme) {
    if (port != null && port == core._Uri._defaultPort(scheme)) return null;
    return port;
  }
  static _makeHost(host, start, end, strictIPv6) {
    if (host == null) return null;
    if (start == end) return "";
    if (host[$codeUnitAt](start) === 91) {
      if (host[$codeUnitAt](dart.notNull(end) - 1) !== 93) {
        core._Uri._fail(host, start, "Missing end `]` to match `[` in host");
      }
      core.Uri.parseIPv6Address(host, dart.notNull(start) + 1, dart.notNull(end) - 1);
      return host[$substring](start, end)[$toLowerCase]();
    }
    if (!dart.test(strictIPv6)) {
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        if (host[$codeUnitAt](i) === 58) {
          core.Uri.parseIPv6Address(host, start, end);
          return "[" + dart.str(host) + "]";
        }
      }
    }
    return core._Uri._normalizeRegName(host, start, end);
  }
  static _isRegNameChar(char) {
    return dart.notNull(char) < 127 && (dart.notNull(core._Uri._regNameTable[$_get](char[$rightShift](4))) & 1 << (dart.notNull(char) & 15)) !== 0;
  }
  static _normalizeRegName(host, start, end) {
    let buffer = null;
    let sectionStart = start;
    let index = start;
    let isNormalized = true;
    while (dart.notNull(index) < dart.notNull(end)) {
      let char = host[$codeUnitAt](index);
      if (char === 37) {
        let replacement = core._Uri._normalizeEscape(host, index, true);
        if (replacement == null && isNormalized) {
          index = dart.notNull(index) + 3;
          continue;
        }
        let t = buffer;
        t == null ? buffer = new core.StringBuffer.new() : t;
        let slice = host[$substring](sectionStart, index);
        if (!isNormalized) slice = slice[$toLowerCase]();
        buffer.write(slice);
        let sourceLength = 3;
        if (replacement == null) {
          replacement = host[$substring](index, dart.notNull(index) + 3);
        } else if (replacement === "%") {
          replacement = "%25";
          sourceLength = 1;
        }
        buffer.write(replacement);
        index = dart.notNull(index) + sourceLength;
        sectionStart = index;
        isNormalized = true;
      } else if (dart.test(core._Uri._isRegNameChar(char))) {
        if (isNormalized && 65 <= char && 90 >= char) {
          let t$ = buffer;
          t$ == null ? buffer = new core.StringBuffer.new() : t$;
          if (dart.notNull(sectionStart) < dart.notNull(index)) {
            buffer.write(host[$substring](sectionStart, index));
            sectionStart = index;
          }
          isNormalized = false;
        }
        index = dart.notNull(index) + 1;
      } else if (dart.test(core._Uri._isGeneralDelimiter(char))) {
        core._Uri._fail(host, index, "Invalid character");
      } else {
        let sourceLength = 1;
        if ((char & 64512) === 55296 && dart.notNull(index) + 1 < dart.notNull(end)) {
          let tail = host[$codeUnitAt](dart.notNull(index) + 1);
          if ((tail & 64512) === 56320) {
            char = 65536 | (char & 1023) << 10 | tail & 1023;
            sourceLength = 2;
          }
        }
        let t$0 = buffer;
        t$0 == null ? buffer = new core.StringBuffer.new() : t$0;
        let slice = host[$substring](sectionStart, index);
        if (!isNormalized) slice = slice[$toLowerCase]();
        buffer.write(slice);
        buffer.write(core._Uri._escapeChar(char));
        index = dart.notNull(index) + sourceLength;
        sectionStart = index;
      }
    }
    if (buffer == null) return host[$substring](start, end);
    if (dart.notNull(sectionStart) < dart.notNull(end)) {
      let slice = host[$substring](sectionStart, end);
      if (!isNormalized) slice = slice[$toLowerCase]();
      buffer.write(slice);
    }
    return dart.toString(buffer);
  }
  static _makeScheme(scheme, start, end) {
    if (start == end) return "";
    let firstCodeUnit = scheme[$codeUnitAt](start);
    if (!dart.test(core._Uri._isAlphabeticCharacter(firstCodeUnit))) {
      core._Uri._fail(scheme, start, "Scheme not starting with alphabetic character");
    }
    let containsUpperCase = false;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let codeUnit = scheme[$codeUnitAt](i);
      if (!dart.test(core._Uri._isSchemeCharacter(codeUnit))) {
        core._Uri._fail(scheme, i, "Illegal scheme character");
      }
      if (65 <= codeUnit && codeUnit <= 90) {
        containsUpperCase = true;
      }
    }
    scheme = scheme[$substring](start, end);
    if (containsUpperCase) scheme = scheme[$toLowerCase]();
    return core._Uri._canonicalizeScheme(scheme);
  }
  static _canonicalizeScheme(scheme) {
    if (scheme === "http") return "http";
    if (scheme === "file") return "file";
    if (scheme === "https") return "https";
    if (scheme === "package") return "package";
    return scheme;
  }
  static _makeUserInfo(userInfo, start, end) {
    if (userInfo == null) return "";
    return core._Uri._normalizeOrSubstring(userInfo, start, end, core._Uri._userinfoTable);
  }
  static _makePath(path, start, end, pathSegments, scheme, hasAuthority) {
    let isFile = scheme === "file";
    let ensureLeadingSlash = isFile || dart.test(hasAuthority);
    if (path == null && pathSegments == null) return isFile ? "/" : "";
    if (path != null && pathSegments != null) {
      dart.throw(new core.ArgumentError.new("Both path and pathSegments specified"));
    }
    let result = null;
    if (path != null) {
      result = core._Uri._normalizeOrSubstring(path, start, end, core._Uri._pathCharOrSlashTable, {escapeDelimiters: true});
    } else {
      result = IterableOfString()._check(pathSegments[$map](core.String, dart.fn(s => core._Uri._uriEncode(core._Uri._pathCharTable, s, convert.utf8, false), StringToString())))[$join]("/");
    }
    if (result[$isEmpty]) {
      if (isFile) return "/";
    } else if (ensureLeadingSlash && !result[$startsWith]("/")) {
      result = "/" + dart.notNull(result);
    }
    result = core._Uri._normalizePath(result, scheme, hasAuthority);
    return result;
  }
  static _normalizePath(path, scheme, hasAuthority) {
    if (scheme[$isEmpty] && !dart.test(hasAuthority) && !path[$startsWith]("/")) {
      return core._Uri._normalizeRelativePath(path, scheme[$isNotEmpty] || dart.test(hasAuthority));
    }
    return core._Uri._removeDotSegments(path);
  }
  static _makeQuery(query, start, end, queryParameters) {
    if (query != null) {
      if (queryParameters != null) {
        dart.throw(new core.ArgumentError.new("Both query and queryParameters specified"));
      }
      return core._Uri._normalizeOrSubstring(query, start, end, core._Uri._queryCharTable, {escapeDelimiters: true});
    }
    if (queryParameters == null) return null;
    let result = new core.StringBuffer.new();
    let separator = "";
    function writeParameter(key, value) {
      result.write(separator);
      separator = "&";
      result.write(core.Uri.encodeQueryComponent(key));
      if (value != null && value[$isNotEmpty]) {
        result.write("=");
        result.write(core.Uri.encodeQueryComponent(value));
      }
    }
    dart.fn(writeParameter, StringAndStringTovoid());
    queryParameters[$forEach](dart.fn((key, value) => {
      if (value == null || typeof value == 'string') {
        writeParameter(key, core.String._check(value));
      } else {
        let values = core.Iterable._check(value);
        for (let value of values) {
          core.String._check(value);
          writeParameter(key, value);
        }
      }
    }, StringAnddynamicToNull()));
    return result.toString();
  }
  static _makeFragment(fragment, start, end) {
    if (fragment == null) return null;
    return core._Uri._normalizeOrSubstring(fragment, start, end, core._Uri._queryCharTable, {escapeDelimiters: true});
  }
  static _normalizeEscape(source, index, lowerCase) {
    if (!(source[$codeUnitAt](index) === 37)) dart.assertFailed();
    if (dart.notNull(index) + 2 >= source.length) {
      return "%";
    }
    let firstDigit = source[$codeUnitAt](dart.notNull(index) + 1);
    let secondDigit = source[$codeUnitAt](dart.notNull(index) + 2);
    let firstDigitValue = _internal.hexDigitValue(firstDigit);
    let secondDigitValue = _internal.hexDigitValue(secondDigit);
    if (dart.notNull(firstDigitValue) < 0 || dart.notNull(secondDigitValue) < 0) {
      return "%";
    }
    let value = dart.notNull(firstDigitValue) * 16 + dart.notNull(secondDigitValue);
    if (dart.test(core._Uri._isUnreservedChar(value))) {
      if (dart.test(lowerCase) && 65 <= value && 90 >= value) {
        value = (value | 32) >>> 0;
      }
      return core.String.fromCharCode(value);
    }
    if (firstDigit >= 97 || secondDigit >= 97) {
      return source[$substring](index, dart.notNull(index) + 3)[$toUpperCase]();
    }
    return null;
  }
  static _escapeChar(char) {
    if (!(dart.notNull(char) <= 1114111)) dart.assertFailed();
    let codeUnits = null;
    if (dart.notNull(char) < 128) {
      codeUnits = ListOfint().new(3);
      codeUnits[$_set](0, 37);
      codeUnits[$_set](1, "0123456789ABCDEF"[$codeUnitAt](char[$rightShift](4)));
      codeUnits[$_set](2, "0123456789ABCDEF"[$codeUnitAt](dart.notNull(char) & 15));
    } else {
      let flag = 192;
      let encodedBytes = 2;
      if (dart.notNull(char) > 2047) {
        flag = 224;
        encodedBytes = 3;
        if (dart.notNull(char) > 65535) {
          encodedBytes = 4;
          flag = 240;
        }
      }
      codeUnits = ListOfint().new(3 * encodedBytes);
      let index = 0;
      while (--encodedBytes >= 0) {
        let byte = (char[$rightShift](6 * encodedBytes) & 63 | flag) >>> 0;
        codeUnits[$_set](index, 37);
        codeUnits[$_set](index + 1, "0123456789ABCDEF"[$codeUnitAt](byte[$rightShift](4)));
        codeUnits[$_set](index + 2, "0123456789ABCDEF"[$codeUnitAt](byte & 15));
        index = index + 3;
        flag = 128;
      }
    }
    return core.String.fromCharCodes(codeUnits);
  }
  static _normalizeOrSubstring(component, start, end, charTable, opts) {
    let escapeDelimiters = opts && 'escapeDelimiters' in opts ? opts.escapeDelimiters : false;
    let l = core._Uri._normalize(component, start, end, charTable, {escapeDelimiters: escapeDelimiters});
    return l != null ? l : component[$substring](start, end);
  }
  static _normalize(component, start, end, charTable, opts) {
    let escapeDelimiters = opts && 'escapeDelimiters' in opts ? opts.escapeDelimiters : false;
    let buffer = null;
    let sectionStart = start;
    let index = start;
    while (dart.notNull(index) < dart.notNull(end)) {
      let char = component[$codeUnitAt](index);
      if (char < 127 && (dart.notNull(charTable[$_get](char[$rightShift](4))) & 1 << (char & 15)) !== 0) {
        index = dart.notNull(index) + 1;
      } else {
        let replacement = null;
        let sourceLength = null;
        if (char === 37) {
          replacement = core._Uri._normalizeEscape(component, index, false);
          if (replacement == null) {
            index = dart.notNull(index) + 3;
            continue;
          }
          if ("%" === replacement) {
            replacement = "%25";
            sourceLength = 1;
          } else {
            sourceLength = 3;
          }
        } else if (!dart.test(escapeDelimiters) && dart.test(core._Uri._isGeneralDelimiter(char))) {
          core._Uri._fail(component, index, "Invalid character");
        } else {
          sourceLength = 1;
          if ((char & 64512) === 55296) {
            if (dart.notNull(index) + 1 < dart.notNull(end)) {
              let tail = component[$codeUnitAt](dart.notNull(index) + 1);
              if ((tail & 64512) === 56320) {
                sourceLength = 2;
                char = 65536 | (char & 1023) << 10 | tail & 1023;
              }
            }
          }
          replacement = core._Uri._escapeChar(char);
        }
        let t = buffer;
        t == null ? buffer = new core.StringBuffer.new() : t;
        buffer.write(component[$substring](sectionStart, index));
        buffer.write(replacement);
        index = dart.notNull(index) + dart.notNull(sourceLength);
        sectionStart = index;
      }
    }
    if (buffer == null) {
      return null;
    }
    if (dart.notNull(sectionStart) < dart.notNull(end)) {
      buffer.write(component[$substring](sectionStart, end));
    }
    return dart.toString(buffer);
  }
  static _isSchemeCharacter(ch) {
    return dart.notNull(ch) < 128 && (dart.notNull(core._Uri._schemeTable[$_get](ch[$rightShift](4))) & 1 << (dart.notNull(ch) & 15)) !== 0;
  }
  static _isGeneralDelimiter(ch) {
    return dart.notNull(ch) <= 93 && (dart.notNull(core._Uri._genDelimitersTable[$_get](ch[$rightShift](4))) & 1 << (dart.notNull(ch) & 15)) !== 0;
  }
  get isAbsolute() {
    return this.scheme !== "" && this.fragment === "";
  }
  [_mergePaths](base, reference) {
    let backCount = 0;
    let refStart = 0;
    while (reference[$startsWith]("../", refStart)) {
      refStart = refStart + 3;
      backCount++;
    }
    let baseEnd = base[$lastIndexOf]("/");
    while (baseEnd > 0 && backCount > 0) {
      let newEnd = base[$lastIndexOf]("/", baseEnd - 1);
      if (newEnd < 0) {
        break;
      }
      let delta = baseEnd - newEnd;
      if ((delta === 2 || delta === 3) && base[$codeUnitAt](newEnd + 1) === 46 && (delta === 2 || base[$codeUnitAt](newEnd + 2) === 46)) {
        break;
      }
      baseEnd = newEnd;
      backCount--;
    }
    return base[$replaceRange](baseEnd + 1, null, reference[$substring](refStart - 3 * backCount));
  }
  static _mayContainDotSegments(path) {
    if (path[$startsWith](".")) return true;
    let index = path[$indexOf]("/.");
    return index !== -1;
  }
  static _removeDotSegments(path) {
    if (!dart.test(core._Uri._mayContainDotSegments(path))) return path;
    if (!path[$isNotEmpty]) dart.assertFailed();
    let output = JSArrayOfString().of([]);
    let appendSlash = false;
    for (let segment of path[$split]("/")) {
      appendSlash = false;
      if (segment === "..") {
        if (dart.test(output[$isNotEmpty])) {
          output[$removeLast]();
          if (dart.test(output[$isEmpty])) {
            output[$add]("");
          }
        }
        appendSlash = true;
      } else if ("." === segment) {
        appendSlash = true;
      } else {
        output[$add](segment);
      }
    }
    if (appendSlash) output[$add]("");
    return output[$join]("/");
  }
  static _normalizeRelativePath(path, allowScheme) {
    if (!!path[$startsWith]("/")) dart.assertFailed();
    if (!dart.test(core._Uri._mayContainDotSegments(path))) {
      if (!dart.test(allowScheme)) path = core._Uri._escapeScheme(path);
      return path;
    }
    if (!path[$isNotEmpty]) dart.assertFailed();
    let output = JSArrayOfString().of([]);
    let appendSlash = false;
    for (let segment of path[$split]("/")) {
      appendSlash = false;
      if (".." === segment) {
        if (!dart.test(output[$isEmpty]) && output[$last] !== "..") {
          output[$removeLast]();
          appendSlash = true;
        } else {
          output[$add]("..");
        }
      } else if ("." === segment) {
        appendSlash = true;
      } else {
        output[$add](segment);
      }
    }
    if (dart.test(output[$isEmpty]) || output[$length] === 1 && output[$_get](0)[$isEmpty]) {
      return "./";
    }
    if (appendSlash || output[$last] === "..") output[$add]("");
    if (!dart.test(allowScheme)) output[$_set](0, core._Uri._escapeScheme(output[$_get](0)));
    return output[$join]("/");
  }
  static _escapeScheme(path) {
    if (path.length >= 2 && dart.test(core._Uri._isAlphabeticCharacter(path[$codeUnitAt](0)))) {
      for (let i = 1; i < path.length; i++) {
        let char = path[$codeUnitAt](i);
        if (char === 58) {
          return path[$substring](0, i) + "%3A" + path[$substring](i + 1);
        }
        if (char > 127 || (dart.notNull(core._Uri._schemeTable[$_get](char[$rightShift](4))) & 1 << (char & 15)) === 0) {
          break;
        }
      }
    }
    return path;
  }
  resolve(reference) {
    return this.resolveUri(core.Uri.parse(reference));
  }
  resolveUri(reference) {
    let targetScheme = null;
    let targetUserInfo = "";
    let targetHost = null;
    let targetPort = null;
    let targetPath = null;
    let targetQuery = null;
    if (reference.scheme[$isNotEmpty]) {
      targetScheme = reference.scheme;
      if (dart.test(reference.hasAuthority)) {
        targetUserInfo = reference.userInfo;
        targetHost = reference.host;
        targetPort = dart.test(reference.hasPort) ? reference.port : null;
      }
      targetPath = core._Uri._removeDotSegments(reference.path);
      if (dart.test(reference.hasQuery)) {
        targetQuery = reference.query;
      }
    } else {
      targetScheme = this.scheme;
      if (dart.test(reference.hasAuthority)) {
        targetUserInfo = reference.userInfo;
        targetHost = reference.host;
        targetPort = core._Uri._makePort(dart.test(reference.hasPort) ? reference.port : null, targetScheme);
        targetPath = core._Uri._removeDotSegments(reference.path);
        if (dart.test(reference.hasQuery)) targetQuery = reference.query;
      } else {
        targetUserInfo = this[_userInfo];
        targetHost = this[_host];
        targetPort = this[_port];
        if (reference.path === "") {
          targetPath = this.path;
          if (dart.test(reference.hasQuery)) {
            targetQuery = reference.query;
          } else {
            targetQuery = this[_query];
          }
        } else {
          if (dart.test(reference.hasAbsolutePath)) {
            targetPath = core._Uri._removeDotSegments(reference.path);
          } else {
            if (dart.test(this.hasEmptyPath)) {
              if (!dart.test(this.hasAuthority)) {
                if (!dart.test(this.hasScheme)) {
                  targetPath = reference.path;
                } else {
                  targetPath = core._Uri._removeDotSegments(reference.path);
                }
              } else {
                targetPath = core._Uri._removeDotSegments("/" + dart.notNull(reference.path));
              }
            } else {
              let mergedPath = this[_mergePaths](this.path, reference.path);
              if (dart.test(this.hasScheme) || dart.test(this.hasAuthority) || dart.test(this.hasAbsolutePath)) {
                targetPath = core._Uri._removeDotSegments(mergedPath);
              } else {
                targetPath = core._Uri._normalizeRelativePath(mergedPath, dart.test(this.hasScheme) || dart.test(this.hasAuthority));
              }
            }
          }
          if (dart.test(reference.hasQuery)) targetQuery = reference.query;
        }
      }
    }
    let fragment = dart.test(reference.hasFragment) ? reference.fragment : null;
    return new core._Uri._internal(targetScheme, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, fragment);
  }
  get hasScheme() {
    return this.scheme[$isNotEmpty];
  }
  get hasAuthority() {
    return this[_host] != null;
  }
  get hasPort() {
    return this[_port] != null;
  }
  get hasQuery() {
    return this[_query] != null;
  }
  get hasFragment() {
    return this[_fragment] != null;
  }
  get hasEmptyPath() {
    return this.path[$isEmpty];
  }
  get hasAbsolutePath() {
    return this.path[$startsWith]("/");
  }
  get origin() {
    if (this.scheme === "") {
      dart.throw(new core.StateError.new("Cannot use origin without a scheme: " + dart.str(this)));
    }
    if (this.scheme !== "http" && this.scheme !== "https") {
      dart.throw(new core.StateError.new("Origin is only applicable schemes http and https: " + dart.str(this)));
    }
    if (this[_host] == null || this[_host] === "") {
      dart.throw(new core.StateError.new("A " + dart.str(this.scheme) + ": URI should have a non-empty host name: " + dart.str(this)));
    }
    if (this[_port] == null) return dart.str(this.scheme) + "://" + dart.str(this[_host]);
    return dart.str(this.scheme) + "://" + dart.str(this[_host]) + ":" + dart.str(this[_port]);
  }
  toFilePath(opts) {
    let windows = opts && 'windows' in opts ? opts.windows : null;
    if (this.scheme !== "" && this.scheme !== "file") {
      dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a " + dart.str(this.scheme) + " URI"));
    }
    if (this.query !== "") {
      dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a URI with a query component"));
    }
    if (this.fragment !== "") {
      dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a URI with a fragment component"));
    }
    let t = windows;
    t == null ? windows = core._Uri._isWindows : t;
    return dart.test(windows) ? core._Uri._toWindowsFilePath(this) : this[_toFilePath]();
  }
  [_toFilePath]() {
    if (dart.test(this.hasAuthority) && this.host !== "") {
      dart.throw(new core.UnsupportedError.new("Cannot extract a non-Windows file path from a file URI " + "with an authority"));
    }
    let pathSegments = this.pathSegments;
    core._Uri._checkNonWindowsPathReservedCharacters(pathSegments, false);
    let result = new core.StringBuffer.new();
    if (dart.test(this.hasAbsolutePath)) result.write("/");
    result.writeAll(pathSegments, "/");
    return result.toString();
  }
  static _toWindowsFilePath(uri) {
    let hasDriveLetter = false;
    let segments = uri.pathSegments;
    if (dart.notNull(segments[$length]) > 0 && segments[$_get](0).length === 2 && segments[$_get](0)[$codeUnitAt](1) === 58) {
      core._Uri._checkWindowsDriveLetter(segments[$_get](0)[$codeUnitAt](0), false);
      core._Uri._checkWindowsPathReservedCharacters(segments, false, 1);
      hasDriveLetter = true;
    } else {
      core._Uri._checkWindowsPathReservedCharacters(segments, false, 0);
    }
    let result = new core.StringBuffer.new();
    if (dart.test(uri.hasAbsolutePath) && !hasDriveLetter) result.write("\\");
    if (dart.test(uri.hasAuthority)) {
      let host = uri.host;
      if (host[$isNotEmpty]) {
        result.write("\\");
        result.write(host);
        result.write("\\");
      }
    }
    result.writeAll(segments, "\\");
    if (hasDriveLetter && segments[$length] === 1) result.write("\\");
    return result.toString();
  }
  get [_isPathAbsolute]() {
    return this.path != null && this.path[$startsWith]("/");
  }
  [_writeAuthority](ss) {
    if (this[_userInfo][$isNotEmpty]) {
      ss.write(this[_userInfo]);
      ss.write("@");
    }
    if (this[_host] != null) ss.write(this[_host]);
    if (this[_port] != null) {
      ss.write(":");
      ss.write(this[_port]);
    }
  }
  get data() {
    return this.scheme === "data" ? core.UriData.fromUri(this) : null;
  }
  toString() {
    let t = this[_text];
    return t == null ? this[_text] = this[_initializeText]() : t;
  }
  [_initializeText]() {
    if (!(this[_text] == null)) dart.assertFailed();
    let sb = new core.StringBuffer.new();
    if (this.scheme[$isNotEmpty]) {
      sb.write(this.scheme);
      sb.write(":");
    }
    if (dart.test(this.hasAuthority) || this.scheme === "file") {
      sb.write("//");
      this[_writeAuthority](sb);
    }
    sb.write(this.path);
    if (this[_query] != null) {
      sb.write("?");
      sb.write(this[_query]);
    }
    if (this[_fragment] != null) {
      sb.write("#");
      sb.write(this[_fragment]);
    }
    return sb.toString();
  }
  _equals(other) {
    if (this === other) return true;
    return core.Uri.is(other) && this.scheme == other.scheme && this.hasAuthority == other.hasAuthority && this.userInfo == other.userInfo && this.host == other.host && this.port == other.port && this.path == other.path && this.hasQuery == other.hasQuery && this.query == other.query && this.hasFragment == other.hasFragment && this.fragment == other.fragment;
  }
  get hashCode() {
    let t = this[_hashCodeCache];
    return t == null ? this[_hashCodeCache] = dart.hashCode(this.toString()) : t;
  }
  static _createList() {
    return JSArrayOfString().of([]);
  }
  static _splitQueryStringAll(query, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    let result = new (IdentityMapOfString$ListOfString()).new();
    let i = 0;
    let start = 0;
    let equalsIndex = -1;
    function parsePair(start, equalsIndex, end) {
      let key = null;
      let value = null;
      if (start == end) return;
      if (dart.notNull(equalsIndex) < 0) {
        key = core._Uri._uriDecode(query, start, end, encoding, true);
        value = "";
      } else {
        key = core._Uri._uriDecode(query, start, equalsIndex, encoding, true);
        value = core._Uri._uriDecode(query, dart.notNull(equalsIndex) + 1, end, encoding, true);
      }
      result[$putIfAbsent](key, dart.fn(core._Uri._createList, VoidToListOfString()))[$add](value);
    }
    dart.fn(parsePair, intAndintAndintTovoid());
    while (i < query.length) {
      let char = query[$codeUnitAt](i);
      if (char === 61) {
        if (equalsIndex < 0) equalsIndex = i;
      } else if (char === 38) {
        parsePair(start, equalsIndex, i);
        start = i + 1;
        equalsIndex = -1;
      }
      i++;
    }
    parsePair(start, equalsIndex, i);
    return result;
  }
  static _uriEncode(canonicalTable, text, encoding, spaceToPlus) {
    if (encoding === convert.utf8 && dart.test(core._Uri._needsNoEncoding.hasMatch(text))) {
      return text;
    }
    let result = new core.StringBuffer.new("");
    let bytes = encoding.encode(text);
    for (let i = 0; i < dart.notNull(bytes[$length]); i++) {
      let byte = bytes[$_get](i);
      if (dart.notNull(byte) < 128 && (dart.notNull(canonicalTable[$_get](byte[$rightShift](4))) & 1 << (dart.notNull(byte) & 15)) !== 0) {
        result.writeCharCode(byte);
      } else if (dart.test(spaceToPlus) && byte === 32) {
        result.write("+");
      } else {
        let hexDigits = "0123456789ABCDEF";
        result.write("%");
        result.write(hexDigits[$_get](dart.notNull(byte) >> 4 & 15));
        result.write(hexDigits[$_get](dart.notNull(byte) & 15));
      }
    }
    return result.toString();
  }
  static _hexCharPairToByte(s, pos) {
    let byte = 0;
    for (let i = 0; i < 2; i++) {
      let charCode = s[$codeUnitAt](dart.notNull(pos) + i);
      if (48 <= charCode && charCode <= 57) {
        byte = byte * 16 + charCode - 48;
      } else {
        charCode = (charCode | 32) >>> 0;
        if (97 <= charCode && charCode <= 102) {
          byte = byte * 16 + charCode - 87;
        } else {
          dart.throw(new core.ArgumentError.new("Invalid URL encoding"));
        }
      }
    }
    return byte;
  }
  static _uriDecode(text, start, end, encoding, plusToSpace) {
    if (!(0 <= dart.notNull(start))) dart.assertFailed();
    if (!(dart.notNull(start) <= dart.notNull(end))) dart.assertFailed();
    if (!(dart.notNull(end) <= text.length)) dart.assertFailed();
    if (!(encoding != null)) dart.assertFailed();
    let simple = true;
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let codeUnit = text[$codeUnitAt](i);
      if (codeUnit > 127 || codeUnit === 37 || dart.test(plusToSpace) && codeUnit === 43) {
        simple = false;
        break;
      }
    }
    let bytes = null;
    if (simple) {
      if (convert.utf8._equals(encoding) || convert.latin1._equals(encoding) || convert.ascii._equals(encoding)) {
        return text[$substring](start, end);
      } else {
        bytes = text[$substring](start, end)[$codeUnits];
      }
    } else {
      bytes = JSArrayOfint().of([]);
      for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
        let codeUnit = text[$codeUnitAt](i);
        if (codeUnit > 127) {
          dart.throw(new core.ArgumentError.new("Illegal percent encoding in URI"));
        }
        if (codeUnit === 37) {
          if (dart.notNull(i) + 3 > text.length) {
            dart.throw(new core.ArgumentError.new("Truncated URI"));
          }
          bytes[$add](core._Uri._hexCharPairToByte(text, dart.notNull(i) + 1));
          i = dart.notNull(i) + 2;
        } else if (dart.test(plusToSpace) && codeUnit === 43) {
          bytes[$add](32);
        } else {
          bytes[$add](codeUnit);
        }
      }
    }
    return encoding.decode(bytes);
  }
  static _isAlphabeticCharacter(codeUnit) {
    let lowerCase = (dart.notNull(codeUnit) | 32) >>> 0;
    return 97 <= lowerCase && lowerCase <= 122;
  }
  static _isUnreservedChar(char) {
    return dart.notNull(char) < 127 && (dart.notNull(core._Uri._unreservedTable[$_get](char[$rightShift](4))) & 1 << (dart.notNull(char) & 15)) !== 0;
  }
};
(core._Uri._internal = function(scheme, userInfo, host, port, path, query, fragment) {
  this[_pathSegments] = null;
  this[_text] = null;
  this[_hashCodeCache] = null;
  this[_queryParameters] = null;
  this[_queryParameterLists] = null;
  this.scheme = scheme;
  this[_userInfo] = userInfo;
  this[_host] = host;
  this[_port] = port;
  this.path = path;
  this[_query] = query;
  this[_fragment] = fragment;
}).prototype = core._Uri.prototype;
dart.addTypeTests(core._Uri);
core._Uri[dart.implements] = () => [core.Uri];
dart.setMethodSignature(core._Uri, () => ({
  __proto__: dart.getMethods(core._Uri.__proto__),
  isScheme: dart.fnType(core.bool, [core.String]),
  replace: dart.fnType(core.Uri, [], {scheme: core.String, userInfo: core.String, host: core.String, port: core.int, path: core.String, pathSegments: core.Iterable$(core.String), query: core.String, queryParameters: core.Map$(core.String, dart.dynamic), fragment: core.String}),
  removeFragment: dart.fnType(core.Uri, []),
  normalizePath: dart.fnType(core.Uri, []),
  [_mergePaths]: dart.fnType(core.String, [core.String, core.String]),
  resolve: dart.fnType(core.Uri, [core.String]),
  resolveUri: dart.fnType(core.Uri, [core.Uri]),
  toFilePath: dart.fnType(core.String, [], {windows: core.bool}),
  [_toFilePath]: dart.fnType(core.String, []),
  [_writeAuthority]: dart.fnType(dart.void, [core.StringSink]),
  [_initializeText]: dart.fnType(core.String, []),
  _equals: dart.fnType(core.bool, [core.Object]),
  [$_equals]: dart.fnType(core.bool, [core.Object])
}));
dart.setGetterSignature(core._Uri, () => ({
  __proto__: dart.getGetters(core._Uri.__proto__),
  authority: core.String,
  userInfo: core.String,
  host: core.String,
  port: core.int,
  query: core.String,
  fragment: core.String,
  pathSegments: core.List$(core.String),
  queryParameters: core.Map$(core.String, core.String),
  queryParametersAll: core.Map$(core.String, core.List$(core.String)),
  isAbsolute: core.bool,
  hasScheme: core.bool,
  hasAuthority: core.bool,
  hasPort: core.bool,
  hasQuery: core.bool,
  hasFragment: core.bool,
  hasEmptyPath: core.bool,
  hasAbsolutePath: core.bool,
  origin: core.String,
  [_isPathAbsolute]: core.bool,
  data: core.UriData
}));
dart.setFieldSignature(core._Uri, () => ({
  __proto__: dart.getFields(core._Uri.__proto__),
  scheme: dart.finalFieldType(core.String),
  [_userInfo]: dart.finalFieldType(core.String),
  [_host]: dart.finalFieldType(core.String),
  [_port]: dart.fieldType(core.int),
  path: dart.finalFieldType(core.String),
  [_query]: dart.finalFieldType(core.String),
  [_fragment]: dart.finalFieldType(core.String),
  [_pathSegments]: dart.fieldType(ListOfString()),
  [_text]: dart.fieldType(core.String),
  [_hashCodeCache]: dart.fieldType(core.int),
  [_queryParameters]: dart.fieldType(MapOfString$String()),
  [_queryParameterLists]: dart.fieldType(MapOfString$ListOfString())
}));
dart.defineExtensionMethods(core._Uri, ['toString', '_equals']);
dart.defineExtensionAccessors(core._Uri, ['hashCode']);
dart.defineLazy(core._Uri, {
  /*core._Uri._unreservedTable*/get _unreservedTable() {
    return dart.constList([0, 0, 24576, 1023, 65534, 34815, 65534, 18431], core.int);
  },
  /*core._Uri._unreserved2396Table*/get _unreserved2396Table() {
    return dart.constList([0, 0, 26498, 1023, 65534, 34815, 65534, 18431], core.int);
  },
  /*core._Uri._encodeFullTable*/get _encodeFullTable() {
    return dart.constList([0, 0, 65498, 45055, 65535, 34815, 65534, 18431], core.int);
  },
  /*core._Uri._schemeTable*/get _schemeTable() {
    return dart.constList([0, 0, 26624, 1023, 65534, 2047, 65534, 2047], core.int);
  },
  /*core._Uri._schemeLowerTable*/get _schemeLowerTable() {
    return dart.constList([0, 0, 26624, 1023, 0, 0, 65534, 2047], core.int);
  },
  /*core._Uri._subDelimitersTable*/get _subDelimitersTable() {
    return dart.constList([0, 0, 32722, 11263, 65534, 34815, 65534, 18431], core.int);
  },
  /*core._Uri._genDelimitersTable*/get _genDelimitersTable() {
    return dart.constList([0, 0, 32776, 33792, 1, 10240, 0, 0], core.int);
  },
  /*core._Uri._userinfoTable*/get _userinfoTable() {
    return dart.constList([0, 0, 32722, 12287, 65534, 34815, 65534, 18431], core.int);
  },
  /*core._Uri._regNameTable*/get _regNameTable() {
    return dart.constList([0, 0, 32754, 11263, 65534, 34815, 65534, 18431], core.int);
  },
  /*core._Uri._pathCharTable*/get _pathCharTable() {
    return dart.constList([0, 0, 32722, 12287, 65535, 34815, 65534, 18431], core.int);
  },
  /*core._Uri._pathCharOrSlashTable*/get _pathCharOrSlashTable() {
    return dart.constList([0, 0, 65490, 12287, 65535, 34815, 65534, 18431], core.int);
  },
  /*core._Uri._queryCharTable*/get _queryCharTable() {
    return dart.constList([0, 0, 65490, 45055, 65535, 34815, 65534, 18431], core.int);
  },
  /*core._Uri._isWindowsCached*/get _isWindowsCached() {
    return typeof process != "undefined" && Object.prototype.toString.call(process) == "[object process]" && process.platform == "win32";
  },
  /*core._Uri._needsNoEncoding*/get _needsNoEncoding() {
    return core.RegExp.new("^[\\-\\.0-9A-Z_a-z~]*$");
  }
});
const _separatorIndices = Symbol('_separatorIndices');
const _uriCache = Symbol('_uriCache');
core.UriData = class UriData extends core.Object {
  static fromString(content, opts) {
    let mimeType = opts && 'mimeType' in opts ? opts.mimeType : null;
    let encoding = opts && 'encoding' in opts ? opts.encoding : null;
    let parameters = opts && 'parameters' in opts ? opts.parameters : null;
    let base64 = opts && 'base64' in opts ? opts.base64 : false;
    let buffer = new core.StringBuffer.new();
    let indices = JSArrayOfint().of([-1]);
    let charsetName = null;
    let encodingName = null;
    if (parameters != null) charsetName = parameters[$_get]("charset");
    if (encoding == null) {
      if (charsetName != null) {
        encoding = convert.Encoding.getByName(charsetName);
      }
    } else if (charsetName == null) {
      encodingName = encoding.name;
    }
    let t = encoding;
    t == null ? encoding = convert.ascii : t;
    core.UriData._writeUri(mimeType, encodingName, parameters, buffer, indices);
    indices[$add](buffer.length);
    if (dart.test(base64)) {
      buffer.write(";base64,");
      indices[$add](dart.notNull(buffer.length) - 1);
      buffer.write(encoding.fuse(core.String, core.UriData._base64).encode(content));
    } else {
      buffer.write(",");
      core.UriData._uriEncodeBytes(core.UriData._uricTable, encoding.encode(content), buffer);
    }
    return new core.UriData.__(buffer.toString(), indices, null);
  }
  static fromBytes(bytes, opts) {
    let mimeType = opts && 'mimeType' in opts ? opts.mimeType : "application/octet-stream";
    let parameters = opts && 'parameters' in opts ? opts.parameters : null;
    let percentEncoded = opts && 'percentEncoded' in opts ? opts.percentEncoded : false;
    let buffer = new core.StringBuffer.new();
    let indices = JSArrayOfint().of([-1]);
    core.UriData._writeUri(core.String._check(mimeType), null, parameters, buffer, indices);
    indices[$add](buffer.length);
    if (dart.dtest(percentEncoded)) {
      buffer.write(",");
      core.UriData._uriEncodeBytes(core.UriData._uricTable, bytes, buffer);
    } else {
      buffer.write(";base64,");
      indices[$add](dart.notNull(buffer.length) - 1);
      core.UriData._base64.encoder.startChunkedConversion(convert.StringConversionSink.fromStringSink(buffer)).addSlice(bytes, 0, bytes[$length], true);
    }
    return new core.UriData.__(buffer.toString(), indices, null);
  }
  static fromUri(uri) {
    if (uri.scheme !== "data") {
      dart.throw(new core.ArgumentError.value(uri, "uri", "Scheme must be 'data'"));
    }
    if (dart.test(uri.hasAuthority)) {
      dart.throw(new core.ArgumentError.value(uri, "uri", "Data uri must not have authority"));
    }
    if (dart.test(uri.hasFragment)) {
      dart.throw(new core.ArgumentError.value(uri, "uri", "Data uri must not have a fragment part"));
    }
    if (!dart.test(uri.hasQuery)) {
      return core.UriData._parse(uri.path, 0, uri);
    }
    return core.UriData._parse(dart.str(uri), 5, uri);
  }
  static _writeUri(mimeType, charsetName, parameters, buffer, indices) {
    if (mimeType == null || mimeType === "text/plain") {
      mimeType = "";
    }
    if (mimeType[$isEmpty] || mimeType === "application/octet-stream") {
      buffer.write(mimeType);
    } else {
      let slashIndex = core.UriData._validateMimeType(mimeType);
      if (dart.notNull(slashIndex) < 0) {
        dart.throw(new core.ArgumentError.value(mimeType, "mimeType", "Invalid MIME type"));
      }
      buffer.write(core._Uri._uriEncode(core.UriData._tokenCharTable, mimeType[$substring](0, slashIndex), convert.utf8, false));
      buffer.write("/");
      buffer.write(core._Uri._uriEncode(core.UriData._tokenCharTable, mimeType[$substring](dart.notNull(slashIndex) + 1), convert.utf8, false));
    }
    if (charsetName != null) {
      if (indices != null) {
        indices[$add](buffer.length);
        indices[$add](dart.notNull(buffer.length) + 8);
      }
      buffer.write(";charset=");
      buffer.write(core._Uri._uriEncode(core.UriData._tokenCharTable, charsetName, convert.utf8, false));
    }
    parameters == null ? null : parameters[$forEach](dart.fn((key, value) => {
      if (key[$isEmpty]) {
        dart.throw(new core.ArgumentError.value("", "Parameter names must not be empty"));
      }
      if (value[$isEmpty]) {
        dart.throw(new core.ArgumentError.value("", "Parameter values must not be empty", "parameters[\"" + dart.str(key) + "\"]"));
      }
      if (indices != null) indices[$add](buffer.length);
      buffer.write(";");
      buffer.write(core._Uri._uriEncode(core.UriData._tokenCharTable, key, convert.utf8, false));
      if (indices != null) indices[$add](buffer.length);
      buffer.write("=");
      buffer.write(core._Uri._uriEncode(core.UriData._tokenCharTable, value, convert.utf8, false));
    }, StringAndStringToNull()));
  }
  static _validateMimeType(mimeType) {
    let slashIndex = -1;
    for (let i = 0; i < mimeType.length; i++) {
      let char = mimeType[$codeUnitAt](i);
      if (char !== 47) continue;
      if (slashIndex < 0) {
        slashIndex = i;
        continue;
      }
      return -1;
    }
    return slashIndex;
  }
  static parse(uri) {
    if (uri.length >= 5) {
      let dataDelta = core._startsWithData(uri, 0);
      if (dataDelta === 0) {
        return core.UriData._parse(uri, 5, null);
      }
      if (dataDelta === 32) {
        return core.UriData._parse(uri[$substring](5), 0, null);
      }
    }
    dart.throw(new core.FormatException.new("Does not start with 'data:'", uri, 0));
  }
  get uri() {
    if (this[_uriCache] != null) return this[_uriCache];
    let path = this[_text];
    let query = null;
    let colonIndex = this[_separatorIndices][$_get](0);
    let queryIndex = this[_text][$indexOf]("?", dart.notNull(colonIndex) + 1);
    let end = this[_text].length;
    if (queryIndex >= 0) {
      query = core._Uri._normalizeOrSubstring(this[_text], queryIndex + 1, end, core._Uri._queryCharTable);
      end = queryIndex;
    }
    path = core._Uri._normalizeOrSubstring(this[_text], dart.notNull(colonIndex) + 1, end, core._Uri._pathCharOrSlashTable);
    this[_uriCache] = new core._DataUri.new(this, path, query);
    return this[_uriCache];
  }
  get mimeType() {
    let start = dart.notNull(this[_separatorIndices][$_get](0)) + 1;
    let end = this[_separatorIndices][$_get](1);
    if (start === end) return "text/plain";
    return core._Uri._uriDecode(this[_text], start, end, convert.utf8, false);
  }
  get charset() {
    let parameterStart = 1;
    let parameterEnd = dart.notNull(this[_separatorIndices][$length]) - 1;
    if (dart.test(this.isBase64)) {
      parameterEnd = parameterEnd - 1;
    }
    for (let i = parameterStart; i < parameterEnd; i = i + 2) {
      let keyStart = dart.notNull(this[_separatorIndices][$_get](i)) + 1;
      let keyEnd = this[_separatorIndices][$_get](i + 1);
      if (keyEnd === keyStart + 7 && this[_text][$startsWith]("charset", keyStart)) {
        return core._Uri._uriDecode(this[_text], dart.notNull(keyEnd) + 1, this[_separatorIndices][$_get](i + 2), convert.utf8, false);
      }
    }
    return "US-ASCII";
  }
  get isBase64() {
    return this[_separatorIndices][$length][$isOdd];
  }
  get contentText() {
    return this[_text][$substring](dart.notNull(this[_separatorIndices][$last]) + 1);
  }
  contentAsBytes() {
    let text = this[_text];
    let start = dart.notNull(this[_separatorIndices][$last]) + 1;
    if (dart.test(this.isBase64)) {
      return convert.base64.decoder.convert(text, start);
    }
    let percent = 37;
    let length = text.length - start;
    for (let i = start; i < text.length; i++) {
      let codeUnit = text[$codeUnitAt](i);
      if (codeUnit === percent) {
        i = i + 2;
        length = length - 2;
      }
    }
    let result = typed_data.Uint8List.new(length);
    if (length === text.length) {
      result[$setRange](0, length, text[$codeUnits], start);
      return result;
    }
    let index = 0;
    for (let i = start; i < text.length; i++) {
      let codeUnit = text[$codeUnitAt](i);
      if (codeUnit !== percent) {
        result[$_set](index++, codeUnit);
      } else {
        if (i + 2 < text.length) {
          let byte = _internal.parseHexByte(text, i + 1);
          if (dart.notNull(byte) >= 0) {
            result[$_set](index++, byte);
            i = i + 2;
            continue;
          }
        }
        dart.throw(new core.FormatException.new("Invalid percent escape", text, i));
      }
    }
    if (!(index === result[$length])) dart.assertFailed();
    return result;
  }
  contentAsString(opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : null;
    if (encoding == null) {
      let charset = this.charset;
      encoding = convert.Encoding.getByName(charset);
      if (encoding == null) {
        dart.throw(new core.UnsupportedError.new("Unknown charset: " + dart.str(charset)));
      }
    }
    let text = this[_text];
    let start = dart.notNull(this[_separatorIndices][$last]) + 1;
    if (dart.test(this.isBase64)) {
      let converter = convert.base64.decoder.fuse(core.String, encoding.decoder);
      return converter.convert(text[$substring](start));
    }
    return core._Uri._uriDecode(text, start, text.length, encoding, false);
  }
  get parameters() {
    let result = new (IdentityMapOfString$String()).new();
    for (let i = 3; i < dart.notNull(this[_separatorIndices][$length]); i = i + 2) {
      let start = dart.notNull(this[_separatorIndices][$_get](i - 2)) + 1;
      let equals = this[_separatorIndices][$_get](i - 1);
      let end = this[_separatorIndices][$_get](i);
      let key = core._Uri._uriDecode(this[_text], start, equals, convert.utf8, false);
      let value = core._Uri._uriDecode(this[_text], dart.notNull(equals) + 1, end, convert.utf8, false);
      result[$_set](key, value);
    }
    return result;
  }
  static _parse(text, start, sourceUri) {
    if (!(start === 0 || start === 5)) dart.assertFailed();
    if (!(start === 5 === text[$startsWith]("data:"))) dart.assertFailed();
    let comma = 44;
    let slash = 47;
    let semicolon = 59;
    let equals = 61;
    let indices = JSArrayOfint().of([dart.notNull(start) - 1]);
    let slashIndex = -1;
    let char = null;
    let i = start;
    for (; dart.notNull(i) < text.length; i = dart.notNull(i) + 1) {
      char = text[$codeUnitAt](i);
      if (dart.equals(char, comma) || dart.equals(char, semicolon)) break;
      if (dart.equals(char, slash)) {
        if (dart.notNull(slashIndex) < 0) {
          slashIndex = i;
          continue;
        }
        dart.throw(new core.FormatException.new("Invalid MIME type", text, i));
      }
    }
    if (dart.notNull(slashIndex) < 0 && dart.notNull(i) > dart.notNull(start)) {
      dart.throw(new core.FormatException.new("Invalid MIME type", text, i));
    }
    while (!dart.equals(char, comma)) {
      indices[$add](i);
      i = dart.notNull(i) + 1;
      let equalsIndex = -1;
      for (; dart.notNull(i) < text.length; i = dart.notNull(i) + 1) {
        char = text[$codeUnitAt](i);
        if (dart.equals(char, equals)) {
          if (dart.notNull(equalsIndex) < 0) equalsIndex = i;
        } else if (dart.equals(char, semicolon) || dart.equals(char, comma)) {
          break;
        }
      }
      if (dart.notNull(equalsIndex) >= 0) {
        indices[$add](equalsIndex);
      } else {
        let lastSeparator = indices[$last];
        if (!dart.equals(char, comma) || i !== dart.notNull(lastSeparator) + 7 || !text[$startsWith]("base64", dart.notNull(lastSeparator) + 1)) {
          dart.throw(new core.FormatException.new("Expecting '='", text, i));
        }
        break;
      }
    }
    indices[$add](i);
    let isBase64 = indices[$length][$isOdd];
    if (isBase64) {
      text = convert.base64.normalize(text, dart.notNull(i) + 1, text.length);
    } else {
      let data = core._Uri._normalize(text, dart.notNull(i) + 1, text.length, core.UriData._uricTable, {escapeDelimiters: true});
      if (data != null) {
        text = text[$replaceRange](dart.notNull(i) + 1, text.length, data);
      }
    }
    return new core.UriData.__(text, indices, sourceUri);
  }
  static _uriEncodeBytes(canonicalTable, bytes, buffer) {
    let byteOr = 0;
    for (let i = 0; i < dart.notNull(bytes[$length]); i++) {
      let byte = bytes[$_get](i);
      byteOr = (byteOr | dart.notNull(byte)) >>> 0;
      if (dart.notNull(byte) < 128 && (dart.notNull(canonicalTable[$_get](byte[$rightShift](4))) & 1 << (dart.notNull(byte) & 15)) !== 0) {
        buffer.writeCharCode(byte);
      } else {
        buffer.writeCharCode(37);
        buffer.writeCharCode("0123456789ABCDEF"[$codeUnitAt](byte[$rightShift](4)));
        buffer.writeCharCode("0123456789ABCDEF"[$codeUnitAt](dart.notNull(byte) & 15));
      }
    }
    if ((byteOr & ~255) !== 0) {
      for (let i = 0; i < dart.notNull(bytes[$length]); i++) {
        let byte = bytes[$_get](i);
        if (dart.notNull(byte) < 0 || dart.notNull(byte) > 255) {
          dart.throw(new core.ArgumentError.value(byte, "non-byte value"));
        }
      }
    }
  }
  toString() {
    return this[_separatorIndices][$_get](0) === -1 ? "data:" + dart.str(this[_text]) : this[_text];
  }
};
(core.UriData.__ = function(text, separatorIndices, uriCache) {
  this[_text] = text;
  this[_separatorIndices] = separatorIndices;
  this[_uriCache] = uriCache;
}).prototype = core.UriData.prototype;
dart.addTypeTests(core.UriData);
dart.setMethodSignature(core.UriData, () => ({
  __proto__: dart.getMethods(core.UriData.__proto__),
  contentAsBytes: dart.fnType(typed_data.Uint8List, []),
  contentAsString: dart.fnType(core.String, [], {encoding: convert.Encoding})
}));
dart.setGetterSignature(core.UriData, () => ({
  __proto__: dart.getGetters(core.UriData.__proto__),
  uri: core.Uri,
  mimeType: core.String,
  charset: core.String,
  isBase64: core.bool,
  contentText: core.String,
  parameters: core.Map$(core.String, core.String)
}));
dart.setFieldSignature(core.UriData, () => ({
  __proto__: dart.getFields(core.UriData.__proto__),
  [_text]: dart.finalFieldType(core.String),
  [_separatorIndices]: dart.finalFieldType(ListOfint()),
  [_uriCache]: dart.fieldType(core.Uri)
}));
dart.defineExtensionMethods(core.UriData, ['toString']);
dart.defineLazy(core.UriData, {
  /*core.UriData._noScheme*/get _noScheme() {
    return -1;
  },
  /*core.UriData._base64*/get _base64() {
    return convert.base64;
  },
  /*core.UriData._tokenCharTable*/get _tokenCharTable() {
    return dart.constList([0, 0, 27858, 1023, 65534, 51199, 65535, 32767], core.int);
  },
  /*core.UriData._uricTable*/get _uricTable() {
    return core._Uri._queryCharTable;
  },
  /*core.UriData._base64Table*/get _base64Table() {
    return dart.constList([0, 0, 34816, 1023, 65534, 2047, 65534, 2047], core.int);
  }
});
dart.defineLazy(core, {
  /*core._schemeEndIndex*/get _schemeEndIndex() {
    return 1;
  },
  /*core._hostStartIndex*/get _hostStartIndex() {
    return 2;
  },
  /*core._portStartIndex*/get _portStartIndex() {
    return 3;
  },
  /*core._pathStartIndex*/get _pathStartIndex() {
    return 4;
  },
  /*core._queryStartIndex*/get _queryStartIndex() {
    return 5;
  },
  /*core._fragmentStartIndex*/get _fragmentStartIndex() {
    return 6;
  },
  /*core._notSimpleIndex*/get _notSimpleIndex() {
    return 7;
  },
  /*core._uriStart*/get _uriStart() {
    return 0;
  },
  /*core._nonSimpleEndStates*/get _nonSimpleEndStates() {
    return 14;
  },
  /*core._schemeStart*/get _schemeStart() {
    return 20;
  },
  /*core._scannerTables*/get _scannerTables() {
    return core._createTables();
  }
});
core._createTables = function() {
  let stateCount = 22;
  let schemeOrPath = 1;
  let authOrPath = 2;
  let authOrPathSlash = 3;
  let uinfoOrHost0 = 4;
  let uinfoOrHost = 5;
  let uinfoOrPort0 = 6;
  let uinfoOrPort = 7;
  let ipv6Host = 8;
  let relPathSeg = 9;
  let pathSeg = 10;
  let path = 11;
  let query = 12;
  let fragment = 13;
  let schemeOrPathDot = 14;
  let schemeOrPathDot2 = 15;
  let relPathSegDot = 16;
  let relPathSegDot2 = 17;
  let pathSegDot = 18;
  let pathSegDot2 = 19;
  let scheme0 = 20;
  let scheme = 21;
  let schemeEnd = 1 << 5;
  let hostStart = 2 << 5;
  let portStart = 3 << 5;
  let pathStart = 4 << 5;
  let queryStart = 5 << 5;
  let fragmentStart = 6 << 5;
  let notSimple = 7 << 5;
  let unreserved = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~";
  let subDelims = "!$&'()*+,;=";
  let pchar = unreserved + subDelims;
  let tables = ListOfUint8List().generate(stateCount, dart.fn(_ => typed_data.Uint8List.new(96), intToUint8List()));
  function build(state, defaultTransition) {
    let _ = tables[$_get](core.int._check(state));
    _[$fillRange](0, 96, core.int._check(defaultTransition));
    return _;
  }
  dart.fn(build, dynamicAnddynamicToUint8List());
  function setChars(target, chars, transition) {
    for (let i = 0; i < chars.length; i++) {
      let char = chars[$codeUnitAt](i);
      target[$_set]((char ^ 96) >>> 0, transition);
    }
  }
  dart.fn(setChars, Uint8ListAndStringAndintTovoid());
  function setRange(target, range, transition) {
    for (let i = range[$codeUnitAt](0), n = range[$codeUnitAt](1); i <= n; i++) {
      target[$_set]((i ^ 96) >>> 0, transition);
    }
  }
  dart.fn(setRange, Uint8ListAndStringAndintTovoid());
  let b = null;
  b = build(0, (schemeOrPath | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, schemeOrPath);
  setChars(typed_data.Uint8List._check(b), ".", schemeOrPathDot);
  setChars(typed_data.Uint8List._check(b), ":", (authOrPath | schemeEnd) >>> 0);
  setChars(typed_data.Uint8List._check(b), "/", authOrPathSlash);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(schemeOrPathDot, (schemeOrPath | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, schemeOrPath);
  setChars(typed_data.Uint8List._check(b), ".", schemeOrPathDot2);
  setChars(typed_data.Uint8List._check(b), ":", (authOrPath | schemeEnd) >>> 0);
  setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(schemeOrPathDot2, (schemeOrPath | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, schemeOrPath);
  setChars(typed_data.Uint8List._check(b), "%", (schemeOrPath | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), ":", (authOrPath | schemeEnd) >>> 0);
  setChars(typed_data.Uint8List._check(b), "/", relPathSeg);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(schemeOrPath, (schemeOrPath | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, schemeOrPath);
  setChars(typed_data.Uint8List._check(b), ":", (authOrPath | schemeEnd) >>> 0);
  setChars(typed_data.Uint8List._check(b), "/", pathSeg);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(authOrPath, (path | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, (path | pathStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "/", (authOrPathSlash | pathStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), ".", (pathSegDot | pathStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(authOrPathSlash, (path | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, path);
  setChars(typed_data.Uint8List._check(b), "/", (uinfoOrHost0 | hostStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), ".", pathSegDot);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(uinfoOrHost0, (uinfoOrHost | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, uinfoOrHost);
  setRange(typed_data.Uint8List._check(b), "AZ", (uinfoOrHost | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), ":", (uinfoOrPort0 | portStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "@", (uinfoOrHost0 | hostStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "[", (ipv6Host | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), "/", (pathSeg | pathStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(uinfoOrHost, (uinfoOrHost | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, uinfoOrHost);
  setRange(typed_data.Uint8List._check(b), "AZ", (uinfoOrHost | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), ":", (uinfoOrPort0 | portStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "@", (uinfoOrHost0 | hostStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "/", (pathSeg | pathStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(uinfoOrPort0, (uinfoOrPort | notSimple) >>> 0);
  setRange(typed_data.Uint8List._check(b), "19", uinfoOrPort);
  setChars(typed_data.Uint8List._check(b), "@", (uinfoOrHost0 | hostStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "/", (pathSeg | pathStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(uinfoOrPort, (uinfoOrPort | notSimple) >>> 0);
  setRange(typed_data.Uint8List._check(b), "09", uinfoOrPort);
  setChars(typed_data.Uint8List._check(b), "@", (uinfoOrHost0 | hostStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "/", (pathSeg | pathStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(ipv6Host, ipv6Host);
  setChars(typed_data.Uint8List._check(b), "]", uinfoOrHost);
  b = build(relPathSeg, (path | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, path);
  setChars(typed_data.Uint8List._check(b), ".", relPathSegDot);
  setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(relPathSegDot, (path | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, path);
  setChars(typed_data.Uint8List._check(b), ".", relPathSegDot2);
  setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(relPathSegDot2, (path | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, path);
  setChars(typed_data.Uint8List._check(b), "/", relPathSeg);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(pathSeg, (path | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, path);
  setChars(typed_data.Uint8List._check(b), ".", pathSegDot);
  setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(pathSegDot, (path | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, path);
  setChars(typed_data.Uint8List._check(b), ".", pathSegDot2);
  setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(pathSegDot2, (path | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, path);
  setChars(typed_data.Uint8List._check(b), "/", (pathSeg | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(path, (path | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, path);
  setChars(typed_data.Uint8List._check(b), "/", pathSeg);
  setChars(typed_data.Uint8List._check(b), "?", (query | queryStart) >>> 0);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(query, (query | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, query);
  setChars(typed_data.Uint8List._check(b), "?", query);
  setChars(typed_data.Uint8List._check(b), "#", (fragment | fragmentStart) >>> 0);
  b = build(fragment, (fragment | notSimple) >>> 0);
  setChars(typed_data.Uint8List._check(b), pchar, fragment);
  setChars(typed_data.Uint8List._check(b), "?", fragment);
  b = build(scheme0, (scheme | notSimple) >>> 0);
  setRange(typed_data.Uint8List._check(b), "az", scheme);
  b = build(scheme, (scheme | notSimple) >>> 0);
  setRange(typed_data.Uint8List._check(b), "az", scheme);
  setRange(typed_data.Uint8List._check(b), "09", scheme);
  setChars(typed_data.Uint8List._check(b), "+-.", scheme);
  return tables;
};
core._scan = function(uri, start, end, state, indices) {
  let tables = core._scannerTables;
  if (!(dart.notNull(end) <= uri.length)) dart.assertFailed();
  for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
    let table = tables[$_get](state);
    let char = (uri[$codeUnitAt](i) ^ 96) >>> 0;
    if (char > 95) char = 31;
    let transition = table[$_get](char);
    state = dart.notNull(transition) & 31;
    indices[$_set](transition[$rightShift](5), i);
  }
  return state;
};
const _uri = Symbol('_uri');
const _schemeEnd = Symbol('_schemeEnd');
const _hostStart = Symbol('_hostStart');
const _portStart = Symbol('_portStart');
const _pathStart = Symbol('_pathStart');
const _queryStart = Symbol('_queryStart');
const _fragmentStart = Symbol('_fragmentStart');
const _schemeCache = Symbol('_schemeCache');
const _isFile = Symbol('_isFile');
const _isHttp = Symbol('_isHttp');
const _isHttps = Symbol('_isHttps');
const _isPackage = Symbol('_isPackage');
const _isScheme = Symbol('_isScheme');
let const$52;
let const$53;
let const$54;
const _isPort = Symbol('_isPort');
const _simpleMerge = Symbol('_simpleMerge');
const _toNonSimple = Symbol('_toNonSimple');
core._SimpleUri = class _SimpleUri extends core.Object {
  get hasScheme() {
    return dart.notNull(this[_schemeEnd]) > 0;
  }
  get hasAuthority() {
    return dart.notNull(this[_hostStart]) > 0;
  }
  get hasUserInfo() {
    return dart.notNull(this[_hostStart]) > dart.notNull(this[_schemeEnd]) + 4;
  }
  get hasPort() {
    return dart.notNull(this[_hostStart]) > 0 && dart.notNull(this[_portStart]) + 1 < dart.notNull(this[_pathStart]);
  }
  get hasQuery() {
    return dart.notNull(this[_queryStart]) < dart.notNull(this[_fragmentStart]);
  }
  get hasFragment() {
    return dart.notNull(this[_fragmentStart]) < this[_uri].length;
  }
  get [_isFile]() {
    return this[_schemeEnd] === 4 && this[_uri][$startsWith]("file");
  }
  get [_isHttp]() {
    return this[_schemeEnd] === 4 && this[_uri][$startsWith]("http");
  }
  get [_isHttps]() {
    return this[_schemeEnd] === 5 && this[_uri][$startsWith]("https");
  }
  get [_isPackage]() {
    return this[_schemeEnd] === 7 && this[_uri][$startsWith]("package");
  }
  [_isScheme](scheme) {
    return this[_schemeEnd] === scheme.length && this[_uri][$startsWith](scheme);
  }
  get hasAbsolutePath() {
    return this[_uri][$startsWith]("/", this[_pathStart]);
  }
  get hasEmptyPath() {
    return this[_pathStart] == this[_queryStart];
  }
  get isAbsolute() {
    return dart.test(this.hasScheme) && !dart.test(this.hasFragment);
  }
  isScheme(scheme) {
    if (scheme == null || scheme[$isEmpty]) return dart.notNull(this[_schemeEnd]) < 0;
    if (scheme.length !== this[_schemeEnd]) return false;
    return core._Uri._compareScheme(scheme, this[_uri]);
  }
  get scheme() {
    if (dart.notNull(this[_schemeEnd]) <= 0) return "";
    if (this[_schemeCache] != null) return this[_schemeCache];
    if (dart.test(this[_isHttp])) {
      this[_schemeCache] = "http";
    } else if (dart.test(this[_isHttps])) {
      this[_schemeCache] = "https";
    } else if (dart.test(this[_isFile])) {
      this[_schemeCache] = "file";
    } else if (dart.test(this[_isPackage])) {
      this[_schemeCache] = "package";
    } else {
      this[_schemeCache] = this[_uri][$substring](0, this[_schemeEnd]);
    }
    return this[_schemeCache];
  }
  get authority() {
    return dart.notNull(this[_hostStart]) > 0 ? this[_uri][$substring](dart.notNull(this[_schemeEnd]) + 3, this[_pathStart]) : "";
  }
  get userInfo() {
    return dart.notNull(this[_hostStart]) > dart.notNull(this[_schemeEnd]) + 3 ? this[_uri][$substring](dart.notNull(this[_schemeEnd]) + 3, dart.notNull(this[_hostStart]) - 1) : "";
  }
  get host() {
    return dart.notNull(this[_hostStart]) > 0 ? this[_uri][$substring](this[_hostStart], this[_portStart]) : "";
  }
  get port() {
    if (dart.test(this.hasPort)) return core.int.parse(this[_uri][$substring](dart.notNull(this[_portStart]) + 1, this[_pathStart]));
    if (dart.test(this[_isHttp])) return 80;
    if (dart.test(this[_isHttps])) return 443;
    return 0;
  }
  get path() {
    return this[_uri][$substring](this[_pathStart], this[_queryStart]);
  }
  get query() {
    return dart.notNull(this[_queryStart]) < dart.notNull(this[_fragmentStart]) ? this[_uri][$substring](dart.notNull(this[_queryStart]) + 1, this[_fragmentStart]) : "";
  }
  get fragment() {
    return dart.notNull(this[_fragmentStart]) < this[_uri].length ? this[_uri][$substring](dart.notNull(this[_fragmentStart]) + 1) : "";
  }
  get origin() {
    let isHttp = this[_isHttp];
    if (dart.notNull(this[_schemeEnd]) < 0) {
      dart.throw(new core.StateError.new("Cannot use origin without a scheme: " + dart.str(this)));
    }
    if (!dart.test(isHttp) && !dart.test(this[_isHttps])) {
      dart.throw(new core.StateError.new("Origin is only applicable to schemes http and https: " + dart.str(this)));
    }
    if (this[_hostStart] == this[_portStart]) {
      dart.throw(new core.StateError.new("A " + dart.str(this.scheme) + ": URI should have a non-empty host name: " + dart.str(this)));
    }
    if (this[_hostStart] === dart.notNull(this[_schemeEnd]) + 3) {
      return this[_uri][$substring](0, this[_pathStart]);
    }
    return this[_uri][$substring](0, dart.notNull(this[_schemeEnd]) + 3) + this[_uri][$substring](this[_hostStart], this[_pathStart]);
  }
  get pathSegments() {
    let start = this[_pathStart];
    let end = this[_queryStart];
    if (this[_uri][$startsWith]("/", start)) {
      start = dart.notNull(start) + 1;
    }
    if (start == end) return const$52 || (const$52 = dart.constList([], core.String));
    let parts = JSArrayOfString().of([]);
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      let char = this[_uri][$codeUnitAt](i);
      if (char === 47) {
        parts[$add](this[_uri][$substring](start, i));
        start = dart.notNull(i) + 1;
      }
    }
    parts[$add](this[_uri][$substring](start, end));
    return ListOfString().unmodifiable(parts);
  }
  get queryParameters() {
    if (!dart.test(this.hasQuery)) return const$53 || (const$53 = dart.constMap(core.String, core.String, []));
    return new (UnmodifiableMapViewOfString$String()).new(core.Uri.splitQueryString(this.query));
  }
  get queryParametersAll() {
    if (!dart.test(this.hasQuery)) return const$54 || (const$54 = dart.constMap(core.String, ListOfString(), []));
    let queryParameterLists = core._Uri._splitQueryStringAll(this.query);
    for (let key of queryParameterLists[$keys]) {
      queryParameterLists[$_set](key, ListOfString().unmodifiable(core.Iterable._check(queryParameterLists[$_get](key))));
    }
    return MapOfString$ListOfString().unmodifiable(queryParameterLists);
  }
  [_isPort](port) {
    let portDigitStart = dart.notNull(this[_portStart]) + 1;
    return portDigitStart + port.length === this[_pathStart] && this[_uri][$startsWith](port, portDigitStart);
  }
  normalizePath() {
    return this;
  }
  removeFragment() {
    if (!dart.test(this.hasFragment)) return this;
    return new core._SimpleUri.new(this[_uri][$substring](0, this[_fragmentStart]), this[_schemeEnd], this[_hostStart], this[_portStart], this[_pathStart], this[_queryStart], this[_fragmentStart], this[_schemeCache]);
  }
  replace(opts) {
    let scheme = opts && 'scheme' in opts ? opts.scheme : null;
    let userInfo = opts && 'userInfo' in opts ? opts.userInfo : null;
    let host = opts && 'host' in opts ? opts.host : null;
    let port = opts && 'port' in opts ? opts.port : null;
    let path = opts && 'path' in opts ? opts.path : null;
    let pathSegments = opts && 'pathSegments' in opts ? opts.pathSegments : null;
    let query = opts && 'query' in opts ? opts.query : null;
    let queryParameters = opts && 'queryParameters' in opts ? opts.queryParameters : null;
    let fragment = opts && 'fragment' in opts ? opts.fragment : null;
    let schemeChanged = false;
    if (scheme != null) {
      scheme = core._Uri._makeScheme(scheme, 0, scheme.length);
      schemeChanged = !dart.test(this[_isScheme](scheme));
    } else {
      scheme = this.scheme;
    }
    let isFile = scheme === "file";
    if (userInfo != null) {
      userInfo = core._Uri._makeUserInfo(userInfo, 0, userInfo.length);
    } else if (dart.notNull(this[_hostStart]) > 0) {
      userInfo = this[_uri][$substring](dart.notNull(this[_schemeEnd]) + 3, this[_hostStart]);
    } else {
      userInfo = "";
    }
    if (port != null) {
      port = core._Uri._makePort(port, scheme);
    } else {
      port = dart.test(this.hasPort) ? this.port : null;
      if (schemeChanged) {
        port = core._Uri._makePort(port, scheme);
      }
    }
    if (host != null) {
      host = core._Uri._makeHost(host, 0, host.length, false);
    } else if (dart.notNull(this[_hostStart]) > 0) {
      host = this[_uri][$substring](this[_hostStart], this[_portStart]);
    } else if (userInfo[$isNotEmpty] || port != null || isFile) {
      host = "";
    }
    let hasAuthority = host != null;
    if (path != null || pathSegments != null) {
      path = core._Uri._makePath(path, 0, core._stringOrNullLength(path), pathSegments, scheme, hasAuthority);
    } else {
      path = this[_uri][$substring](this[_pathStart], this[_queryStart]);
      if ((isFile || hasAuthority && !path[$isEmpty]) && !path[$startsWith]("/")) {
        path = "/" + dart.notNull(path);
      }
    }
    if (query != null || queryParameters != null) {
      query = core._Uri._makeQuery(query, 0, core._stringOrNullLength(query), queryParameters);
    } else if (dart.notNull(this[_queryStart]) < dart.notNull(this[_fragmentStart])) {
      query = this[_uri][$substring](dart.notNull(this[_queryStart]) + 1, this[_fragmentStart]);
    }
    if (fragment != null) {
      fragment = core._Uri._makeFragment(fragment, 0, fragment.length);
    } else if (dart.notNull(this[_fragmentStart]) < this[_uri].length) {
      fragment = this[_uri][$substring](dart.notNull(this[_fragmentStart]) + 1);
    }
    return new core._Uri._internal(scheme, userInfo, host, port, path, query, fragment);
  }
  resolve(reference) {
    return this.resolveUri(core.Uri.parse(reference));
  }
  resolveUri(reference) {
    if (core._SimpleUri.is(reference)) {
      return this[_simpleMerge](this, reference);
    }
    return this[_toNonSimple]().resolveUri(reference);
  }
  [_simpleMerge](base, ref) {
    if (dart.test(ref.hasScheme)) return ref;
    if (dart.test(ref.hasAuthority)) {
      if (!dart.test(base.hasScheme)) return ref;
      let isSimple = true;
      if (dart.test(base[_isFile])) {
        isSimple = !dart.test(ref.hasEmptyPath);
      } else if (dart.test(base[_isHttp])) {
        isSimple = !dart.test(ref[_isPort]("80"));
      } else if (dart.test(base[_isHttps])) {
        isSimple = !dart.test(ref[_isPort]("443"));
      }
      if (isSimple) {
        let delta = dart.notNull(base[_schemeEnd]) + 1;
        let newUri = base[_uri][$substring](0, dart.notNull(base[_schemeEnd]) + 1) + ref[_uri][$substring](dart.notNull(ref[_schemeEnd]) + 1);
        return new core._SimpleUri.new(newUri, base[_schemeEnd], dart.notNull(ref[_hostStart]) + delta, dart.notNull(ref[_portStart]) + delta, dart.notNull(ref[_pathStart]) + delta, dart.notNull(ref[_queryStart]) + delta, dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
      } else {
        return this[_toNonSimple]().resolveUri(ref);
      }
    }
    if (dart.test(ref.hasEmptyPath)) {
      if (dart.test(ref.hasQuery)) {
        let delta = dart.notNull(base[_queryStart]) - dart.notNull(ref[_queryStart]);
        let newUri = base[_uri][$substring](0, base[_queryStart]) + ref[_uri][$substring](ref[_queryStart]);
        return new core._SimpleUri.new(newUri, base[_schemeEnd], base[_hostStart], base[_portStart], base[_pathStart], dart.notNull(ref[_queryStart]) + delta, dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
      }
      if (dart.test(ref.hasFragment)) {
        let delta = dart.notNull(base[_fragmentStart]) - dart.notNull(ref[_fragmentStart]);
        let newUri = base[_uri][$substring](0, base[_fragmentStart]) + ref[_uri][$substring](ref[_fragmentStart]);
        return new core._SimpleUri.new(newUri, base[_schemeEnd], base[_hostStart], base[_portStart], base[_pathStart], base[_queryStart], dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
      }
      return base.removeFragment();
    }
    if (dart.test(ref.hasAbsolutePath)) {
      let delta = dart.notNull(base[_pathStart]) - dart.notNull(ref[_pathStart]);
      let newUri = base[_uri][$substring](0, base[_pathStart]) + ref[_uri][$substring](ref[_pathStart]);
      return new core._SimpleUri.new(newUri, base[_schemeEnd], base[_hostStart], base[_portStart], base[_pathStart], dart.notNull(ref[_queryStart]) + delta, dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
    }
    if (dart.test(base.hasEmptyPath) && dart.test(base.hasAuthority)) {
      let refStart = ref[_pathStart];
      while (ref[_uri][$startsWith]("../", refStart)) {
        refStart = dart.notNull(refStart) + 3;
      }
      let delta = dart.notNull(base[_pathStart]) - dart.notNull(refStart) + 1;
      let newUri = base[_uri][$substring](0, base[_pathStart]) + "/" + ref[_uri][$substring](refStart);
      return new core._SimpleUri.new(newUri, base[_schemeEnd], base[_hostStart], base[_portStart], base[_pathStart], dart.notNull(ref[_queryStart]) + delta, dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
    }
    let baseUri = base[_uri];
    let refUri = ref[_uri];
    let baseStart = base[_pathStart];
    let baseEnd = base[_queryStart];
    while (baseUri[$startsWith]("../", baseStart)) {
      baseStart = dart.notNull(baseStart) + 3;
    }
    let refStart = ref[_pathStart];
    let refEnd = ref[_queryStart];
    let backCount = 0;
    while (dart.notNull(refStart) + 3 <= dart.notNull(refEnd) && refUri[$startsWith]("../", refStart)) {
      refStart = dart.notNull(refStart) + 3;
      backCount = backCount + 1;
    }
    let insert = "";
    while (dart.notNull(baseEnd) > dart.notNull(baseStart)) {
      baseEnd = dart.notNull(baseEnd) - 1;
      let char = baseUri[$codeUnitAt](baseEnd);
      if (char === 47) {
        insert = "/";
        if (backCount === 0) break;
        backCount--;
      }
    }
    if (baseEnd == baseStart && !dart.test(base.hasScheme) && !dart.test(base.hasAbsolutePath)) {
      insert = "";
      refStart = dart.notNull(refStart) - backCount * 3;
    }
    let delta = dart.notNull(baseEnd) - dart.notNull(refStart) + insert.length;
    let newUri = base[_uri][$substring](0, baseEnd) + insert + ref[_uri][$substring](refStart);
    return new core._SimpleUri.new(newUri, base[_schemeEnd], base[_hostStart], base[_portStart], base[_pathStart], dart.notNull(ref[_queryStart]) + delta, dart.notNull(ref[_fragmentStart]) + delta, base[_schemeCache]);
  }
  toFilePath(opts) {
    let windows = opts && 'windows' in opts ? opts.windows : null;
    if (dart.notNull(this[_schemeEnd]) >= 0 && !dart.test(this[_isFile])) {
      dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a " + dart.str(this.scheme) + " URI"));
    }
    if (dart.notNull(this[_queryStart]) < this[_uri].length) {
      if (dart.notNull(this[_queryStart]) < dart.notNull(this[_fragmentStart])) {
        dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a URI with a query component"));
      }
      dart.throw(new core.UnsupportedError.new("Cannot extract a file path from a URI with a fragment component"));
    }
    let t = windows;
    t == null ? windows = core._Uri._isWindows : t;
    return dart.test(windows) ? core._Uri._toWindowsFilePath(this) : this[_toFilePath]();
  }
  [_toFilePath]() {
    if (dart.notNull(this[_hostStart]) < dart.notNull(this[_portStart])) {
      dart.throw(new core.UnsupportedError.new("Cannot extract a non-Windows file path from a file URI " + "with an authority"));
    }
    return this.path;
  }
  get data() {
    if (!(this.scheme !== "data")) dart.assertFailed();
    return null;
  }
  get hashCode() {
    let t = this[_hashCodeCache];
    return t == null ? this[_hashCodeCache] = dart.hashCode(this[_uri]) : t;
  }
  _equals(other) {
    if (this === other) return true;
    return core.Uri.is(other) && this[_uri] == dart.toString(other);
  }
  [_toNonSimple]() {
    return new core._Uri._internal(this.scheme, this.userInfo, dart.test(this.hasAuthority) ? this.host : null, dart.test(this.hasPort) ? this.port : null, this.path, dart.test(this.hasQuery) ? this.query : null, dart.test(this.hasFragment) ? this.fragment : null);
  }
  toString() {
    return this[_uri];
  }
};
(core._SimpleUri.new = function(uri, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, schemeCache) {
  this[_hashCodeCache] = null;
  this[_uri] = uri;
  this[_schemeEnd] = schemeEnd;
  this[_hostStart] = hostStart;
  this[_portStart] = portStart;
  this[_pathStart] = pathStart;
  this[_queryStart] = queryStart;
  this[_fragmentStart] = fragmentStart;
  this[_schemeCache] = schemeCache;
}).prototype = core._SimpleUri.prototype;
dart.addTypeTests(core._SimpleUri);
core._SimpleUri[dart.implements] = () => [core.Uri];
dart.setMethodSignature(core._SimpleUri, () => ({
  __proto__: dart.getMethods(core._SimpleUri.__proto__),
  [_isScheme]: dart.fnType(core.bool, [core.String]),
  isScheme: dart.fnType(core.bool, [core.String]),
  [_isPort]: dart.fnType(core.bool, [core.String]),
  normalizePath: dart.fnType(core.Uri, []),
  removeFragment: dart.fnType(core.Uri, []),
  replace: dart.fnType(core.Uri, [], {scheme: core.String, userInfo: core.String, host: core.String, port: core.int, path: core.String, pathSegments: core.Iterable$(core.String), query: core.String, queryParameters: core.Map$(core.String, dart.dynamic), fragment: core.String}),
  resolve: dart.fnType(core.Uri, [core.String]),
  resolveUri: dart.fnType(core.Uri, [core.Uri]),
  [_simpleMerge]: dart.fnType(core.Uri, [core._SimpleUri, core._SimpleUri]),
  toFilePath: dart.fnType(core.String, [], {windows: core.bool}),
  [_toFilePath]: dart.fnType(core.String, []),
  _equals: dart.fnType(core.bool, [core.Object]),
  [$_equals]: dart.fnType(core.bool, [core.Object]),
  [_toNonSimple]: dart.fnType(core.Uri, [])
}));
dart.setGetterSignature(core._SimpleUri, () => ({
  __proto__: dart.getGetters(core._SimpleUri.__proto__),
  hasScheme: core.bool,
  hasAuthority: core.bool,
  hasUserInfo: core.bool,
  hasPort: core.bool,
  hasQuery: core.bool,
  hasFragment: core.bool,
  [_isFile]: core.bool,
  [_isHttp]: core.bool,
  [_isHttps]: core.bool,
  [_isPackage]: core.bool,
  hasAbsolutePath: core.bool,
  hasEmptyPath: core.bool,
  isAbsolute: core.bool,
  scheme: core.String,
  authority: core.String,
  userInfo: core.String,
  host: core.String,
  port: core.int,
  path: core.String,
  query: core.String,
  fragment: core.String,
  origin: core.String,
  pathSegments: core.List$(core.String),
  queryParameters: core.Map$(core.String, core.String),
  queryParametersAll: core.Map$(core.String, core.List$(core.String)),
  data: core.UriData
}));
dart.setFieldSignature(core._SimpleUri, () => ({
  __proto__: dart.getFields(core._SimpleUri.__proto__),
  [_uri]: dart.finalFieldType(core.String),
  [_schemeEnd]: dart.finalFieldType(core.int),
  [_hostStart]: dart.finalFieldType(core.int),
  [_portStart]: dart.finalFieldType(core.int),
  [_pathStart]: dart.finalFieldType(core.int),
  [_queryStart]: dart.finalFieldType(core.int),
  [_fragmentStart]: dart.finalFieldType(core.int),
  [_schemeCache]: dart.fieldType(core.String),
  [_hashCodeCache]: dart.fieldType(core.int)
}));
dart.defineExtensionMethods(core._SimpleUri, ['_equals', 'toString']);
dart.defineExtensionAccessors(core._SimpleUri, ['hashCode']);
const _data$ = Symbol('_data');
core._DataUri = class _DataUri extends core._Uri {
  get data() {
    return this[_data$];
  }
};
(core._DataUri.new = function(data, path, query) {
  this[_data$] = data;
  core._DataUri.__proto__._internal.call(this, "data", null, null, null, path, query, null);
}).prototype = core._DataUri.prototype;
dart.addTypeTests(core._DataUri);
dart.setFieldSignature(core._DataUri, () => ({
  __proto__: dart.getFields(core._DataUri.__proto__),
  [_data$]: dart.finalFieldType(core.UriData)
}));
core._startsWithData = function(text, start) {
  let delta = ((text[$codeUnitAt](dart.notNull(start) + 4) ^ 58) >>> 0) * 3;
  delta = (delta | text[$codeUnitAt](start) ^ 100) >>> 0;
  delta = (delta | text[$codeUnitAt](dart.notNull(start) + 1) ^ 97) >>> 0;
  delta = (delta | text[$codeUnitAt](dart.notNull(start) + 2) ^ 116) >>> 0;
  delta = (delta | text[$codeUnitAt](dart.notNull(start) + 3) ^ 97) >>> 0;
  return delta;
};
core._stringOrNullLength = function(s) {
  return s == null ? 0 : s.length;
};
developer.debugger = function(opts) {
  let when = opts && 'when' in opts ? opts.when : true;
  let message = opts && 'message' in opts ? opts.message : null;
  if (dart.test(when)) {
    debugger;
  }
  return when;
};
developer.inspect = function(object) {
  console.debug("dart.developer.inspect", object);
  return object;
};
developer.log = function(message, opts) {
  let time = opts && 'time' in opts ? opts.time : null;
  let sequenceNumber = opts && 'sequenceNumber' in opts ? opts.sequenceNumber : null;
  let level = opts && 'level' in opts ? opts.level : 0;
  let name = opts && 'name' in opts ? opts.name : "";
  let zone = opts && 'zone' in opts ? opts.zone : null;
  let error = opts && 'error' in opts ? opts.error : null;
  let stackTrace = opts && 'stackTrace' in opts ? opts.stackTrace : null;
  let items = {message: message, name: name, level: level};
  if (time != null) items.time = time;
  if (sequenceNumber != null) {
    items.sequenceNumber = sequenceNumber;
  }
  if (zone != null) items.zone = zone;
  if (error != null) items.error = error;
  if (stackTrace != null) items.stackTrace = stackTrace;
  console.debug("dart.developer.log", items);
};
dart.defineLazy(developer, {
  /*developer._extensions*/get _extensions() {
    return new (IdentityMapOfString$StringAndMapOfString$StringToFutureOfServiceExtensionResponse()).new();
  },
  /*developer._clockValue*/get _clockValue() {
    return 0;
  },
  set _clockValue(_) {}
});
developer._FakeUserTag = class _FakeUserTag extends core.Object {
  static new(label) {
    let existingTag = developer._FakeUserTag._instances[$_get](label);
    if (existingTag != null) {
      return developer._FakeUserTag._check(existingTag);
    }
    if (developer._FakeUserTag._instances[$length] === developer.UserTag.MAX_USER_TAGS) {
      dart.throw(new core.UnsupportedError.new("UserTag instance limit (" + dart.str(developer.UserTag.MAX_USER_TAGS) + ") reached."));
    }
    let instance = new developer._FakeUserTag.real(label);
    developer._FakeUserTag._instances[$_set](label, instance);
    return instance;
  }
  makeCurrent() {
    let old = developer._currentTag;
    developer._currentTag = this;
    return old;
  }
};
(developer._FakeUserTag.real = function(label) {
  this.label = label;
}).prototype = developer._FakeUserTag.prototype;
dart.addTypeTests(developer._FakeUserTag);
developer._FakeUserTag[dart.implements] = () => [developer.UserTag];
dart.setMethodSignature(developer._FakeUserTag, () => ({
  __proto__: dart.getMethods(developer._FakeUserTag.__proto__),
  makeCurrent: dart.fnType(developer.UserTag, [])
}));
dart.setFieldSignature(developer._FakeUserTag, () => ({
  __proto__: dart.getFields(developer._FakeUserTag.__proto__),
  label: dart.finalFieldType(core.String)
}));
dart.defineLazy(developer._FakeUserTag, {
  /*developer._FakeUserTag._instances*/get _instances() {
    return new _js_helper.LinkedMap.new();
  },
  set _instances(_) {},
  /*developer._FakeUserTag._defaultTag*/get _defaultTag() {
    return developer._FakeUserTag.new("Default");
  }
});
dart.defineLazy(developer, {
  /*developer._currentTag*/get _currentTag() {
    return developer._FakeUserTag._defaultTag;
  },
  set _currentTag(_) {}
});
const _result = Symbol('_result');
const _errorCode = Symbol('_errorCode');
const _errorDetail = Symbol('_errorDetail');
const _isError = Symbol('_isError');
const _toString = Symbol('_toString');
developer.ServiceExtensionResponse = class ServiceExtensionResponse extends core.Object {
  static _errorCodeMessage(errorCode) {
    developer.ServiceExtensionResponse._validateErrorCode(errorCode);
    if (errorCode === -32602) {
      return "Invalid params";
    }
    return "Server error";
  }
  static _validateErrorCode(errorCode) {
    core.ArgumentError.checkNotNull(errorCode, "errorCode");
    if (errorCode === -32602) return;
    if (dart.notNull(errorCode) >= -32016 && dart.notNull(errorCode) <= -32000) {
      return;
    }
    dart.throw(new core.ArgumentError.value(errorCode, "errorCode", "Out of range"));
  }
  [_isError]() {
    return this[_errorCode] != null && this[_errorDetail] != null;
  }
  [_toString]() {
    if (this[_result] != null) {
      return this[_result];
    } else {
      if (!(this[_errorCode] != null)) dart.assertFailed();
      if (!(this[_errorDetail] != null)) dart.assertFailed();
      return convert.json.encode(new (IdentityMapOfString$Object()).from(["code", this[_errorCode], "message", developer.ServiceExtensionResponse._errorCodeMessage(this[_errorCode]), "data", new (IdentityMapOfString$String()).from(["details", this[_errorDetail]])]));
    }
  }
};
(developer.ServiceExtensionResponse.result = function(result) {
  this[_result] = result;
  this[_errorCode] = null;
  this[_errorDetail] = null;
  core.ArgumentError.checkNotNull(this[_result], "result");
}).prototype = developer.ServiceExtensionResponse.prototype;
(developer.ServiceExtensionResponse.error = function(errorCode, errorDetail) {
  this[_result] = null;
  this[_errorCode] = errorCode;
  this[_errorDetail] = errorDetail;
  developer.ServiceExtensionResponse._validateErrorCode(this[_errorCode]);
  core.ArgumentError.checkNotNull(this[_errorDetail], "errorDetail");
}).prototype = developer.ServiceExtensionResponse.prototype;
dart.addTypeTests(developer.ServiceExtensionResponse);
dart.setMethodSignature(developer.ServiceExtensionResponse, () => ({
  __proto__: dart.getMethods(developer.ServiceExtensionResponse.__proto__),
  [_isError]: dart.fnType(core.bool, []),
  [_toString]: dart.fnType(core.String, [])
}));
dart.setFieldSignature(developer.ServiceExtensionResponse, () => ({
  __proto__: dart.getFields(developer.ServiceExtensionResponse.__proto__),
  [_result]: dart.finalFieldType(core.String),
  [_errorCode]: dart.finalFieldType(core.int),
  [_errorDetail]: dart.finalFieldType(core.String)
}));
dart.defineLazy(developer.ServiceExtensionResponse, {
  /*developer.ServiceExtensionResponse.kInvalidParams*/get kInvalidParams() {
    return -32602;
  },
  /*developer.ServiceExtensionResponse.kExtensionError*/get kExtensionError() {
    return -32000;
  },
  /*developer.ServiceExtensionResponse.kExtensionErrorMax*/get kExtensionErrorMax() {
    return -32000;
  },
  /*developer.ServiceExtensionResponse.kExtensionErrorMin*/get kExtensionErrorMin() {
    return -32016;
  },
  /*developer.ServiceExtensionResponse.invalidParams*/get invalidParams() {
    return -32602;
  },
  /*developer.ServiceExtensionResponse.extensionError*/get extensionError() {
    return -32000;
  },
  /*developer.ServiceExtensionResponse.extensionErrorMax*/get extensionErrorMax() {
    return -32000;
  },
  /*developer.ServiceExtensionResponse.extensionErrorMin*/get extensionErrorMin() {
    return -32016;
  }
});
developer.registerExtension = function(method, handler) {
  core.ArgumentError.checkNotNull(method, "method");
  if (!method[$startsWith]("ext.")) {
    dart.throw(new core.ArgumentError.value(method, "method", "Must begin with ext."));
  }
  if (developer._lookupExtension(method) != null) {
    dart.throw(new core.ArgumentError.new("Extension already registered: " + dart.str(method)));
  }
  core.ArgumentError.checkNotNull(handler, "handler");
  developer._registerExtension(method, handler);
};
developer.postEvent = function(eventKind, eventData) {
  core.ArgumentError.checkNotNull(eventKind, "eventKind");
  core.ArgumentError.checkNotNull(eventData, "eventData");
  let eventDataAsString = convert.json.encode(eventData);
  developer._postEvent(eventKind, eventDataAsString);
};
developer._postEvent = function(eventKind, eventData) {
  console.debug("dart.developer.postEvent", eventKind, eventData);
};
developer._lookupExtension = function(method) {
  return developer._extensions[$_get](method);
};
developer._registerExtension = function(method, handler) {
  developer._extensions[$_set](method, handler);
  console.debug("dart.developer.registerExtension", method);
};
developer.UserTag = class UserTag extends core.Object {
  static new(label) {
    return developer._FakeUserTag.new(label);
  }
  static get defaultTag() {
    return developer._FakeUserTag._defaultTag;
  }
};
(developer.UserTag[dart.mixinNew] = function() {
}).prototype = developer.UserTag.prototype;
dart.addTypeTests(developer.UserTag);
dart.defineLazy(developer.UserTag, {
  /*developer.UserTag.MAX_USER_TAGS*/get MAX_USER_TAGS() {
    return 64;
  }
});
developer.getCurrentTag = function() {
  return developer._currentTag;
};
developer.Metric = class Metric extends core.Object {
  get name() {
    return this[name$2];
  }
  set name(value) {
    super.name = value;
  }
  get description() {
    return this[description$];
  }
  set description(value) {
    super.description = value;
  }
};
(developer.Metric.new = function(name, description) {
  this[name$2] = name;
  this[description$] = description;
  if (this.name === "vm" || this.name[$contains]("/")) {
    dart.throw(new core.ArgumentError.new("Invalid Metric name."));
  }
}).prototype = developer.Metric.prototype;
dart.addTypeTests(developer.Metric);
const name$2 = Symbol("Metric.name");
const description$ = Symbol("Metric.description");
dart.setFieldSignature(developer.Metric, () => ({
  __proto__: dart.getFields(developer.Metric.__proto__),
  name: dart.finalFieldType(core.String),
  description: dart.finalFieldType(core.String)
}));
const _value$1 = Symbol('_value');
const _toJSON = Symbol('_toJSON');
developer.Gauge = class Gauge extends developer.Metric {
  get min() {
    return this[min$];
  }
  set min(value) {
    super.min = value;
  }
  get max() {
    return this[max$];
  }
  set max(value) {
    super.max = value;
  }
  get value() {
    return this[_value$1];
  }
  set value(v) {
    if (dart.notNull(v) < dart.notNull(this.min)) {
      v = this.min;
    } else if (dart.notNull(v) > dart.notNull(this.max)) {
      v = this.max;
    }
    this[_value$1] = v;
  }
  [_toJSON]() {
    let map = new (IdentityMapOfString$Object()).from(["type", "Gauge", "id", "metrics/" + dart.str(this.name), "name", this.name, "description", this.description, "value", this.value, "min", this.min, "max", this.max]);
    return map;
  }
};
(developer.Gauge.new = function(name, description, min, max) {
  this[_value$1] = null;
  this[min$] = min;
  this[max$] = max;
  developer.Gauge.__proto__.new.call(this, name, description);
  core.ArgumentError.checkNotNull(this.min, "min");
  core.ArgumentError.checkNotNull(this.max, "max");
  if (!(dart.notNull(this.min) < dart.notNull(this.max))) dart.throw(new core.ArgumentError.new("min must be less than max"));
  this[_value$1] = this.min;
}).prototype = developer.Gauge.prototype;
dart.addTypeTests(developer.Gauge);
const min$ = Symbol("Gauge.min");
const max$ = Symbol("Gauge.max");
dart.setMethodSignature(developer.Gauge, () => ({
  __proto__: dart.getMethods(developer.Gauge.__proto__),
  [_toJSON]: dart.fnType(core.Map, [])
}));
dart.setGetterSignature(developer.Gauge, () => ({
  __proto__: dart.getGetters(developer.Gauge.__proto__),
  value: core.double
}));
dart.setSetterSignature(developer.Gauge, () => ({
  __proto__: dart.getSetters(developer.Gauge.__proto__),
  value: core.double
}));
dart.setFieldSignature(developer.Gauge, () => ({
  __proto__: dart.getFields(developer.Gauge.__proto__),
  min: dart.finalFieldType(core.double),
  max: dart.finalFieldType(core.double),
  [_value$1]: dart.fieldType(core.double)
}));
developer.Counter = class Counter extends developer.Metric {
  get value() {
    return this[_value$1];
  }
  set value(v) {
    this[_value$1] = v;
  }
  [_toJSON]() {
    let map = new (IdentityMapOfString$Object()).from(["type", "Counter", "id", "metrics/" + dart.str(this.name), "name", this.name, "description", this.description, "value", this.value]);
    return map;
  }
};
(developer.Counter.new = function(name, description) {
  this[_value$1] = 0.0;
  developer.Counter.__proto__.new.call(this, name, description);
}).prototype = developer.Counter.prototype;
dart.addTypeTests(developer.Counter);
dart.setMethodSignature(developer.Counter, () => ({
  __proto__: dart.getMethods(developer.Counter.__proto__),
  [_toJSON]: dart.fnType(core.Map, [])
}));
dart.setGetterSignature(developer.Counter, () => ({
  __proto__: dart.getGetters(developer.Counter.__proto__),
  value: core.double
}));
dart.setSetterSignature(developer.Counter, () => ({
  __proto__: dart.getSetters(developer.Counter.__proto__),
  value: core.double
}));
dart.setFieldSignature(developer.Counter, () => ({
  __proto__: dart.getFields(developer.Counter.__proto__),
  [_value$1]: dart.fieldType(core.double)
}));
developer.Metrics = class Metrics extends core.Object {
  static register(metric) {
    core.ArgumentError.checkNotNull(metric, "metric");
    if (developer.Metrics._metrics[$_get](metric.name) != null) {
      dart.throw(new core.ArgumentError.new("Registered metrics have unique names"));
    }
    developer.Metrics._metrics[$_set](metric.name, metric);
  }
  static deregister(metric) {
    core.ArgumentError.checkNotNull(metric, "metric");
    developer.Metrics._metrics[$remove](metric.name);
  }
  static _printMetric(id) {
    let metric = developer.Metrics._metrics[$_get](id);
    if (metric == null) {
      return null;
    }
    return convert.json.encode(metric[_toJSON]());
  }
  static _printMetrics() {
    let metrics = [];
    for (let metric of developer.Metrics._metrics[$values]) {
      metrics[$add](metric[_toJSON]());
    }
    let map = new (IdentityMapOfString$Object()).from(["type", "MetricList", "metrics", metrics]);
    return convert.json.encode(map);
  }
};
(developer.Metrics.new = function() {
}).prototype = developer.Metrics.prototype;
dart.addTypeTests(developer.Metrics);
dart.defineLazy(developer.Metrics, {
  /*developer.Metrics._metrics*/get _metrics() {
    return new (IdentityMapOfString$Metric()).new();
  }
});
developer.ServiceProtocolInfo = class ServiceProtocolInfo extends core.Object {
  get majorVersion() {
    return this[majorVersion];
  }
  set majorVersion(value) {
    super.majorVersion = value;
  }
  get minorVersion() {
    return this[minorVersion];
  }
  set minorVersion(value) {
    super.minorVersion = value;
  }
  get serverUri() {
    return this[serverUri$];
  }
  set serverUri(value) {
    super.serverUri = value;
  }
  toString() {
    if (this.serverUri != null) {
      return "Dart VM Service Protocol v" + dart.str(this.majorVersion) + "." + dart.str(this.minorVersion) + " " + ("listening on " + dart.str(this.serverUri));
    } else {
      return "Dart VM Service Protocol v" + dart.str(this.majorVersion) + "." + dart.str(this.minorVersion);
    }
  }
};
(developer.ServiceProtocolInfo.new = function(serverUri) {
  this[majorVersion] = developer._getServiceMajorVersion();
  this[minorVersion] = developer._getServiceMinorVersion();
  this[serverUri$] = serverUri;
}).prototype = developer.ServiceProtocolInfo.prototype;
dart.addTypeTests(developer.ServiceProtocolInfo);
const majorVersion = Symbol("ServiceProtocolInfo.majorVersion");
const minorVersion = Symbol("ServiceProtocolInfo.minorVersion");
const serverUri$ = Symbol("ServiceProtocolInfo.serverUri");
dart.setFieldSignature(developer.ServiceProtocolInfo, () => ({
  __proto__: dart.getFields(developer.ServiceProtocolInfo.__proto__),
  majorVersion: dart.finalFieldType(core.int),
  minorVersion: dart.finalFieldType(core.int),
  serverUri: dart.finalFieldType(core.Uri)
}));
dart.defineExtensionMethods(developer.ServiceProtocolInfo, ['toString']);
developer.Service = class Service extends core.Object {
  static getInfo() {
    return async.async(developer.ServiceProtocolInfo, function* getInfo() {
      let receivePort = isolate.RawReceivePort.new();
      let uriCompleter = CompleterOfUri().new();
      receivePort.handler = dart.fn(uri => uriCompleter.complete(uri), UriTovoid());
      developer._getServerInfo(receivePort.sendPort);
      let uri = (yield uriCompleter.future);
      receivePort.close();
      return new developer.ServiceProtocolInfo.new(uri);
    });
  }
  static controlWebServer(opts) {
    return async.async(developer.ServiceProtocolInfo, function* controlWebServer() {
      let enable = opts && 'enable' in opts ? opts.enable : false;
      core.ArgumentError.checkNotNull(enable, "enable");
      let receivePort = isolate.RawReceivePort.new();
      let uriCompleter = CompleterOfUri().new();
      receivePort.handler = dart.fn(uri => uriCompleter.complete(uri), UriTovoid());
      developer._webServerControl(receivePort.sendPort, enable);
      let uri = (yield uriCompleter.future);
      receivePort.close();
      return new developer.ServiceProtocolInfo.new(uri);
    });
  }
  static getIsolateID(isolate) {
    core.ArgumentError.checkNotNull(isolate, "isolate");
    return developer._getIsolateIDFromSendPort(isolate.controlPort);
  }
};
(developer.Service.new = function() {
}).prototype = developer.Service.prototype;
dart.addTypeTests(developer.Service);
developer._getServerInfo = function(sendPort) {
  sendPort.send(null);
};
developer._webServerControl = function(sendPort, enable) {
  sendPort.send(null);
};
developer._getServiceMajorVersion = function() {
  return 0;
};
developer._getServiceMinorVersion = function() {
  return 0;
};
developer._getIsolateIDFromSendPort = function(sendPort) {
  return null;
};
dart.defineLazy(developer, {
  /*developer._hasTimeline*/get _hasTimeline() {
    return true;
  }
});
const _type$ = Symbol('_type');
developer.Flow = class Flow extends core.Object {
  get id() {
    return this[id$];
  }
  set id(value) {
    super.id = value;
  }
  static begin(opts) {
    let id = opts && 'id' in opts ? opts.id : null;
    return new developer.Flow.__(9, id != null ? id : developer._getNextAsyncId());
  }
  static step(id) {
    return new developer.Flow.__(10, id);
  }
  static end(id) {
    return new developer.Flow.__(11, id);
  }
};
(developer.Flow.__ = function(type, id) {
  this[_type$] = type;
  this[id$] = id;
}).prototype = developer.Flow.prototype;
dart.addTypeTests(developer.Flow);
const id$ = Symbol("Flow.id");
dart.setFieldSignature(developer.Flow, () => ({
  __proto__: dart.getFields(developer.Flow.__proto__),
  [_type$]: dart.finalFieldType(core.int),
  id: dart.finalFieldType(core.int)
}));
dart.defineLazy(developer.Flow, {
  /*developer.Flow._begin*/get _begin() {
    return 9;
  },
  /*developer.Flow._step*/get _step() {
    return 10;
  },
  /*developer.Flow._end*/get _end() {
    return 11;
  }
});
const _arguments$ = Symbol('_arguments');
developer.Timeline = class Timeline extends core.Object {
  static startSync(name, opts) {
    let arguments$0 = opts && 'arguments' in opts ? opts.arguments : null;
    let flow = opts && 'flow' in opts ? opts.flow : null;
    if (!true) return;
    core.ArgumentError.checkNotNull(name, "name");
    if (!dart.test(developer._isDartStreamEnabled())) {
      developer.Timeline._stack[$add](null);
      return;
    }
    let block = new developer._SyncBlock.__(name, developer._getTraceClock(), developer._getThreadCpuClock());
    if (arguments$0 != null) {
      block[_arguments$] = arguments$0;
    }
    if (flow != null) {
      block.flow = flow;
    }
    developer.Timeline._stack[$add](block);
  }
  static finishSync() {
    if (!true) {
      return;
    }
    if (developer.Timeline._stack[$length] === 0) {
      dart.throw(new core.StateError.new("Uneven calls to startSync and finishSync"));
    }
    let block = developer.Timeline._stack[$removeLast]();
    if (block == null) {
      return;
    }
    block.finish();
  }
  static instantSync(name, opts) {
    let arguments$0 = opts && 'arguments' in opts ? opts.arguments : null;
    if (!true) return;
    core.ArgumentError.checkNotNull(name, "name");
    if (!dart.test(developer._isDartStreamEnabled())) {
      return;
    }
    let instantArguments = null;
    if (arguments$0 != null) {
      instantArguments = core.Map.from(arguments$0);
    }
    developer._reportInstantEvent(developer._getTraceClock(), "Dart", name, developer._argumentsAsJson(instantArguments));
  }
  static timeSync(T, name, func, opts) {
    let arguments$0 = opts && 'arguments' in opts ? opts.arguments : null;
    let flow = opts && 'flow' in opts ? opts.flow : null;
    developer.Timeline.startSync(name, {arguments: arguments$0, flow: flow});
    try {
      return func();
    } finally {
      developer.Timeline.finishSync();
    }
  }
  static get now() {
    return developer._getTraceClock();
  }
};
(developer.Timeline.new = function() {
}).prototype = developer.Timeline.prototype;
dart.addTypeTests(developer.Timeline);
dart.defineLazy(developer.Timeline, {
  /*developer.Timeline._stack*/get _stack() {
    return JSArrayOf_SyncBlock().of([]);
  }
});
const _taskId = Symbol('_taskId');
const _stack = Symbol('_stack');
const _start$1 = Symbol('_start');
const _finish = Symbol('_finish');
developer.TimelineTask = class TimelineTask extends core.Object {
  start(name, opts) {
    let arguments$0 = opts && 'arguments' in opts ? opts.arguments : null;
    if (!true) return;
    core.ArgumentError.checkNotNull(name, "name");
    let block = new developer._AsyncBlock.__(name, this[_taskId]);
    if (arguments$0 != null) {
      block[_arguments$] = arguments$0;
    }
    this[_stack][$add](block);
    block[_start$1]();
  }
  instant(name, opts) {
    let arguments$0 = opts && 'arguments' in opts ? opts.arguments : null;
    if (!true) return;
    core.ArgumentError.checkNotNull(name, "name");
    let instantArguments = null;
    if (arguments$0 != null) {
      instantArguments = core.Map.from(arguments$0);
    }
    developer._reportTaskEvent(developer._getTraceClock(), this[_taskId], "n", "Dart", name, developer._argumentsAsJson(instantArguments));
  }
  finish() {
    if (!true) {
      return;
    }
    if (this[_stack][$length] === 0) {
      dart.throw(new core.StateError.new("Uneven calls to start and finish"));
    }
    let block = this[_stack][$removeLast]();
    block[_finish]();
  }
  pass() {
    if (dart.notNull(this[_stack][$length]) > 0) {
      dart.throw(new core.StateError.new("You cannot pass a TimelineTask without finishing all started " + "operations"));
    }
    let r = this[_taskId];
    return r;
  }
};
(developer.TimelineTask.new = function() {
  this[_stack] = JSArrayOf_AsyncBlock().of([]);
  this[_taskId] = developer._getNextAsyncId();
}).prototype = developer.TimelineTask.prototype;
(developer.TimelineTask.withTaskId = function(taskId) {
  this[_stack] = JSArrayOf_AsyncBlock().of([]);
  this[_taskId] = taskId;
  core.ArgumentError.checkNotNull(taskId, "taskId");
}).prototype = developer.TimelineTask.prototype;
dart.addTypeTests(developer.TimelineTask);
dart.setMethodSignature(developer.TimelineTask, () => ({
  __proto__: dart.getMethods(developer.TimelineTask.__proto__),
  start: dart.fnType(dart.void, [core.String], {arguments: core.Map}),
  instant: dart.fnType(dart.void, [core.String], {arguments: core.Map}),
  finish: dart.fnType(dart.void, []),
  pass: dart.fnType(core.int, [])
}));
dart.setFieldSignature(developer.TimelineTask, () => ({
  __proto__: dart.getFields(developer.TimelineTask.__proto__),
  [_taskId]: dart.finalFieldType(core.int),
  [_stack]: dart.finalFieldType(ListOf_AsyncBlock())
}));
developer._AsyncBlock = class _AsyncBlock extends core.Object {
  [_start$1]() {
    developer._reportTaskEvent(developer._getTraceClock(), this[_taskId], "b", this.category, this.name, developer._argumentsAsJson(this[_arguments$]));
  }
  [_finish]() {
    developer._reportTaskEvent(developer._getTraceClock(), this[_taskId], "e", this.category, this.name, developer._argumentsAsJson(null));
  }
};
(developer._AsyncBlock.__ = function(name, taskId) {
  this.category = "Dart";
  this[_arguments$] = null;
  this.name = name;
  this[_taskId] = taskId;
}).prototype = developer._AsyncBlock.prototype;
dart.addTypeTests(developer._AsyncBlock);
dart.setMethodSignature(developer._AsyncBlock, () => ({
  __proto__: dart.getMethods(developer._AsyncBlock.__proto__),
  [_start$1]: dart.fnType(dart.void, []),
  [_finish]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(developer._AsyncBlock, () => ({
  __proto__: dart.getFields(developer._AsyncBlock.__proto__),
  category: dart.finalFieldType(core.String),
  name: dart.finalFieldType(core.String),
  [_taskId]: dart.finalFieldType(core.int),
  [_arguments$]: dart.fieldType(core.Map)
}));
const _startCpu = Symbol('_startCpu');
const _flow = Symbol('_flow');
developer._SyncBlock = class _SyncBlock extends core.Object {
  finish() {
    developer._reportCompleteEvent(this[_start$1], this[_startCpu], this.category, this.name, developer._argumentsAsJson(this[_arguments$]));
    if (this[_flow] != null) {
      developer._reportFlowEvent(this[_start$1], this[_startCpu], this.category, this.name, this[_flow][_type$], this[_flow].id, developer._argumentsAsJson(null));
    }
  }
  set flow(f) {
    this[_flow] = f;
  }
};
(developer._SyncBlock.__ = function(name, start, startCpu) {
  this.category = "Dart";
  this[_arguments$] = null;
  this[_flow] = null;
  this.name = name;
  this[_start$1] = start;
  this[_startCpu] = startCpu;
}).prototype = developer._SyncBlock.prototype;
dart.addTypeTests(developer._SyncBlock);
dart.setMethodSignature(developer._SyncBlock, () => ({
  __proto__: dart.getMethods(developer._SyncBlock.__proto__),
  finish: dart.fnType(dart.void, [])
}));
dart.setSetterSignature(developer._SyncBlock, () => ({
  __proto__: dart.getSetters(developer._SyncBlock.__proto__),
  flow: developer.Flow
}));
dart.setFieldSignature(developer._SyncBlock, () => ({
  __proto__: dart.getFields(developer._SyncBlock.__proto__),
  category: dart.finalFieldType(core.String),
  name: dart.finalFieldType(core.String),
  [_arguments$]: dart.fieldType(core.Map),
  [_start$1]: dart.finalFieldType(core.int),
  [_startCpu]: dart.finalFieldType(core.int),
  [_flow]: dart.fieldType(developer.Flow)
}));
developer._argumentsAsJson = function(arguments$0) {
  if (arguments$0 == null || arguments$0[$length] === 0) {
    return "{}";
  }
  return convert.json.encode(arguments$0);
};
developer._isDartStreamEnabled = function() {
  return false;
};
developer._getNextAsyncId = function() {
  return 0;
};
developer._getTraceClock = function() {
  let x = developer._clockValue;
  developer._clockValue = dart.notNull(x) + 1;
  return x;
};
developer._getThreadCpuClock = function() {
  return -1;
};
developer._reportTaskEvent = function(start, taskId, phase, category, name, argumentsAsJson) {
};
developer._reportCompleteEvent = function(start, startCpu, category, name, argumentsAsJson) {
};
developer._reportFlowEvent = function(start, startCpu, category, name, type, id, argumentsAsJson) {
};
developer._reportInstantEvent = function(start, category, name, argumentsAsJson) {
};
io.BytesBuilder = class BytesBuilder extends core.Object {
  static new(opts) {
    let copy = opts && 'copy' in opts ? opts.copy : true;
    if (dart.test(copy)) {
      return new io._CopyingBytesBuilder.new();
    } else {
      return new io._BytesBuilder.new();
    }
  }
};
(io.BytesBuilder[dart.mixinNew] = function() {
}).prototype = io.BytesBuilder.prototype;
dart.addTypeTests(io.BytesBuilder);
const _buffer$ = Symbol('_buffer');
const _length$1 = Symbol('_length');
const _grow$ = Symbol('_grow');
io._CopyingBytesBuilder = class _CopyingBytesBuilder extends core.Object {
  add(bytes) {
    let bytesLength = bytes[$length];
    if (bytesLength === 0) return;
    let required = dart.notNull(this[_length$1]) + dart.notNull(bytesLength);
    if (dart.notNull(this[_buffer$][$length]) < required) {
      this[_grow$](required);
    }
    if (!(dart.notNull(this[_buffer$][$length]) >= required)) dart.assertFailed();
    if (typed_data.Uint8List.is(bytes)) {
      this[_buffer$][$setRange](this[_length$1], required, bytes);
    } else {
      for (let i = 0; i < dart.notNull(bytesLength); i++) {
        this[_buffer$][$_set](dart.notNull(this[_length$1]) + i, bytes[$_get](i));
      }
    }
    this[_length$1] = required;
  }
  addByte(byte) {
    if (this[_buffer$][$length] == this[_length$1]) {
      this[_grow$](this[_length$1]);
    }
    if (!(dart.notNull(this[_buffer$][$length]) > dart.notNull(this[_length$1]))) dart.assertFailed();
    this[_buffer$][$_set](this[_length$1], byte);
    this[_length$1] = dart.notNull(this[_length$1]) + 1;
  }
  [_grow$](required) {
    let newSize = dart.notNull(required) * 2;
    if (dart.notNull(newSize) < 1024) {
      newSize = 1024;
    } else {
      newSize = io._CopyingBytesBuilder._pow2roundup(newSize);
    }
    let newBuffer = typed_data.Uint8List.new(newSize);
    newBuffer[$setRange](0, this[_buffer$][$length], this[_buffer$]);
    this[_buffer$] = newBuffer;
  }
  takeBytes() {
    if (this[_length$1] === 0) return io._CopyingBytesBuilder._emptyList;
    let buffer = typed_data.Uint8List.view(this[_buffer$][$buffer], 0, this[_length$1]);
    this.clear();
    return buffer;
  }
  toBytes() {
    if (this[_length$1] === 0) return io._CopyingBytesBuilder._emptyList;
    return typed_data.Uint8List.fromList(typed_data.Uint8List.view(this[_buffer$][$buffer], 0, this[_length$1]));
  }
  get length() {
    return this[_length$1];
  }
  get isEmpty() {
    return this[_length$1] === 0;
  }
  get isNotEmpty() {
    return this[_length$1] !== 0;
  }
  clear() {
    this[_length$1] = 0;
    this[_buffer$] = io._CopyingBytesBuilder._emptyList;
  }
  static _pow2roundup(x) {
    if (!(dart.notNull(x) > 0)) dart.assertFailed();
    x = dart.notNull(x) - 1;
    x = (dart.notNull(x) | x[$rightShift](1)) >>> 0;
    x = (dart.notNull(x) | x[$rightShift](2)) >>> 0;
    x = (dart.notNull(x) | x[$rightShift](4)) >>> 0;
    x = (dart.notNull(x) | x[$rightShift](8)) >>> 0;
    x = (dart.notNull(x) | x[$rightShift](16)) >>> 0;
    return dart.notNull(x) + 1;
  }
};
(io._CopyingBytesBuilder.new = function(initialCapacity) {
  if (initialCapacity === void 0) initialCapacity = 0;
  this[_length$1] = 0;
  this[_buffer$] = dart.notNull(initialCapacity) <= 0 ? io._CopyingBytesBuilder._emptyList : typed_data.Uint8List.new(io._CopyingBytesBuilder._pow2roundup(initialCapacity));
}).prototype = io._CopyingBytesBuilder.prototype;
dart.addTypeTests(io._CopyingBytesBuilder);
io._CopyingBytesBuilder[dart.implements] = () => [io.BytesBuilder];
dart.setMethodSignature(io._CopyingBytesBuilder, () => ({
  __proto__: dart.getMethods(io._CopyingBytesBuilder.__proto__),
  add: dart.fnType(dart.void, [core.List$(core.int)]),
  addByte: dart.fnType(dart.void, [core.int]),
  [_grow$]: dart.fnType(dart.void, [core.int]),
  takeBytes: dart.fnType(core.List$(core.int), []),
  toBytes: dart.fnType(core.List$(core.int), []),
  clear: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(io._CopyingBytesBuilder, () => ({
  __proto__: dart.getGetters(io._CopyingBytesBuilder.__proto__),
  length: core.int,
  isEmpty: core.bool,
  isNotEmpty: core.bool
}));
dart.setFieldSignature(io._CopyingBytesBuilder, () => ({
  __proto__: dart.getFields(io._CopyingBytesBuilder.__proto__),
  [_length$1]: dart.fieldType(core.int),
  [_buffer$]: dart.fieldType(typed_data.Uint8List)
}));
dart.defineLazy(io._CopyingBytesBuilder, {
  /*io._CopyingBytesBuilder._initSize*/get _initSize() {
    return 1024;
  },
  /*io._CopyingBytesBuilder._emptyList*/get _emptyList() {
    return typed_data.Uint8List.new(0);
  }
});
const _chunks = Symbol('_chunks');
io._BytesBuilder = class _BytesBuilder extends core.Object {
  add(bytes) {
    let typedBytes = null;
    if (typed_data.Uint8List.is(bytes)) {
      typedBytes = bytes;
    } else {
      typedBytes = typed_data.Uint8List.fromList(bytes);
    }
    this[_chunks][$add](typedBytes);
    this[_length$1] = dart.notNull(this[_length$1]) + dart.notNull(typedBytes[$length]);
  }
  addByte(byte) {
    this[_chunks][$add]((() => {
      let _ = typed_data.Uint8List.new(1);
      _[$_set](0, byte);
      return _;
    })());
    this[_length$1] = dart.notNull(this[_length$1]) + 1;
  }
  takeBytes() {
    if (this[_length$1] === 0) return io._CopyingBytesBuilder._emptyList;
    if (this[_chunks][$length] === 1) {
      let buffer = this[_chunks][$_get](0);
      this.clear();
      return buffer;
    }
    let buffer = typed_data.Uint8List.new(this[_length$1]);
    let offset = 0;
    for (let chunk of this[_chunks]) {
      buffer[$setRange](offset, offset + dart.notNull(chunk[$length]), chunk);
      offset = offset + dart.notNull(chunk[$length]);
    }
    this.clear();
    return buffer;
  }
  toBytes() {
    if (this[_length$1] === 0) return io._CopyingBytesBuilder._emptyList;
    let buffer = typed_data.Uint8List.new(this[_length$1]);
    let offset = 0;
    for (let chunk of this[_chunks]) {
      buffer[$setRange](offset, offset + dart.notNull(chunk[$length]), chunk);
      offset = offset + dart.notNull(chunk[$length]);
    }
    return buffer;
  }
  get length() {
    return this[_length$1];
  }
  get isEmpty() {
    return this[_length$1] === 0;
  }
  get isNotEmpty() {
    return this[_length$1] !== 0;
  }
  clear() {
    this[_length$1] = 0;
    this[_chunks][$clear]();
  }
};
(io._BytesBuilder.new = function() {
  this[_length$1] = 0;
  this[_chunks] = JSArrayOfUint8List().of([]);
}).prototype = io._BytesBuilder.prototype;
dart.addTypeTests(io._BytesBuilder);
io._BytesBuilder[dart.implements] = () => [io.BytesBuilder];
dart.setMethodSignature(io._BytesBuilder, () => ({
  __proto__: dart.getMethods(io._BytesBuilder.__proto__),
  add: dart.fnType(dart.void, [core.List$(core.int)]),
  addByte: dart.fnType(dart.void, [core.int]),
  takeBytes: dart.fnType(core.List$(core.int), []),
  toBytes: dart.fnType(core.List$(core.int), []),
  clear: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(io._BytesBuilder, () => ({
  __proto__: dart.getGetters(io._BytesBuilder.__proto__),
  length: core.int,
  isEmpty: core.bool,
  isNotEmpty: core.bool
}));
dart.setFieldSignature(io._BytesBuilder, () => ({
  __proto__: dart.getFields(io._BytesBuilder.__proto__),
  [_length$1]: dart.fieldType(core.int),
  [_chunks]: dart.finalFieldType(ListOfUint8List())
}));
dart.defineLazy(io, {
  /*io._successResponse*/get _successResponse() {
    return 0;
  },
  /*io._illegalArgumentResponse*/get _illegalArgumentResponse() {
    return 1;
  },
  /*io._osErrorResponse*/get _osErrorResponse() {
    return 2;
  },
  /*io._fileClosedResponse*/get _fileClosedResponse() {
    return 3;
  },
  /*io._errorResponseErrorType*/get _errorResponseErrorType() {
    return 0;
  },
  /*io._osErrorResponseErrorCode*/get _osErrorResponseErrorCode() {
    return 1;
  },
  /*io._osErrorResponseMessage*/get _osErrorResponseMessage() {
    return 2;
  }
});
io._isErrorResponse = function(response) {
  return core.List.is(response) && !dart.equals(response[$_get](0), 0);
};
io._exceptionFromResponse = function(response, message, path) {
  if (!dart.test(io._isErrorResponse(response))) dart.assertFailed();
  switch (dart.dindex(response, 0)) {
    case 1:
    {
      return new core.ArgumentError.new(dart.str(message) + ": " + dart.str(path));
    }
    case 2:
    {
      let err = new io.OSError.new(core.String._check(dart.dindex(response, 2)), core.int._check(dart.dindex(response, 1)));
      return new io.FileSystemException.new(message, path, err);
    }
    case 3:
    {
      return new io.FileSystemException.new("File closed", path);
    }
    default:
    {
      return core.Exception.new("Unknown error");
    }
  }
};
io.IOException = class IOException extends core.Object {
  toString() {
    return "IOException";
  }
};
(io.IOException.new = function() {
}).prototype = io.IOException.prototype;
dart.addTypeTests(io.IOException);
io.IOException[dart.implements] = () => [core.Exception];
dart.defineExtensionMethods(io.IOException, ['toString']);
io.OSError = class OSError extends core.Object {
  get message() {
    return this[message$7];
  }
  set message(value) {
    super.message = value;
  }
  get errorCode() {
    return this[errorCode$];
  }
  set errorCode(value) {
    super.errorCode = value;
  }
  toString() {
    let sb = new core.StringBuffer.new();
    sb.write("OS Error");
    if (this.message[$isNotEmpty]) {
      sb.write(": ");
      sb.write(this.message);
      if (this.errorCode !== -1) {
        sb.write(", errno = ");
        sb.write(dart.toString(this.errorCode));
      }
    } else if (this.errorCode !== -1) {
      sb.write(": errno = ");
      sb.write(dart.toString(this.errorCode));
    }
    return sb.toString();
  }
};
(io.OSError.new = function(message, errorCode) {
  if (message === void 0) message = "";
  if (errorCode === void 0) errorCode = -1;
  this[message$7] = message;
  this[errorCode$] = errorCode;
}).prototype = io.OSError.prototype;
dart.addTypeTests(io.OSError);
const message$7 = Symbol("OSError.message");
const errorCode$ = Symbol("OSError.errorCode");
dart.setFieldSignature(io.OSError, () => ({
  __proto__: dart.getFields(io.OSError.__proto__),
  message: dart.finalFieldType(core.String),
  errorCode: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(io.OSError, ['toString']);
dart.defineLazy(io.OSError, {
  /*io.OSError.noErrorCode*/get noErrorCode() {
    return -1;
  }
});
io._BufferAndStart = class _BufferAndStart extends core.Object {};
(io._BufferAndStart.new = function(buffer, start) {
  this.buffer = buffer;
  this.start = start;
}).prototype = io._BufferAndStart.prototype;
dart.addTypeTests(io._BufferAndStart);
dart.setFieldSignature(io._BufferAndStart, () => ({
  __proto__: dart.getFields(io._BufferAndStart.__proto__),
  buffer: dart.fieldType(ListOfint()),
  start: dart.fieldType(core.int)
}));
io._ensureFastAndSerializableByteData = function(buffer, start, end) {
  if (typed_data.Uint8List.is(buffer) || typed_data.Int8List.is(buffer)) {
    return new io._BufferAndStart.new(buffer, start);
  }
  let length = dart.notNull(end) - dart.notNull(start);
  let newBuffer = typed_data.Uint8List.new(length);
  let j = start;
  for (let i = 0; i < length; i++) {
    let value = buffer[$_get](j);
    if (value == null) dart.throw(new core.ArgumentError.new("List element is null at index " + dart.str(j)));
    newBuffer[$_set](i, value);
    j = dart.notNull(j) + 1;
  }
  return new io._BufferAndStart.new(newBuffer, 0);
};
io._IOCrypto = class _IOCrypto extends core.Object {
  static getRandomBytes(count) {
    dart.throw(new core.UnsupportedError.new("_IOCrypto.getRandomBytes"));
  }
};
(io._IOCrypto.new = function() {
}).prototype = io._IOCrypto.prototype;
dart.addTypeTests(io._IOCrypto);
io.ZLibOption = class ZLibOption extends core.Object {};
(io.ZLibOption.new = function() {
}).prototype = io.ZLibOption.prototype;
dart.addTypeTests(io.ZLibOption);
dart.defineLazy(io.ZLibOption, {
  /*io.ZLibOption.minWindowBits*/get minWindowBits() {
    return 8;
  },
  /*io.ZLibOption.MIN_WINDOW_BITS*/get MIN_WINDOW_BITS() {
    return 8;
  },
  /*io.ZLibOption.maxWindowBits*/get maxWindowBits() {
    return 15;
  },
  /*io.ZLibOption.MAX_WINDOW_BITS*/get MAX_WINDOW_BITS() {
    return 15;
  },
  /*io.ZLibOption.defaultWindowBits*/get defaultWindowBits() {
    return 15;
  },
  /*io.ZLibOption.DEFAULT_WINDOW_BITS*/get DEFAULT_WINDOW_BITS() {
    return 15;
  },
  /*io.ZLibOption.minLevel*/get minLevel() {
    return -1;
  },
  /*io.ZLibOption.MIN_LEVEL*/get MIN_LEVEL() {
    return -1;
  },
  /*io.ZLibOption.maxLevel*/get maxLevel() {
    return 9;
  },
  /*io.ZLibOption.MAX_LEVEL*/get MAX_LEVEL() {
    return 9;
  },
  /*io.ZLibOption.defaultLevel*/get defaultLevel() {
    return 6;
  },
  /*io.ZLibOption.DEFAULT_LEVEL*/get DEFAULT_LEVEL() {
    return 6;
  },
  /*io.ZLibOption.minMemLevel*/get minMemLevel() {
    return 1;
  },
  /*io.ZLibOption.MIN_MEM_LEVEL*/get MIN_MEM_LEVEL() {
    return 1;
  },
  /*io.ZLibOption.maxMemLevel*/get maxMemLevel() {
    return 9;
  },
  /*io.ZLibOption.MAX_MEM_LEVEL*/get MAX_MEM_LEVEL() {
    return 9;
  },
  /*io.ZLibOption.defaultMemLevel*/get defaultMemLevel() {
    return 8;
  },
  /*io.ZLibOption.DEFAULT_MEM_LEVEL*/get DEFAULT_MEM_LEVEL() {
    return 8;
  },
  /*io.ZLibOption.strategyFiltered*/get strategyFiltered() {
    return 1;
  },
  /*io.ZLibOption.STRATEGY_FILTERED*/get STRATEGY_FILTERED() {
    return 1;
  },
  /*io.ZLibOption.strategyHuffmanOnly*/get strategyHuffmanOnly() {
    return 2;
  },
  /*io.ZLibOption.STRATEGY_HUFFMAN_ONLY*/get STRATEGY_HUFFMAN_ONLY() {
    return 2;
  },
  /*io.ZLibOption.strategyRle*/get strategyRle() {
    return 3;
  },
  /*io.ZLibOption.STRATEGY_RLE*/get STRATEGY_RLE() {
    return 3;
  },
  /*io.ZLibOption.strategyFixed*/get strategyFixed() {
    return 4;
  },
  /*io.ZLibOption.STRATEGY_FIXED*/get STRATEGY_FIXED() {
    return 4;
  },
  /*io.ZLibOption.strategyDefault*/get strategyDefault() {
    return 0;
  },
  /*io.ZLibOption.STRATEGY_DEFAULT*/get STRATEGY_DEFAULT() {
    return 0;
  }
});
dart.defineLazy(io, {
  /*io.zlib*/get zlib() {
    return dart.const(new io.ZLibCodec._default());
  },
  /*io.ZLIB*/get ZLIB() {
    return io.zlib;
  }
});
io.ZLibCodec = class ZLibCodec extends convert.Codec$(core.List$(core.int), core.List$(core.int)) {
  get gzip() {
    return this[gzip$];
  }
  set gzip(value) {
    super.gzip = value;
  }
  get level() {
    return this[level$];
  }
  set level(value) {
    super.level = value;
  }
  get memLevel() {
    return this[memLevel$];
  }
  set memLevel(value) {
    super.memLevel = value;
  }
  get strategy() {
    return this[strategy$];
  }
  set strategy(value) {
    super.strategy = value;
  }
  get windowBits() {
    return this[windowBits$];
  }
  set windowBits(value) {
    super.windowBits = value;
  }
  get raw() {
    return this[raw$];
  }
  set raw(value) {
    super.raw = value;
  }
  get dictionary() {
    return this[dictionary$];
  }
  set dictionary(value) {
    super.dictionary = value;
  }
  get encoder() {
    return new io.ZLibEncoder.new({gzip: false, level: this.level, windowBits: this.windowBits, memLevel: this.memLevel, strategy: this.strategy, dictionary: this.dictionary, raw: this.raw});
  }
  get decoder() {
    return new io.ZLibDecoder.new({windowBits: this.windowBits, dictionary: this.dictionary, raw: this.raw});
  }
};
(io.ZLibCodec.new = function(opts) {
  let level = opts && 'level' in opts ? opts.level : io.ZLibOption.defaultLevel;
  let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
  let memLevel = opts && 'memLevel' in opts ? opts.memLevel : io.ZLibOption.defaultMemLevel;
  let strategy = opts && 'strategy' in opts ? opts.strategy : io.ZLibOption.strategyDefault;
  let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
  let raw = opts && 'raw' in opts ? opts.raw : false;
  let gzip = opts && 'gzip' in opts ? opts.gzip : false;
  this[level$] = level;
  this[windowBits$] = windowBits;
  this[memLevel$] = memLevel;
  this[strategy$] = strategy;
  this[dictionary$] = dictionary;
  this[raw$] = raw;
  this[gzip$] = gzip;
  io.ZLibCodec.__proto__.new.call(this);
  io._validateZLibeLevel(this.level);
  io._validateZLibMemLevel(this.memLevel);
  io._validateZLibStrategy(this.strategy);
  io._validateZLibWindowBits(this.windowBits);
}).prototype = io.ZLibCodec.prototype;
(io.ZLibCodec._default = function() {
  this[level$] = io.ZLibOption.defaultLevel;
  this[windowBits$] = io.ZLibOption.defaultWindowBits;
  this[memLevel$] = io.ZLibOption.defaultMemLevel;
  this[strategy$] = io.ZLibOption.strategyDefault;
  this[raw$] = false;
  this[gzip$] = false;
  this[dictionary$] = null;
  io.ZLibCodec.__proto__.new.call(this);
}).prototype = io.ZLibCodec.prototype;
dart.addTypeTests(io.ZLibCodec);
const gzip$ = Symbol("ZLibCodec.gzip");
const level$ = Symbol("ZLibCodec.level");
const memLevel$ = Symbol("ZLibCodec.memLevel");
const strategy$ = Symbol("ZLibCodec.strategy");
const windowBits$ = Symbol("ZLibCodec.windowBits");
const raw$ = Symbol("ZLibCodec.raw");
const dictionary$ = Symbol("ZLibCodec.dictionary");
dart.setGetterSignature(io.ZLibCodec, () => ({
  __proto__: dart.getGetters(io.ZLibCodec.__proto__),
  encoder: io.ZLibEncoder,
  decoder: io.ZLibDecoder
}));
dart.setFieldSignature(io.ZLibCodec, () => ({
  __proto__: dart.getFields(io.ZLibCodec.__proto__),
  gzip: dart.finalFieldType(core.bool),
  level: dart.finalFieldType(core.int),
  memLevel: dart.finalFieldType(core.int),
  strategy: dart.finalFieldType(core.int),
  windowBits: dart.finalFieldType(core.int),
  raw: dart.finalFieldType(core.bool),
  dictionary: dart.finalFieldType(ListOfint())
}));
dart.defineLazy(io, {
  /*io.gzip*/get gzip() {
    return dart.const(new io.GZipCodec._default());
  },
  /*io.GZIP*/get GZIP() {
    return io.gzip;
  }
});
io.GZipCodec = class GZipCodec extends convert.Codec$(core.List$(core.int), core.List$(core.int)) {
  get gzip() {
    return this[gzip$0];
  }
  set gzip(value) {
    super.gzip = value;
  }
  get level() {
    return this[level$0];
  }
  set level(value) {
    super.level = value;
  }
  get memLevel() {
    return this[memLevel$0];
  }
  set memLevel(value) {
    super.memLevel = value;
  }
  get strategy() {
    return this[strategy$0];
  }
  set strategy(value) {
    super.strategy = value;
  }
  get windowBits() {
    return this[windowBits$0];
  }
  set windowBits(value) {
    super.windowBits = value;
  }
  get dictionary() {
    return this[dictionary$0];
  }
  set dictionary(value) {
    super.dictionary = value;
  }
  get raw() {
    return this[raw$0];
  }
  set raw(value) {
    super.raw = value;
  }
  get encoder() {
    return new io.ZLibEncoder.new({gzip: true, level: this.level, windowBits: this.windowBits, memLevel: this.memLevel, strategy: this.strategy, dictionary: this.dictionary, raw: this.raw});
  }
  get decoder() {
    return new io.ZLibDecoder.new({windowBits: this.windowBits, dictionary: this.dictionary, raw: this.raw});
  }
};
(io.GZipCodec.new = function(opts) {
  let level = opts && 'level' in opts ? opts.level : io.ZLibOption.defaultLevel;
  let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
  let memLevel = opts && 'memLevel' in opts ? opts.memLevel : io.ZLibOption.defaultMemLevel;
  let strategy = opts && 'strategy' in opts ? opts.strategy : io.ZLibOption.strategyDefault;
  let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
  let raw = opts && 'raw' in opts ? opts.raw : false;
  let gzip = opts && 'gzip' in opts ? opts.gzip : true;
  this[level$0] = level;
  this[windowBits$0] = windowBits;
  this[memLevel$0] = memLevel;
  this[strategy$0] = strategy;
  this[dictionary$0] = dictionary;
  this[raw$0] = raw;
  this[gzip$0] = gzip;
  io.GZipCodec.__proto__.new.call(this);
  io._validateZLibeLevel(this.level);
  io._validateZLibMemLevel(this.memLevel);
  io._validateZLibStrategy(this.strategy);
  io._validateZLibWindowBits(this.windowBits);
}).prototype = io.GZipCodec.prototype;
(io.GZipCodec._default = function() {
  this[level$0] = io.ZLibOption.defaultLevel;
  this[windowBits$0] = io.ZLibOption.defaultWindowBits;
  this[memLevel$0] = io.ZLibOption.defaultMemLevel;
  this[strategy$0] = io.ZLibOption.strategyDefault;
  this[raw$0] = false;
  this[gzip$0] = true;
  this[dictionary$0] = null;
  io.GZipCodec.__proto__.new.call(this);
}).prototype = io.GZipCodec.prototype;
dart.addTypeTests(io.GZipCodec);
const gzip$0 = Symbol("GZipCodec.gzip");
const level$0 = Symbol("GZipCodec.level");
const memLevel$0 = Symbol("GZipCodec.memLevel");
const strategy$0 = Symbol("GZipCodec.strategy");
const windowBits$0 = Symbol("GZipCodec.windowBits");
const dictionary$0 = Symbol("GZipCodec.dictionary");
const raw$0 = Symbol("GZipCodec.raw");
dart.setGetterSignature(io.GZipCodec, () => ({
  __proto__: dart.getGetters(io.GZipCodec.__proto__),
  encoder: io.ZLibEncoder,
  decoder: io.ZLibDecoder
}));
dart.setFieldSignature(io.GZipCodec, () => ({
  __proto__: dart.getFields(io.GZipCodec.__proto__),
  gzip: dart.finalFieldType(core.bool),
  level: dart.finalFieldType(core.int),
  memLevel: dart.finalFieldType(core.int),
  strategy: dart.finalFieldType(core.int),
  windowBits: dart.finalFieldType(core.int),
  dictionary: dart.finalFieldType(ListOfint()),
  raw: dart.finalFieldType(core.bool)
}));
io.ZLibEncoder = class ZLibEncoder extends convert.Converter$(core.List$(core.int), core.List$(core.int)) {
  get gzip() {
    return this[gzip$1];
  }
  set gzip(value) {
    super.gzip = value;
  }
  get level() {
    return this[level$1];
  }
  set level(value) {
    super.level = value;
  }
  get memLevel() {
    return this[memLevel$1];
  }
  set memLevel(value) {
    super.memLevel = value;
  }
  get strategy() {
    return this[strategy$1];
  }
  set strategy(value) {
    super.strategy = value;
  }
  get windowBits() {
    return this[windowBits$1];
  }
  set windowBits(value) {
    super.windowBits = value;
  }
  get dictionary() {
    return this[dictionary$1];
  }
  set dictionary(value) {
    super.dictionary = value;
  }
  get raw() {
    return this[raw$1];
  }
  set raw(value) {
    super.raw = value;
  }
  convert(bytes) {
    ListOfint()._check(bytes);
    let sink = new io._BufferSink.new();
    let _ = this.startChunkedConversion(sink);
    _.add(bytes);
    _.close();
    return sink.builder.takeBytes();
  }
  startChunkedConversion(sink) {
    SinkOfListOfint()._check(sink);
    if (!convert.ByteConversionSink.is(sink)) {
      sink = convert.ByteConversionSink.from(sink);
    }
    return new io._ZLibEncoderSink.new(convert.ByteConversionSink._check(sink), this.gzip, this.level, this.windowBits, this.memLevel, this.strategy, this.dictionary, this.raw);
  }
};
(io.ZLibEncoder.new = function(opts) {
  let gzip = opts && 'gzip' in opts ? opts.gzip : false;
  let level = opts && 'level' in opts ? opts.level : io.ZLibOption.defaultLevel;
  let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
  let memLevel = opts && 'memLevel' in opts ? opts.memLevel : io.ZLibOption.defaultMemLevel;
  let strategy = opts && 'strategy' in opts ? opts.strategy : io.ZLibOption.strategyDefault;
  let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
  let raw = opts && 'raw' in opts ? opts.raw : false;
  this[gzip$1] = gzip;
  this[level$1] = level;
  this[windowBits$1] = windowBits;
  this[memLevel$1] = memLevel;
  this[strategy$1] = strategy;
  this[dictionary$1] = dictionary;
  this[raw$1] = raw;
  io.ZLibEncoder.__proto__.new.call(this);
  io._validateZLibeLevel(this.level);
  io._validateZLibMemLevel(this.memLevel);
  io._validateZLibStrategy(this.strategy);
  io._validateZLibWindowBits(this.windowBits);
}).prototype = io.ZLibEncoder.prototype;
dart.addTypeTests(io.ZLibEncoder);
const gzip$1 = Symbol("ZLibEncoder.gzip");
const level$1 = Symbol("ZLibEncoder.level");
const memLevel$1 = Symbol("ZLibEncoder.memLevel");
const strategy$1 = Symbol("ZLibEncoder.strategy");
const windowBits$1 = Symbol("ZLibEncoder.windowBits");
const dictionary$1 = Symbol("ZLibEncoder.dictionary");
const raw$1 = Symbol("ZLibEncoder.raw");
dart.setMethodSignature(io.ZLibEncoder, () => ({
  __proto__: dart.getMethods(io.ZLibEncoder.__proto__),
  convert: dart.fnType(core.List$(core.int), [core.Object]),
  startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
}));
dart.setFieldSignature(io.ZLibEncoder, () => ({
  __proto__: dart.getFields(io.ZLibEncoder.__proto__),
  gzip: dart.finalFieldType(core.bool),
  level: dart.finalFieldType(core.int),
  memLevel: dart.finalFieldType(core.int),
  strategy: dart.finalFieldType(core.int),
  windowBits: dart.finalFieldType(core.int),
  dictionary: dart.finalFieldType(ListOfint()),
  raw: dart.finalFieldType(core.bool)
}));
io.ZLibDecoder = class ZLibDecoder extends convert.Converter$(core.List$(core.int), core.List$(core.int)) {
  get windowBits() {
    return this[windowBits$2];
  }
  set windowBits(value) {
    super.windowBits = value;
  }
  get dictionary() {
    return this[dictionary$2];
  }
  set dictionary(value) {
    super.dictionary = value;
  }
  get raw() {
    return this[raw$2];
  }
  set raw(value) {
    super.raw = value;
  }
  convert(bytes) {
    ListOfint()._check(bytes);
    let sink = new io._BufferSink.new();
    let _ = this.startChunkedConversion(sink);
    _.add(bytes);
    _.close();
    return sink.builder.takeBytes();
  }
  startChunkedConversion(sink) {
    SinkOfListOfint()._check(sink);
    if (!convert.ByteConversionSink.is(sink)) {
      sink = convert.ByteConversionSink.from(sink);
    }
    return new io._ZLibDecoderSink.new(convert.ByteConversionSink._check(sink), this.windowBits, this.dictionary, this.raw);
  }
};
(io.ZLibDecoder.new = function(opts) {
  let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
  let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
  let raw = opts && 'raw' in opts ? opts.raw : false;
  this[windowBits$2] = windowBits;
  this[dictionary$2] = dictionary;
  this[raw$2] = raw;
  io.ZLibDecoder.__proto__.new.call(this);
  io._validateZLibWindowBits(this.windowBits);
}).prototype = io.ZLibDecoder.prototype;
dart.addTypeTests(io.ZLibDecoder);
const windowBits$2 = Symbol("ZLibDecoder.windowBits");
const dictionary$2 = Symbol("ZLibDecoder.dictionary");
const raw$2 = Symbol("ZLibDecoder.raw");
dart.setMethodSignature(io.ZLibDecoder, () => ({
  __proto__: dart.getMethods(io.ZLibDecoder.__proto__),
  convert: dart.fnType(core.List$(core.int), [core.Object]),
  startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
}));
dart.setFieldSignature(io.ZLibDecoder, () => ({
  __proto__: dart.getFields(io.ZLibDecoder.__proto__),
  windowBits: dart.finalFieldType(core.int),
  dictionary: dart.finalFieldType(ListOfint()),
  raw: dart.finalFieldType(core.bool)
}));
io.RawZLibFilter = class RawZLibFilter extends core.Object {
  static deflateFilter(opts) {
    let gzip = opts && 'gzip' in opts ? opts.gzip : false;
    let level = opts && 'level' in opts ? opts.level : io.ZLibOption.defaultLevel;
    let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
    let memLevel = opts && 'memLevel' in opts ? opts.memLevel : io.ZLibOption.defaultMemLevel;
    let strategy = opts && 'strategy' in opts ? opts.strategy : io.ZLibOption.strategyDefault;
    let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
    let raw = opts && 'raw' in opts ? opts.raw : false;
    return io.RawZLibFilter._makeZLibDeflateFilter(gzip, level, windowBits, memLevel, strategy, dictionary, raw);
  }
  static inflateFilter(opts) {
    let windowBits = opts && 'windowBits' in opts ? opts.windowBits : io.ZLibOption.defaultWindowBits;
    let dictionary = opts && 'dictionary' in opts ? opts.dictionary : null;
    let raw = opts && 'raw' in opts ? opts.raw : false;
    return io.RawZLibFilter._makeZLibInflateFilter(windowBits, dictionary, raw);
  }
  static _makeZLibDeflateFilter(gzip, level, windowBits, memLevel, strategy, dictionary, raw) {
    dart.throw(new core.UnsupportedError.new("_newZLibDeflateFilter"));
  }
  static _makeZLibInflateFilter(windowBits, dictionary, raw) {
    dart.throw(new core.UnsupportedError.new("_newZLibInflateFilter"));
  }
};
(io.RawZLibFilter[dart.mixinNew] = function() {
}).prototype = io.RawZLibFilter.prototype;
dart.addTypeTests(io.RawZLibFilter);
io._BufferSink = class _BufferSink extends convert.ByteConversionSink {
  add(chunk) {
    ListOfint()._check(chunk);
    this.builder.add(chunk);
  }
  addSlice(chunk, start, end, isLast) {
    if (typed_data.Uint8List.is(chunk)) {
      let list = chunk;
      this.builder.add(typed_data.Uint8List.view(list[$buffer], start, dart.notNull(end) - dart.notNull(start)));
    } else {
      this.builder.add(chunk[$sublist](start, end));
    }
  }
  close() {}
};
(io._BufferSink.new = function() {
  this.builder = io.BytesBuilder.new({copy: false});
  io._BufferSink.__proto__.new.call(this);
}).prototype = io._BufferSink.prototype;
dart.addTypeTests(io._BufferSink);
dart.setMethodSignature(io._BufferSink, () => ({
  __proto__: dart.getMethods(io._BufferSink.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool]),
  close: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(io._BufferSink, () => ({
  __proto__: dart.getFields(io._BufferSink.__proto__),
  builder: dart.finalFieldType(io.BytesBuilder)
}));
const _sink$0 = Symbol('_sink');
const _filter$ = Symbol('_filter');
const _closed = Symbol('_closed');
const _empty = Symbol('_empty');
let const$55;
io._FilterSink = class _FilterSink extends convert.ByteConversionSink {
  add(data) {
    ListOfint()._check(data);
    this.addSlice(data, 0, data[$length], false);
  }
  addSlice(data, start, end, isLast) {
    if (dart.test(this[_closed])) return;
    if (end == null) dart.throw(new core.ArgumentError.notNull("end"));
    core.RangeError.checkValidRange(start, end, data[$length]);
    try {
      this[_empty] = false;
      let bufferAndStart = io._ensureFastAndSerializableByteData(data, start, end);
      this[_filter$].process(bufferAndStart.buffer, bufferAndStart.start, dart.notNull(end) - (dart.notNull(start) - dart.notNull(bufferAndStart.start)));
      let out = null;
      while ((out = this[_filter$].processed({flush: false})) != null) {
        this[_sink$0].add(out);
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
      this[_closed] = true;
      dart.rethrow(e$);
    }
    if (dart.test(isLast)) this.close();
  }
  close() {
    if (dart.test(this[_closed])) return;
    if (dart.test(this[_empty])) this[_filter$].process(const$55 || (const$55 = dart.constList([], core.int)), 0, 0);
    try {
      let out = null;
      while ((out = this[_filter$].processed({end: true})) != null) {
        this[_sink$0].add(out);
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
      this[_closed] = true;
      dart.throw(e);
    }
    this[_closed] = true;
    this[_sink$0].close();
  }
};
(io._FilterSink.new = function(sink, filter) {
  this[_closed] = false;
  this[_empty] = true;
  this[_sink$0] = sink;
  this[_filter$] = filter;
  io._FilterSink.__proto__.new.call(this);
}).prototype = io._FilterSink.prototype;
dart.addTypeTests(io._FilterSink);
dart.setMethodSignature(io._FilterSink, () => ({
  __proto__: dart.getMethods(io._FilterSink.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool]),
  close: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(io._FilterSink, () => ({
  __proto__: dart.getFields(io._FilterSink.__proto__),
  [_filter$]: dart.finalFieldType(io.RawZLibFilter),
  [_sink$0]: dart.finalFieldType(convert.ByteConversionSink),
  [_closed]: dart.fieldType(core.bool),
  [_empty]: dart.fieldType(core.bool)
}));
io._ZLibEncoderSink = class _ZLibEncoderSink extends io._FilterSink {};
(io._ZLibEncoderSink.new = function(sink, gzip, level, windowBits, memLevel, strategy, dictionary, raw) {
  io._ZLibEncoderSink.__proto__.new.call(this, sink, io.RawZLibFilter._makeZLibDeflateFilter(gzip, level, windowBits, memLevel, strategy, dictionary, raw));
}).prototype = io._ZLibEncoderSink.prototype;
dart.addTypeTests(io._ZLibEncoderSink);
io._ZLibDecoderSink = class _ZLibDecoderSink extends io._FilterSink {};
(io._ZLibDecoderSink.new = function(sink, windowBits, dictionary, raw) {
  io._ZLibDecoderSink.__proto__.new.call(this, sink, io.RawZLibFilter._makeZLibInflateFilter(windowBits, dictionary, raw));
}).prototype = io._ZLibDecoderSink.prototype;
dart.addTypeTests(io._ZLibDecoderSink);
io._validateZLibWindowBits = function(windowBits) {
  if (io.ZLibOption.minWindowBits > dart.notNull(windowBits) || io.ZLibOption.maxWindowBits < dart.notNull(windowBits)) {
    dart.throw(new core.RangeError.range(windowBits, io.ZLibOption.minWindowBits, io.ZLibOption.maxWindowBits));
  }
};
io._validateZLibeLevel = function(level) {
  if (io.ZLibOption.minLevel > dart.notNull(level) || io.ZLibOption.maxLevel < dart.notNull(level)) {
    dart.throw(new core.RangeError.range(level, io.ZLibOption.minLevel, io.ZLibOption.maxLevel));
  }
};
io._validateZLibMemLevel = function(memLevel) {
  if (io.ZLibOption.minMemLevel > dart.notNull(memLevel) || io.ZLibOption.maxMemLevel < dart.notNull(memLevel)) {
    dart.throw(new core.RangeError.range(memLevel, io.ZLibOption.minMemLevel, io.ZLibOption.maxMemLevel));
  }
};
let const$56;
io._validateZLibStrategy = function(strategy) {
  let strategies = const$56 || (const$56 = dart.constList([io.ZLibOption.strategyFiltered, io.ZLibOption.strategyHuffmanOnly, io.ZLibOption.strategyRle, io.ZLibOption.strategyFixed, io.ZLibOption.strategyDefault], core.int));
  if (strategies[$indexOf](strategy) === -1) {
    dart.throw(new core.ArgumentError.new("Unsupported 'strategy'"));
  }
};
io.Directory = class Directory extends core.Object {
  static new(path) {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return new io._Directory.new(path);
    }
    return overrides.createDirectory(path);
  }
  static fromRawPath(path) {
    return new io._Directory.fromRawPath(path);
  }
  static fromUri(uri) {
    return io.Directory.new(uri.toFilePath());
  }
  static get current() {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io._Directory.current;
    }
    return overrides.getCurrentDirectory();
  }
  static set current(path) {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      io._Directory.current = path;
      return;
    }
    overrides.setCurrentDirectory(core.String._check(path));
  }
  static get systemTemp() {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io._Directory.systemTemp;
    }
    return overrides.getSystemTempDirectory();
  }
};
(io.Directory[dart.mixinNew] = function() {
}).prototype = io.Directory.prototype;
dart.addTypeTests(io.Directory);
io.Directory[dart.implements] = () => [io.FileSystemEntity];
const _path = Symbol('_path');
const _rawPath$ = Symbol('_rawPath');
const _isErrorResponse = Symbol('_isErrorResponse');
const _exceptionOrErrorFromResponse = Symbol('_exceptionOrErrorFromResponse');
const _absolutePath = Symbol('_absolutePath');
const _delete = Symbol('_delete');
const _deleteSync = Symbol('_deleteSync');
const _rawAbsolutePath = Symbol('_rawAbsolutePath');
io.FileSystemEntity = class FileSystemEntity extends core.Object {
  get [_path]() {
    return this[_path$];
  }
  set [_path](value) {
    this[_path$] = value;
  }
  get [_rawPath$]() {
    return this[_rawPath];
  }
  set [_rawPath$](value) {
    this[_rawPath] = value;
  }
  get uri() {
    return core.Uri.file(this.path);
  }
  resolveSymbolicLinks() {
    return FutureOfString()._check(io._File._dispatchWithNamespace(io._IOService.fileResolveSymbolicLinks, [null, this[_rawPath$]]).then(core.String, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot resolve symbolic links", this.path));
      }
      return FutureOrOfString()._check(response);
    }, dynamicToFutureOrOfString())));
  }
  resolveSymbolicLinksSync() {
    let result = io.FileSystemEntity._resolveSymbolicLinks(io._Namespace._namespace, this[_rawPath$]);
    io.FileSystemEntity._throwIfError(result, "Cannot resolve symbolic links", this.path);
    return core.String._check(result);
  }
  stat() {
    return io.FileStat.stat(this.path);
  }
  statSync() {
    return io.FileStat.statSync(this.path);
  }
  delete(opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    return this[_delete]({recursive: recursive});
  }
  deleteSync(opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    return this[_deleteSync]({recursive: recursive});
  }
  watch(opts) {
    let events = opts && 'events' in opts ? opts.events : io.FileSystemEvent.all;
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    let trimmedPath = io.FileSystemEntity._trimTrailingPathSeparators(this.path);
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io._FileSystemWatcher._watch(trimmedPath, events, recursive);
    }
    return overrides.fsWatch(trimmedPath, events, recursive);
  }
  static _identical(path1, path2) {
    return FutureOfbool()._check(io._File._dispatchWithNamespace(io._IOService.fileIdentical, [null, path1, path2]).then(core.bool, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Error in FileSystemEntity.identical(" + dart.str(path1) + ", " + dart.str(path2) + ")", ""));
      }
      return FutureOrOfbool()._check(response);
    }, dynamicToFutureOrOfbool())));
  }
  static identical(path1, path2) {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io.FileSystemEntity._identical(path1, path2);
    }
    return overrides.fseIdentical(path1, path2);
  }
  get isAbsolute() {
    if (dart.test(io.Platform.isWindows)) {
      return this.path[$startsWith](io.FileSystemEntity._absoluteWindowsPathPattern);
    } else {
      return this.path[$startsWith]("/");
    }
  }
  get [_absolutePath]() {
    if (dart.test(this.isAbsolute)) return this.path;
    let current = io.Directory.current.path;
    if (current[$endsWith]("/") || dart.test(io.Platform.isWindows) && current[$endsWith]("\\")) {
      return dart.str(current) + dart.str(this.path);
    } else {
      return dart.str(current) + dart.str(io.Platform.pathSeparator) + dart.str(this.path);
    }
  }
  get [_rawAbsolutePath]() {
    if (dart.test(this.isAbsolute)) return this[_rawPath$];
    let current = io.Directory.current[_rawPath$][$toList]();
    if (!(current[$last] === 0)) dart.assertFailed();
    current[$removeLast]();
    if (current[$last] === "/"[$codeUnitAt](0) || dart.test(io.Platform.isWindows) && current[$last] === "\\"[$codeUnitAt](0)) {
      current[$addAll](this[_rawPath$]);
      return typed_data.Uint8List.fromList(current);
    } else {
      current[$addAll](convert.utf8.encode(io.Platform.pathSeparator));
      current[$addAll](this[_rawPath$]);
      return typed_data.Uint8List.fromList(current);
    }
  }
  static _identicalSync(path1, path2) {
    let result = io.FileSystemEntity._identicalNative(io._Namespace._namespace, path1, path2);
    io.FileSystemEntity._throwIfError(result, "Error in FileSystemEntity.identicalSync");
    return core.bool._check(result);
  }
  static identicalSync(path1, path2) {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io.FileSystemEntity._identicalSync(path1, path2);
    }
    return overrides.fseIdenticalSync(path1, path2);
  }
  static get isWatchSupported() {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io._FileSystemWatcher.isSupported;
    }
    return overrides.fsWatchIsSupported();
  }
  static _toUtf8Array(s) {
    return io.FileSystemEntity._toNullTerminatedUtf8Array(typed_data.Uint8List._check(convert.utf8.encode(s)));
  }
  static _toNullTerminatedUtf8Array(l) {
    if (l == null) {
      return null;
    }
    if (dart.test(l[$isNotEmpty]) && l[$last] !== 0) {
      let tmp = typed_data.Uint8List.new(dart.notNull(l[$length]) + 1);
      tmp[$setRange](0, l[$length], l);
      return tmp;
    } else {
      return l;
    }
  }
  static _toStringFromUtf8Array(l) {
    if (l == null) {
      return "";
    }
    let nonNullTerminated = l;
    if (l[$last] === 0) {
      nonNullTerminated = typed_data.Uint8List.view(l[$buffer], 0, dart.notNull(l[$length]) - 1);
    }
    return convert.utf8.decode(nonNullTerminated, {allowMalformed: true});
  }
  static type(path, opts) {
    let followLinks = opts && 'followLinks' in opts ? opts.followLinks : true;
    return io.FileSystemEntity._getType(io.FileSystemEntity._toUtf8Array(path), followLinks);
  }
  static typeSync(path, opts) {
    let followLinks = opts && 'followLinks' in opts ? opts.followLinks : true;
    return io.FileSystemEntity._getTypeSync(io.FileSystemEntity._toUtf8Array(path), followLinks);
  }
  static isLink(path) {
    return io.FileSystemEntity._isLinkRaw(io.FileSystemEntity._toUtf8Array(path));
  }
  static _isLinkRaw(rawPath) {
    return FutureOfbool()._check(io.FileSystemEntity._getType(rawPath, false).then(core.bool, dart.fn(type => dart.equals(type, io.FileSystemEntityType.link), FileSystemEntityTypeTobool())));
  }
  static isFile(path) {
    return FutureOfbool()._check(io.FileSystemEntity._getType(io.FileSystemEntity._toUtf8Array(path), true).then(core.bool, dart.fn(type => dart.equals(type, io.FileSystemEntityType.file), FileSystemEntityTypeTobool())));
  }
  static isDirectory(path) {
    return FutureOfbool()._check(io.FileSystemEntity._getType(io.FileSystemEntity._toUtf8Array(path), true).then(core.bool, dart.fn(type => dart.equals(type, io.FileSystemEntityType.directory), FileSystemEntityTypeTobool())));
  }
  static isLinkSync(path) {
    return io.FileSystemEntity._isLinkRawSync(io.FileSystemEntity._toUtf8Array(path));
  }
  static _isLinkRawSync(rawPath) {
    return dart.equals(io.FileSystemEntity._getTypeSync(typed_data.Uint8List._check(rawPath), false), io.FileSystemEntityType.link);
  }
  static isFileSync(path) {
    return dart.equals(io.FileSystemEntity._getTypeSync(io.FileSystemEntity._toUtf8Array(path), true), io.FileSystemEntityType.file);
  }
  static isDirectorySync(path) {
    return dart.equals(io.FileSystemEntity._getTypeSync(io.FileSystemEntity._toUtf8Array(path), true), io.FileSystemEntityType.directory);
  }
  static _getTypeNative(namespace, rawPath, followLinks) {
    dart.throw(new core.UnsupportedError.new("FileSystemEntity._getType"));
  }
  static _identicalNative(namespace, path1, path2) {
    dart.throw(new core.UnsupportedError.new("FileSystemEntity._identical"));
  }
  static _resolveSymbolicLinks(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("FileSystemEntity._resolveSymbolicLinks"));
  }
  static parentOf(path) {
    let rootEnd = -1;
    if (dart.test(io.Platform.isWindows)) {
      if (path[$startsWith](io.FileSystemEntity._absoluteWindowsPathPattern)) {
        rootEnd = path[$indexOf](core.RegExp.new("[/\\\\]"), 2);
        if (rootEnd === -1) return path;
      } else if (path[$startsWith]("\\") || path[$startsWith]("/")) {
        rootEnd = 0;
      }
    } else if (path[$startsWith]("/")) {
      rootEnd = 0;
    }
    let pos = path[$lastIndexOf](io.FileSystemEntity._parentRegExp);
    if (pos > rootEnd) {
      return path[$substring](0, pos + 1);
    } else if (rootEnd > -1) {
      return path[$substring](0, rootEnd + 1);
    } else {
      return ".";
    }
  }
  get parent() {
    return io.Directory.new(io.FileSystemEntity.parentOf(this.path));
  }
  static _getTypeSyncHelper(rawPath, followLinks) {
    let result = io.FileSystemEntity._getTypeNative(io._Namespace._namespace, rawPath, followLinks);
    io.FileSystemEntity._throwIfError(result, "Error getting type of FileSystemEntity");
    return io.FileSystemEntityType._lookup(core.int._check(result));
  }
  static _getTypeSync(rawPath, followLinks) {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io.FileSystemEntity._getTypeSyncHelper(rawPath, followLinks);
    }
    return overrides.fseGetTypeSync(convert.utf8.decode(rawPath, {allowMalformed: true}), followLinks);
  }
  static _getTypeRequest(rawPath, followLinks) {
    return FutureOfFileSystemEntityType()._check(io._File._dispatchWithNamespace(io._IOService.fileType, [null, rawPath, followLinks]).then(io.FileSystemEntityType, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Error getting type", convert.utf8.decode(rawPath, {allowMalformed: true})));
      }
      return io.FileSystemEntityType._lookup(core.int._check(response));
    }, dynamicToFileSystemEntityType())));
  }
  static _getType(rawPath, followLinks) {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io.FileSystemEntity._getTypeRequest(rawPath, followLinks);
    }
    return overrides.fseGetType(convert.utf8.decode(rawPath, {allowMalformed: true}), followLinks);
  }
  static _throwIfError(result, msg, path) {
    if (path === void 0) path = null;
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new(msg, path, result));
    } else if (core.ArgumentError.is(result)) {
      dart.throw(result);
    }
  }
  static _trimTrailingPathSeparators(path) {
    if (path == null) return path;
    if (dart.test(io.Platform.isWindows)) {
      while (path.length > 1 && (path[$endsWith](io.Platform.pathSeparator) || path[$endsWith]("/"))) {
        path = path[$substring](0, path.length - 1);
      }
    } else {
      while (path.length > 1 && path[$endsWith](io.Platform.pathSeparator)) {
        path = path[$substring](0, path.length - 1);
      }
    }
    return path;
  }
  static _ensureTrailingPathSeparators(path) {
    if (path == null) return path;
    if (path[$isEmpty]) path = ".";
    if (dart.test(io.Platform.isWindows)) {
      while (!path[$endsWith](io.Platform.pathSeparator) && !path[$endsWith]("/")) {
        path = dart.str(path) + dart.str(io.Platform.pathSeparator);
      }
    } else {
      while (!path[$endsWith](io.Platform.pathSeparator)) {
        path = dart.str(path) + dart.str(io.Platform.pathSeparator);
      }
    }
    return path;
  }
};
(io.FileSystemEntity.new = function() {
  this[_path$] = null;
  this[_rawPath] = null;
}).prototype = io.FileSystemEntity.prototype;
dart.addTypeTests(io.FileSystemEntity);
const _path$ = Symbol("FileSystemEntity._path");
const _rawPath = Symbol("FileSystemEntity._rawPath");
dart.setMethodSignature(io.FileSystemEntity, () => ({
  __proto__: dart.getMethods(io.FileSystemEntity.__proto__),
  resolveSymbolicLinks: dart.fnType(async.Future$(core.String), []),
  resolveSymbolicLinksSync: dart.fnType(core.String, []),
  stat: dart.fnType(async.Future$(io.FileStat), []),
  statSync: dart.fnType(io.FileStat, []),
  delete: dart.fnType(async.Future$(io.FileSystemEntity), [], {recursive: core.bool}),
  deleteSync: dart.fnType(dart.void, [], {recursive: core.bool}),
  watch: dart.fnType(async.Stream$(io.FileSystemEvent), [], {events: core.int, recursive: core.bool})
}));
dart.setGetterSignature(io.FileSystemEntity, () => ({
  __proto__: dart.getGetters(io.FileSystemEntity.__proto__),
  uri: core.Uri,
  isAbsolute: core.bool,
  [_absolutePath]: core.String,
  [_rawAbsolutePath]: typed_data.Uint8List,
  parent: io.Directory
}));
dart.setFieldSignature(io.FileSystemEntity, () => ({
  __proto__: dart.getFields(io.FileSystemEntity.__proto__),
  [_path]: dart.fieldType(core.String),
  [_rawPath$]: dart.fieldType(typed_data.Uint8List)
}));
dart.defineLazy(io.FileSystemEntity, {
  /*io.FileSystemEntity._absoluteWindowsPathPattern*/get _absoluteWindowsPathPattern() {
    return core.RegExp.new("^(\\\\\\\\|[a-zA-Z]:[/\\\\])");
  },
  /*io.FileSystemEntity._parentRegExp*/get _parentRegExp() {
    return dart.test(io.Platform.isWindows) ? core.RegExp.new("[^/\\\\][/\\\\]+[^/\\\\]") : core.RegExp.new("[^/]/+[^/]");
  }
});
io._Directory = class _Directory extends io.FileSystemEntity {
  get [_path]() {
    return this[_path$0];
  }
  set [_path](value) {
    this[_path$0] = value;
  }
  get [_rawPath$]() {
    return this[_rawPath$0];
  }
  set [_rawPath$](value) {
    this[_rawPath$0] = value;
  }
  get path() {
    return this[_path];
  }
  static _current(namespace) {
    dart.throw(new core.UnsupportedError.new("Directory._current"));
  }
  static _setCurrent(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("Directory_SetCurrent"));
  }
  static _createTemp(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("Directory._createTemp"));
  }
  static _systemTemp(namespace) {
    dart.throw(new core.UnsupportedError.new("Directory._systemTemp"));
  }
  static _exists(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("Directory._exists"));
  }
  static _create(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("Directory._create"));
  }
  static _deleteNative(namespace, rawPath, recursive) {
    dart.throw(new core.UnsupportedError.new("Directory._deleteNative"));
  }
  static _rename(namespace, rawPath, newPath) {
    dart.throw(new core.UnsupportedError.new("Directory._rename"));
  }
  static _fillWithDirectoryListing(namespace, list, rawPath, recursive, followLinks) {
    dart.throw(new core.UnsupportedError.new("Directory._fillWithDirectoryListing"));
  }
  static get current() {
    let result = io._Directory._current(io._Namespace._namespace);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("Getting current working directory failed", "", result));
    }
    return new io._Directory.new(core.String._check(result));
  }
  static set current(path) {
    let _rawPath = null;
    if (io._Directory.is(path)) {
      _rawPath = path[_rawPath$];
    } else if (io.Directory.is(path)) {
      _rawPath = io.FileSystemEntity._toUtf8Array(path.path);
    } else if (typeof path == 'string') {
      _rawPath = io.FileSystemEntity._toUtf8Array(path);
    } else {
      dart.throw(new core.ArgumentError.new(dart.str(core.Error.safeToString(path)) + " is not a String or" + " Directory"));
    }
    if (!dart.test(io._EmbedderConfig._mayChdir)) {
      dart.throw(new core.UnsupportedError.new("This embedder disallows setting Directory.current"));
    }
    let result = io._Directory._setCurrent(io._Namespace._namespace, _rawPath);
    if (core.ArgumentError.is(result)) dart.throw(result);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("Setting current working directory failed", core.String._check(path), result));
    }
  }
  get uri() {
    return core.Uri.directory(this.path);
  }
  exists() {
    return FutureOfbool()._check(io._File._dispatchWithNamespace(io._IOService.directoryExists, [null, this[_rawPath$]]).then(core.bool, dart.fn(response => {
      if (dart.test(this[_isErrorResponse](response))) {
        dart.throw(this[_exceptionOrErrorFromResponse](response, "Exists failed"));
      }
      return dart.equals(response, 1);
    }, dynamicTobool())));
  }
  existsSync() {
    let result = io._Directory._exists(io._Namespace._namespace, this[_rawPath$]);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("Exists failed", this.path, result));
    }
    return dart.equals(result, 1);
  }
  get absolute() {
    return io.Directory.new(this[_absolutePath]);
  }
  create(opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    if (dart.test(recursive)) {
      return FutureOfDirectory()._check(this.exists().then(io.Directory, dart.fn(exists => {
        if (dart.test(exists)) return this;
        if (this.path != this.parent.path) {
          return FutureOfDirectory()._check(this.parent.create({recursive: true}).then(io.Directory, dart.fn(_ => this.create(), DirectoryToFutureOfDirectory())));
        } else {
          return this.create();
        }
      }, boolToFutureOrOfDirectory())));
    } else {
      return FutureOfDirectory()._check(io._File._dispatchWithNamespace(io._IOService.directoryCreate, [null, this[_rawPath$]]).then(io.Directory, dart.fn(response => {
        if (dart.test(this[_isErrorResponse](response))) {
          dart.throw(this[_exceptionOrErrorFromResponse](response, "Creation failed"));
        }
        return this;
      }, dynamicTo_Directory())));
    }
  }
  createSync(opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    if (dart.test(recursive)) {
      if (dart.test(this.existsSync())) return;
      if (this.path != this.parent.path) {
        this.parent.createSync({recursive: true});
      }
    }
    let result = io._Directory._create(io._Namespace._namespace, this[_rawPath$]);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("Creation failed", this.path, result));
    }
  }
  static get systemTemp() {
    return io.Directory.new(io._Directory._systemTemp(io._Namespace._namespace));
  }
  createTemp(prefix) {
    if (prefix === void 0) prefix = null;
    let t = prefix;
    t == null ? prefix = "" : t;
    if (this.path === "") {
      dart.throw(new core.ArgumentError.new("Directory.createTemp called with an empty path. " + "To use the system temp directory, use Directory.systemTemp"));
    }
    let fullPrefix = null;
    if (this.path[$endsWith]("/") || dart.test(io.Platform.isWindows) && this.path[$endsWith]("\\")) {
      fullPrefix = dart.str(this.path) + dart.str(prefix);
    } else {
      fullPrefix = dart.str(this.path) + dart.str(io.Platform.pathSeparator) + dart.str(prefix);
    }
    return FutureOfDirectory()._check(io._File._dispatchWithNamespace(io._IOService.directoryCreateTemp, [null, io.FileSystemEntity._toUtf8Array(fullPrefix)]).then(io.Directory, dart.fn(response => {
      if (dart.test(this[_isErrorResponse](response))) {
        dart.throw(this[_exceptionOrErrorFromResponse](response, "Creation of temporary directory failed"));
      }
      return io.Directory.new(core.String._check(response));
    }, dynamicToDirectory())));
  }
  createTempSync(prefix) {
    if (prefix === void 0) prefix = null;
    let t = prefix;
    t == null ? prefix = "" : t;
    if (this.path === "") {
      dart.throw(new core.ArgumentError.new("Directory.createTemp called with an empty path. " + "To use the system temp directory, use Directory.systemTemp"));
    }
    let fullPrefix = null;
    if (this.path[$endsWith]("/") || dart.test(io.Platform.isWindows) && this.path[$endsWith]("\\")) {
      fullPrefix = dart.str(this.path) + dart.str(prefix);
    } else {
      fullPrefix = dart.str(this.path) + dart.str(io.Platform.pathSeparator) + dart.str(prefix);
    }
    let result = io._Directory._createTemp(io._Namespace._namespace, io.FileSystemEntity._toUtf8Array(fullPrefix));
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("Creation of temporary directory failed", fullPrefix, result));
    }
    return io.Directory.new(core.String._check(result));
  }
  [_delete](opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    return FutureOfDirectory()._check(io._File._dispatchWithNamespace(io._IOService.directoryDelete, [null, this[_rawPath$], recursive]).then(io.Directory, dart.fn(response => {
      if (dart.test(this[_isErrorResponse](response))) {
        dart.throw(this[_exceptionOrErrorFromResponse](response, "Deletion failed"));
      }
      return this;
    }, dynamicTo_Directory())));
  }
  [_deleteSync](opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    let result = io._Directory._deleteNative(io._Namespace._namespace, this[_rawPath$], recursive);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("Deletion failed", this.path, result));
    }
  }
  rename(newPath) {
    return FutureOfDirectory()._check(io._File._dispatchWithNamespace(io._IOService.directoryRename, [null, this[_rawPath$], newPath]).then(io.Directory, dart.fn(response => {
      if (dart.test(this[_isErrorResponse](response))) {
        dart.throw(this[_exceptionOrErrorFromResponse](response, "Rename failed"));
      }
      return io.Directory.new(newPath);
    }, dynamicToDirectory())));
  }
  renameSync(newPath) {
    if (!(typeof newPath == 'string')) {
      dart.throw(new core.ArgumentError.new());
    }
    let result = io._Directory._rename(io._Namespace._namespace, this[_rawPath$], newPath);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("Rename failed", this.path, result));
    }
    return io.Directory.new(newPath);
  }
  list(opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    let followLinks = opts && 'followLinks' in opts ? opts.followLinks : true;
    return new io._AsyncDirectoryLister.new(io.FileSystemEntity._toUtf8Array(io.FileSystemEntity._ensureTrailingPathSeparators(this.path)), recursive, followLinks).stream;
  }
  listSync(opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    let followLinks = opts && 'followLinks' in opts ? opts.followLinks : true;
    if (!(typeof recursive == 'boolean') || !(typeof followLinks == 'boolean')) {
      dart.throw(new core.ArgumentError.new());
    }
    let result = JSArrayOfFileSystemEntity().of([]);
    io._Directory._fillWithDirectoryListing(io._Namespace._namespace, result, io.FileSystemEntity._toUtf8Array(io.FileSystemEntity._ensureTrailingPathSeparators(this.path)), recursive, followLinks);
    return result;
  }
  toString() {
    return "Directory: '" + dart.str(this.path) + "'";
  }
  [_isErrorResponse](response) {
    return core.List.is(response) && !dart.equals(response[$_get](0), 0);
  }
  [_exceptionOrErrorFromResponse](response, message) {
    if (!dart.test(this[_isErrorResponse](response))) dart.assertFailed();
    switch (dart.dindex(response, 0)) {
      case 1:
      {
        return new core.ArgumentError.new();
      }
      case 2:
      {
        let err = new io.OSError.new(core.String._check(dart.dindex(response, 2)), core.int._check(dart.dindex(response, 1)));
        return new io.FileSystemException.new(message, this.path, err);
      }
      default:
      {
        return core.Exception.new("Unknown error");
      }
    }
  }
};
(io._Directory.new = function(path) {
  this[_path$0] = null;
  this[_rawPath$0] = null;
  io._Directory.__proto__.new.call(this);
  core.ArgumentError.checkNotNull(path, "path");
  this[_path] = path;
  this[_rawPath$] = io.FileSystemEntity._toUtf8Array(this[_path]);
}).prototype = io._Directory.prototype;
(io._Directory.fromRawPath = function(rawPath) {
  this[_path$0] = null;
  this[_rawPath$0] = null;
  io._Directory.__proto__.new.call(this);
  if (rawPath == null) {
    dart.throw(new core.ArgumentError.new("rawPath cannot be null"));
  }
  this[_rawPath$] = io.FileSystemEntity._toNullTerminatedUtf8Array(rawPath);
  this[_path] = io.FileSystemEntity._toStringFromUtf8Array(rawPath);
}).prototype = io._Directory.prototype;
dart.addTypeTests(io._Directory);
const _path$0 = Symbol("_Directory._path");
const _rawPath$0 = Symbol("_Directory._rawPath");
io._Directory[dart.implements] = () => [io.Directory];
dart.setMethodSignature(io._Directory, () => ({
  __proto__: dart.getMethods(io._Directory.__proto__),
  exists: dart.fnType(async.Future$(core.bool), []),
  existsSync: dart.fnType(core.bool, []),
  create: dart.fnType(async.Future$(io.Directory), [], {recursive: core.bool}),
  createSync: dart.fnType(dart.void, [], {recursive: core.bool}),
  createTemp: dart.fnType(async.Future$(io.Directory), [], [core.String]),
  createTempSync: dart.fnType(io.Directory, [], [core.String]),
  [_delete]: dart.fnType(async.Future$(io.Directory), [], {recursive: core.bool}),
  [_deleteSync]: dart.fnType(dart.void, [], {recursive: core.bool}),
  rename: dart.fnType(async.Future$(io.Directory), [core.String]),
  renameSync: dart.fnType(io.Directory, [core.String]),
  list: dart.fnType(async.Stream$(io.FileSystemEntity), [], {recursive: core.bool, followLinks: core.bool}),
  listSync: dart.fnType(core.List$(io.FileSystemEntity), [], {recursive: core.bool, followLinks: core.bool}),
  [_isErrorResponse]: dart.fnType(core.bool, [dart.dynamic]),
  [_exceptionOrErrorFromResponse]: dart.fnType(dart.dynamic, [dart.dynamic, core.String])
}));
dart.setGetterSignature(io._Directory, () => ({
  __proto__: dart.getGetters(io._Directory.__proto__),
  path: core.String,
  absolute: io.Directory
}));
dart.setFieldSignature(io._Directory, () => ({
  __proto__: dart.getFields(io._Directory.__proto__),
  [_path]: dart.fieldType(core.String),
  [_rawPath$]: dart.fieldType(typed_data.Uint8List)
}));
dart.defineExtensionMethods(io._Directory, ['toString']);
io._AsyncDirectoryListerOps = class _AsyncDirectoryListerOps extends core.Object {
  static new(pointer) {
    dart.throw(new core.UnsupportedError.new("Directory._list"));
  }
};
(io._AsyncDirectoryListerOps[dart.mixinNew] = function() {
}).prototype = io._AsyncDirectoryListerOps.prototype;
dart.addTypeTests(io._AsyncDirectoryListerOps);
const _ops = Symbol('_ops');
const _pointer = Symbol('_pointer');
const _cleanup = Symbol('_cleanup');
io._AsyncDirectoryLister = class _AsyncDirectoryLister extends core.Object {
  [_pointer]() {
    return this[_ops] == null ? null : this[_ops].getPointer();
  }
  get stream() {
    return this.controller.stream;
  }
  onListen() {
    FutureOfNull()._check(io._File._dispatchWithNamespace(io._IOService.directoryListStart, [null, this.rawPath, this.recursive, this.followLinks]).then(core.Null, dart.fn(response => {
      if (core.int.is(response)) {
        this[_ops] = io._AsyncDirectoryListerOps.new(response);
        this.next();
      } else if (core.Error.is(response)) {
        this.controller.addError(response, response[$stackTrace]);
        this.close();
      } else {
        this.error(response);
        this.close();
      }
    }, dynamicToNull())));
  }
  onResume() {
    if (!dart.test(this.nextRunning)) {
      this.next();
    }
  }
  onCancel() {
    this.canceled = true;
    if (!dart.test(this.nextRunning)) {
      this.close();
    }
    return this.closeCompleter.future;
  }
  next() {
    if (dart.test(this.canceled)) {
      this.close();
      return;
    }
    if (dart.test(this.controller.isPaused) || dart.test(this.nextRunning)) {
      return;
    }
    let pointer = this[_pointer]();
    if (pointer == null) {
      return;
    }
    this.nextRunning = true;
    FutureOfNull()._check(io._IOService._dispatch(io._IOService.directoryListNext, [pointer]).then(core.Null, dart.fn(result => {
      this.nextRunning = false;
      if (core.List.is(result)) {
        this.next();
        if (!(result[$length][$modulo](2) === 0)) dart.assertFailed();
        for (let i = 0; i < dart.notNull(result[$length]); i++) {
          if (!(i[$modulo](2) === 0)) dart.assertFailed();
          switch (result[$_get](i++)) {
            case 0:
            {
              this.controller.add(io.File.fromRawPath(typed_data.Uint8List._check(result[$_get](i))));
              break;
            }
            case 1:
            {
              this.controller.add(io.Directory.fromRawPath(typed_data.Uint8List._check(result[$_get](i))));
              break;
            }
            case 2:
            {
              this.controller.add(io.Link.fromRawPath(typed_data.Uint8List._check(result[$_get](i))));
              break;
            }
            case 3:
            {
              this.error(result[$_get](i));
              break;
            }
            case 4:
            {
              this.canceled = true;
              return;
            }
          }
        }
      } else {
        this.controller.addError(new io.FileSystemException.new("Internal error"));
      }
    }, dynamicToNull())));
  }
  [_cleanup]() {
    this.controller.close();
    this.closeCompleter.complete();
    this[_ops] = null;
  }
  close() {
    if (dart.test(this.closed)) {
      return;
    }
    if (dart.test(this.nextRunning)) {
      return;
    }
    this.closed = true;
    let pointer = this[_pointer]();
    if (pointer == null) {
      this[_cleanup]();
    } else {
      io._IOService._dispatch(io._IOService.directoryListStop, [pointer]).whenComplete(dart.bind(this, _cleanup));
    }
  }
  error(message) {
    let errorType = dart.dindex(dart.dindex(message, 2), 0);
    if (dart.equals(errorType, 1)) {
      this.controller.addError(new core.ArgumentError.new());
    } else if (dart.equals(errorType, 2)) {
      let responseErrorInfo = dart.dindex(message, 2);
      let err = new io.OSError.new(core.String._check(dart.dindex(responseErrorInfo, 2)), core.int._check(dart.dindex(responseErrorInfo, 1)));
      let errorPath = dart.dindex(message, 1);
      if (errorPath == null) {
        errorPath = convert.utf8.decode(this.rawPath, {allowMalformed: true});
      } else if (typed_data.Uint8List.is(errorPath)) {
        errorPath = convert.utf8.decode(ListOfint()._check(dart.dindex(message, 1)), {allowMalformed: true});
      }
      this.controller.addError(new io.FileSystemException.new("Directory listing failed", core.String._check(errorPath), err));
    } else {
      this.controller.addError(new io.FileSystemException.new("Internal error"));
    }
  }
};
(io._AsyncDirectoryLister.new = function(rawPath, recursive, followLinks) {
  this.controller = null;
  this.canceled = false;
  this.nextRunning = false;
  this.closed = false;
  this[_ops] = null;
  this.closeCompleter = async.Completer.new();
  this.rawPath = rawPath;
  this.recursive = recursive;
  this.followLinks = followLinks;
  this.controller = StreamControllerOfFileSystemEntity().new({onListen: dart.bind(this, 'onListen'), onResume: dart.bind(this, 'onResume'), onCancel: dart.bind(this, 'onCancel'), sync: true});
}).prototype = io._AsyncDirectoryLister.prototype;
dart.addTypeTests(io._AsyncDirectoryLister);
dart.setMethodSignature(io._AsyncDirectoryLister, () => ({
  __proto__: dart.getMethods(io._AsyncDirectoryLister.__proto__),
  [_pointer]: dart.fnType(core.int, []),
  onListen: dart.fnType(dart.void, []),
  onResume: dart.fnType(dart.void, []),
  onCancel: dart.fnType(async.Future, []),
  next: dart.fnType(dart.void, []),
  [_cleanup]: dart.fnType(dart.void, []),
  close: dart.fnType(dart.void, []),
  error: dart.fnType(dart.void, [dart.dynamic])
}));
dart.setGetterSignature(io._AsyncDirectoryLister, () => ({
  __proto__: dart.getGetters(io._AsyncDirectoryLister.__proto__),
  stream: async.Stream$(io.FileSystemEntity)
}));
dart.setFieldSignature(io._AsyncDirectoryLister, () => ({
  __proto__: dart.getFields(io._AsyncDirectoryLister.__proto__),
  rawPath: dart.finalFieldType(typed_data.Uint8List),
  recursive: dart.finalFieldType(core.bool),
  followLinks: dart.finalFieldType(core.bool),
  controller: dart.fieldType(StreamControllerOfFileSystemEntity()),
  canceled: dart.fieldType(core.bool),
  nextRunning: dart.fieldType(core.bool),
  closed: dart.fieldType(core.bool),
  [_ops]: dart.fieldType(io._AsyncDirectoryListerOps),
  closeCompleter: dart.fieldType(async.Completer)
}));
dart.defineLazy(io._AsyncDirectoryLister, {
  /*io._AsyncDirectoryLister.listFile*/get listFile() {
    return 0;
  },
  /*io._AsyncDirectoryLister.listDirectory*/get listDirectory() {
    return 1;
  },
  /*io._AsyncDirectoryLister.listLink*/get listLink() {
    return 2;
  },
  /*io._AsyncDirectoryLister.listError*/get listError() {
    return 3;
  },
  /*io._AsyncDirectoryLister.listDone*/get listDone() {
    return 4;
  },
  /*io._AsyncDirectoryLister.responseType*/get responseType() {
    return 0;
  },
  /*io._AsyncDirectoryLister.responsePath*/get responsePath() {
    return 1;
  },
  /*io._AsyncDirectoryLister.responseComplete*/get responseComplete() {
    return 1;
  },
  /*io._AsyncDirectoryLister.responseError*/get responseError() {
    return 2;
  }
});
io._EmbedderConfig = class _EmbedderConfig extends core.Object {};
(io._EmbedderConfig.new = function() {
}).prototype = io._EmbedderConfig.prototype;
dart.addTypeTests(io._EmbedderConfig);
dart.defineLazy(io._EmbedderConfig, {
  /*io._EmbedderConfig._mayChdir*/get _mayChdir() {
    return true;
  },
  set _mayChdir(_) {},
  /*io._EmbedderConfig._mayExit*/get _mayExit() {
    return true;
  },
  set _mayExit(_) {},
  /*io._EmbedderConfig._maySetEchoMode*/get _maySetEchoMode() {
    return true;
  },
  set _maySetEchoMode(_) {},
  /*io._EmbedderConfig._maySetLineMode*/get _maySetLineMode() {
    return true;
  },
  set _maySetLineMode(_) {},
  /*io._EmbedderConfig._maySleep*/get _maySleep() {
    return true;
  },
  set _maySleep(_) {}
});
io._EventHandler = class _EventHandler extends core.Object {
  static _sendData(sender, sendPort, data) {
    dart.throw(new core.UnsupportedError.new("EventHandler._sendData"));
  }
};
(io._EventHandler.new = function() {
}).prototype = io._EventHandler.prototype;
dart.addTypeTests(io._EventHandler);
const _mode = Symbol('_mode');
io.FileMode = class FileMode extends core.Object {};
(io.FileMode._internal = function(mode) {
  this[_mode] = mode;
}).prototype = io.FileMode.prototype;
dart.addTypeTests(io.FileMode);
dart.setFieldSignature(io.FileMode, () => ({
  __proto__: dart.getFields(io.FileMode.__proto__),
  [_mode]: dart.finalFieldType(core.int)
}));
dart.defineLazy(io.FileMode, {
  /*io.FileMode.read*/get read() {
    return dart.const(new io.FileMode._internal(0));
  },
  /*io.FileMode.READ*/get READ() {
    return io.FileMode.read;
  },
  /*io.FileMode.write*/get write() {
    return dart.const(new io.FileMode._internal(1));
  },
  /*io.FileMode.WRITE*/get WRITE() {
    return io.FileMode.write;
  },
  /*io.FileMode.append*/get append() {
    return dart.const(new io.FileMode._internal(2));
  },
  /*io.FileMode.APPEND*/get APPEND() {
    return io.FileMode.append;
  },
  /*io.FileMode.writeOnly*/get writeOnly() {
    return dart.const(new io.FileMode._internal(3));
  },
  /*io.FileMode.WRITE_ONLY*/get WRITE_ONLY() {
    return io.FileMode.writeOnly;
  },
  /*io.FileMode.writeOnlyAppend*/get writeOnlyAppend() {
    return dart.const(new io.FileMode._internal(4));
  },
  /*io.FileMode.WRITE_ONLY_APPEND*/get WRITE_ONLY_APPEND() {
    return io.FileMode.writeOnlyAppend;
  }
});
dart.defineLazy(io, {
  /*io.READ*/get READ() {
    return io.FileMode.read;
  },
  /*io.WRITE*/get WRITE() {
    return io.FileMode.write;
  },
  /*io.APPEND*/get APPEND() {
    return io.FileMode.append;
  },
  /*io.WRITE_ONLY*/get WRITE_ONLY() {
    return io.FileMode.writeOnly;
  },
  /*io.WRITE_ONLY_APPEND*/get WRITE_ONLY_APPEND() {
    return io.FileMode.writeOnlyAppend;
  }
});
const _type$0 = Symbol('_type');
io.FileLock = class FileLock extends core.Object {};
(io.FileLock._internal = function(type) {
  this[_type$0] = type;
}).prototype = io.FileLock.prototype;
dart.addTypeTests(io.FileLock);
dart.setFieldSignature(io.FileLock, () => ({
  __proto__: dart.getFields(io.FileLock.__proto__),
  [_type$0]: dart.finalFieldType(core.int)
}));
dart.defineLazy(io.FileLock, {
  /*io.FileLock.shared*/get shared() {
    return dart.const(new io.FileLock._internal(1));
  },
  /*io.FileLock.SHARED*/get SHARED() {
    return io.FileLock.shared;
  },
  /*io.FileLock.exclusive*/get exclusive() {
    return dart.const(new io.FileLock._internal(2));
  },
  /*io.FileLock.EXCLUSIVE*/get EXCLUSIVE() {
    return io.FileLock.exclusive;
  },
  /*io.FileLock.blockingShared*/get blockingShared() {
    return dart.const(new io.FileLock._internal(3));
  },
  /*io.FileLock.BLOCKING_SHARED*/get BLOCKING_SHARED() {
    return io.FileLock.blockingShared;
  },
  /*io.FileLock.blockingExclusive*/get blockingExclusive() {
    return dart.const(new io.FileLock._internal(4));
  },
  /*io.FileLock.BLOCKING_EXCLUSIVE*/get BLOCKING_EXCLUSIVE() {
    return io.FileLock.blockingExclusive;
  }
});
io.File = class File extends core.Object {
  static new(path) {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return new io._File.new(path);
    }
    return overrides.createFile(path);
  }
  static fromUri(uri) {
    return io.File.new(uri.toFilePath());
  }
  static fromRawPath(rawPath) {
    return new io._File.fromRawPath(rawPath);
  }
};
(io.File[dart.mixinNew] = function() {
}).prototype = io.File.prototype;
dart.addTypeTests(io.File);
io.File[dart.implements] = () => [io.FileSystemEntity];
io.RandomAccessFile = class RandomAccessFile extends core.Object {};
(io.RandomAccessFile.new = function() {
}).prototype = io.RandomAccessFile.prototype;
dart.addTypeTests(io.RandomAccessFile);
io.FileSystemException = class FileSystemException extends core.Object {
  get message() {
    return this[message$8];
  }
  set message(value) {
    super.message = value;
  }
  get path() {
    return this[path$];
  }
  set path(value) {
    super.path = value;
  }
  get osError() {
    return this[osError$];
  }
  set osError(value) {
    super.osError = value;
  }
  toString() {
    let sb = new core.StringBuffer.new();
    sb.write("FileSystemException");
    if (this.message[$isNotEmpty]) {
      sb.write(": " + dart.str(this.message));
      if (this.path != null) {
        sb.write(", path = '" + dart.str(this.path) + "'");
      }
      if (this.osError != null) {
        sb.write(" (" + dart.str(this.osError) + ")");
      }
    } else if (this.osError != null) {
      sb.write(": " + dart.str(this.osError));
      if (this.path != null) {
        sb.write(", path = '" + dart.str(this.path) + "'");
      }
    } else if (this.path != null) {
      sb.write(": " + dart.str(this.path));
    }
    return sb.toString();
  }
};
(io.FileSystemException.new = function(message, path, osError) {
  if (message === void 0) message = "";
  if (path === void 0) path = "";
  if (osError === void 0) osError = null;
  this[message$8] = message;
  this[path$] = path;
  this[osError$] = osError;
}).prototype = io.FileSystemException.prototype;
dart.addTypeTests(io.FileSystemException);
const message$8 = Symbol("FileSystemException.message");
const path$ = Symbol("FileSystemException.path");
const osError$ = Symbol("FileSystemException.osError");
io.FileSystemException[dart.implements] = () => [io.IOException];
dart.setFieldSignature(io.FileSystemException, () => ({
  __proto__: dart.getFields(io.FileSystemException.__proto__),
  message: dart.finalFieldType(core.String),
  path: dart.finalFieldType(core.String),
  osError: dart.finalFieldType(io.OSError)
}));
dart.defineExtensionMethods(io.FileSystemException, ['toString']);
dart.defineLazy(io, {
  /*io._blockSize*/get _blockSize() {
    return 64 * 1024;
  }
});
const _position$0 = Symbol('_position');
const _end$ = Symbol('_end');
const _controller$ = Symbol('_controller');
const _openedFile = Symbol('_openedFile');
const _closeCompleter = Symbol('_closeCompleter');
const _unsubscribed = Symbol('_unsubscribed');
const _readInProgress = Symbol('_readInProgress');
const _atEnd = Symbol('_atEnd');
const _setupController = Symbol('_setupController');
const _start$2 = Symbol('_start');
const _readBlock = Symbol('_readBlock');
const _closeFile = Symbol('_closeFile');
io._FileStream = class _FileStream extends async.Stream$(core.List$(core.int)) {
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    this[_setupController]();
    return this[_controller$].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  [_setupController]() {
    this[_controller$] = StreamControllerOfListOfint().new({sync: true, onListen: dart.bind(this, _start$2), onResume: dart.bind(this, _readBlock), onCancel: dart.fn(() => {
        this[_unsubscribed] = true;
        return this[_closeFile]();
      }, VoidToFuture())});
  }
  [_closeFile]() {
    if (dart.test(this[_readInProgress]) || dart.test(this[_closed])) {
      return this[_closeCompleter].future;
    }
    this[_closed] = true;
    const done = (function() {
      this[_closeCompleter].complete();
      this[_controller$].close();
    }).bind(this);
    dart.fn(done, VoidTovoid());
    this[_openedFile].close().catchError(dart.bind(this[_controller$], 'addError')).whenComplete(done);
    return this[_closeCompleter].future;
  }
  [_readBlock]() {
    if (dart.test(this[_readInProgress])) return;
    if (dart.test(this[_atEnd])) {
      this[_closeFile]();
      return;
    }
    this[_readInProgress] = true;
    let readBytes = 65536;
    if (this[_end$] != null) {
      readBytes = math.min(core.int, readBytes, dart.notNull(this[_end$]) - dart.notNull(this[_position$0]));
      if (readBytes < 0) {
        this[_readInProgress] = false;
        if (!dart.test(this[_unsubscribed])) {
          this[_controller$].addError(new core.RangeError.new("Bad end position: " + dart.str(this[_end$])));
          this[_closeFile]();
          this[_unsubscribed] = true;
        }
        return;
      }
    }
    FutureOfNull()._check(this[_openedFile].read(readBytes).then(core.Null, dart.fn(block => {
      this[_readInProgress] = false;
      if (dart.test(this[_unsubscribed])) {
        this[_closeFile]();
        return;
      }
      this[_position$0] = dart.notNull(this[_position$0]) + dart.notNull(block[$length]);
      if (dart.notNull(block[$length]) < readBytes || this[_end$] != null && this[_position$0] == this[_end$]) {
        this[_atEnd] = true;
      }
      if (!dart.test(this[_atEnd]) && !dart.test(this[_controller$].isPaused)) {
        this[_readBlock]();
      }
      this[_controller$].add(block);
      if (dart.test(this[_atEnd])) {
        this[_closeFile]();
      }
    }, ListOfintToNull()))).catchError(dart.fn((e, s) => {
      if (!dart.test(this[_unsubscribed])) {
        this[_controller$].addError(e, core.StackTrace._check(s));
        this[_closeFile]();
        this[_unsubscribed] = true;
      }
    }, dynamicAnddynamicToNull()));
  }
  [_start$2]() {
    if (dart.notNull(this[_position$0]) < 0) {
      this[_controller$].addError(new core.RangeError.new("Bad start position: " + dart.str(this[_position$0])));
      this[_controller$].close();
      this[_closeCompleter].complete();
      return;
    }
    const onReady = (function(file) {
      this[_openedFile] = file;
      this[_readInProgress] = false;
      this[_readBlock]();
    }).bind(this);
    dart.fn(onReady, RandomAccessFileTovoid());
    const onOpenFile = (function(file) {
      if (dart.notNull(this[_position$0]) > 0) {
        file.setPosition(this[_position$0]).then(dart.void, onReady, {onError: dart.fn((e, s) => {
            this[_controller$].addError(e, core.StackTrace._check(s));
            this[_readInProgress] = false;
            this[_closeFile]();
          }, dynamicAnddynamicToNull())});
      } else {
        onReady(file);
      }
    }).bind(this);
    dart.fn(onOpenFile, RandomAccessFileTovoid());
    const openFailed = (function(error, stackTrace) {
      this[_controller$].addError(error, core.StackTrace._check(stackTrace));
      this[_controller$].close();
      this[_closeCompleter].complete();
    }).bind(this);
    dart.fn(openFailed, dynamicAnddynamicTovoid());
    if (this[_path] != null) {
      io.File.new(this[_path]).open({mode: io.FileMode.read}).then(dart.void, onOpenFile, {onError: openFailed});
    } else {
      try {
        onOpenFile(io._File._openStdioSync(0));
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        openFailed(e, s);
      }
    }
  }
};
(io._FileStream.new = function(path, position, end) {
  this[_controller$] = null;
  this[_openedFile] = null;
  this[_closeCompleter] = async.Completer.new();
  this[_unsubscribed] = false;
  this[_readInProgress] = true;
  this[_closed] = false;
  this[_atEnd] = false;
  this[_path] = path;
  this[_position$0] = position;
  this[_end$] = end;
  io._FileStream.__proto__.new.call(this);
  let t = this[_position$0];
  t == null ? this[_position$0] = 0 : t;
}).prototype = io._FileStream.prototype;
(io._FileStream.forStdin = function() {
  this[_controller$] = null;
  this[_path] = null;
  this[_openedFile] = null;
  this[_end$] = null;
  this[_closeCompleter] = async.Completer.new();
  this[_unsubscribed] = false;
  this[_readInProgress] = true;
  this[_closed] = false;
  this[_atEnd] = false;
  this[_position$0] = 0;
  io._FileStream.__proto__.new.call(this);
}).prototype = io._FileStream.prototype;
dart.addTypeTests(io._FileStream);
dart.setMethodSignature(io._FileStream, () => ({
  __proto__: dart.getMethods(io._FileStream.__proto__),
  listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
  [_setupController]: dart.fnType(dart.void, []),
  [_closeFile]: dart.fnType(async.Future, []),
  [_readBlock]: dart.fnType(dart.void, []),
  [_start$2]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(io._FileStream, () => ({
  __proto__: dart.getFields(io._FileStream.__proto__),
  [_controller$]: dart.fieldType(StreamControllerOfListOfint()),
  [_path]: dart.fieldType(core.String),
  [_openedFile]: dart.fieldType(io.RandomAccessFile),
  [_position$0]: dart.fieldType(core.int),
  [_end$]: dart.fieldType(core.int),
  [_closeCompleter]: dart.finalFieldType(async.Completer),
  [_unsubscribed]: dart.fieldType(core.bool),
  [_readInProgress]: dart.fieldType(core.bool),
  [_closed]: dart.fieldType(core.bool),
  [_atEnd]: dart.fieldType(core.bool)
}));
const _file = Symbol('_file');
const _openFuture = Symbol('_openFuture');
io._FileStreamConsumer = class _FileStreamConsumer extends async.StreamConsumer$(core.List$(core.int)) {
  addStream(stream) {
    StreamOfListOfint()._check(stream);
    let completer = CompleterOfFile().sync();
    FutureOfNull()._check(this[_openFuture].then(core.Null, dart.fn(openedFile => {
      let _subscription = null;
      function error(e, stackTrace) {
        if (stackTrace === void 0) stackTrace = null;
        dart.dsend(_subscription, 'cancel', []);
        openedFile.close();
        completer.completeError(e, stackTrace);
      }
      dart.fn(error, dynamic__Tovoid());
      _subscription = stream.listen(dart.fn(d => {
        dart.dsend(_subscription, 'pause', []);
        try {
          openedFile.writeFrom(d, 0, d[$length]).then(dart.dynamic, dart.fn(_ => dart.dsend(_subscription, 'resume', []), RandomAccessFileTodynamic()), {onError: error});
        } catch (e$) {
          let e = dart.getThrown(e$);
          let stackTrace = dart.stackTrace(e$);
          error(e, stackTrace);
        }
      }, ListOfintToNull()), {onDone: dart.fn(() => {
          completer.complete(this[_file]);
        }, VoidToNull()), onError: error, cancelOnError: true});
    }, RandomAccessFileToNull()))).catchError(dart.bind(completer, 'completeError'));
    return completer.future;
  }
  close() {
    return FutureOfFile()._check(this[_openFuture].then(dart.void, dart.fn(openedFile => openedFile.close(), RandomAccessFileToFutureOfvoid())).then(io.File, dart.fn(_ => this[_file], voidToFile())));
  }
};
(io._FileStreamConsumer.new = function(file, mode) {
  this[_openFuture] = null;
  this[_file] = file;
  this[_openFuture] = this[_file].open({mode: mode});
}).prototype = io._FileStreamConsumer.prototype;
(io._FileStreamConsumer.fromStdio = function(fd) {
  this[_file] = null;
  this[_openFuture] = null;
  this[_openFuture] = FutureOfRandomAccessFile().value(io._File._openStdioSync(fd));
}).prototype = io._FileStreamConsumer.prototype;
dart.addTypeTests(io._FileStreamConsumer);
dart.setMethodSignature(io._FileStreamConsumer, () => ({
  __proto__: dart.getMethods(io._FileStreamConsumer.__proto__),
  addStream: dart.fnType(async.Future$(io.File), [core.Object]),
  close: dart.fnType(async.Future$(io.File), [])
}));
dart.setFieldSignature(io._FileStreamConsumer, () => ({
  __proto__: dart.getFields(io._FileStreamConsumer.__proto__),
  [_file]: dart.fieldType(io.File),
  [_openFuture]: dart.fieldType(FutureOfRandomAccessFile())
}));
const _tryDecode = Symbol('_tryDecode');
let const$57;
let const$58;
io._File = class _File extends io.FileSystemEntity {
  get [_path]() {
    return this[_path$1];
  }
  set [_path](value) {
    this[_path$1] = value;
  }
  get [_rawPath$]() {
    return this[_rawPath$1];
  }
  set [_rawPath$](value) {
    this[_rawPath$1] = value;
  }
  get path() {
    return this[_path];
  }
  static _namespacePointer() {
    return io._Namespace._namespacePointer;
  }
  static _dispatchWithNamespace(request, data) {
    data[$_set](0, io._File._namespacePointer());
    return io._IOService._dispatch(request, data);
  }
  exists() {
    return FutureOfbool()._check(io._File._dispatchWithNamespace(io._IOService.fileExists, [null, this[_rawPath$]]).then(core.bool, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot check existence", this.path));
      }
      return FutureOrOfbool()._check(response);
    }, dynamicToFutureOrOfbool())));
  }
  static _exists(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("File._exists"));
  }
  existsSync() {
    let result = io._File._exists(io._Namespace._namespace, this[_rawPath$]);
    io._File.throwIfError(result, "Cannot check existence of file", this.path);
    return core.bool._check(result);
  }
  get absolute() {
    return io.File.new(this[_absolutePath]);
  }
  create(opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    let result = dart.test(recursive) ? this.parent.create({recursive: true}) : FutureOfNull().value(null);
    return FutureOfFile()._check(result.then(dart.dynamic, dart.fn(_ => io._File._dispatchWithNamespace(io._IOService.fileCreate, [null, this[_rawPath$]]), DirectoryToFuture())).then(io.File, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot create file", this.path));
      }
      return this;
    }, dynamicTo_File())));
  }
  static _create(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("File._create"));
  }
  static _createLink(namespace, rawPath, target) {
    dart.throw(new core.UnsupportedError.new("File._createLink"));
  }
  static _linkTarget(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("File._linkTarget"));
  }
  createSync(opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    if (dart.test(recursive)) {
      this.parent.createSync({recursive: true});
    }
    let result = io._File._create(io._Namespace._namespace, this[_rawPath$]);
    io._File.throwIfError(result, "Cannot create file", this.path);
  }
  [_delete](opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    if (dart.test(recursive)) {
      return FutureOfFile()._check(io.Directory.new(this.path).delete({recursive: true}).then(io.File, dart.fn(_ => this, FileSystemEntityTo_File())));
    }
    return FutureOfFile()._check(io._File._dispatchWithNamespace(io._IOService.fileDelete, [null, this[_rawPath$]]).then(io.File, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot delete file", this.path));
      }
      return this;
    }, dynamicTo_File())));
  }
  static _deleteNative(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("File._deleteNative"));
  }
  static _deleteLinkNative(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("File._deleteLinkNative"));
  }
  [_deleteSync](opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    if (dart.test(recursive)) {
      return io.Directory.fromRawPath(this[_rawPath$]).deleteSync({recursive: true});
    }
    let result = io._File._deleteNative(io._Namespace._namespace, this[_rawPath$]);
    io._File.throwIfError(result, "Cannot delete file", this.path);
  }
  rename(newPath) {
    return FutureOfFile()._check(io._File._dispatchWithNamespace(io._IOService.fileRename, [null, this[_rawPath$], newPath]).then(io.File, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot rename file to '" + dart.str(newPath) + "'", this.path));
      }
      return io.File.new(newPath);
    }, dynamicToFile())));
  }
  static _rename(namespace, oldPath, newPath) {
    dart.throw(new core.UnsupportedError.new("File._rename"));
  }
  static _renameLink(namespace, oldPath, newPath) {
    dart.throw(new core.UnsupportedError.new("File._renameLink"));
  }
  renameSync(newPath) {
    let result = io._File._rename(io._Namespace._namespace, this[_rawPath$], newPath);
    io._File.throwIfError(result, "Cannot rename file to '" + dart.str(newPath) + "'", this.path);
    return io.File.new(newPath);
  }
  copy(newPath) {
    return FutureOfFile()._check(io._File._dispatchWithNamespace(io._IOService.fileCopy, [null, this[_rawPath$], newPath]).then(io.File, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot copy file to '" + dart.str(newPath) + "'", this.path));
      }
      return io.File.new(newPath);
    }, dynamicToFile())));
  }
  static _copy(namespace, oldPath, newPath) {
    dart.throw(new core.UnsupportedError.new("File._copy"));
  }
  copySync(newPath) {
    let result = io._File._copy(io._Namespace._namespace, this[_rawPath$], newPath);
    io._File.throwIfError(result, "Cannot copy file to '" + dart.str(newPath) + "'", this.path);
    return io.File.new(newPath);
  }
  open(opts) {
    let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.read;
    if (!dart.equals(mode, io.FileMode.read) && !dart.equals(mode, io.FileMode.write) && !dart.equals(mode, io.FileMode.append) && !dart.equals(mode, io.FileMode.writeOnly) && !dart.equals(mode, io.FileMode.writeOnlyAppend)) {
      return FutureOfRandomAccessFile().error(new core.ArgumentError.new("Invalid file mode for this operation"));
    }
    return FutureOfRandomAccessFile()._check(io._File._dispatchWithNamespace(io._IOService.fileOpen, [null, this[_rawPath$], mode[_mode]]).then(io.RandomAccessFile, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot open file", this.path));
      }
      return new io._RandomAccessFile.new(core.int._check(response), this.path);
    }, dynamicTo_RandomAccessFile())));
  }
  length() {
    return FutureOfint()._check(io._File._dispatchWithNamespace(io._IOService.fileLengthFromPath, [null, this[_rawPath$]]).then(core.int, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot retrieve length of file", this.path));
      }
      return FutureOrOfint()._check(response);
    }, dynamicToFutureOrOfint())));
  }
  static _lengthFromPath(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("File._lengthFromPath"));
  }
  lengthSync() {
    let result = io._File._lengthFromPath(io._Namespace._namespace, this[_rawPath$]);
    io._File.throwIfError(result, "Cannot retrieve length of file", this.path);
    return core.int._check(result);
  }
  lastAccessed() {
    return FutureOfDateTime()._check(io._File._dispatchWithNamespace(io._IOService.fileLastAccessed, [null, this[_rawPath$]]).then(core.DateTime, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot retrieve access time", this.path));
      }
      return new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(response));
    }, dynamicToDateTime())));
  }
  static _lastAccessed(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("File._lastAccessed"));
  }
  lastAccessedSync() {
    let ms = io._File._lastAccessed(io._Namespace._namespace, this[_rawPath$]);
    io._File.throwIfError(ms, "Cannot retrieve access time", this.path);
    return new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(ms));
  }
  setLastAccessed(time) {
    let millis = time.millisecondsSinceEpoch;
    return io._File._dispatchWithNamespace(io._IOService.fileSetLastAccessed, [null, this[_rawPath$], millis]).then(dart.dynamic, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot set access time", this.path));
      }
      return null;
    }, dynamicToNull()));
  }
  static _setLastAccessed(namespace, rawPath, millis) {
    dart.throw(new core.UnsupportedError.new("File._setLastAccessed"));
  }
  setLastAccessedSync(time) {
    let millis = time.millisecondsSinceEpoch;
    let result = io._File._setLastAccessed(io._Namespace._namespace, this[_rawPath$], millis);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("Failed to set file access time", this.path, result));
    }
  }
  lastModified() {
    return FutureOfDateTime()._check(io._File._dispatchWithNamespace(io._IOService.fileLastModified, [null, this[_rawPath$]]).then(core.DateTime, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot retrieve modification time", this.path));
      }
      return new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(response));
    }, dynamicToDateTime())));
  }
  static _lastModified(namespace, rawPath) {
    dart.throw(new core.UnsupportedError.new("File._lastModified"));
  }
  lastModifiedSync() {
    let ms = io._File._lastModified(io._Namespace._namespace, this[_rawPath$]);
    io._File.throwIfError(ms, "Cannot retrieve modification time", this.path);
    return new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(ms));
  }
  setLastModified(time) {
    let millis = time.millisecondsSinceEpoch;
    return io._File._dispatchWithNamespace(io._IOService.fileSetLastModified, [null, this[_rawPath$], millis]).then(dart.dynamic, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "Cannot set modification time", this.path));
      }
      return null;
    }, dynamicToNull()));
  }
  static _setLastModified(namespace, rawPath, millis) {
    dart.throw(new core.UnsupportedError.new("File._setLastModified"));
  }
  setLastModifiedSync(time) {
    let millis = time.millisecondsSinceEpoch;
    let result = io._File._setLastModified(io._Namespace._namespace, this[_rawPath$], millis);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("Failed to set file modification time", this.path, result));
    }
  }
  static _open(namespace, rawPath, mode) {
    dart.throw(new core.UnsupportedError.new("File._open"));
  }
  openSync(opts) {
    let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.read;
    if (!dart.equals(mode, io.FileMode.read) && !dart.equals(mode, io.FileMode.write) && !dart.equals(mode, io.FileMode.append) && !dart.equals(mode, io.FileMode.writeOnly) && !dart.equals(mode, io.FileMode.writeOnlyAppend)) {
      dart.throw(new core.ArgumentError.new("Invalid file mode for this operation"));
    }
    let id = io._File._open(io._Namespace._namespace, this[_rawPath$], mode[_mode]);
    io._File.throwIfError(id, "Cannot open file", this.path);
    return new io._RandomAccessFile.new(core.int._check(id), this[_path]);
  }
  static _openStdio(fd) {
    dart.throw(new core.UnsupportedError.new("File._openStdio"));
  }
  static _openStdioSync(fd) {
    let id = io._File._openStdio(fd);
    if (id === 0) {
      dart.throw(new io.FileSystemException.new("Cannot open stdio file for: " + dart.str(fd)));
    }
    return new io._RandomAccessFile.new(id, "");
  }
  openRead(start, end) {
    if (start === void 0) start = null;
    if (end === void 0) end = null;
    return new io._FileStream.new(this.path, start, end);
  }
  openWrite(opts) {
    let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.write;
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    if (!dart.equals(mode, io.FileMode.write) && !dart.equals(mode, io.FileMode.append) && !dart.equals(mode, io.FileMode.writeOnly) && !dart.equals(mode, io.FileMode.writeOnlyAppend)) {
      dart.throw(new core.ArgumentError.new("Invalid file mode for this operation"));
    }
    let consumer = new io._FileStreamConsumer.new(this, mode);
    return io.IOSink.new(consumer, {encoding: encoding});
  }
  readAsBytes() {
    function readDataChunked(file) {
      let builder = io.BytesBuilder.new({copy: false});
      let completer = CompleterOfListOfint().new();
      function read() {
        FutureOfNull()._check(file.read(65536).then(core.Null, dart.fn(data => {
          if (dart.notNull(data[$length]) > 0) {
            builder.add(data);
            read();
          } else {
            completer.complete(builder.takeBytes());
          }
        }, ListOfintToNull()), {onError: dart.bind(completer, 'completeError')}));
      }
      dart.fn(read, VoidTovoid());
      read();
      return completer.future;
    }
    dart.fn(readDataChunked, RandomAccessFileToFutureOfListOfint());
    return FutureOfListOfint()._check(this.open().then(ListOfint(), dart.fn(file => FutureOfListOfint()._check(file.length().then(ListOfint(), dart.fn(length => {
      if (length === 0) {
        return readDataChunked(file);
      }
      return file.read(length);
    }, intToFutureOfListOfint()))).whenComplete(dart.bind(file, 'close')), RandomAccessFileToFutureOfListOfint())));
  }
  readAsBytesSync() {
    let opened = this.openSync();
    try {
      let data = null;
      let length = opened.lengthSync();
      if (length === 0) {
        let builder = io.BytesBuilder.new({copy: false});
        do {
          data = opened.readSync(65536);
          if (dart.notNull(data[$length]) > 0) builder.add(data);
        } while (dart.notNull(data[$length]) > 0);
        data = builder.takeBytes();
      } else {
        data = opened.readSync(length);
      }
      return data;
    } finally {
      opened.closeSync();
    }
  }
  [_tryDecode](bytes, encoding) {
    try {
      return encoding.decode(bytes);
    } catch (e) {
      let _ = dart.getThrown(e);
      dart.throw(new io.FileSystemException.new("Failed to decode data using encoding '" + dart.str(encoding.name) + "'", this.path));
    }
  }
  readAsString(opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    let stack = core.StackTrace.current;
    return FutureOfString()._check(this.readAsBytes().then(core.String, dart.fn(bytes => {
      try {
        return this[_tryDecode](bytes, encoding);
      } catch (e$) {
        let e = dart.getThrown(e$);
        return FutureOfString().error(e, stack);
      }
    }, ListOfintToFutureOrOfString())));
  }
  readAsStringSync(opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    return this[_tryDecode](this.readAsBytesSync(), encoding);
  }
  readAsLines(opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    return FutureOfListOfString()._check(this.readAsString({encoding: encoding}).then(ListOfString(), dart.bind(const$57 || (const$57 = dart.const(new convert.LineSplitter.new())), 'convert')));
  }
  readAsLinesSync(opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    return (const$58 || (const$58 = dart.const(new convert.LineSplitter.new()))).convert(this.readAsStringSync({encoding: encoding}));
  }
  writeAsBytes(bytes, opts) {
    let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.write;
    let flush = opts && 'flush' in opts ? opts.flush : false;
    return FutureOfFile()._check(this.open({mode: mode}).then(io.File, dart.fn(file => FutureOfFile()._check(file.writeFrom(bytes, 0, bytes[$length]).then(io.File, dart.fn(_ => {
      if (dart.test(flush)) return FutureOfFile()._check(file.flush().then(io.File, dart.fn(_ => this, RandomAccessFileTo_File())));
      return this;
    }, RandomAccessFileToFutureOrOfFile()))).whenComplete(dart.bind(file, 'close')), RandomAccessFileToFutureOfFile())));
  }
  writeAsBytesSync(bytes, opts) {
    let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.write;
    let flush = opts && 'flush' in opts ? opts.flush : false;
    let opened = this.openSync({mode: mode});
    try {
      opened.writeFromSync(bytes, 0, bytes[$length]);
      if (dart.test(flush)) opened.flushSync();
    } finally {
      opened.closeSync();
    }
  }
  writeAsString(contents, opts) {
    let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.write;
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    let flush = opts && 'flush' in opts ? opts.flush : false;
    try {
      return this.writeAsBytes(encoding.encode(contents), {mode: mode, flush: flush});
    } catch (e$) {
      let e = dart.getThrown(e$);
      return FutureOfFile().error(e);
    }
  }
  writeAsStringSync(contents, opts) {
    let mode = opts && 'mode' in opts ? opts.mode : io.FileMode.write;
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    let flush = opts && 'flush' in opts ? opts.flush : false;
    this.writeAsBytesSync(encoding.encode(contents), {mode: mode, flush: flush});
  }
  toString() {
    return "File: '" + dart.str(this.path) + "'";
  }
  static throwIfError(result, msg, path) {
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new(msg, path, result));
    }
  }
};
(io._File.new = function(path) {
  this[_path$1] = null;
  this[_rawPath$1] = null;
  io._File.__proto__.new.call(this);
  core.ArgumentError.checkNotNull(path, "path");
  this[_path] = path;
  this[_rawPath$] = io.FileSystemEntity._toUtf8Array(path);
}).prototype = io._File.prototype;
(io._File.fromRawPath = function(rawPath) {
  this[_path$1] = null;
  this[_rawPath$1] = null;
  io._File.__proto__.new.call(this);
  core.ArgumentError.checkNotNull(rawPath, "rawPath");
  this[_rawPath$] = io.FileSystemEntity._toNullTerminatedUtf8Array(rawPath);
  this[_path] = io.FileSystemEntity._toStringFromUtf8Array(rawPath);
}).prototype = io._File.prototype;
dart.addTypeTests(io._File);
const _path$1 = Symbol("_File._path");
const _rawPath$1 = Symbol("_File._rawPath");
io._File[dart.implements] = () => [io.File];
dart.setMethodSignature(io._File, () => ({
  __proto__: dart.getMethods(io._File.__proto__),
  exists: dart.fnType(async.Future$(core.bool), []),
  existsSync: dart.fnType(core.bool, []),
  create: dart.fnType(async.Future$(io.File), [], {recursive: core.bool}),
  createSync: dart.fnType(dart.void, [], {recursive: core.bool}),
  [_delete]: dart.fnType(async.Future$(io.File), [], {recursive: core.bool}),
  [_deleteSync]: dart.fnType(dart.void, [], {recursive: core.bool}),
  rename: dart.fnType(async.Future$(io.File), [core.String]),
  renameSync: dart.fnType(io.File, [core.String]),
  copy: dart.fnType(async.Future$(io.File), [core.String]),
  copySync: dart.fnType(io.File, [core.String]),
  open: dart.fnType(async.Future$(io.RandomAccessFile), [], {mode: io.FileMode}),
  length: dart.fnType(async.Future$(core.int), []),
  lengthSync: dart.fnType(core.int, []),
  lastAccessed: dart.fnType(async.Future$(core.DateTime), []),
  lastAccessedSync: dart.fnType(core.DateTime, []),
  setLastAccessed: dart.fnType(async.Future, [core.DateTime]),
  setLastAccessedSync: dart.fnType(dart.void, [core.DateTime]),
  lastModified: dart.fnType(async.Future$(core.DateTime), []),
  lastModifiedSync: dart.fnType(core.DateTime, []),
  setLastModified: dart.fnType(async.Future, [core.DateTime]),
  setLastModifiedSync: dart.fnType(dart.void, [core.DateTime]),
  openSync: dart.fnType(io.RandomAccessFile, [], {mode: io.FileMode}),
  openRead: dart.fnType(async.Stream$(core.List$(core.int)), [], [core.int, core.int]),
  openWrite: dart.fnType(io.IOSink, [], {mode: io.FileMode, encoding: convert.Encoding}),
  readAsBytes: dart.fnType(async.Future$(core.List$(core.int)), []),
  readAsBytesSync: dart.fnType(core.List$(core.int), []),
  [_tryDecode]: dart.fnType(core.String, [core.List$(core.int), convert.Encoding]),
  readAsString: dart.fnType(async.Future$(core.String), [], {encoding: convert.Encoding}),
  readAsStringSync: dart.fnType(core.String, [], {encoding: convert.Encoding}),
  readAsLines: dart.fnType(async.Future$(core.List$(core.String)), [], {encoding: convert.Encoding}),
  readAsLinesSync: dart.fnType(core.List$(core.String), [], {encoding: convert.Encoding}),
  writeAsBytes: dart.fnType(async.Future$(io.File), [core.List$(core.int)], {mode: io.FileMode, flush: core.bool}),
  writeAsBytesSync: dart.fnType(dart.void, [core.List$(core.int)], {mode: io.FileMode, flush: core.bool}),
  writeAsString: dart.fnType(async.Future$(io.File), [core.String], {mode: io.FileMode, encoding: convert.Encoding, flush: core.bool}),
  writeAsStringSync: dart.fnType(dart.void, [core.String], {mode: io.FileMode, encoding: convert.Encoding, flush: core.bool})
}));
dart.setGetterSignature(io._File, () => ({
  __proto__: dart.getGetters(io._File.__proto__),
  path: core.String,
  absolute: io.File
}));
dart.setFieldSignature(io._File, () => ({
  __proto__: dart.getFields(io._File.__proto__),
  [_path]: dart.fieldType(core.String),
  [_rawPath$]: dart.fieldType(typed_data.Uint8List)
}));
dart.defineExtensionMethods(io._File, ['toString']);
io._RandomAccessFileOps = class _RandomAccessFileOps extends core.Object {
  static new(pointer) {
    dart.throw(new core.UnsupportedError.new("RandomAccessFile"));
  }
};
(io._RandomAccessFileOps[dart.mixinNew] = function() {
}).prototype = io._RandomAccessFileOps.prototype;
dart.addTypeTests(io._RandomAccessFileOps);
const _asyncDispatched = Symbol('_asyncDispatched');
const _fileService = Symbol('_fileService');
const _resourceInfo = Symbol('_resourceInfo');
const _maybeConnectHandler = Symbol('_maybeConnectHandler');
const _maybePerformCleanup = Symbol('_maybePerformCleanup');
const _dispatch = Symbol('_dispatch');
const _checkAvailable = Symbol('_checkAvailable');
const _fileLockValue = Symbol('_fileLockValue');
io._RandomAccessFile = class _RandomAccessFile extends core.Object {
  [_maybePerformCleanup]() {
    if (dart.test(this.closed)) {
      io._FileResourceInfo.FileClosed(this[_resourceInfo]);
    }
  }
  [_maybeConnectHandler]() {
    if (!dart.test(io._RandomAccessFile._connectedResourceHandler)) {
      developer.registerExtension("ext.dart.io.getOpenFiles", dart.fn(io._FileResourceInfo.getOpenFiles, dynamicAnddynamicToFutureOfServiceExtensionResponse()));
      developer.registerExtension("ext.dart.io.getFileByID", dart.fn(io._FileResourceInfo.getFileInfoMapByID, dynamicAnddynamicToFutureOfServiceExtensionResponse()));
      io._RandomAccessFile._connectedResourceHandler = true;
    }
  }
  close() {
    return this[_dispatch](io._IOService.fileClose, [null], {markClosed: true}).then(dart.void, dart.fn(result => {
      if (dart.equals(result, -1)) {
        dart.throw(new io.FileSystemException.new("Cannot close file", this.path));
      }
      this.closed = dart.test(this.closed) || dart.equals(result, 0);
      this[_maybePerformCleanup]();
    }, dynamicToNull()));
  }
  closeSync() {
    this[_checkAvailable]();
    let id = this[_ops].close();
    if (id === -1) {
      dart.throw(new io.FileSystemException.new("Cannot close file", this.path));
    }
    this.closed = dart.test(this.closed) || id === 0;
    this[_maybePerformCleanup]();
  }
  readByte() {
    return FutureOfint()._check(this[_dispatch](io._IOService.fileReadByte, [null]).then(core.int, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "readByte failed", this.path));
      }
      this[_resourceInfo].addRead(1);
      return FutureOrOfint()._check(response);
    }, dynamicToFutureOrOfint())));
  }
  readByteSync() {
    this[_checkAvailable]();
    let result = this[_ops].readByte();
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("readByte failed", this.path, result));
    }
    this[_resourceInfo].addRead(1);
    return core.int._check(result);
  }
  read(bytes) {
    core.ArgumentError.checkNotNull(bytes, "bytes");
    return FutureOfListOfint()._check(this[_dispatch](io._IOService.fileRead, [null, bytes]).then(ListOfint(), dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "read failed", this.path));
      }
      this[_resourceInfo].addRead(core.int._check(dart.dload(dart.dindex(response, 1), 'length')));
      let result = ListOfint()._check(dart.dindex(response, 1));
      return result;
    }, dynamicToListOfint())));
  }
  readSync(bytes) {
    this[_checkAvailable]();
    core.ArgumentError.checkNotNull(bytes, "bytes");
    let result = this[_ops].read(bytes);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("readSync failed", this.path, result));
    }
    this[_resourceInfo].addRead(core.int._check(dart.dload(result, 'length')));
    return ListOfint()._check(result);
  }
  readInto(buffer, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    if (!core.List.is(buffer) || start != null && !core.int.is(start) || end != null && !core.int.is(end)) {
      dart.throw(new core.ArgumentError.new());
    }
    end = core.RangeError.checkValidRange(start, end, buffer[$length]);
    if (end == start) {
      return FutureOfint().value(0);
    }
    let length = dart.notNull(end) - dart.notNull(start);
    return FutureOfint()._check(this[_dispatch](io._IOService.fileReadInto, [null, length]).then(core.int, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "readInto failed", this.path));
      }
      let read = core.int._check(dart.dindex(response, 1));
      let data = ListOfint()._check(dart.dindex(response, 2));
      buffer[$setRange](start, dart.notNull(start) + dart.notNull(read), data);
      this[_resourceInfo].addRead(read);
      return read;
    }, dynamicToint())));
  }
  readIntoSync(buffer, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    this[_checkAvailable]();
    if (!core.List.is(buffer) || start != null && !core.int.is(start) || end != null && !core.int.is(end)) {
      dart.throw(new core.ArgumentError.new());
    }
    end = core.RangeError.checkValidRange(start, end, buffer[$length]);
    if (end == start) {
      return 0;
    }
    let result = this[_ops].readInto(buffer, start, end);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("readInto failed", this.path, result));
    }
    this[_resourceInfo].addRead(core.int._check(result));
    return core.int._check(result);
  }
  writeByte(value) {
    core.ArgumentError.checkNotNull(value, "value");
    return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileWriteByte, [null, value]).then(io.RandomAccessFile, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "writeByte failed", this.path));
      }
      this[_resourceInfo].addWrite(1);
      return this;
    }, dynamicTo_RandomAccessFile())));
  }
  writeByteSync(value) {
    this[_checkAvailable]();
    core.ArgumentError.checkNotNull(value, "value");
    let result = this[_ops].writeByte(value);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("writeByte failed", this.path, result));
    }
    this[_resourceInfo].addWrite(1);
    return core.int._check(result);
  }
  writeFrom(buffer, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    if (!core.List.is(buffer) || start != null && !core.int.is(start) || end != null && !core.int.is(end)) {
      dart.throw(new core.ArgumentError.new("Invalid arguments to writeFrom"));
    }
    end = core.RangeError.checkValidRange(start, end, buffer[$length]);
    if (end == start) {
      return FutureOfRandomAccessFile().value(this);
    }
    let result = null;
    try {
      result = io._ensureFastAndSerializableByteData(buffer, start, end);
    } catch (e$) {
      let e = dart.getThrown(e$);
      return FutureOfRandomAccessFile().error(e);
    }
    let request = core.List.new(4);
    request[$_set](0, null);
    request[$_set](1, result.buffer);
    request[$_set](2, result.start);
    request[$_set](3, dart.notNull(end) - (dart.notNull(start) - dart.notNull(result.start)));
    return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileWriteFrom, request).then(io.RandomAccessFile, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "writeFrom failed", this.path));
      }
      this[_resourceInfo].addWrite(dart.notNull(end) - (dart.notNull(start) - dart.notNull(result.start)));
      return this;
    }, dynamicTo_RandomAccessFile())));
  }
  writeFromSync(buffer, start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = null;
    this[_checkAvailable]();
    if (!core.List.is(buffer) || start != null && !core.int.is(start) || end != null && !core.int.is(end)) {
      dart.throw(new core.ArgumentError.new("Invalid arguments to writeFromSync"));
    }
    end = core.RangeError.checkValidRange(start, end, buffer[$length]);
    if (end == start) {
      return;
    }
    let bufferAndStart = io._ensureFastAndSerializableByteData(buffer, start, end);
    let result = this[_ops].writeFrom(bufferAndStart.buffer, bufferAndStart.start, dart.notNull(end) - (dart.notNull(start) - dart.notNull(bufferAndStart.start)));
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("writeFrom failed", this.path, result));
    }
    this[_resourceInfo].addWrite(dart.notNull(end) - (dart.notNull(start) - dart.notNull(bufferAndStart.start)));
  }
  writeString(string, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    core.ArgumentError.checkNotNull(encoding, "encoding");
    let data = encoding.encode(string);
    return this.writeFrom(data, 0, data[$length]);
  }
  writeStringSync(string, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    core.ArgumentError.checkNotNull(encoding, "encoding");
    let data = encoding.encode(string);
    this.writeFromSync(data, 0, data[$length]);
  }
  position() {
    return FutureOfint()._check(this[_dispatch](io._IOService.filePosition, [null]).then(core.int, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "position failed", this.path));
      }
      return FutureOrOfint()._check(response);
    }, dynamicToFutureOrOfint())));
  }
  positionSync() {
    this[_checkAvailable]();
    let result = this[_ops].position();
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("position failed", this.path, result));
    }
    return core.int._check(result);
  }
  setPosition(position) {
    return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileSetPosition, [null, position]).then(io.RandomAccessFile, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "setPosition failed", this.path));
      }
      return this;
    }, dynamicTo_RandomAccessFile())));
  }
  setPositionSync(position) {
    this[_checkAvailable]();
    let result = this[_ops].setPosition(position);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("setPosition failed", this.path, result));
    }
  }
  truncate(length) {
    return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileTruncate, [null, length]).then(io.RandomAccessFile, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "truncate failed", this.path));
      }
      return this;
    }, dynamicTo_RandomAccessFile())));
  }
  truncateSync(length) {
    this[_checkAvailable]();
    let result = this[_ops].truncate(length);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("truncate failed", this.path, result));
    }
  }
  length() {
    return FutureOfint()._check(this[_dispatch](io._IOService.fileLength, [null]).then(core.int, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "length failed", this.path));
      }
      return FutureOrOfint()._check(response);
    }, dynamicToFutureOrOfint())));
  }
  lengthSync() {
    this[_checkAvailable]();
    let result = this[_ops].length();
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("length failed", this.path, result));
    }
    return core.int._check(result);
  }
  flush() {
    return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileFlush, [null]).then(io.RandomAccessFile, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "flush failed", this.path));
      }
      return this;
    }, dynamicTo_RandomAccessFile())));
  }
  flushSync() {
    this[_checkAvailable]();
    let result = this[_ops].flush();
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("flush failed", this.path, result));
    }
  }
  [_fileLockValue](fl) {
    return fl[_type$0];
  }
  lock(mode, start, end) {
    if (mode === void 0) mode = io.FileLock.exclusive;
    if (start === void 0) start = 0;
    if (end === void 0) end = -1;
    if (!io.FileLock.is(mode) || !core.int.is(start) || !core.int.is(end)) {
      dart.throw(new core.ArgumentError.new());
    }
    if (dart.notNull(start) < 0 || dart.notNull(end) < -1 || end !== -1 && dart.notNull(start) >= dart.notNull(end)) {
      dart.throw(new core.ArgumentError.new());
    }
    let lock = this[_fileLockValue](mode);
    return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileLock, [null, lock, start, end]).then(io.RandomAccessFile, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "lock failed", this.path));
      }
      return this;
    }, dynamicTo_RandomAccessFile())));
  }
  unlock(start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = -1;
    if (!core.int.is(start) || !core.int.is(end)) {
      dart.throw(new core.ArgumentError.new());
    }
    if (start == end) {
      dart.throw(new core.ArgumentError.new());
    }
    return FutureOfRandomAccessFile()._check(this[_dispatch](io._IOService.fileLock, [null, 0, start, end]).then(io.RandomAccessFile, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        dart.throw(io._exceptionFromResponse(response, "unlock failed", this.path));
      }
      return this;
    }, dynamicTo_RandomAccessFile())));
  }
  lockSync(mode, start, end) {
    if (mode === void 0) mode = io.FileLock.exclusive;
    if (start === void 0) start = 0;
    if (end === void 0) end = -1;
    this[_checkAvailable]();
    if (!io.FileLock.is(mode) || !core.int.is(start) || !core.int.is(end)) {
      dart.throw(new core.ArgumentError.new());
    }
    if (dart.notNull(start) < 0 || dart.notNull(end) < -1 || end !== -1 && dart.notNull(start) >= dart.notNull(end)) {
      dart.throw(new core.ArgumentError.new());
    }
    let lock = this[_fileLockValue](mode);
    let result = this[_ops].lock(lock, start, end);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("lock failed", this.path, result));
    }
  }
  unlockSync(start, end) {
    if (start === void 0) start = 0;
    if (end === void 0) end = -1;
    this[_checkAvailable]();
    if (!core.int.is(start) || !core.int.is(end)) {
      dart.throw(new core.ArgumentError.new());
    }
    if (start == end) {
      dart.throw(new core.ArgumentError.new());
    }
    let result = this[_ops].lock(0, start, end);
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new("unlock failed", this.path, result));
    }
  }
  [_pointer]() {
    return this[_ops].getPointer();
  }
  [_dispatch](request, data, opts) {
    let markClosed = opts && 'markClosed' in opts ? opts.markClosed : false;
    if (dart.test(this.closed)) {
      return async.Future.error(new io.FileSystemException.new("File closed", this.path));
    }
    if (dart.test(this[_asyncDispatched])) {
      let msg = "An async operation is currently pending";
      return async.Future.error(new io.FileSystemException.new(msg, this.path));
    }
    if (dart.test(markClosed)) {
      this.closed = true;
    }
    this[_asyncDispatched] = true;
    data[$_set](0, this[_pointer]());
    return io._IOService._dispatch(request, data).whenComplete(dart.fn(() => {
      this[_asyncDispatched] = false;
    }, VoidToNull()));
  }
  [_checkAvailable]() {
    if (dart.test(this[_asyncDispatched])) {
      dart.throw(new io.FileSystemException.new("An async operation is currently pending", this.path));
    }
    if (dart.test(this.closed)) {
      dart.throw(new io.FileSystemException.new("File closed", this.path));
    }
  }
};
(io._RandomAccessFile.new = function(pointer, path) {
  this[_asyncDispatched] = false;
  this[_fileService] = null;
  this[_resourceInfo] = null;
  this[_ops] = null;
  this.closed = false;
  this.path = path;
  this[_ops] = io._RandomAccessFileOps.new(pointer);
  this[_resourceInfo] = new io._FileResourceInfo.new(this);
  this[_maybeConnectHandler]();
}).prototype = io._RandomAccessFile.prototype;
dart.addTypeTests(io._RandomAccessFile);
io._RandomAccessFile[dart.implements] = () => [io.RandomAccessFile];
dart.setMethodSignature(io._RandomAccessFile, () => ({
  __proto__: dart.getMethods(io._RandomAccessFile.__proto__),
  [_maybePerformCleanup]: dart.fnType(dart.void, []),
  [_maybeConnectHandler]: dart.fnType(dart.dynamic, []),
  close: dart.fnType(async.Future$(dart.void), []),
  closeSync: dart.fnType(dart.void, []),
  readByte: dart.fnType(async.Future$(core.int), []),
  readByteSync: dart.fnType(core.int, []),
  read: dart.fnType(async.Future$(core.List$(core.int)), [core.int]),
  readSync: dart.fnType(core.List$(core.int), [core.int]),
  readInto: dart.fnType(async.Future$(core.int), [core.List$(core.int)], [core.int, core.int]),
  readIntoSync: dart.fnType(core.int, [core.List$(core.int)], [core.int, core.int]),
  writeByte: dart.fnType(async.Future$(io.RandomAccessFile), [core.int]),
  writeByteSync: dart.fnType(core.int, [core.int]),
  writeFrom: dart.fnType(async.Future$(io.RandomAccessFile), [core.List$(core.int)], [core.int, core.int]),
  writeFromSync: dart.fnType(dart.void, [core.List$(core.int)], [core.int, core.int]),
  writeString: dart.fnType(async.Future$(io.RandomAccessFile), [core.String], {encoding: convert.Encoding}),
  writeStringSync: dart.fnType(dart.void, [core.String], {encoding: convert.Encoding}),
  position: dart.fnType(async.Future$(core.int), []),
  positionSync: dart.fnType(core.int, []),
  setPosition: dart.fnType(async.Future$(io.RandomAccessFile), [core.int]),
  setPositionSync: dart.fnType(dart.void, [core.int]),
  truncate: dart.fnType(async.Future$(io.RandomAccessFile), [core.int]),
  truncateSync: dart.fnType(dart.void, [core.int]),
  length: dart.fnType(async.Future$(core.int), []),
  lengthSync: dart.fnType(core.int, []),
  flush: dart.fnType(async.Future$(io.RandomAccessFile), []),
  flushSync: dart.fnType(dart.void, []),
  [_fileLockValue]: dart.fnType(core.int, [io.FileLock]),
  lock: dart.fnType(async.Future$(io.RandomAccessFile), [], [io.FileLock, core.int, core.int]),
  unlock: dart.fnType(async.Future$(io.RandomAccessFile), [], [core.int, core.int]),
  lockSync: dart.fnType(dart.void, [], [io.FileLock, core.int, core.int]),
  unlockSync: dart.fnType(dart.void, [], [core.int, core.int]),
  [_pointer]: dart.fnType(core.int, []),
  [_dispatch]: dart.fnType(async.Future, [core.int, core.List], {markClosed: core.bool}),
  [_checkAvailable]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(io._RandomAccessFile, () => ({
  __proto__: dart.getFields(io._RandomAccessFile.__proto__),
  path: dart.finalFieldType(core.String),
  [_asyncDispatched]: dart.fieldType(core.bool),
  [_fileService]: dart.fieldType(isolate.SendPort),
  [_resourceInfo]: dart.fieldType(io._FileResourceInfo),
  [_ops]: dart.fieldType(io._RandomAccessFileOps),
  closed: dart.fieldType(core.bool)
}));
dart.defineLazy(io._RandomAccessFile, {
  /*io._RandomAccessFile._connectedResourceHandler*/get _connectedResourceHandler() {
    return false;
  },
  set _connectedResourceHandler(_) {},
  /*io._RandomAccessFile.lockUnlock*/get lockUnlock() {
    return 0;
  }
});
let const$59;
io.FileSystemEntityType = class FileSystemEntityType extends core.Object {
  static _lookup(type) {
    return io.FileSystemEntityType._typeList[$_get](type);
  }
  toString() {
    return (const$59 || (const$59 = dart.constList(["file", "directory", "link", "notFound"], core.String)))[$_get](this[_type$0]);
  }
};
(io.FileSystemEntityType._internal = function(type) {
  this[_type$0] = type;
}).prototype = io.FileSystemEntityType.prototype;
dart.addTypeTests(io.FileSystemEntityType);
dart.setFieldSignature(io.FileSystemEntityType, () => ({
  __proto__: dart.getFields(io.FileSystemEntityType.__proto__),
  [_type$0]: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(io.FileSystemEntityType, ['toString']);
dart.defineLazy(io.FileSystemEntityType, {
  /*io.FileSystemEntityType.file*/get file() {
    return dart.const(new io.FileSystemEntityType._internal(0));
  },
  /*io.FileSystemEntityType.FILE*/get FILE() {
    return io.FileSystemEntityType.file;
  },
  /*io.FileSystemEntityType.directory*/get directory() {
    return dart.const(new io.FileSystemEntityType._internal(1));
  },
  /*io.FileSystemEntityType.DIRECTORY*/get DIRECTORY() {
    return io.FileSystemEntityType.directory;
  },
  /*io.FileSystemEntityType.link*/get link() {
    return dart.const(new io.FileSystemEntityType._internal(2));
  },
  /*io.FileSystemEntityType.LINK*/get LINK() {
    return io.FileSystemEntityType.link;
  },
  /*io.FileSystemEntityType.notFound*/get notFound() {
    return dart.const(new io.FileSystemEntityType._internal(3));
  },
  /*io.FileSystemEntityType.NOT_FOUND*/get NOT_FOUND() {
    return io.FileSystemEntityType.notFound;
  },
  /*io.FileSystemEntityType._typeList*/get _typeList() {
    return dart.constList([io.FileSystemEntityType.file, io.FileSystemEntityType.directory, io.FileSystemEntityType.link, io.FileSystemEntityType.notFound], io.FileSystemEntityType);
  }
});
let const$60;
io.FileStat = class FileStat extends core.Object {
  get changed() {
    return this[changed$];
  }
  set changed(value) {
    super.changed = value;
  }
  get modified() {
    return this[modified$];
  }
  set modified(value) {
    super.modified = value;
  }
  get accessed() {
    return this[accessed$];
  }
  set accessed(value) {
    super.accessed = value;
  }
  get type() {
    return this[type$];
  }
  set type(value) {
    super.type = value;
  }
  get mode() {
    return this[mode$0];
  }
  set mode(value) {
    super.mode = value;
  }
  get size() {
    return this[size$];
  }
  set size(value) {
    super.size = value;
  }
  static _statSync(namespace, path) {
    dart.throw(new core.UnsupportedError.new("FileStat.stat"));
  }
  static statSync(path) {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io.FileStat._statSyncInternal(path);
    }
    return overrides.statSync(path);
  }
  static _statSyncInternal(path) {
    if (dart.test(io.Platform.isWindows)) {
      path = io.FileSystemEntity._trimTrailingPathSeparators(path);
    }
    let data = io.FileStat._statSync(io._Namespace._namespace, path);
    if (io.OSError.is(data)) return io.FileStat._notFound;
    return new io.FileStat._internal(new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(dart.dindex(data, 1))), new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(dart.dindex(data, 2))), new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(dart.dindex(data, 3))), io.FileSystemEntityType._lookup(core.int._check(dart.dindex(data, 0))), core.int._check(dart.dindex(data, 4)), core.int._check(dart.dindex(data, 5)));
  }
  static stat(path) {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io.FileStat._stat(path);
    }
    return overrides.stat(path);
  }
  static _stat(path) {
    if (dart.test(io.Platform.isWindows)) {
      path = io.FileSystemEntity._trimTrailingPathSeparators(path);
    }
    return FutureOfFileStat()._check(io._File._dispatchWithNamespace(io._IOService.fileStat, [null, path]).then(io.FileStat, dart.fn(response => {
      if (dart.test(io._isErrorResponse(response))) {
        return io.FileStat._notFound;
      }
      let data = core.List._check(dart.dindex(response, 1));
      return new io.FileStat._internal(new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(data[$_get](1))), new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(data[$_get](2))), new core.DateTime.fromMillisecondsSinceEpoch(core.int._check(data[$_get](3))), io.FileSystemEntityType._lookup(core.int._check(data[$_get](0))), core.int._check(data[$_get](4)), core.int._check(data[$_get](5)));
    }, dynamicToFileStat())));
  }
  toString() {
    return "FileStat: type " + dart.str(this.type) + "\n          changed " + dart.str(this.changed) + "\n          modified " + dart.str(this.modified) + "\n          accessed " + dart.str(this.accessed) + "\n          mode " + dart.str(this.modeString()) + "\n          size " + dart.str(this.size);
  }
  modeString() {
    let permissions = dart.notNull(this.mode) & 4095;
    let codes = const$60 || (const$60 = dart.constList(["---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx"], core.String));
    let result = [];
    if ((permissions & 2048) !== 0) result[$add]("(suid) ");
    if ((permissions & 1024) !== 0) result[$add]("(guid) ");
    if ((permissions & 512) !== 0) result[$add]("(sticky) ");
    result[$add](codes[$_get](permissions >> 6 & 7));
    result[$add](codes[$_get](permissions >> 3 & 7));
    result[$add](codes[$_get](permissions & 7));
    return result[$join]();
  }
};
(io.FileStat._internal = function(changed, modified, accessed, type, mode, size) {
  this[changed$] = changed;
  this[modified$] = modified;
  this[accessed$] = accessed;
  this[type$] = type;
  this[mode$0] = mode;
  this[size$] = size;
}).prototype = io.FileStat.prototype;
(io.FileStat._internalNotFound = function() {
  this[changed$] = null;
  this[modified$] = null;
  this[accessed$] = null;
  this[type$] = io.FileSystemEntityType.notFound;
  this[mode$0] = 0;
  this[size$] = -1;
}).prototype = io.FileStat.prototype;
dart.addTypeTests(io.FileStat);
const changed$ = Symbol("FileStat.changed");
const modified$ = Symbol("FileStat.modified");
const accessed$ = Symbol("FileStat.accessed");
const type$ = Symbol("FileStat.type");
const mode$0 = Symbol("FileStat.mode");
const size$ = Symbol("FileStat.size");
dart.setMethodSignature(io.FileStat, () => ({
  __proto__: dart.getMethods(io.FileStat.__proto__),
  modeString: dart.fnType(core.String, [])
}));
dart.setFieldSignature(io.FileStat, () => ({
  __proto__: dart.getFields(io.FileStat.__proto__),
  changed: dart.finalFieldType(core.DateTime),
  modified: dart.finalFieldType(core.DateTime),
  accessed: dart.finalFieldType(core.DateTime),
  type: dart.finalFieldType(io.FileSystemEntityType),
  mode: dart.finalFieldType(core.int),
  size: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(io.FileStat, ['toString']);
dart.defineLazy(io.FileStat, {
  /*io.FileStat._type*/get _type() {
    return 0;
  },
  /*io.FileStat._changedTime*/get _changedTime() {
    return 1;
  },
  /*io.FileStat._modifiedTime*/get _modifiedTime() {
    return 2;
  },
  /*io.FileStat._accessedTime*/get _accessedTime() {
    return 3;
  },
  /*io.FileStat._mode*/get _mode() {
    return 4;
  },
  /*io.FileStat._size*/get _size() {
    return 5;
  },
  /*io.FileStat._notFound*/get _notFound() {
    return dart.const(new io.FileStat._internalNotFound());
  }
});
io.FileSystemEvent = class FileSystemEvent extends core.Object {
  get type() {
    return this[type$0];
  }
  set type(value) {
    super.type = value;
  }
  get path() {
    return this[path$0];
  }
  set path(value) {
    super.path = value;
  }
  get isDirectory() {
    return this[isDirectory$];
  }
  set isDirectory(value) {
    super.isDirectory = value;
  }
};
(io.FileSystemEvent.__ = function(type, path, isDirectory) {
  this[type$0] = type;
  this[path$0] = path;
  this[isDirectory$] = isDirectory;
}).prototype = io.FileSystemEvent.prototype;
dart.addTypeTests(io.FileSystemEvent);
const type$0 = Symbol("FileSystemEvent.type");
const path$0 = Symbol("FileSystemEvent.path");
const isDirectory$ = Symbol("FileSystemEvent.isDirectory");
dart.setFieldSignature(io.FileSystemEvent, () => ({
  __proto__: dart.getFields(io.FileSystemEvent.__proto__),
  type: dart.finalFieldType(core.int),
  path: dart.finalFieldType(core.String),
  isDirectory: dart.finalFieldType(core.bool)
}));
dart.defineLazy(io.FileSystemEvent, {
  /*io.FileSystemEvent.create*/get create() {
    return 1 << 0;
  },
  /*io.FileSystemEvent.CREATE*/get CREATE() {
    return 1 << 0;
  },
  /*io.FileSystemEvent.modify*/get modify() {
    return 1 << 1;
  },
  /*io.FileSystemEvent.MODIFY*/get MODIFY() {
    return 1 << 1;
  },
  /*io.FileSystemEvent.delete*/get delete() {
    return 1 << 2;
  },
  /*io.FileSystemEvent.DELETE*/get DELETE() {
    return 1 << 2;
  },
  /*io.FileSystemEvent.move*/get move() {
    return 1 << 3;
  },
  /*io.FileSystemEvent.MOVE*/get MOVE() {
    return 1 << 3;
  },
  /*io.FileSystemEvent.all*/get all() {
    return 1 | 2 | 4 | 8;
  },
  /*io.FileSystemEvent.ALL*/get ALL() {
    return 1 | 2 | 4 | 8;
  },
  /*io.FileSystemEvent._modifyAttributes*/get _modifyAttributes() {
    return 1 << 4;
  },
  /*io.FileSystemEvent._deleteSelf*/get _deleteSelf() {
    return 1 << 5;
  },
  /*io.FileSystemEvent._isDir*/get _isDir() {
    return 1 << 6;
  }
});
io.FileSystemCreateEvent = class FileSystemCreateEvent extends io.FileSystemEvent {
  toString() {
    return "FileSystemCreateEvent('" + dart.str(this.path) + "')";
  }
};
(io.FileSystemCreateEvent.__ = function(path, isDirectory) {
  io.FileSystemCreateEvent.__proto__.__.call(this, io.FileSystemEvent.create, core.String._check(path), core.bool._check(isDirectory));
}).prototype = io.FileSystemCreateEvent.prototype;
dart.addTypeTests(io.FileSystemCreateEvent);
dart.defineExtensionMethods(io.FileSystemCreateEvent, ['toString']);
io.FileSystemModifyEvent = class FileSystemModifyEvent extends io.FileSystemEvent {
  get contentChanged() {
    return this[contentChanged$];
  }
  set contentChanged(value) {
    super.contentChanged = value;
  }
  toString() {
    return "FileSystemModifyEvent('" + dart.str(this.path) + "', contentChanged=" + dart.str(this.contentChanged) + ")";
  }
};
(io.FileSystemModifyEvent.__ = function(path, isDirectory, contentChanged) {
  this[contentChanged$] = contentChanged;
  io.FileSystemModifyEvent.__proto__.__.call(this, io.FileSystemEvent.modify, core.String._check(path), core.bool._check(isDirectory));
}).prototype = io.FileSystemModifyEvent.prototype;
dart.addTypeTests(io.FileSystemModifyEvent);
const contentChanged$ = Symbol("FileSystemModifyEvent.contentChanged");
dart.setFieldSignature(io.FileSystemModifyEvent, () => ({
  __proto__: dart.getFields(io.FileSystemModifyEvent.__proto__),
  contentChanged: dart.finalFieldType(core.bool)
}));
dart.defineExtensionMethods(io.FileSystemModifyEvent, ['toString']);
io.FileSystemDeleteEvent = class FileSystemDeleteEvent extends io.FileSystemEvent {
  toString() {
    return "FileSystemDeleteEvent('" + dart.str(this.path) + "')";
  }
};
(io.FileSystemDeleteEvent.__ = function(path, isDirectory) {
  io.FileSystemDeleteEvent.__proto__.__.call(this, io.FileSystemEvent.delete, core.String._check(path), core.bool._check(isDirectory));
}).prototype = io.FileSystemDeleteEvent.prototype;
dart.addTypeTests(io.FileSystemDeleteEvent);
dart.defineExtensionMethods(io.FileSystemDeleteEvent, ['toString']);
io.FileSystemMoveEvent = class FileSystemMoveEvent extends io.FileSystemEvent {
  get destination() {
    return this[destination$];
  }
  set destination(value) {
    super.destination = value;
  }
  toString() {
    let buffer = new core.StringBuffer.new();
    buffer.write("FileSystemMoveEvent('" + dart.str(this.path) + "'");
    if (this.destination != null) buffer.write(", '" + dart.str(this.destination) + "'");
    buffer.write(")");
    return buffer.toString();
  }
};
(io.FileSystemMoveEvent.__ = function(path, isDirectory, destination) {
  this[destination$] = destination;
  io.FileSystemMoveEvent.__proto__.__.call(this, io.FileSystemEvent.move, core.String._check(path), core.bool._check(isDirectory));
}).prototype = io.FileSystemMoveEvent.prototype;
dart.addTypeTests(io.FileSystemMoveEvent);
const destination$ = Symbol("FileSystemMoveEvent.destination");
dart.setFieldSignature(io.FileSystemMoveEvent, () => ({
  __proto__: dart.getFields(io.FileSystemMoveEvent.__proto__),
  destination: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(io.FileSystemMoveEvent, ['toString']);
io._FileSystemWatcher = class _FileSystemWatcher extends core.Object {
  static _watch(path, events, recursive) {
    dart.throw(new core.UnsupportedError.new("_FileSystemWatcher.watch"));
  }
  static get isSupported() {
    dart.throw(new core.UnsupportedError.new("_FileSystemWatcher.isSupported"));
  }
};
(io._FileSystemWatcher.new = function() {
}).prototype = io._FileSystemWatcher.prototype;
dart.addTypeTests(io._FileSystemWatcher);
io._IOResourceInfo = class _IOResourceInfo extends core.Object {
  static get timestamp() {
    return dart.notNull(io._IOResourceInfo._startTime) + dart.notNull(io._IOResourceInfo._sw.elapsedMicroseconds) / 1000;
  }
  get referenceValueMap() {
    return new (IdentityMapOfString$dynamic()).from(["type", "@" + dart.str(this.type), "id", this.id, "name", this.name]);
  }
  static getNextID() {
    let x = io._IOResourceInfo._count;
    io._IOResourceInfo._count = dart.notNull(x) + 1;
    return x;
  }
};
(io._IOResourceInfo.new = function(type) {
  this.type = type;
  this.id = io._IOResourceInfo.getNextID();
}).prototype = io._IOResourceInfo.prototype;
dart.addTypeTests(io._IOResourceInfo);
dart.setGetterSignature(io._IOResourceInfo, () => ({
  __proto__: dart.getGetters(io._IOResourceInfo.__proto__),
  referenceValueMap: core.Map$(core.String, dart.dynamic)
}));
dart.setFieldSignature(io._IOResourceInfo, () => ({
  __proto__: dart.getFields(io._IOResourceInfo.__proto__),
  type: dart.finalFieldType(core.String),
  id: dart.finalFieldType(core.int)
}));
dart.defineLazy(io._IOResourceInfo, {
  /*io._IOResourceInfo._count*/get _count() {
    return 0;
  },
  set _count(_) {},
  /*io._IOResourceInfo._sw*/get _sw() {
    let _ = new core.Stopwatch.new();
    _.start();
    return _;
  },
  /*io._IOResourceInfo._startTime*/get _startTime() {
    return new core.DateTime.now().millisecondsSinceEpoch;
  }
});
io._ReadWriteResourceInfo = class _ReadWriteResourceInfo extends io._IOResourceInfo {
  addRead(bytes) {
    this.totalRead = dart.notNull(this.totalRead) + dart.notNull(bytes);
    this.readCount = dart.notNull(this.readCount) + 1;
    this.lastRead = io._IOResourceInfo.timestamp;
  }
  didRead() {
    this.addRead(0);
  }
  addWrite(bytes) {
    this.totalWritten = dart.notNull(this.totalWritten) + dart.notNull(bytes);
    this.writeCount = dart.notNull(this.writeCount) + 1;
    this.lastWrite = io._IOResourceInfo.timestamp;
  }
  get fullValueMap() {
    return new (IdentityMapOfString$dynamic()).from(["type", this.type, "id", this.id, "name", this.name, "totalRead", this.totalRead, "totalWritten", this.totalWritten, "readCount", this.readCount, "writeCount", this.writeCount, "lastRead", this.lastRead, "lastWrite", this.lastWrite]);
  }
};
(io._ReadWriteResourceInfo.new = function(type) {
  this.totalRead = 0;
  this.totalWritten = 0;
  this.readCount = 0;
  this.writeCount = 0;
  this.lastRead = 0.0;
  this.lastWrite = 0.0;
  io._ReadWriteResourceInfo.__proto__.new.call(this, type);
}).prototype = io._ReadWriteResourceInfo.prototype;
dart.addTypeTests(io._ReadWriteResourceInfo);
dart.setMethodSignature(io._ReadWriteResourceInfo, () => ({
  __proto__: dart.getMethods(io._ReadWriteResourceInfo.__proto__),
  addRead: dart.fnType(dart.void, [core.int]),
  didRead: dart.fnType(dart.void, []),
  addWrite: dart.fnType(dart.void, [core.int])
}));
dart.setGetterSignature(io._ReadWriteResourceInfo, () => ({
  __proto__: dart.getGetters(io._ReadWriteResourceInfo.__proto__),
  fullValueMap: core.Map$(core.String, dart.dynamic)
}));
dart.setFieldSignature(io._ReadWriteResourceInfo, () => ({
  __proto__: dart.getFields(io._ReadWriteResourceInfo.__proto__),
  totalRead: dart.fieldType(core.int),
  totalWritten: dart.fieldType(core.int),
  readCount: dart.fieldType(core.int),
  writeCount: dart.fieldType(core.int),
  lastRead: dart.fieldType(core.double),
  lastWrite: dart.fieldType(core.double)
}));
io._FileResourceInfo = class _FileResourceInfo extends io._ReadWriteResourceInfo {
  static FileOpened(info) {
    if (!!dart.test(io._FileResourceInfo.openFiles[$containsKey](info.id))) dart.assertFailed();
    io._FileResourceInfo.openFiles[$_set](info.id, info);
  }
  static FileClosed(info) {
    if (!dart.test(io._FileResourceInfo.openFiles[$containsKey](info.id))) dart.assertFailed();
    io._FileResourceInfo.openFiles[$remove](info.id);
  }
  static getOpenFilesList() {
    return ListOfMapOfString$dynamic().from(io._FileResourceInfo.openFiles[$values][$map](dart.dynamic, dart.fn(e => e.referenceValueMap, _FileResourceInfoToMapOfString$dynamic())));
  }
  static getOpenFiles(func, params) {
    if (!dart.equals(func, "ext.dart.io.getOpenFiles")) dart.assertFailed();
    let data = new (IdentityMapOfString$Object()).from(["type", "_openfiles", "data", io._FileResourceInfo.getOpenFilesList()]);
    let jsonValue = convert.json.encode(data);
    return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
  }
  getFileInfoMap() {
    return this.fullValueMap;
  }
  static getFileInfoMapByID(func, params) {
    if (!dart.dassert(dart.dsend(params, 'containsKey', ["id"]))) dart.assertFailed();
    let id = core.int.parse(core.String._check(dart.dindex(params, "id")));
    let result = dart.test(io._FileResourceInfo.openFiles[$containsKey](id)) ? io._FileResourceInfo.openFiles[$_get](id).getFileInfoMap() : new _js_helper.LinkedMap.new();
    let jsonValue = convert.json.encode(result);
    return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
  }
  get name() {
    return dart.str(dart.dload(this.file, 'path'));
  }
};
(io._FileResourceInfo.new = function(file) {
  this.file = file;
  io._FileResourceInfo.__proto__.new.call(this, "_file");
  io._FileResourceInfo.FileOpened(this);
}).prototype = io._FileResourceInfo.prototype;
dart.addTypeTests(io._FileResourceInfo);
dart.setMethodSignature(io._FileResourceInfo, () => ({
  __proto__: dart.getMethods(io._FileResourceInfo.__proto__),
  getFileInfoMap: dart.fnType(core.Map$(core.String, dart.dynamic), [])
}));
dart.setGetterSignature(io._FileResourceInfo, () => ({
  __proto__: dart.getGetters(io._FileResourceInfo.__proto__),
  name: core.String
}));
dart.setFieldSignature(io._FileResourceInfo, () => ({
  __proto__: dart.getFields(io._FileResourceInfo.__proto__),
  file: dart.finalFieldType(dart.dynamic)
}));
dart.defineLazy(io._FileResourceInfo, {
  /*io._FileResourceInfo._type*/get _type() {
    return "_file";
  },
  /*io._FileResourceInfo.openFiles*/get openFiles() {
    return new (IdentityMapOfint$_FileResourceInfo()).new();
  },
  set openFiles(_) {}
});
const _arguments$0 = Symbol('_arguments');
const _workingDirectory = Symbol('_workingDirectory');
io._ProcessResourceInfo = class _ProcessResourceInfo extends io._IOResourceInfo {
  get name() {
    return core.String._check(dart.dload(this.process, _path));
  }
  stopped() {
    io._ProcessResourceInfo.ProcessStopped(this);
  }
  get fullValueMap() {
    return new (IdentityMapOfString$dynamic()).from(["type", this.type, "id", this.id, "name", this.name, "pid", dart.dload(this.process, 'pid'), "startedAt", this.startedAt, "arguments", dart.dload(this.process, _arguments$0), "workingDirectory", dart.dload(this.process, _workingDirectory) == null ? "." : dart.dload(this.process, _workingDirectory)]);
  }
  static ProcessStarted(info) {
    if (!!dart.test(io._ProcessResourceInfo.startedProcesses[$containsKey](info.id))) dart.assertFailed();
    io._ProcessResourceInfo.startedProcesses[$_set](info.id, info);
  }
  static ProcessStopped(info) {
    if (!dart.test(io._ProcessResourceInfo.startedProcesses[$containsKey](info.id))) dart.assertFailed();
    io._ProcessResourceInfo.startedProcesses[$remove](info.id);
  }
  static getStartedProcessesList() {
    return ListOfMapOfString$dynamic().from(io._ProcessResourceInfo.startedProcesses[$values][$map](dart.dynamic, dart.fn(e => e.referenceValueMap, _ProcessResourceInfoToMapOfString$dynamic())));
  }
  static getStartedProcesses(func, params) {
    if (!(func === "ext.dart.io.getProcesses")) dart.assertFailed();
    let data = new (IdentityMapOfString$Object()).from(["type", "_startedprocesses", "data", io._ProcessResourceInfo.getStartedProcessesList()]);
    let jsonValue = convert.json.encode(data);
    return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
  }
  static getProcessInfoMapById(func, params) {
    let id = core.int.parse(params[$_get]("id"));
    let result = dart.test(io._ProcessResourceInfo.startedProcesses[$containsKey](id)) ? io._ProcessResourceInfo.startedProcesses[$_get](id).fullValueMap : new _js_helper.LinkedMap.new();
    let jsonValue = convert.json.encode(result);
    return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
  }
};
(io._ProcessResourceInfo.new = function(process) {
  this.process = process;
  this.startedAt = io._IOResourceInfo.timestamp;
  io._ProcessResourceInfo.__proto__.new.call(this, "_process");
  io._ProcessResourceInfo.ProcessStarted(this);
}).prototype = io._ProcessResourceInfo.prototype;
dart.addTypeTests(io._ProcessResourceInfo);
dart.setMethodSignature(io._ProcessResourceInfo, () => ({
  __proto__: dart.getMethods(io._ProcessResourceInfo.__proto__),
  stopped: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(io._ProcessResourceInfo, () => ({
  __proto__: dart.getGetters(io._ProcessResourceInfo.__proto__),
  name: core.String,
  fullValueMap: core.Map$(core.String, dart.dynamic)
}));
dart.setFieldSignature(io._ProcessResourceInfo, () => ({
  __proto__: dart.getFields(io._ProcessResourceInfo.__proto__),
  process: dart.finalFieldType(dart.dynamic),
  startedAt: dart.finalFieldType(core.double)
}));
dart.defineLazy(io._ProcessResourceInfo, {
  /*io._ProcessResourceInfo._type*/get _type() {
    return "_process";
  },
  /*io._ProcessResourceInfo.startedProcesses*/get startedProcesses() {
    return new (IdentityMapOfint$_ProcessResourceInfo()).new();
  },
  set startedProcesses(_) {}
});
io._SocketResourceInfo = class _SocketResourceInfo extends io._ReadWriteResourceInfo {
  get name() {
    if (dart.dtest(dart.dload(this.socket, 'isListening'))) {
      return "listening:" + dart.str(dart.dload(dart.dload(this.socket, 'address'), 'host')) + ":" + dart.str(dart.dload(this.socket, 'port'));
    }
    let remote = "";
    try {
      let remoteHost = dart.dload(dart.dload(this.socket, 'remoteAddress'), 'host');
      let remotePort = dart.dload(this.socket, 'remotePort');
      remote = " -> " + dart.str(remoteHost) + ":" + dart.str(remotePort);
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
    return dart.str(dart.dload(dart.dload(this.socket, 'address'), 'host')) + ":" + dart.str(dart.dload(this.socket, 'port')) + remote;
  }
  static getOpenSocketsList() {
    return ListOfMapOfString$dynamic().from(io._SocketResourceInfo.openSockets[$values][$map](dart.dynamic, dart.fn(e => e.referenceValueMap, _SocketResourceInfoToMapOfString$dynamic())));
  }
  getSocketInfoMap() {
    let result = this.fullValueMap;
    result[$_set]("socketType", dart.dtest(dart.dload(this.socket, 'isTcp')) ? "TCP" : "UDP");
    result[$_set]("listening", dart.dload(this.socket, 'isListening'));
    result[$_set]("host", dart.dload(dart.dload(this.socket, 'address'), 'host'));
    result[$_set]("port", dart.dload(this.socket, 'port'));
    if (!dart.dtest(dart.dload(this.socket, 'isListening'))) {
      try {
        result[$_set]("remoteHost", dart.dload(dart.dload(this.socket, 'remoteAddress'), 'host'));
        result[$_set]("remotePort", dart.dload(this.socket, 'remotePort'));
      } catch (e$) {
        let e = dart.getThrown(e$);
        result[$_set]("remotePort", "NA");
        result[$_set]("remoteHost", "NA");
      }
    } else {
      result[$_set]("remotePort", "NA");
      result[$_set]("remoteHost", "NA");
    }
    result[$_set]("addressType", dart.dload(dart.dload(dart.dload(this.socket, 'address'), 'type'), 'name'));
    return result;
  }
  static getSocketInfoMapByID(func, params) {
    if (!dart.test(params[$containsKey]("id"))) dart.assertFailed();
    let id = core.int.parse(params[$_get]("id"));
    let result = dart.test(io._SocketResourceInfo.openSockets[$containsKey](id)) ? io._SocketResourceInfo.openSockets[$_get](id).getSocketInfoMap() : new _js_helper.LinkedMap.new();
    let jsonValue = convert.json.encode(result);
    return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
  }
  static getOpenSockets(func, params) {
    if (!dart.equals(func, "ext.dart.io.getOpenSockets")) dart.assertFailed();
    let data = new (IdentityMapOfString$Object()).from(["type", "_opensockets", "data", io._SocketResourceInfo.getOpenSocketsList()]);
    let jsonValue = convert.json.encode(data);
    return FutureOfServiceExtensionResponse().value(new developer.ServiceExtensionResponse.result(jsonValue));
  }
  static SocketOpened(info) {
    if (!!dart.test(io._SocketResourceInfo.openSockets[$containsKey](info.id))) dart.assertFailed();
    io._SocketResourceInfo.openSockets[$_set](info.id, info);
  }
  static SocketClosed(info) {
    if (!dart.test(io._SocketResourceInfo.openSockets[$containsKey](info.id))) dart.assertFailed();
    io._SocketResourceInfo.openSockets[$remove](info.id);
  }
};
(io._SocketResourceInfo.new = function(socket) {
  this.socket = socket;
  io._SocketResourceInfo.__proto__.new.call(this, "_socket");
  io._SocketResourceInfo.SocketOpened(this);
}).prototype = io._SocketResourceInfo.prototype;
dart.addTypeTests(io._SocketResourceInfo);
dart.setMethodSignature(io._SocketResourceInfo, () => ({
  __proto__: dart.getMethods(io._SocketResourceInfo.__proto__),
  getSocketInfoMap: dart.fnType(core.Map$(core.String, dart.dynamic), [])
}));
dart.setGetterSignature(io._SocketResourceInfo, () => ({
  __proto__: dart.getGetters(io._SocketResourceInfo.__proto__),
  name: core.String
}));
dart.setFieldSignature(io._SocketResourceInfo, () => ({
  __proto__: dart.getFields(io._SocketResourceInfo.__proto__),
  socket: dart.finalFieldType(dart.dynamic)
}));
dart.defineLazy(io._SocketResourceInfo, {
  /*io._SocketResourceInfo._tcpString*/get _tcpString() {
    return "TCP";
  },
  /*io._SocketResourceInfo._udpString*/get _udpString() {
    return "UDP";
  },
  /*io._SocketResourceInfo._type*/get _type() {
    return "_socket";
  },
  /*io._SocketResourceInfo.openSockets*/get openSockets() {
    return new (IdentityMapOfint$_SocketResourceInfo()).new();
  },
  set openSockets(_) {}
});
io.IOSink = class IOSink extends core.Object {
  static new(target, opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : convert.utf8;
    return new io._IOSinkImpl.new(target, encoding);
  }
  get encoding() {
    return this[encoding];
  }
  set encoding(value) {
    this[encoding] = value;
  }
};
(io.IOSink[dart.mixinNew] = function() {
  this[encoding] = null;
}).prototype = io.IOSink.prototype;
dart.addTypeTests(io.IOSink);
const encoding = Symbol("IOSink.encoding");
io.IOSink[dart.implements] = () => [StreamSinkOfListOfint(), core.StringSink];
dart.setFieldSignature(io.IOSink, () => ({
  __proto__: dart.getFields(io.IOSink.__proto__),
  encoding: dart.fieldType(convert.Encoding)
}));
const _target$ = Symbol('_target');
const _doneCompleter = Symbol('_doneCompleter');
const _controllerInstance = Symbol('_controllerInstance');
const _controllerCompleter = Symbol('_controllerCompleter');
const _isClosed$ = Symbol('_isClosed');
const _isBound = Symbol('_isBound');
const _hasError$ = Symbol('_hasError');
const _closeTarget = Symbol('_closeTarget');
const _completeDoneValue = Symbol('_completeDoneValue');
const _completeDoneError = Symbol('_completeDoneError');
const _is__StreamSinkImpl_default = Symbol('_is__StreamSinkImpl_default');
io._StreamSinkImpl$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let StreamSinkOfT = () => (StreamSinkOfT = dart.constFn(async.StreamSink$(T)))();
  let StreamConsumerOfT = () => (StreamConsumerOfT = dart.constFn(async.StreamConsumer$(T)))();
  class _StreamSinkImpl extends core.Object {
    add(data) {
      T._check(data);
      if (dart.test(this[_isClosed$])) {
        dart.throw(new core.StateError.new("StreamSink is closed"));
      }
      this[_controller$].add(data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (dart.test(this[_isClosed$])) {
        dart.throw(new core.StateError.new("StreamSink is closed"));
      }
      this[_controller$].addError(error, stackTrace);
    }
    addStream(stream) {
      StreamOfT()._check(stream);
      if (dart.test(this[_isBound])) {
        dart.throw(new core.StateError.new("StreamSink is already bound to a stream"));
      }
      if (dart.test(this[_hasError$])) return this.done;
      this[_isBound] = true;
      let future = this[_controllerCompleter] == null ? this[_target$].addStream(stream) : this[_controllerCompleter].future.then(dart.dynamic, dart.fn(_ => this[_target$].addStream(stream), dynamicToFuture()));
      let t = this[_controllerInstance];
      t == null ? null : t.close();
      return future.whenComplete(dart.fn(() => {
        this[_isBound] = false;
      }, VoidToNull()));
    }
    flush() {
      if (dart.test(this[_isBound])) {
        dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
      }
      if (this[_controllerInstance] == null) return async.Future.value(this);
      this[_isBound] = true;
      let future = this[_controllerCompleter].future;
      this[_controllerInstance].close();
      return future.whenComplete(dart.fn(() => {
        this[_isBound] = false;
      }, VoidToNull()));
    }
    close() {
      if (dart.test(this[_isBound])) {
        dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
      }
      if (!dart.test(this[_isClosed$])) {
        this[_isClosed$] = true;
        if (this[_controllerInstance] != null) {
          this[_controllerInstance].close();
        } else {
          this[_closeTarget]();
        }
      }
      return this.done;
    }
    [_closeTarget]() {
      this[_target$].close().then(dart.void, dart.bind(this, _completeDoneValue), {onError: dart.bind(this, _completeDoneError)});
    }
    get done() {
      return this[_doneCompleter].future;
    }
    [_completeDoneValue](value) {
      if (!dart.test(this[_doneCompleter].isCompleted)) {
        this[_doneCompleter].complete(value);
      }
    }
    [_completeDoneError](error, stackTrace) {
      if (!dart.test(this[_doneCompleter].isCompleted)) {
        this[_hasError$] = true;
        this[_doneCompleter].completeError(error, stackTrace);
      }
    }
    get [_controller$]() {
      if (dart.test(this[_isBound])) {
        dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
      }
      if (dart.test(this[_isClosed$])) {
        dart.throw(new core.StateError.new("StreamSink is closed"));
      }
      if (this[_controllerInstance] == null) {
        this[_controllerInstance] = StreamControllerOfT().new({sync: true});
        this[_controllerCompleter] = async.Completer.new();
        FutureOfNull()._check(this[_target$].addStream(this[_controller$].stream).then(core.Null, dart.fn(_ => {
          if (dart.test(this[_isBound])) {
            this[_controllerCompleter].complete(this);
            this[_controllerCompleter] = null;
            this[_controllerInstance] = null;
          } else {
            this[_closeTarget]();
          }
        }, dynamicToNull()), {onError: dart.fn((error, stackTrace) => {
            if (dart.test(this[_isBound])) {
              this[_controllerCompleter].completeError(error, core.StackTrace._check(stackTrace));
              this[_controllerCompleter] = null;
              this[_controllerInstance] = null;
            } else {
              this[_completeDoneError](error, core.StackTrace._check(stackTrace));
            }
          }, dynamicAnddynamicToNull())}));
      }
      return this[_controllerInstance];
    }
  }
  (_StreamSinkImpl.new = function(target) {
    this[_doneCompleter] = async.Completer.new();
    this[_controllerInstance] = null;
    this[_controllerCompleter] = null;
    this[_isClosed$] = false;
    this[_isBound] = false;
    this[_hasError$] = false;
    this[_target$] = target;
  }).prototype = _StreamSinkImpl.prototype;
  dart.addTypeTests(_StreamSinkImpl);
  _StreamSinkImpl.prototype[_is__StreamSinkImpl_default] = true;
  _StreamSinkImpl[dart.implements] = () => [StreamSinkOfT()];
  dart.setMethodSignature(_StreamSinkImpl, () => ({
    __proto__: dart.getMethods(_StreamSinkImpl.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    addStream: dart.fnType(async.Future, [core.Object]),
    flush: dart.fnType(async.Future, []),
    close: dart.fnType(async.Future, []),
    [_closeTarget]: dart.fnType(dart.void, []),
    [_completeDoneValue]: dart.fnType(dart.void, [dart.dynamic]),
    [_completeDoneError]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace])
  }));
  dart.setGetterSignature(_StreamSinkImpl, () => ({
    __proto__: dart.getGetters(_StreamSinkImpl.__proto__),
    done: async.Future,
    [_controller$]: async.StreamController$(T)
  }));
  dart.setFieldSignature(_StreamSinkImpl, () => ({
    __proto__: dart.getFields(_StreamSinkImpl.__proto__),
    [_target$]: dart.finalFieldType(StreamConsumerOfT()),
    [_doneCompleter]: dart.finalFieldType(async.Completer),
    [_controllerInstance]: dart.fieldType(StreamControllerOfT()),
    [_controllerCompleter]: dart.fieldType(async.Completer),
    [_isClosed$]: dart.fieldType(core.bool),
    [_isBound]: dart.fieldType(core.bool),
    [_hasError$]: dart.fieldType(core.bool)
  }));
  return _StreamSinkImpl;
});
io._StreamSinkImpl = io._StreamSinkImpl$();
dart.addTypeTests(io._StreamSinkImpl, _is__StreamSinkImpl_default);
const _encoding = Symbol('_encoding');
const _encodingMutable = Symbol('_encodingMutable');
io._IOSinkImpl = class _IOSinkImpl extends io._StreamSinkImpl$(core.List$(core.int)) {
  get encoding() {
    return this[_encoding];
  }
  set encoding(value) {
    if (!dart.test(this[_encodingMutable])) {
      dart.throw(new core.StateError.new("IOSink encoding is not mutable"));
    }
    this[_encoding] = value;
  }
  write(obj) {
    let string = dart.str(obj);
    if (string[$isEmpty]) return;
    this.add(this[_encoding].encode(string));
  }
  writeAll(objects, separator) {
    if (separator === void 0) separator = "";
    let iterator = objects[$iterator];
    if (!dart.test(iterator.moveNext())) return;
    if (separator[$isEmpty]) {
      do {
        this.write(iterator.current);
      } while (dart.test(iterator.moveNext()));
    } else {
      this.write(iterator.current);
      while (dart.test(iterator.moveNext())) {
        this.write(separator);
        this.write(iterator.current);
      }
    }
  }
  writeln(object) {
    if (object === void 0) object = "";
    this.write(object);
    this.write("\n");
  }
  writeCharCode(charCode) {
    this.write(core.String.fromCharCode(charCode));
  }
};
(io._IOSinkImpl.new = function(target, encoding) {
  this[_encodingMutable] = true;
  this[_encoding] = encoding;
  io._IOSinkImpl.__proto__.new.call(this, target);
}).prototype = io._IOSinkImpl.prototype;
dart.addTypeTests(io._IOSinkImpl);
io._IOSinkImpl[dart.implements] = () => [io.IOSink];
dart.setMethodSignature(io._IOSinkImpl, () => ({
  __proto__: dart.getMethods(io._IOSinkImpl.__proto__),
  write: dart.fnType(dart.void, [core.Object]),
  writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
  writeln: dart.fnType(dart.void, [], [core.Object]),
  writeCharCode: dart.fnType(dart.void, [core.int])
}));
dart.setGetterSignature(io._IOSinkImpl, () => ({
  __proto__: dart.getGetters(io._IOSinkImpl.__proto__),
  encoding: convert.Encoding
}));
dart.setSetterSignature(io._IOSinkImpl, () => ({
  __proto__: dart.getSetters(io._IOSinkImpl.__proto__),
  encoding: convert.Encoding
}));
dart.setFieldSignature(io._IOSinkImpl, () => ({
  __proto__: dart.getFields(io._IOSinkImpl.__proto__),
  [_encoding]: dart.fieldType(convert.Encoding),
  [_encodingMutable]: dart.fieldType(core.bool)
}));
io._IOService = class _IOService extends core.Object {
  static _dispatch(request, data) {
    dart.throw(new core.UnsupportedError.new("_IOService._dispatch"));
  }
};
(io._IOService.new = function() {
}).prototype = io._IOService.prototype;
dart.addTypeTests(io._IOService);
dart.defineLazy(io._IOService, {
  /*io._IOService.fileExists*/get fileExists() {
    return 0;
  },
  /*io._IOService.fileCreate*/get fileCreate() {
    return 1;
  },
  /*io._IOService.fileDelete*/get fileDelete() {
    return 2;
  },
  /*io._IOService.fileRename*/get fileRename() {
    return 3;
  },
  /*io._IOService.fileCopy*/get fileCopy() {
    return 4;
  },
  /*io._IOService.fileOpen*/get fileOpen() {
    return 5;
  },
  /*io._IOService.fileResolveSymbolicLinks*/get fileResolveSymbolicLinks() {
    return 6;
  },
  /*io._IOService.fileClose*/get fileClose() {
    return 7;
  },
  /*io._IOService.filePosition*/get filePosition() {
    return 8;
  },
  /*io._IOService.fileSetPosition*/get fileSetPosition() {
    return 9;
  },
  /*io._IOService.fileTruncate*/get fileTruncate() {
    return 10;
  },
  /*io._IOService.fileLength*/get fileLength() {
    return 11;
  },
  /*io._IOService.fileLengthFromPath*/get fileLengthFromPath() {
    return 12;
  },
  /*io._IOService.fileLastAccessed*/get fileLastAccessed() {
    return 13;
  },
  /*io._IOService.fileSetLastAccessed*/get fileSetLastAccessed() {
    return 14;
  },
  /*io._IOService.fileLastModified*/get fileLastModified() {
    return 15;
  },
  /*io._IOService.fileSetLastModified*/get fileSetLastModified() {
    return 16;
  },
  /*io._IOService.fileFlush*/get fileFlush() {
    return 17;
  },
  /*io._IOService.fileReadByte*/get fileReadByte() {
    return 18;
  },
  /*io._IOService.fileWriteByte*/get fileWriteByte() {
    return 19;
  },
  /*io._IOService.fileRead*/get fileRead() {
    return 20;
  },
  /*io._IOService.fileReadInto*/get fileReadInto() {
    return 21;
  },
  /*io._IOService.fileWriteFrom*/get fileWriteFrom() {
    return 22;
  },
  /*io._IOService.fileCreateLink*/get fileCreateLink() {
    return 23;
  },
  /*io._IOService.fileDeleteLink*/get fileDeleteLink() {
    return 24;
  },
  /*io._IOService.fileRenameLink*/get fileRenameLink() {
    return 25;
  },
  /*io._IOService.fileLinkTarget*/get fileLinkTarget() {
    return 26;
  },
  /*io._IOService.fileType*/get fileType() {
    return 27;
  },
  /*io._IOService.fileIdentical*/get fileIdentical() {
    return 28;
  },
  /*io._IOService.fileStat*/get fileStat() {
    return 29;
  },
  /*io._IOService.fileLock*/get fileLock() {
    return 30;
  },
  /*io._IOService.socketLookup*/get socketLookup() {
    return 31;
  },
  /*io._IOService.socketListInterfaces*/get socketListInterfaces() {
    return 32;
  },
  /*io._IOService.socketReverseLookup*/get socketReverseLookup() {
    return 33;
  },
  /*io._IOService.directoryCreate*/get directoryCreate() {
    return 34;
  },
  /*io._IOService.directoryDelete*/get directoryDelete() {
    return 35;
  },
  /*io._IOService.directoryExists*/get directoryExists() {
    return 36;
  },
  /*io._IOService.directoryCreateTemp*/get directoryCreateTemp() {
    return 37;
  },
  /*io._IOService.directoryListStart*/get directoryListStart() {
    return 38;
  },
  /*io._IOService.directoryListNext*/get directoryListNext() {
    return 39;
  },
  /*io._IOService.directoryListStop*/get directoryListStop() {
    return 40;
  },
  /*io._IOService.directoryRename*/get directoryRename() {
    return 41;
  },
  /*io._IOService.sslProcessFilter*/get sslProcessFilter() {
    return 42;
  }
});
io.Link = class Link extends core.Object {
  static new(path) {
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return new io._Link.new(path);
    }
    return overrides.createLink(path);
  }
  static fromRawPath(rawPath) {
    return new io._Link.fromRawPath(rawPath);
  }
  static fromUri(uri) {
    return io.Link.new(uri.toFilePath());
  }
};
(io.Link[dart.mixinNew] = function() {
}).prototype = io.Link.prototype;
dart.addTypeTests(io.Link);
io.Link[dart.implements] = () => [io.FileSystemEntity];
const _exceptionFromResponse = Symbol('_exceptionFromResponse');
io._Link = class _Link extends io.FileSystemEntity {
  get [_path]() {
    return this[_path$2];
  }
  set [_path](value) {
    this[_path$2] = value;
  }
  get [_rawPath$]() {
    return this[_rawPath$2];
  }
  set [_rawPath$](value) {
    this[_rawPath$2] = value;
  }
  get path() {
    return this[_path];
  }
  toString() {
    return "Link: '" + dart.str(this.path) + "'";
  }
  exists() {
    return io.FileSystemEntity._isLinkRaw(this[_rawPath$]);
  }
  existsSync() {
    return io.FileSystemEntity._isLinkRawSync(this[_rawPath$]);
  }
  get absolute() {
    return io.Link.fromRawPath(this[_rawAbsolutePath]);
  }
  create(target, opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    let result = dart.test(recursive) ? this.parent.create({recursive: true}) : FutureOfNull().value(null);
    return FutureOfLink()._check(result.then(dart.dynamic, dart.fn(_ => io._File._dispatchWithNamespace(io._IOService.fileCreateLink, [null, this[_rawPath$], target]), DirectoryToFuture())).then(io.Link, dart.fn(response => {
      if (dart.test(this[_isErrorResponse](response))) {
        dart.throw(this[_exceptionFromResponse](response, "Cannot create link to target '" + dart.str(target) + "'", this.path));
      }
      return this;
    }, dynamicTo_Link())));
  }
  createSync(target, opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    if (dart.test(recursive)) {
      this.parent.createSync({recursive: true});
    }
    let result = io._File._createLink(io._Namespace._namespace, this[_rawPath$], target);
    io._Link.throwIfError(result, "Cannot create link", this.path);
  }
  updateSync(target) {
    this.deleteSync();
    this.createSync(target);
  }
  update(target) {
    return FutureOfLink()._check(this.delete().then(io.Link, dart.fn(_ => this.create(target), FileSystemEntityToFutureOfLink())));
  }
  [_delete](opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    if (dart.test(recursive)) {
      return FutureOfLink()._check(io.Directory.fromRawPath(this[_rawPath$]).delete({recursive: true}).then(io.Link, dart.fn(_ => this, FileSystemEntityTo_Link())));
    }
    return FutureOfLink()._check(io._File._dispatchWithNamespace(io._IOService.fileDeleteLink, [null, this[_rawPath$]]).then(io.Link, dart.fn(response => {
      if (dart.test(this[_isErrorResponse](response))) {
        dart.throw(this[_exceptionFromResponse](response, "Cannot delete link", this.path));
      }
      return this;
    }, dynamicTo_Link())));
  }
  [_deleteSync](opts) {
    let recursive = opts && 'recursive' in opts ? opts.recursive : false;
    if (dart.test(recursive)) {
      return io.Directory.fromRawPath(this[_rawPath$]).deleteSync({recursive: true});
    }
    let result = io._File._deleteLinkNative(io._Namespace._namespace, this[_rawPath$]);
    io._Link.throwIfError(result, "Cannot delete link", this.path);
  }
  rename(newPath) {
    return FutureOfLink()._check(io._File._dispatchWithNamespace(io._IOService.fileRenameLink, [null, this[_rawPath$], newPath]).then(io.Link, dart.fn(response => {
      if (dart.test(this[_isErrorResponse](response))) {
        dart.throw(this[_exceptionFromResponse](response, "Cannot rename link to '" + dart.str(newPath) + "'", this.path));
      }
      return io.Link.new(newPath);
    }, dynamicToLink())));
  }
  renameSync(newPath) {
    let result = io._File._renameLink(io._Namespace._namespace, this[_rawPath$], newPath);
    io._Link.throwIfError(result, "Cannot rename link '" + dart.str(this.path) + "' to '" + dart.str(newPath) + "'");
    return io.Link.new(newPath);
  }
  target() {
    return FutureOfString()._check(io._File._dispatchWithNamespace(io._IOService.fileLinkTarget, [null, this[_rawPath$]]).then(core.String, dart.fn(response => {
      if (dart.test(this[_isErrorResponse](response))) {
        dart.throw(this[_exceptionFromResponse](response, "Cannot get target of link", this.path));
      }
      return FutureOrOfString()._check(response);
    }, dynamicToFutureOrOfString())));
  }
  targetSync() {
    let result = io._File._linkTarget(io._Namespace._namespace, this[_rawPath$]);
    io._Link.throwIfError(result, "Cannot read link", this.path);
    return core.String._check(result);
  }
  static throwIfError(result, msg, path) {
    if (path === void 0) path = "";
    if (io.OSError.is(result)) {
      dart.throw(new io.FileSystemException.new(msg, path, result));
    }
  }
  [_isErrorResponse](response) {
    return core.List.is(response) && !dart.equals(response[$_get](0), 0);
  }
  [_exceptionFromResponse](response, message, path) {
    if (!dart.test(this[_isErrorResponse](response))) dart.assertFailed();
    switch (dart.dindex(response, 0)) {
      case 1:
      {
        return new core.ArgumentError.new();
      }
      case 2:
      {
        let err = new io.OSError.new(core.String._check(dart.dindex(response, 2)), core.int._check(dart.dindex(response, 1)));
        return new io.FileSystemException.new(message, path, err);
      }
      default:
      {
        return core.Exception.new("Unknown error");
      }
    }
  }
};
(io._Link.new = function(path) {
  this[_path$2] = null;
  this[_rawPath$2] = null;
  io._Link.__proto__.new.call(this);
  core.ArgumentError.checkNotNull(path, "path");
  this[_path] = path;
  this[_rawPath$] = io.FileSystemEntity._toUtf8Array(path);
}).prototype = io._Link.prototype;
(io._Link.fromRawPath = function(rawPath) {
  this[_path$2] = null;
  this[_rawPath$2] = null;
  io._Link.__proto__.new.call(this);
  this[_rawPath$] = io.FileSystemEntity._toNullTerminatedUtf8Array(rawPath);
  this[_path] = io.FileSystemEntity._toStringFromUtf8Array(rawPath);
}).prototype = io._Link.prototype;
dart.addTypeTests(io._Link);
const _path$2 = Symbol("_Link._path");
const _rawPath$2 = Symbol("_Link._rawPath");
io._Link[dart.implements] = () => [io.Link];
dart.setMethodSignature(io._Link, () => ({
  __proto__: dart.getMethods(io._Link.__proto__),
  exists: dart.fnType(async.Future$(core.bool), []),
  existsSync: dart.fnType(core.bool, []),
  create: dart.fnType(async.Future$(io.Link), [core.String], {recursive: core.bool}),
  createSync: dart.fnType(dart.void, [core.String], {recursive: core.bool}),
  updateSync: dart.fnType(dart.void, [core.String]),
  update: dart.fnType(async.Future$(io.Link), [core.String]),
  [_delete]: dart.fnType(async.Future$(io.Link), [], {recursive: core.bool}),
  [_deleteSync]: dart.fnType(dart.void, [], {recursive: core.bool}),
  rename: dart.fnType(async.Future$(io.Link), [core.String]),
  renameSync: dart.fnType(io.Link, [core.String]),
  target: dart.fnType(async.Future$(core.String), []),
  targetSync: dart.fnType(core.String, []),
  [_isErrorResponse]: dart.fnType(core.bool, [dart.dynamic]),
  [_exceptionFromResponse]: dart.fnType(dart.dynamic, [dart.dynamic, core.String, core.String])
}));
dart.setGetterSignature(io._Link, () => ({
  __proto__: dart.getGetters(io._Link.__proto__),
  path: core.String,
  absolute: io.Link
}));
dart.setFieldSignature(io._Link, () => ({
  __proto__: dart.getFields(io._Link.__proto__),
  [_path]: dart.fieldType(core.String),
  [_rawPath$]: dart.fieldType(typed_data.Uint8List)
}));
dart.defineExtensionMethods(io._Link, ['toString']);
io._Namespace = class _Namespace extends core.Object {
  static get _namespace() {
    dart.throw(new core.UnsupportedError.new("_Namespace"));
  }
  static get _namespacePointer() {
    dart.throw(new core.UnsupportedError.new("_Namespace"));
  }
  static _setupNamespace(namespace) {
    dart.throw(new core.UnsupportedError.new("_Namespace"));
  }
};
(io._Namespace.new = function() {
}).prototype = io._Namespace.prototype;
dart.addTypeTests(io._Namespace);
dart.defineLazy(io, {
  /*io._ioOverridesToken*/get _ioOverridesToken() {
    return new core.Object.new();
  },
  /*io._asyncRunZoned*/get _asyncRunZoned() {
    return dart.fn(async.runZoned, Fn__ToR());
  }
});
io.IOOverrides = class IOOverrides extends core.Object {
  static get current() {
    return io.IOOverrides._check((() => {
      let l = async.Zone.current._get(io._ioOverridesToken);
      return l != null ? l : io.IOOverrides._global;
    })());
  }
  static set global(overrides) {
    io.IOOverrides._global = overrides;
  }
  static runZoned(R, body, opts) {
    let createDirectory = opts && 'createDirectory' in opts ? opts.createDirectory : null;
    let getCurrentDirectory = opts && 'getCurrentDirectory' in opts ? opts.getCurrentDirectory : null;
    let setCurrentDirectory = opts && 'setCurrentDirectory' in opts ? opts.setCurrentDirectory : null;
    let getSystemTempDirectory = opts && 'getSystemTempDirectory' in opts ? opts.getSystemTempDirectory : null;
    let createFile = opts && 'createFile' in opts ? opts.createFile : null;
    let stat = opts && 'stat' in opts ? opts.stat : null;
    let statSync = opts && 'statSync' in opts ? opts.statSync : null;
    let fseIdentical = opts && 'fseIdentical' in opts ? opts.fseIdentical : null;
    let fseIdenticalSync = opts && 'fseIdenticalSync' in opts ? opts.fseIdenticalSync : null;
    let fseGetType = opts && 'fseGetType' in opts ? opts.fseGetType : null;
    let fseGetTypeSync = opts && 'fseGetTypeSync' in opts ? opts.fseGetTypeSync : null;
    let fsWatch = opts && 'fsWatch' in opts ? opts.fsWatch : null;
    let fsWatchIsSupported = opts && 'fsWatchIsSupported' in opts ? opts.fsWatchIsSupported : null;
    let createLink = opts && 'createLink' in opts ? opts.createLink : null;
    let socketConnect = opts && 'socketConnect' in opts ? opts.socketConnect : null;
    let socketStartConnect = opts && 'socketStartConnect' in opts ? opts.socketStartConnect : null;
    let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let overrides = new io._IOOverridesScope.new(createDirectory, getCurrentDirectory, setCurrentDirectory, getSystemTempDirectory, createFile, stat, statSync, fseIdentical, fseIdenticalSync, fseGetType, fseGetTypeSync, fsWatch, fsWatchIsSupported, createLink, socketConnect, socketStartConnect);
    return io._asyncRunZoned(R, body, {zoneValues: new _js_helper.LinkedMap.from([io._ioOverridesToken, overrides]), zoneSpecification: zoneSpecification, onError: onError});
  }
  static runWithIOOverrides(R, body, overrides, opts) {
    let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
    let onError = opts && 'onError' in opts ? opts.onError : null;
    return io._asyncRunZoned(R, body, {zoneValues: new _js_helper.LinkedMap.from([io._ioOverridesToken, overrides]), zoneSpecification: zoneSpecification, onError: onError});
  }
  createDirectory(path) {
    return new io._Directory.new(path);
  }
  getCurrentDirectory() {
    return io._Directory.current;
  }
  setCurrentDirectory(path) {
    io._Directory.current = path;
  }
  getSystemTempDirectory() {
    return io._Directory.systemTemp;
  }
  createFile(path) {
    return new io._File.new(path);
  }
  stat(path) {
    return io.FileStat._stat(path);
  }
  statSync(path) {
    return io.FileStat._statSyncInternal(path);
  }
  fseIdentical(path1, path2) {
    return io.FileSystemEntity._identical(path1, path2);
  }
  fseIdenticalSync(path1, path2) {
    return io.FileSystemEntity._identicalSync(path1, path2);
  }
  fseGetType(path, followLinks) {
    return io.FileSystemEntity._getTypeRequest(typed_data.Uint8List._check(convert.utf8.encode(path)), followLinks);
  }
  fseGetTypeSync(path, followLinks) {
    return io.FileSystemEntity._getTypeSyncHelper(typed_data.Uint8List._check(convert.utf8.encode(path)), followLinks);
  }
  fsWatch(path, events, recursive) {
    return io._FileSystemWatcher._watch(path, events, recursive);
  }
  fsWatchIsSupported() {
    return io._FileSystemWatcher.isSupported;
  }
  createLink(path) {
    return new io._Link.new(path);
  }
  socketConnect(host, port, opts) {
    let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    return io.Socket._connect(host, port, {sourceAddress: sourceAddress, timeout: timeout});
  }
  socketStartConnect(host, port, opts) {
    let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
    return io.Socket._startConnect(host, port, {sourceAddress: sourceAddress});
  }
};
(io.IOOverrides.new = function() {
}).prototype = io.IOOverrides.prototype;
dart.addTypeTests(io.IOOverrides);
dart.setMethodSignature(io.IOOverrides, () => ({
  __proto__: dart.getMethods(io.IOOverrides.__proto__),
  createDirectory: dart.fnType(io.Directory, [core.String]),
  getCurrentDirectory: dart.fnType(io.Directory, []),
  setCurrentDirectory: dart.fnType(dart.void, [core.String]),
  getSystemTempDirectory: dart.fnType(io.Directory, []),
  createFile: dart.fnType(io.File, [core.String]),
  stat: dart.fnType(async.Future$(io.FileStat), [core.String]),
  statSync: dart.fnType(io.FileStat, [core.String]),
  fseIdentical: dart.fnType(async.Future$(core.bool), [core.String, core.String]),
  fseIdenticalSync: dart.fnType(core.bool, [core.String, core.String]),
  fseGetType: dart.fnType(async.Future$(io.FileSystemEntityType), [core.String, core.bool]),
  fseGetTypeSync: dart.fnType(io.FileSystemEntityType, [core.String, core.bool]),
  fsWatch: dart.fnType(async.Stream$(io.FileSystemEvent), [core.String, core.int, core.bool]),
  fsWatchIsSupported: dart.fnType(core.bool, []),
  createLink: dart.fnType(io.Link, [core.String]),
  socketConnect: dart.fnType(async.Future$(io.Socket), [dart.dynamic, core.int], {sourceAddress: dart.dynamic, timeout: core.Duration}),
  socketStartConnect: dart.fnType(async.Future$(io.ConnectionTask$(io.Socket)), [dart.dynamic, core.int], {sourceAddress: dart.dynamic})
}));
dart.defineLazy(io.IOOverrides, {
  /*io.IOOverrides._global*/get _global() {
    return null;
  },
  set _global(_) {}
});
const _createDirectory = Symbol('_createDirectory');
const _getCurrentDirectory = Symbol('_getCurrentDirectory');
const _setCurrentDirectory = Symbol('_setCurrentDirectory');
const _getSystemTempDirectory = Symbol('_getSystemTempDirectory');
const _createFile = Symbol('_createFile');
const _stat = Symbol('_stat');
const _statSync = Symbol('_statSync');
const _fseIdentical = Symbol('_fseIdentical');
const _fseIdenticalSync = Symbol('_fseIdenticalSync');
const _fseGetType = Symbol('_fseGetType');
const _fseGetTypeSync = Symbol('_fseGetTypeSync');
const _fsWatch = Symbol('_fsWatch');
const _fsWatchIsSupported = Symbol('_fsWatchIsSupported');
const _createLink = Symbol('_createLink');
const _socketConnect = Symbol('_socketConnect');
const _socketStartConnect = Symbol('_socketStartConnect');
const _previous$1 = Symbol('_previous');
io._IOOverridesScope = class _IOOverridesScope extends io.IOOverrides {
  createDirectory(path) {
    if (this[_createDirectory] != null) return this[_createDirectory](path);
    if (this[_previous$1] != null) return this[_previous$1].createDirectory(path);
    return super.createDirectory(path);
  }
  getCurrentDirectory() {
    if (this[_getCurrentDirectory] != null) return this[_getCurrentDirectory]();
    if (this[_previous$1] != null) return this[_previous$1].getCurrentDirectory();
    return super.getCurrentDirectory();
  }
  setCurrentDirectory(path) {
    if (this[_setCurrentDirectory] != null)
      this[_setCurrentDirectory](path);
    else if (this[_previous$1] != null)
      this[_previous$1].setCurrentDirectory(path);
    else
      super.setCurrentDirectory(path);
  }
  getSystemTempDirectory() {
    if (this[_getSystemTempDirectory] != null) return this[_getSystemTempDirectory]();
    if (this[_previous$1] != null) return this[_previous$1].getSystemTempDirectory();
    return super.getSystemTempDirectory();
  }
  createFile(path) {
    if (this[_createFile] != null) return this[_createFile](path);
    if (this[_previous$1] != null) return this[_previous$1].createFile(path);
    return super.createFile(path);
  }
  stat(path) {
    if (this[_stat] != null) return this[_stat](path);
    if (this[_previous$1] != null) return this[_previous$1].stat(path);
    return super.stat(path);
  }
  statSync(path) {
    if (this[_stat] != null) return this[_statSync](path);
    if (this[_previous$1] != null) return this[_previous$1].statSync(path);
    return super.statSync(path);
  }
  fseIdentical(path1, path2) {
    if (this[_fseIdentical] != null) return this[_fseIdentical](path1, path2);
    if (this[_previous$1] != null) return this[_previous$1].fseIdentical(path1, path2);
    return super.fseIdentical(path1, path2);
  }
  fseIdenticalSync(path1, path2) {
    if (this[_fseIdenticalSync] != null) return this[_fseIdenticalSync](path1, path2);
    if (this[_previous$1] != null) return this[_previous$1].fseIdenticalSync(path1, path2);
    return super.fseIdenticalSync(path1, path2);
  }
  fseGetType(path, followLinks) {
    if (this[_fseGetType] != null) return this[_fseGetType](path, followLinks);
    if (this[_previous$1] != null) return this[_previous$1].fseGetType(path, followLinks);
    return super.fseGetType(path, followLinks);
  }
  fseGetTypeSync(path, followLinks) {
    if (this[_fseGetTypeSync] != null) return this[_fseGetTypeSync](path, followLinks);
    if (this[_previous$1] != null) return this[_previous$1].fseGetTypeSync(path, followLinks);
    return super.fseGetTypeSync(path, followLinks);
  }
  fsWatch(path, events, recursive) {
    if (this[_fsWatch] != null) return this[_fsWatch](path, events, recursive);
    if (this[_previous$1] != null) return this[_previous$1].fsWatch(path, events, recursive);
    return super.fsWatch(path, events, recursive);
  }
  fsWatchIsSupported() {
    if (this[_fsWatchIsSupported] != null) return this[_fsWatchIsSupported]();
    if (this[_previous$1] != null) return this[_previous$1].fsWatchIsSupported();
    return super.fsWatchIsSupported();
  }
  createLink(path) {
    if (this[_createLink] != null) return this[_createLink](path);
    if (this[_previous$1] != null) return this[_previous$1].createLink(path);
    return super.createLink(path);
  }
  socketConnect(host, port, opts) {
    let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    if (this[_socketConnect] != null) {
      return this[_socketConnect](host, port, {sourceAddress: sourceAddress, timeout: timeout});
    }
    if (this[_previous$1] != null) {
      return this[_previous$1].socketConnect(host, port, {sourceAddress: sourceAddress, timeout: timeout});
    }
    return super.socketConnect(host, port, {sourceAddress: sourceAddress, timeout: timeout});
  }
  socketStartConnect(host, port, opts) {
    let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
    if (this[_socketStartConnect] != null) {
      return this[_socketStartConnect](host, port, {sourceAddress: sourceAddress});
    }
    if (this[_previous$1] != null) {
      return this[_previous$1].socketStartConnect(host, port, {sourceAddress: sourceAddress});
    }
    return super.socketStartConnect(host, port, {sourceAddress: sourceAddress});
  }
};
(io._IOOverridesScope.new = function(createDirectory, getCurrentDirectory, setCurrentDirectory, getSystemTempDirectory, createFile, stat, statSync, fseIdentical, fseIdenticalSync, fseGetType, fseGetTypeSync, fsWatch, fsWatchIsSupported, createLink, socketConnect, socketStartConnect) {
  this[_previous$1] = io.IOOverrides.current;
  this[_createDirectory] = createDirectory;
  this[_getCurrentDirectory] = getCurrentDirectory;
  this[_setCurrentDirectory] = setCurrentDirectory;
  this[_getSystemTempDirectory] = getSystemTempDirectory;
  this[_createFile] = createFile;
  this[_stat] = stat;
  this[_statSync] = statSync;
  this[_fseIdentical] = fseIdentical;
  this[_fseIdenticalSync] = fseIdenticalSync;
  this[_fseGetType] = fseGetType;
  this[_fseGetTypeSync] = fseGetTypeSync;
  this[_fsWatch] = fsWatch;
  this[_fsWatchIsSupported] = fsWatchIsSupported;
  this[_createLink] = createLink;
  this[_socketConnect] = socketConnect;
  this[_socketStartConnect] = socketStartConnect;
}).prototype = io._IOOverridesScope.prototype;
dart.addTypeTests(io._IOOverridesScope);
dart.setFieldSignature(io._IOOverridesScope, () => ({
  __proto__: dart.getFields(io._IOOverridesScope.__proto__),
  [_previous$1]: dart.finalFieldType(io.IOOverrides),
  [_createDirectory]: dart.fieldType(StringToDirectory()),
  [_getCurrentDirectory]: dart.fieldType(VoidToDirectory()),
  [_setCurrentDirectory]: dart.fieldType(StringTovoid()),
  [_getSystemTempDirectory]: dart.fieldType(VoidToDirectory()),
  [_createFile]: dart.fieldType(StringToFile()),
  [_stat]: dart.fieldType(StringToFutureOfFileStat()),
  [_statSync]: dart.fieldType(StringToFileStat()),
  [_fseIdentical]: dart.fieldType(StringAndStringToFutureOfbool()),
  [_fseIdenticalSync]: dart.fieldType(StringAndStringTobool()),
  [_fseGetType]: dart.fieldType(StringAndboolToFutureOfFileSystemEntityType()),
  [_fseGetTypeSync]: dart.fieldType(StringAndboolToFileSystemEntityType()),
  [_fsWatch]: dart.fieldType(StringAndintAndboolToStreamOfFileSystemEvent()),
  [_fsWatchIsSupported]: dart.fieldType(VoidTobool()),
  [_createLink]: dart.fieldType(StringToLink()),
  [_socketConnect]: dart.fieldType(dynamicAndint__ToFutureOfSocket()),
  [_socketStartConnect]: dart.fieldType(dynamicAndint__ToFutureOfConnectionTaskOfSocket())
}));
io.Platform = class Platform extends core.Object {
  static get numberOfProcessors() {
    return io.Platform._numberOfProcessors;
  }
  static get pathSeparator() {
    return io.Platform._pathSeparator;
  }
  static get localeName() {
    return io._Platform.localeName();
  }
  static get operatingSystem() {
    return io.Platform._operatingSystem;
  }
  static get operatingSystemVersion() {
    return io.Platform._operatingSystemVersion;
  }
  static get localHostname() {
    return io.Platform._localHostname;
  }
  static get environment() {
    return io._Platform.environment;
  }
  static get executable() {
    return io._Platform.executable;
  }
  static get resolvedExecutable() {
    return io._Platform.resolvedExecutable;
  }
  static get script() {
    return io._Platform.script;
  }
  static get executableArguments() {
    return io._Platform.executableArguments;
  }
  static get packageRoot() {
    return null;
  }
  static get packageConfig() {
    return io._Platform.packageConfig;
  }
  static get version() {
    return io.Platform._version;
  }
};
(io.Platform.new = function() {
}).prototype = io.Platform.prototype;
dart.addTypeTests(io.Platform);
dart.defineLazy(io.Platform, {
  /*io.Platform._numberOfProcessors*/get _numberOfProcessors() {
    return io._Platform.numberOfProcessors;
  },
  /*io.Platform._pathSeparator*/get _pathSeparator() {
    return io._Platform.pathSeparator;
  },
  /*io.Platform._operatingSystem*/get _operatingSystem() {
    return io._Platform.operatingSystem;
  },
  /*io.Platform._operatingSystemVersion*/get _operatingSystemVersion() {
    return io._Platform.operatingSystemVersion;
  },
  /*io.Platform._localHostname*/get _localHostname() {
    return io._Platform.localHostname;
  },
  /*io.Platform._version*/get _version() {
    return io._Platform.version;
  },
  /*io.Platform.isLinux*/get isLinux() {
    return io.Platform._operatingSystem === "linux";
  },
  /*io.Platform.isMacOS*/get isMacOS() {
    return io.Platform._operatingSystem === "macos";
  },
  /*io.Platform.isWindows*/get isWindows() {
    return io.Platform._operatingSystem === "windows";
  },
  /*io.Platform.isAndroid*/get isAndroid() {
    return io.Platform._operatingSystem === "android";
  },
  /*io.Platform.isIOS*/get isIOS() {
    return io.Platform._operatingSystem === "ios";
  },
  /*io.Platform.isFuchsia*/get isFuchsia() {
    return io.Platform._operatingSystem === "fuchsia";
  }
});
io._Platform = class _Platform extends core.Object {
  static _numberOfProcessors() {
    dart.throw(new core.UnsupportedError.new("Platform._numberOfProcessors"));
  }
  static _pathSeparator() {
    dart.throw(new core.UnsupportedError.new("Platform._pathSeparator"));
  }
  static _operatingSystem() {
    dart.throw(new core.UnsupportedError.new("Platform._operatingSystem"));
  }
  static _operatingSystemVersion() {
    dart.throw(new core.UnsupportedError.new("Platform._operatingSystemVersion"));
  }
  static _localHostname() {
    dart.throw(new core.UnsupportedError.new("Platform._localHostname"));
  }
  static _executable() {
    dart.throw(new core.UnsupportedError.new("Platform._executable"));
  }
  static _resolvedExecutable() {
    dart.throw(new core.UnsupportedError.new("Platform._resolvedExecutable"));
  }
  static _environment() {
    dart.throw(new core.UnsupportedError.new("Platform._environment"));
  }
  static _executableArguments() {
    dart.throw(new core.UnsupportedError.new("Platform._executableArguments"));
  }
  static _packageRoot() {
    dart.throw(new core.UnsupportedError.new("Platform._packageRoot"));
  }
  static _packageConfig() {
    dart.throw(new core.UnsupportedError.new("Platform._packageConfig"));
  }
  static _version() {
    dart.throw(new core.UnsupportedError.new("Platform._version"));
  }
  static _localeName() {
    dart.throw(new core.UnsupportedError.new("Platform._localeName"));
  }
  static _script() {
    dart.throw(new core.UnsupportedError.new("Platform._script"));
  }
  static localeName() {
    let result = io._Platform._localeClosure == null ? io._Platform._localeName() : io._Platform._localeClosure();
    if (io.OSError.is(result)) {
      dart.throw(result);
    }
    return result;
  }
  static get numberOfProcessors() {
    return io._Platform._numberOfProcessors();
  }
  static get pathSeparator() {
    return io._Platform._pathSeparator();
  }
  static get operatingSystem() {
    return io._Platform._operatingSystem();
  }
  static get script() {
    return io._Platform._script();
  }
  static get operatingSystemVersion() {
    if (io._Platform._cachedOSVersion == null) {
      let result = io._Platform._operatingSystemVersion();
      if (io.OSError.is(result)) {
        dart.throw(result);
      }
      io._Platform._cachedOSVersion = core.String._check(result);
    }
    return io._Platform._cachedOSVersion;
  }
  static get localHostname() {
    let result = io._Platform._localHostname();
    if (io.OSError.is(result)) {
      dart.throw(result);
    }
    return core.String._check(result);
  }
  static get executableArguments() {
    return io._Platform._executableArguments();
  }
  static get environment() {
    if (io._Platform._environmentCache == null) {
      let env = io._Platform._environment();
      if (!io.OSError.is(env)) {
        let isWindows = io._Platform.operatingSystem === "windows";
        let result = isWindows ? new (_CaseInsensitiveStringMapOfString()).new() : new (IdentityMapOfString$String()).new();
        for (let str of core.Iterable._check(env)) {
          if (str == null) {
            continue;
          }
          let equalsIndex = dart.dsend(str, 'indexOf', ["="]);
          if (dart.dtest(dart.dsend(equalsIndex, '>', [0]))) {
            result[$_set](core.String._check(dart.dsend(str, 'substring', [0, equalsIndex])), core.String._check(dart.dsend(str, 'substring', [dart.dsend(equalsIndex, '+', [1])])));
          }
        }
        io._Platform._environmentCache = new (UnmodifiableMapViewOfString$String()).new(result);
      } else {
        io._Platform._environmentCache = env;
      }
    }
    if (io.OSError.is(io._Platform._environmentCache)) {
      dart.throw(io._Platform._environmentCache);
    } else {
      return MapOfString$String()._check(io._Platform._environmentCache);
    }
  }
  static get version() {
    return io._Platform._version();
  }
};
(io._Platform.new = function() {
}).prototype = io._Platform.prototype;
dart.addTypeTests(io._Platform);
dart.defineLazy(io._Platform, {
  /*io._Platform.executable*/get executable() {
    return core.String._check(io._Platform._executable());
  },
  set executable(_) {},
  /*io._Platform.resolvedExecutable*/get resolvedExecutable() {
    return core.String._check(io._Platform._resolvedExecutable());
  },
  set resolvedExecutable(_) {},
  /*io._Platform.packageRoot*/get packageRoot() {
    return null;
  },
  set packageRoot(_) {},
  /*io._Platform.packageConfig*/get packageConfig() {
    return io._Platform._packageConfig();
  },
  set packageConfig(_) {},
  /*io._Platform._localeClosure*/get _localeClosure() {
    return null;
  },
  set _localeClosure(_) {},
  /*io._Platform._environmentCache*/get _environmentCache() {
    return null;
  },
  set _environmentCache(_) {},
  /*io._Platform._cachedOSVersion*/get _cachedOSVersion() {
    return null;
  },
  set _cachedOSVersion(_) {}
});
const _map$1 = Symbol('_map');
const _is__CaseInsensitiveStringMap_default = Symbol('_is__CaseInsensitiveStringMap_default');
io._CaseInsensitiveStringMap$ = dart.generic(V => {
  let IdentityMapOfString$V = () => (IdentityMapOfString$V = dart.constFn(_js_helper.IdentityMap$(core.String, V)))();
  let VoidToV = () => (VoidToV = dart.constFn(dart.fnType(V, [])))();
  let MapOfString$V = () => (MapOfString$V = dart.constFn(core.Map$(core.String, V)))();
  let StringAndVToV = () => (StringAndVToV = dart.constFn(dart.fnType(V, [core.String, V])))();
  let VToV = () => (VToV = dart.constFn(dart.fnType(V, [V])))();
  class _CaseInsensitiveStringMap extends collection.MapBase$(core.String, V) {
    containsKey(key) {
      return typeof key == 'string' && dart.test(this[_map$1][$containsKey](key[$toUpperCase]()));
    }
    containsValue(value) {
      return this[_map$1][$containsValue](value);
    }
    _get(key) {
      return typeof key == 'string' ? this[_map$1][$_get](key[$toUpperCase]()) : null;
    }
    _set(key, value) {
      core.String._check(key);
      V._check(value);
      this[_map$1][$_set](key[$toUpperCase](), value);
      return value;
    }
    putIfAbsent(key, ifAbsent) {
      core.String._check(key);
      VoidToV()._check(ifAbsent);
      return this[_map$1][$putIfAbsent](key[$toUpperCase](), ifAbsent);
    }
    addAll(other) {
      MapOfString$V()._check(other);
      other[$forEach](dart.fn((key, value) => this._set(key[$toUpperCase](), value), StringAndVToV()));
    }
    remove(key) {
      return typeof key == 'string' ? this[_map$1][$remove](key[$toUpperCase]()) : null;
    }
    clear() {
      this[_map$1][$clear]();
    }
    forEach(f) {
      this[_map$1][$forEach](f);
    }
    get keys() {
      return this[_map$1][$keys];
    }
    get values() {
      return this[_map$1][$values];
    }
    get length() {
      return this[_map$1][$length];
    }
    get isEmpty() {
      return this[_map$1][$isEmpty];
    }
    get isNotEmpty() {
      return this[_map$1][$isNotEmpty];
    }
    get entries() {
      return this[_map$1][$entries];
    }
    map(K2, V2, transform) {
      return core.Map$(K2, V2)._check(this[_map$1][$map](K2, V2, transform));
    }
    update(key, update, opts) {
      core.String._check(key);
      VToV()._check(update);
      let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
      VoidToV()._check(ifAbsent);
      return this[_map$1][$update](key[$toUpperCase](), update, {ifAbsent: ifAbsent});
    }
    updateAll(update) {
      StringAndVToV()._check(update);
      this[_map$1][$updateAll](update);
    }
    removeWhere(test) {
      this[_map$1][$removeWhere](test);
    }
    toString() {
      return dart.toString(this[_map$1]);
    }
  }
  (_CaseInsensitiveStringMap.new = function() {
    this[_map$1] = new (IdentityMapOfString$V()).new();
  }).prototype = _CaseInsensitiveStringMap.prototype;
  dart.addTypeTests(_CaseInsensitiveStringMap);
  _CaseInsensitiveStringMap.prototype[_is__CaseInsensitiveStringMap_default] = true;
  dart.setMethodSignature(_CaseInsensitiveStringMap, () => ({
    __proto__: dart.getMethods(_CaseInsensitiveStringMap.__proto__),
    containsKey: dart.fnType(core.bool, [core.Object]),
    [$containsKey]: dart.fnType(core.bool, [core.Object]),
    containsValue: dart.fnType(core.bool, [core.Object]),
    [$containsValue]: dart.fnType(core.bool, [core.Object]),
    _get: dart.fnType(V, [core.Object]),
    [$_get]: dart.fnType(V, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
    putIfAbsent: dart.fnType(V, [core.Object, core.Object]),
    [$putIfAbsent]: dart.fnType(V, [core.Object, core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(V, [core.Object]),
    [$remove]: dart.fnType(V, [core.Object]),
    clear: dart.fnType(dart.void, []),
    [$clear]: dart.fnType(dart.void, []),
    forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, V])]),
    [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, V])]),
    map: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [core.String, V])]]),
    [$map]: dart.gFnType((K2, V2) => [core.Map$(K2, V2), [dart.fnType(core.MapEntry$(K2, V2), [core.String, V])]]),
    update: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
    [$update]: dart.fnType(V, [core.Object, core.Object], {ifAbsent: core.Object}),
    updateAll: dart.fnType(dart.void, [core.Object]),
    [$updateAll]: dart.fnType(dart.void, [core.Object]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [core.String, V])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [core.String, V])]),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, [])
  }));
  dart.setGetterSignature(_CaseInsensitiveStringMap, () => ({
    __proto__: dart.getGetters(_CaseInsensitiveStringMap.__proto__),
    keys: core.Iterable$(core.String),
    [$keys]: core.Iterable$(core.String),
    values: core.Iterable$(V),
    [$values]: core.Iterable$(V),
    length: core.int,
    [$length]: core.int,
    isEmpty: core.bool,
    [$isEmpty]: core.bool,
    isNotEmpty: core.bool,
    [$isNotEmpty]: core.bool,
    entries: core.Iterable$(core.MapEntry$(core.String, V)),
    [$entries]: core.Iterable$(core.MapEntry$(core.String, V))
  }));
  dart.setFieldSignature(_CaseInsensitiveStringMap, () => ({
    __proto__: dart.getFields(_CaseInsensitiveStringMap.__proto__),
    [_map$1]: dart.finalFieldType(MapOfString$V())
  }));
  dart.defineExtensionMethods(_CaseInsensitiveStringMap, [
    'containsKey',
    'containsValue',
    '_get',
    '_set',
    'putIfAbsent',
    'addAll',
    'remove',
    'clear',
    'forEach',
    'map',
    'update',
    'updateAll',
    'removeWhere',
    'toString'
  ]);
  dart.defineExtensionAccessors(_CaseInsensitiveStringMap, [
    'keys',
    'values',
    'length',
    'isEmpty',
    'isNotEmpty',
    'entries'
  ]);
  return _CaseInsensitiveStringMap;
});
io._CaseInsensitiveStringMap = io._CaseInsensitiveStringMap$();
dart.addTypeTests(io._CaseInsensitiveStringMap, _is__CaseInsensitiveStringMap_default);
io._ProcessUtils = class _ProcessUtils extends core.Object {
  static _exit(status) {
    dart.throw(new core.UnsupportedError.new("ProcessUtils._exit"));
  }
  static _setExitCode(status) {
    dart.throw(new core.UnsupportedError.new("ProcessUtils._setExitCode"));
  }
  static _getExitCode() {
    dart.throw(new core.UnsupportedError.new("ProcessUtils._getExitCode"));
  }
  static _sleep(millis) {
    dart.throw(new core.UnsupportedError.new("ProcessUtils._sleep"));
  }
  static _pid(process) {
    dart.throw(new core.UnsupportedError.new("ProcessUtils._pid"));
  }
  static _watchSignal(signal) {
    dart.throw(new core.UnsupportedError.new("ProcessUtils._watchSignal"));
  }
};
(io._ProcessUtils.new = function() {
}).prototype = io._ProcessUtils.prototype;
dart.addTypeTests(io._ProcessUtils);
io.exit = function(code) {
  core.ArgumentError.checkNotNull(code, "code");
  if (!dart.test(io._EmbedderConfig._mayExit)) {
    dart.throw(new core.UnsupportedError.new("This embedder disallows calling dart:io's exit()"));
  }
  io._ProcessUtils._exit(code);
};
dart.copyProperties(io, {
  get exitCode() {
    return io._ProcessUtils._getExitCode();
  },
  set exitCode(code) {
    core.ArgumentError.checkNotNull(code, "code");
    io._ProcessUtils._setExitCode(code);
  }
});
io.sleep = function(duration) {
  let milliseconds = duration.inMilliseconds;
  if (dart.notNull(milliseconds) < 0) {
    dart.throw(new core.ArgumentError.new("sleep: duration cannot be negative"));
  }
  if (!dart.test(io._EmbedderConfig._maySleep)) {
    dart.throw(new core.UnsupportedError.new("This embedder disallows calling dart:io's sleep()"));
  }
  io._ProcessUtils._sleep(milliseconds);
};
dart.copyProperties(io, {
  get pid() {
    return io._ProcessUtils._pid(null);
  }
});
io.ProcessInfo = class ProcessInfo extends core.Object {
  static get currentRss() {
    dart.throw(new core.UnsupportedError.new("ProcessInfo.currentRss"));
  }
  static get maxRss() {
    dart.throw(new core.UnsupportedError.new("ProcessInfo.maxRss"));
  }
};
(io.ProcessInfo.new = function() {
}).prototype = io.ProcessInfo.prototype;
dart.addTypeTests(io.ProcessInfo);
let const$61;
let const$62;
io.ProcessStartMode = class ProcessStartMode extends core.Object {
  static get values() {
    return const$61 || (const$61 = dart.constList([io.ProcessStartMode.normal, io.ProcessStartMode.inheritStdio, io.ProcessStartMode.detached, io.ProcessStartMode.detachedWithStdio], io.ProcessStartMode));
  }
  toString() {
    return (const$62 || (const$62 = dart.constList(["normal", "inheritStdio", "detached", "detachedWithStdio"], core.String)))[$_get](this[_mode]);
  }
};
(io.ProcessStartMode._internal = function(mode) {
  this[_mode] = mode;
}).prototype = io.ProcessStartMode.prototype;
dart.addTypeTests(io.ProcessStartMode);
dart.setFieldSignature(io.ProcessStartMode, () => ({
  __proto__: dart.getFields(io.ProcessStartMode.__proto__),
  [_mode]: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(io.ProcessStartMode, ['toString']);
dart.defineLazy(io.ProcessStartMode, {
  /*io.ProcessStartMode.normal*/get normal() {
    return dart.const(new io.ProcessStartMode._internal(0));
  },
  /*io.ProcessStartMode.NORMAL*/get NORMAL() {
    return io.ProcessStartMode.normal;
  },
  /*io.ProcessStartMode.inheritStdio*/get inheritStdio() {
    return dart.const(new io.ProcessStartMode._internal(1));
  },
  /*io.ProcessStartMode.INHERIT_STDIO*/get INHERIT_STDIO() {
    return io.ProcessStartMode.inheritStdio;
  },
  /*io.ProcessStartMode.detached*/get detached() {
    return dart.const(new io.ProcessStartMode._internal(2));
  },
  /*io.ProcessStartMode.DETACHED*/get DETACHED() {
    return io.ProcessStartMode.detached;
  },
  /*io.ProcessStartMode.detachedWithStdio*/get detachedWithStdio() {
    return dart.const(new io.ProcessStartMode._internal(3));
  },
  /*io.ProcessStartMode.DETACHED_WITH_STDIO*/get DETACHED_WITH_STDIO() {
    return io.ProcessStartMode.detachedWithStdio;
  }
});
io.Process = class Process extends core.Object {
  static start(executable, arguments$0, opts) {
    let workingDirectory = opts && 'workingDirectory' in opts ? opts.workingDirectory : null;
    let environment = opts && 'environment' in opts ? opts.environment : null;
    let includeParentEnvironment = opts && 'includeParentEnvironment' in opts ? opts.includeParentEnvironment : true;
    let runInShell = opts && 'runInShell' in opts ? opts.runInShell : false;
    let mode = opts && 'mode' in opts ? opts.mode : io.ProcessStartMode.normal;
    dart.throw(new core.UnsupportedError.new("Process.start"));
  }
  static run(executable, arguments$0, opts) {
    let workingDirectory = opts && 'workingDirectory' in opts ? opts.workingDirectory : null;
    let environment = opts && 'environment' in opts ? opts.environment : null;
    let includeParentEnvironment = opts && 'includeParentEnvironment' in opts ? opts.includeParentEnvironment : true;
    let runInShell = opts && 'runInShell' in opts ? opts.runInShell : false;
    let stdoutEncoding = opts && 'stdoutEncoding' in opts ? opts.stdoutEncoding : io.systemEncoding;
    let stderrEncoding = opts && 'stderrEncoding' in opts ? opts.stderrEncoding : io.systemEncoding;
    dart.throw(new core.UnsupportedError.new("Process.run"));
  }
  static runSync(executable, arguments$0, opts) {
    let workingDirectory = opts && 'workingDirectory' in opts ? opts.workingDirectory : null;
    let environment = opts && 'environment' in opts ? opts.environment : null;
    let includeParentEnvironment = opts && 'includeParentEnvironment' in opts ? opts.includeParentEnvironment : true;
    let runInShell = opts && 'runInShell' in opts ? opts.runInShell : false;
    let stdoutEncoding = opts && 'stdoutEncoding' in opts ? opts.stdoutEncoding : io.systemEncoding;
    let stderrEncoding = opts && 'stderrEncoding' in opts ? opts.stderrEncoding : io.systemEncoding;
    dart.throw(new core.UnsupportedError.new("Process.runSync"));
  }
  static killPid(pid, signal) {
    if (signal === void 0) signal = io.ProcessSignal.sigterm;
    dart.throw(new core.UnsupportedError.new("Process.killPid"));
  }
};
(io.Process.new = function() {
}).prototype = io.Process.prototype;
dart.addTypeTests(io.Process);
io.ProcessResult = class ProcessResult extends core.Object {
  get exitCode() {
    return this[exitCode$];
  }
  set exitCode(value) {
    super.exitCode = value;
  }
  get stdout() {
    return this[stdout$];
  }
  set stdout(value) {
    super.stdout = value;
  }
  get stderr() {
    return this[stderr$];
  }
  set stderr(value) {
    super.stderr = value;
  }
  get pid() {
    return this[pid$];
  }
  set pid(value) {
    super.pid = value;
  }
};
(io.ProcessResult.new = function(pid, exitCode, stdout, stderr) {
  this[pid$] = pid;
  this[exitCode$] = exitCode;
  this[stdout$] = stdout;
  this[stderr$] = stderr;
}).prototype = io.ProcessResult.prototype;
dart.addTypeTests(io.ProcessResult);
const exitCode$ = Symbol("ProcessResult.exitCode");
const stdout$ = Symbol("ProcessResult.stdout");
const stderr$ = Symbol("ProcessResult.stderr");
const pid$ = Symbol("ProcessResult.pid");
dart.setFieldSignature(io.ProcessResult, () => ({
  __proto__: dart.getFields(io.ProcessResult.__proto__),
  exitCode: dart.finalFieldType(core.int),
  stdout: dart.finalFieldType(dart.dynamic),
  stderr: dart.finalFieldType(dart.dynamic),
  pid: dart.finalFieldType(core.int)
}));
const _signalNumber = Symbol('_signalNumber');
const _name$3 = Symbol('_name');
io.ProcessSignal = class ProcessSignal extends core.Object {
  toString() {
    return this[_name$3];
  }
  watch() {
    return io._ProcessUtils._watchSignal(this);
  }
};
(io.ProcessSignal.__ = function(signalNumber, name) {
  this[_signalNumber] = signalNumber;
  this[_name$3] = name;
}).prototype = io.ProcessSignal.prototype;
dart.addTypeTests(io.ProcessSignal);
dart.setMethodSignature(io.ProcessSignal, () => ({
  __proto__: dart.getMethods(io.ProcessSignal.__proto__),
  watch: dart.fnType(async.Stream$(io.ProcessSignal), [])
}));
dart.setFieldSignature(io.ProcessSignal, () => ({
  __proto__: dart.getFields(io.ProcessSignal.__proto__),
  [_signalNumber]: dart.finalFieldType(core.int),
  [_name$3]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(io.ProcessSignal, ['toString']);
dart.defineLazy(io.ProcessSignal, {
  /*io.ProcessSignal.sighup*/get sighup() {
    return dart.const(new io.ProcessSignal.__(1, "SIGHUP"));
  },
  /*io.ProcessSignal.sigint*/get sigint() {
    return dart.const(new io.ProcessSignal.__(2, "SIGINT"));
  },
  /*io.ProcessSignal.sigquit*/get sigquit() {
    return dart.const(new io.ProcessSignal.__(3, "SIGQUIT"));
  },
  /*io.ProcessSignal.sigill*/get sigill() {
    return dart.const(new io.ProcessSignal.__(4, "SIGILL"));
  },
  /*io.ProcessSignal.sigtrap*/get sigtrap() {
    return dart.const(new io.ProcessSignal.__(5, "SIGTRAP"));
  },
  /*io.ProcessSignal.sigabrt*/get sigabrt() {
    return dart.const(new io.ProcessSignal.__(6, "SIGABRT"));
  },
  /*io.ProcessSignal.sigbus*/get sigbus() {
    return dart.const(new io.ProcessSignal.__(7, "SIGBUS"));
  },
  /*io.ProcessSignal.sigfpe*/get sigfpe() {
    return dart.const(new io.ProcessSignal.__(8, "SIGFPE"));
  },
  /*io.ProcessSignal.sigkill*/get sigkill() {
    return dart.const(new io.ProcessSignal.__(9, "SIGKILL"));
  },
  /*io.ProcessSignal.sigusr1*/get sigusr1() {
    return dart.const(new io.ProcessSignal.__(10, "SIGUSR1"));
  },
  /*io.ProcessSignal.sigsegv*/get sigsegv() {
    return dart.const(new io.ProcessSignal.__(11, "SIGSEGV"));
  },
  /*io.ProcessSignal.sigusr2*/get sigusr2() {
    return dart.const(new io.ProcessSignal.__(12, "SIGUSR2"));
  },
  /*io.ProcessSignal.sigpipe*/get sigpipe() {
    return dart.const(new io.ProcessSignal.__(13, "SIGPIPE"));
  },
  /*io.ProcessSignal.sigalrm*/get sigalrm() {
    return dart.const(new io.ProcessSignal.__(14, "SIGALRM"));
  },
  /*io.ProcessSignal.sigterm*/get sigterm() {
    return dart.const(new io.ProcessSignal.__(15, "SIGTERM"));
  },
  /*io.ProcessSignal.sigchld*/get sigchld() {
    return dart.const(new io.ProcessSignal.__(17, "SIGCHLD"));
  },
  /*io.ProcessSignal.sigcont*/get sigcont() {
    return dart.const(new io.ProcessSignal.__(18, "SIGCONT"));
  },
  /*io.ProcessSignal.sigstop*/get sigstop() {
    return dart.const(new io.ProcessSignal.__(19, "SIGSTOP"));
  },
  /*io.ProcessSignal.sigtstp*/get sigtstp() {
    return dart.const(new io.ProcessSignal.__(20, "SIGTSTP"));
  },
  /*io.ProcessSignal.sigttin*/get sigttin() {
    return dart.const(new io.ProcessSignal.__(21, "SIGTTIN"));
  },
  /*io.ProcessSignal.sigttou*/get sigttou() {
    return dart.const(new io.ProcessSignal.__(22, "SIGTTOU"));
  },
  /*io.ProcessSignal.sigurg*/get sigurg() {
    return dart.const(new io.ProcessSignal.__(23, "SIGURG"));
  },
  /*io.ProcessSignal.sigxcpu*/get sigxcpu() {
    return dart.const(new io.ProcessSignal.__(24, "SIGXCPU"));
  },
  /*io.ProcessSignal.sigxfsz*/get sigxfsz() {
    return dart.const(new io.ProcessSignal.__(25, "SIGXFSZ"));
  },
  /*io.ProcessSignal.sigvtalrm*/get sigvtalrm() {
    return dart.const(new io.ProcessSignal.__(26, "SIGVTALRM"));
  },
  /*io.ProcessSignal.sigprof*/get sigprof() {
    return dart.const(new io.ProcessSignal.__(27, "SIGPROF"));
  },
  /*io.ProcessSignal.sigwinch*/get sigwinch() {
    return dart.const(new io.ProcessSignal.__(28, "SIGWINCH"));
  },
  /*io.ProcessSignal.sigpoll*/get sigpoll() {
    return dart.const(new io.ProcessSignal.__(29, "SIGPOLL"));
  },
  /*io.ProcessSignal.sigsys*/get sigsys() {
    return dart.const(new io.ProcessSignal.__(31, "SIGSYS"));
  },
  /*io.ProcessSignal.SIGHUP*/get SIGHUP() {
    return io.ProcessSignal.sighup;
  },
  /*io.ProcessSignal.SIGINT*/get SIGINT() {
    return io.ProcessSignal.sigint;
  },
  /*io.ProcessSignal.SIGQUIT*/get SIGQUIT() {
    return io.ProcessSignal.sigquit;
  },
  /*io.ProcessSignal.SIGILL*/get SIGILL() {
    return io.ProcessSignal.sigill;
  },
  /*io.ProcessSignal.SIGTRAP*/get SIGTRAP() {
    return io.ProcessSignal.sigtrap;
  },
  /*io.ProcessSignal.SIGABRT*/get SIGABRT() {
    return io.ProcessSignal.sigabrt;
  },
  /*io.ProcessSignal.SIGBUS*/get SIGBUS() {
    return io.ProcessSignal.sigbus;
  },
  /*io.ProcessSignal.SIGFPE*/get SIGFPE() {
    return io.ProcessSignal.sigfpe;
  },
  /*io.ProcessSignal.SIGKILL*/get SIGKILL() {
    return io.ProcessSignal.sigkill;
  },
  /*io.ProcessSignal.SIGUSR1*/get SIGUSR1() {
    return io.ProcessSignal.sigusr1;
  },
  /*io.ProcessSignal.SIGSEGV*/get SIGSEGV() {
    return io.ProcessSignal.sigsegv;
  },
  /*io.ProcessSignal.SIGUSR2*/get SIGUSR2() {
    return io.ProcessSignal.sigusr2;
  },
  /*io.ProcessSignal.SIGPIPE*/get SIGPIPE() {
    return io.ProcessSignal.sigpipe;
  },
  /*io.ProcessSignal.SIGALRM*/get SIGALRM() {
    return io.ProcessSignal.sigalrm;
  },
  /*io.ProcessSignal.SIGTERM*/get SIGTERM() {
    return io.ProcessSignal.sigterm;
  },
  /*io.ProcessSignal.SIGCHLD*/get SIGCHLD() {
    return io.ProcessSignal.sigchld;
  },
  /*io.ProcessSignal.SIGCONT*/get SIGCONT() {
    return io.ProcessSignal.sigcont;
  },
  /*io.ProcessSignal.SIGSTOP*/get SIGSTOP() {
    return io.ProcessSignal.sigstop;
  },
  /*io.ProcessSignal.SIGTSTP*/get SIGTSTP() {
    return io.ProcessSignal.sigtstp;
  },
  /*io.ProcessSignal.SIGTTIN*/get SIGTTIN() {
    return io.ProcessSignal.sigttin;
  },
  /*io.ProcessSignal.SIGTTOU*/get SIGTTOU() {
    return io.ProcessSignal.sigttou;
  },
  /*io.ProcessSignal.SIGURG*/get SIGURG() {
    return io.ProcessSignal.sigurg;
  },
  /*io.ProcessSignal.SIGXCPU*/get SIGXCPU() {
    return io.ProcessSignal.sigxcpu;
  },
  /*io.ProcessSignal.SIGXFSZ*/get SIGXFSZ() {
    return io.ProcessSignal.sigxfsz;
  },
  /*io.ProcessSignal.SIGVTALRM*/get SIGVTALRM() {
    return io.ProcessSignal.sigvtalrm;
  },
  /*io.ProcessSignal.SIGPROF*/get SIGPROF() {
    return io.ProcessSignal.sigprof;
  },
  /*io.ProcessSignal.SIGWINCH*/get SIGWINCH() {
    return io.ProcessSignal.sigwinch;
  },
  /*io.ProcessSignal.SIGPOLL*/get SIGPOLL() {
    return io.ProcessSignal.sigpoll;
  },
  /*io.ProcessSignal.SIGSYS*/get SIGSYS() {
    return io.ProcessSignal.sigsys;
  }
});
io.SignalException = class SignalException extends core.Object {
  get message() {
    return this[message$9];
  }
  set message(value) {
    super.message = value;
  }
  get osError() {
    return this[osError$0];
  }
  set osError(value) {
    super.osError = value;
  }
  toString() {
    let msg = "";
    if (this.osError != null) {
      msg = ", osError: " + dart.str(this.osError);
    }
    return "SignalException: " + dart.str(this.message) + msg;
  }
};
(io.SignalException.new = function(message, osError) {
  if (osError === void 0) osError = null;
  this[message$9] = message;
  this[osError$0] = osError;
}).prototype = io.SignalException.prototype;
dart.addTypeTests(io.SignalException);
const message$9 = Symbol("SignalException.message");
const osError$0 = Symbol("SignalException.osError");
io.SignalException[dart.implements] = () => [io.IOException];
dart.setFieldSignature(io.SignalException, () => ({
  __proto__: dart.getFields(io.SignalException.__proto__),
  message: dart.finalFieldType(core.String),
  osError: dart.finalFieldType(dart.dynamic)
}));
dart.defineExtensionMethods(io.SignalException, ['toString']);
io.ProcessException = class ProcessException extends core.Object {
  get executable() {
    return this[executable$];
  }
  set executable(value) {
    super.executable = value;
  }
  get arguments() {
    return this[arguments$];
  }
  set arguments(value) {
    super.arguments = value;
  }
  get message() {
    return this[message$10];
  }
  set message(value) {
    super.message = value;
  }
  get errorCode() {
    return this[errorCode$0];
  }
  set errorCode(value) {
    super.errorCode = value;
  }
  toString() {
    let msg = this.message == null ? "OS error code: " + dart.str(this.errorCode) : this.message;
    let args = this.arguments[$join](" ");
    return "ProcessException: " + dart.str(msg) + "\n  Command: " + dart.str(this.executable) + " " + dart.str(args);
  }
};
(io.ProcessException.new = function(executable, arguments$0, message, errorCode) {
  if (message === void 0) message = "";
  if (errorCode === void 0) errorCode = 0;
  this[executable$] = executable;
  this[arguments$] = arguments$0;
  this[message$10] = message;
  this[errorCode$0] = errorCode;
}).prototype = io.ProcessException.prototype;
dart.addTypeTests(io.ProcessException);
const executable$ = Symbol("ProcessException.executable");
const arguments$ = Symbol("ProcessException.arguments");
const message$10 = Symbol("ProcessException.message");
const errorCode$0 = Symbol("ProcessException.errorCode");
io.ProcessException[dart.implements] = () => [io.IOException];
dart.setFieldSignature(io.ProcessException, () => ({
  __proto__: dart.getFields(io.ProcessException.__proto__),
  executable: dart.finalFieldType(core.String),
  arguments: dart.finalFieldType(ListOfString()),
  message: dart.finalFieldType(core.String),
  errorCode: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(io.ProcessException, ['toString']);
const _socket = Symbol('_socket');
const _owner = Symbol('_owner');
const _onCancel$ = Symbol('_onCancel');
const _detachRaw = Symbol('_detachRaw');
io.SecureSocket = class SecureSocket extends core.Object {
  static connect(host, port, opts) {
    let context = opts && 'context' in opts ? opts.context : null;
    let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
    let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    return FutureOfSecureSocket()._check(io.RawSecureSocket.connect(host, port, {context: context, onBadCertificate: onBadCertificate, supportedProtocols: supportedProtocols, timeout: timeout}).then(io.SecureSocket, dart.fn(rawSocket => io.SecureSocket.__(rawSocket), RawSecureSocketToSecureSocket())));
  }
  static startConnect(host, port, opts) {
    let context = opts && 'context' in opts ? opts.context : null;
    let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
    let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
    return FutureOfConnectionTaskOfSecureSocket()._check(io.RawSecureSocket.startConnect(host, port, {context: context, onBadCertificate: onBadCertificate, supportedProtocols: supportedProtocols}).then(ConnectionTaskOfSecureSocket(), dart.fn(rawState => {
      let socket = FutureOfSecureSocket()._check(rawState.socket.then(io.SecureSocket, dart.fn(rawSocket => io.SecureSocket.__(rawSocket), RawSecureSocketToSecureSocket())));
      return new (ConnectionTaskOfSecureSocket()).__({socket: socket, onCancel: rawState[_onCancel$]});
    }, ConnectionTaskOfRawSecureSocketToConnectionTaskOfSecureSocket())));
  }
  static secure(socket, opts) {
    let host = opts && 'host' in opts ? opts.host : null;
    let context = opts && 'context' in opts ? opts.context : null;
    let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
    return FutureOfSecureSocket()._check(FutureOfRawSecureSocket()._check(async.Future.as(dart.dsend(socket, _detachRaw, [])).then(io.RawSecureSocket, dart.fn(detachedRaw => io.RawSecureSocket.secure(io.RawSocket.as(dart.dindex(detachedRaw, 0)), {subscription: StreamSubscriptionOfRawSocketEvent().as(dart.dindex(detachedRaw, 1)), host: host, context: context, onBadCertificate: onBadCertificate}), dynamicToFutureOfRawSecureSocket()))).then(io.SecureSocket, dart.fn(raw => io.SecureSocket.__(raw), RawSecureSocketToSecureSocket())));
  }
  static secureServer(socket, context, opts) {
    let bufferedData = opts && 'bufferedData' in opts ? opts.bufferedData : null;
    let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
    let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
    let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
    return FutureOfSecureSocket()._check(FutureOfRawSecureSocket()._check(async.Future.as(dart.dsend(socket, _detachRaw, [])).then(io.RawSecureSocket, dart.fn(detachedRaw => io.RawSecureSocket.secureServer(io.RawSocket.as(dart.dindex(detachedRaw, 0)), context, {subscription: StreamSubscriptionOfRawSocketEvent().as(dart.dindex(detachedRaw, 1)), bufferedData: bufferedData, requestClientCertificate: requestClientCertificate, requireClientCertificate: requireClientCertificate, supportedProtocols: supportedProtocols}), dynamicToFutureOfRawSecureSocket()))).then(io.SecureSocket, dart.fn(raw => io.SecureSocket.__(raw), RawSecureSocketToSecureSocket())));
  }
};
(io.SecureSocket[dart.mixinNew] = function() {
}).prototype = io.SecureSocket.prototype;
dart.addTypeTests(io.SecureSocket);
io.SecureSocket[dart.implements] = () => [io.Socket];
io.SecureServerSocket = class SecureServerSocket extends async.Stream$(io.SecureSocket) {
  static bind(address, port, context, opts) {
    let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
    let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
    let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
    let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
    let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
    let shared = opts && 'shared' in opts ? opts.shared : false;
    return FutureOfSecureServerSocket()._check(io.RawSecureServerSocket.bind(address, port, context, {backlog: backlog, v6Only: v6Only, requestClientCertificate: requestClientCertificate, requireClientCertificate: requireClientCertificate, supportedProtocols: supportedProtocols, shared: shared}).then(io.SecureServerSocket, dart.fn(serverSocket => new io.SecureServerSocket.__(serverSocket), RawSecureServerSocketToSecureServerSocket())));
  }
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    return this[_socket].map(io.SecureSocket, dart.fn(rawSocket => io.SecureSocket.__(rawSocket), RawSecureSocketToSecureSocket())).listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  get port() {
    return this[_socket].port;
  }
  get address() {
    return this[_socket].address;
  }
  close() {
    return FutureOfSecureServerSocket()._check(this[_socket].close().then(io.SecureServerSocket, dart.fn(_ => this, RawSecureServerSocketToSecureServerSocket())));
  }
  set [_owner](owner) {
    this[_socket][_owner] = owner;
  }
};
(io.SecureServerSocket.__ = function(socket) {
  this[_socket] = socket;
  io.SecureServerSocket.__proto__.new.call(this);
}).prototype = io.SecureServerSocket.prototype;
dart.addTypeTests(io.SecureServerSocket);
dart.setMethodSignature(io.SecureServerSocket, () => ({
  __proto__: dart.getMethods(io.SecureServerSocket.__proto__),
  listen: dart.fnType(async.StreamSubscription$(io.SecureSocket), [dart.fnType(dart.void, [io.SecureSocket])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
  close: dart.fnType(async.Future$(io.SecureServerSocket), [])
}));
dart.setGetterSignature(io.SecureServerSocket, () => ({
  __proto__: dart.getGetters(io.SecureServerSocket.__proto__),
  port: core.int,
  address: io.InternetAddress
}));
dart.setSetterSignature(io.SecureServerSocket, () => ({
  __proto__: dart.getSetters(io.SecureServerSocket.__proto__),
  [_owner]: dart.dynamic
}));
dart.setFieldSignature(io.SecureServerSocket, () => ({
  __proto__: dart.getFields(io.SecureServerSocket.__proto__),
  [_socket]: dart.finalFieldType(io.RawSecureServerSocket)
}));
const _context = Symbol('_context');
const _subscription$ = Symbol('_subscription');
const _onSubscriptionStateChange = Symbol('_onSubscriptionStateChange');
const _onPauseStateChange = Symbol('_onPauseStateChange');
const _onData$0 = Symbol('_onData');
io.RawSecureSocket = class RawSecureSocket extends core.Object {
  static connect(host, port, opts) {
    let context = opts && 'context' in opts ? opts.context : null;
    let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
    let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    io._RawSecureSocket._verifyFields(host, port, false, false, false, onBadCertificate);
    return FutureOfRawSecureSocket()._check(io.RawSocket.connect(host, port, {timeout: timeout}).then(io.RawSecureSocket, dart.fn(socket => io.RawSecureSocket.secure(socket, {context: context, onBadCertificate: onBadCertificate, supportedProtocols: supportedProtocols}), RawSocketToFutureOfRawSecureSocket())));
  }
  static startConnect(host, port, opts) {
    let context = opts && 'context' in opts ? opts.context : null;
    let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
    let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
    return FutureOfConnectionTaskOfRawSecureSocket()._check(io.RawSocket.startConnect(host, port).then(ConnectionTaskOfRawSecureSocket(), dart.fn(rawState => {
      let socket = FutureOfRawSecureSocket()._check(rawState.socket.then(io.RawSecureSocket, dart.fn(rawSocket => io.RawSecureSocket.secure(rawSocket, {context: context, onBadCertificate: onBadCertificate, supportedProtocols: supportedProtocols}), RawSocketToFutureOfRawSecureSocket())));
      return new (ConnectionTaskOfRawSecureSocket()).__({socket: socket, onCancel: rawState[_onCancel$]});
    }, ConnectionTaskOfRawSocketToConnectionTaskOfRawSecureSocket())));
  }
  static secure(socket, opts) {
    let subscription = opts && 'subscription' in opts ? opts.subscription : null;
    let host = opts && 'host' in opts ? opts.host : null;
    let context = opts && 'context' in opts ? opts.context : null;
    let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
    let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
    socket.readEventsEnabled = false;
    socket.writeEventsEnabled = false;
    return io._RawSecureSocket.connect(host != null ? host : socket.address.host, socket.port, {is_server: false, socket: socket, subscription: subscription, context: context, onBadCertificate: onBadCertificate, supportedProtocols: supportedProtocols});
  }
  static secureServer(socket, context, opts) {
    let subscription = opts && 'subscription' in opts ? opts.subscription : null;
    let bufferedData = opts && 'bufferedData' in opts ? opts.bufferedData : null;
    let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
    let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
    let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
    socket.readEventsEnabled = false;
    socket.writeEventsEnabled = false;
    return io._RawSecureSocket.connect(socket.address, socket.remotePort, {context: context, is_server: true, socket: socket, subscription: subscription, bufferedData: bufferedData, requestClientCertificate: requestClientCertificate, requireClientCertificate: requireClientCertificate, supportedProtocols: supportedProtocols});
  }
};
(io.RawSecureSocket.new = function() {
}).prototype = io.RawSecureSocket.prototype;
dart.addTypeTests(io.RawSecureSocket);
io.RawSecureSocket[dart.implements] = () => [io.RawSocket];
io.RawSecureServerSocket = class RawSecureServerSocket extends async.Stream$(io.RawSecureSocket) {
  get requestClientCertificate() {
    return this[requestClientCertificate$];
  }
  set requestClientCertificate(value) {
    super.requestClientCertificate = value;
  }
  get requireClientCertificate() {
    return this[requireClientCertificate$];
  }
  set requireClientCertificate(value) {
    super.requireClientCertificate = value;
  }
  get supportedProtocols() {
    return this[supportedProtocols$];
  }
  set supportedProtocols(value) {
    super.supportedProtocols = value;
  }
  static bind(address, port, context, opts) {
    let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
    let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
    let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
    let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
    let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
    let shared = opts && 'shared' in opts ? opts.shared : false;
    return FutureOfRawSecureServerSocket()._check(io.RawServerSocket.bind(address, port, {backlog: backlog, v6Only: v6Only, shared: shared}).then(io.RawSecureServerSocket, dart.fn(serverSocket => new io.RawSecureServerSocket.__(serverSocket, context, requestClientCertificate, requireClientCertificate, supportedProtocols), RawServerSocketToRawSecureServerSocket())));
  }
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    return this[_controller$].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  get port() {
    return this[_socket].port;
  }
  get address() {
    return this[_socket].address;
  }
  close() {
    this[_closed] = true;
    return FutureOfRawSecureServerSocket()._check(this[_socket].close().then(io.RawSecureServerSocket, dart.fn(_ => this, RawServerSocketToRawSecureServerSocket())));
  }
  [_onData$0](connection) {
    let remotePort = null;
    try {
      remotePort = connection.remotePort;
    } catch (e$) {
      let e = dart.getThrown(e$);
      return;
    }
    FutureOfNull()._check(io._RawSecureSocket.connect(connection.address, core.int._check(remotePort), {context: this[_context], is_server: true, socket: connection, requestClientCertificate: this.requestClientCertificate, requireClientCertificate: this.requireClientCertificate, supportedProtocols: this.supportedProtocols}).then(core.Null, dart.fn(secureConnection => {
      if (dart.test(this[_closed])) {
        secureConnection.close();
      } else {
        this[_controller$].add(secureConnection);
      }
    }, RawSecureSocketToNull()))).catchError(dart.fn((e, s) => {
      if (!dart.test(this[_closed])) {
        this[_controller$].addError(e, core.StackTrace._check(s));
      }
    }, dynamicAnddynamicToNull()));
  }
  [_onPauseStateChange]() {
    if (dart.test(this[_controller$].isPaused)) {
      this[_subscription$].pause();
    } else {
      this[_subscription$].resume();
    }
  }
  [_onSubscriptionStateChange]() {
    if (dart.test(this[_controller$].hasListener)) {
      this[_subscription$] = this[_socket].listen(dart.bind(this, _onData$0), {onError: dart.bind(this[_controller$], 'addError'), onDone: dart.bind(this[_controller$], 'close')});
    } else {
      this.close();
    }
  }
  set [_owner](owner) {
    dart.dput(this[_socket], _owner, owner);
  }
};
(io.RawSecureServerSocket.__ = function(socket, context, requestClientCertificate, requireClientCertificate, supportedProtocols) {
  this[_controller$] = null;
  this[_subscription$] = null;
  this[_closed] = false;
  this[_socket] = socket;
  this[_context] = context;
  this[requestClientCertificate$] = requestClientCertificate;
  this[requireClientCertificate$] = requireClientCertificate;
  this[supportedProtocols$] = supportedProtocols;
  io.RawSecureServerSocket.__proto__.new.call(this);
  this[_controller$] = StreamControllerOfRawSecureSocket().new({sync: true, onListen: dart.bind(this, _onSubscriptionStateChange), onPause: dart.bind(this, _onPauseStateChange), onResume: dart.bind(this, _onPauseStateChange), onCancel: dart.bind(this, _onSubscriptionStateChange)});
}).prototype = io.RawSecureServerSocket.prototype;
dart.addTypeTests(io.RawSecureServerSocket);
const requestClientCertificate$ = Symbol("RawSecureServerSocket.requestClientCertificate");
const requireClientCertificate$ = Symbol("RawSecureServerSocket.requireClientCertificate");
const supportedProtocols$ = Symbol("RawSecureServerSocket.supportedProtocols");
dart.setMethodSignature(io.RawSecureServerSocket, () => ({
  __proto__: dart.getMethods(io.RawSecureServerSocket.__proto__),
  listen: dart.fnType(async.StreamSubscription$(io.RawSecureSocket), [dart.fnType(dart.void, [io.RawSecureSocket])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
  close: dart.fnType(async.Future$(io.RawSecureServerSocket), []),
  [_onData$0]: dart.fnType(dart.void, [io.RawSocket]),
  [_onPauseStateChange]: dart.fnType(dart.void, []),
  [_onSubscriptionStateChange]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(io.RawSecureServerSocket, () => ({
  __proto__: dart.getGetters(io.RawSecureServerSocket.__proto__),
  port: core.int,
  address: io.InternetAddress
}));
dart.setSetterSignature(io.RawSecureServerSocket, () => ({
  __proto__: dart.getSetters(io.RawSecureServerSocket.__proto__),
  [_owner]: dart.dynamic
}));
dart.setFieldSignature(io.RawSecureServerSocket, () => ({
  __proto__: dart.getFields(io.RawSecureServerSocket.__proto__),
  [_socket]: dart.finalFieldType(io.RawServerSocket),
  [_controller$]: dart.fieldType(StreamControllerOfRawSecureSocket()),
  [_subscription$]: dart.fieldType(StreamSubscriptionOfRawSocket()),
  [_context]: dart.finalFieldType(io.SecurityContext),
  requestClientCertificate: dart.finalFieldType(core.bool),
  requireClientCertificate: dart.finalFieldType(core.bool),
  supportedProtocols: dart.finalFieldType(ListOfString()),
  [_closed]: dart.fieldType(core.bool)
}));
io.X509Certificate = class X509Certificate extends core.Object {};
(io.X509Certificate[dart.mixinNew] = function() {
}).prototype = io.X509Certificate.prototype;
dart.addTypeTests(io.X509Certificate);
io._FilterStatus = class _FilterStatus extends core.Object {};
(io._FilterStatus.new = function() {
  this.progress = false;
  this.readEmpty = true;
  this.writeEmpty = true;
  this.readPlaintextNoLongerEmpty = false;
  this.writePlaintextNoLongerFull = false;
  this.readEncryptedNoLongerFull = false;
  this.writeEncryptedNoLongerEmpty = false;
}).prototype = io._FilterStatus.prototype;
dart.addTypeTests(io._FilterStatus);
dart.setFieldSignature(io._FilterStatus, () => ({
  __proto__: dart.getFields(io._FilterStatus.__proto__),
  progress: dart.fieldType(core.bool),
  readEmpty: dart.fieldType(core.bool),
  writeEmpty: dart.fieldType(core.bool),
  readPlaintextNoLongerEmpty: dart.fieldType(core.bool),
  writePlaintextNoLongerFull: dart.fieldType(core.bool),
  readEncryptedNoLongerFull: dart.fieldType(core.bool),
  writeEncryptedNoLongerEmpty: dart.fieldType(core.bool)
}));
const _socketSubscription = Symbol('_socketSubscription');
const _bufferedData = Symbol('_bufferedData');
const _handshakeComplete = Symbol('_handshakeComplete');
const _stream$ = Symbol('_stream');
const _bufferedDataIndex = Symbol('_bufferedDataIndex');
const _status = Symbol('_status');
const _writeEventsEnabled = Symbol('_writeEventsEnabled');
const _readEventsEnabled = Symbol('_readEventsEnabled');
const _pauseCount = Symbol('_pauseCount');
const _pendingReadEvent = Symbol('_pendingReadEvent');
const _socketClosedRead = Symbol('_socketClosedRead');
const _socketClosedWrite = Symbol('_socketClosedWrite');
const _closedRead = Symbol('_closedRead');
const _closedWrite = Symbol('_closedWrite');
const _filterStatus = Symbol('_filterStatus');
const _connectPending = Symbol('_connectPending');
const _filterPending = Symbol('_filterPending');
const _filterActive = Symbol('_filterActive');
const _secureFilter = Symbol('_secureFilter');
const _selectedProtocol = Symbol('_selectedProtocol');
const _secureHandshakeCompleteHandler = Symbol('_secureHandshakeCompleteHandler');
const _onBadCertificateWrapper = Symbol('_onBadCertificateWrapper');
const _eventDispatcher = Symbol('_eventDispatcher');
const _reportError = Symbol('_reportError');
const _doneHandler = Symbol('_doneHandler');
const _secureHandshake = Symbol('_secureHandshake');
const _sendWriteEvent = Symbol('_sendWriteEvent');
const _completeCloseCompleter = Symbol('_completeCloseCompleter');
const _close$ = Symbol('_close');
const _scheduleReadEvent = Symbol('_scheduleReadEvent');
const _scheduleFilter = Symbol('_scheduleFilter');
const _readHandler = Symbol('_readHandler');
const _writeHandler = Symbol('_writeHandler');
const _closeHandler = Symbol('_closeHandler');
const _readSocket = Symbol('_readSocket');
const _writeSocket = Symbol('_writeSocket');
const _tryFilter = Symbol('_tryFilter');
const _pushAllFilterStages = Symbol('_pushAllFilterStages');
const _readSocketOrBufferedData = Symbol('_readSocketOrBufferedData');
const _sendReadEvent = Symbol('_sendReadEvent');
const _value$2 = Symbol('_value');
let const$63;
io.RawSocketEvent = class RawSocketEvent extends core.Object {
  toString() {
    return (const$63 || (const$63 = dart.constList(["RawSocketEvent.read", "RawSocketEvent.write", "RawSocketEvent.readClosed", "RawSocketEvent.closed"], core.String)))[$_get](this[_value$2]);
  }
};
(io.RawSocketEvent.__ = function(value) {
  this[_value$2] = value;
}).prototype = io.RawSocketEvent.prototype;
dart.addTypeTests(io.RawSocketEvent);
dart.setFieldSignature(io.RawSocketEvent, () => ({
  __proto__: dart.getFields(io.RawSocketEvent.__proto__),
  [_value$2]: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(io.RawSocketEvent, ['toString']);
dart.defineLazy(io.RawSocketEvent, {
  /*io.RawSocketEvent.read*/get read() {
    return dart.const(new io.RawSocketEvent.__(0));
  },
  /*io.RawSocketEvent.write*/get write() {
    return dart.const(new io.RawSocketEvent.__(1));
  },
  /*io.RawSocketEvent.readClosed*/get readClosed() {
    return dart.const(new io.RawSocketEvent.__(2));
  },
  /*io.RawSocketEvent.closed*/get closed() {
    return dart.const(new io.RawSocketEvent.__(3));
  },
  /*io.RawSocketEvent.READ*/get READ() {
    return io.RawSocketEvent.read;
  },
  /*io.RawSocketEvent.WRITE*/get WRITE() {
    return io.RawSocketEvent.write;
  },
  /*io.RawSocketEvent.READ_CLOSED*/get READ_CLOSED() {
    return io.RawSocketEvent.readClosed;
  },
  /*io.RawSocketEvent.CLOSED*/get CLOSED() {
    return io.RawSocketEvent.closed;
  }
});
io._RawSecureSocket = class _RawSecureSocket extends async.Stream$(io.RawSocketEvent) {
  static _isBufferEncrypted(identifier) {
    return dart.notNull(identifier) >= 2;
  }
  static connect(host, requestedPort, opts) {
    let is_server = opts && 'is_server' in opts ? opts.is_server : null;
    let context = opts && 'context' in opts ? opts.context : null;
    let socket = opts && 'socket' in opts ? opts.socket : null;
    let subscription = opts && 'subscription' in opts ? opts.subscription : null;
    let bufferedData = opts && 'bufferedData' in opts ? opts.bufferedData : null;
    let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
    let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
    let onBadCertificate = opts && 'onBadCertificate' in opts ? opts.onBadCertificate : null;
    let supportedProtocols = opts && 'supportedProtocols' in opts ? opts.supportedProtocols : null;
    io._RawSecureSocket._verifyFields(host, requestedPort, is_server, requestClientCertificate, requireClientCertificate, onBadCertificate);
    if (io.InternetAddress.is(host)) host = dart.dload(host, 'host');
    let address = socket.address;
    if (host != null) {
      address = io.InternetAddress._cloneWithNewHost(address, core.String._check(host));
    }
    return new io._RawSecureSocket.new(address, requestedPort, is_server, context, socket, subscription, bufferedData, requestClientCertificate, requireClientCertificate, onBadCertificate, supportedProtocols)[_handshakeComplete].future;
  }
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    this[_sendWriteEvent]();
    return this[_stream$].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  static _verifyFields(host, requestedPort, is_server, requestClientCertificate, requireClientCertificate, onBadCertificate) {
    if (!(typeof host == 'string') && !io.InternetAddress.is(host)) {
      dart.throw(new core.ArgumentError.new("host is not a String or an InternetAddress"));
    }
    core.ArgumentError.checkNotNull(requestedPort, "requestedPort");
    if (dart.notNull(requestedPort) < 0 || dart.notNull(requestedPort) > 65535) {
      dart.throw(new core.ArgumentError.new("requestedPort is not in the range 0..65535"));
    }
    core.ArgumentError.checkNotNull(requestClientCertificate, "requestClientCertificate");
    core.ArgumentError.checkNotNull(requireClientCertificate, "requireClientCertificate");
  }
  get port() {
    return this[_socket].port;
  }
  get remoteAddress() {
    return this[_socket].remoteAddress;
  }
  get remotePort() {
    return this[_socket].remotePort;
  }
  set [_owner](owner) {
    dart.dput(this[_socket], _owner, owner);
  }
  available() {
    return this[_status] !== 202 ? 0 : this[_secureFilter].buffers[$_get](0).length;
  }
  close() {
    this.shutdown(io.SocketDirection.both);
    return this[_closeCompleter].future;
  }
  [_completeCloseCompleter](dummy) {
    if (dummy === void 0) dummy = null;
    if (!dart.test(this[_closeCompleter].isCompleted)) this[_closeCompleter].complete(this);
  }
  [_close$]() {
    this[_closedWrite] = true;
    this[_closedRead] = true;
    if (this[_socket] != null) {
      this[_socket].close().then(dart.void, dart.bind(this, _completeCloseCompleter));
    } else {
      this[_completeCloseCompleter]();
    }
    this[_socketClosedWrite] = true;
    this[_socketClosedRead] = true;
    if (!dart.test(this[_filterActive]) && this[_secureFilter] != null) {
      this[_secureFilter].destroy();
      this[_secureFilter] = null;
    }
    if (this[_socketSubscription] != null) {
      this[_socketSubscription].cancel();
    }
    this[_controller$].close();
    this[_status] = 203;
  }
  shutdown(direction) {
    if (dart.equals(direction, io.SocketDirection.send) || dart.equals(direction, io.SocketDirection.both)) {
      this[_closedWrite] = true;
      if (dart.test(this[_filterStatus].writeEmpty)) {
        this[_socket].shutdown(io.SocketDirection.send);
        this[_socketClosedWrite] = true;
        if (dart.test(this[_closedRead])) {
          this[_close$]();
        }
      }
    }
    if (dart.equals(direction, io.SocketDirection.receive) || dart.equals(direction, io.SocketDirection.both)) {
      this[_closedRead] = true;
      this[_socketClosedRead] = true;
      this[_socket].shutdown(io.SocketDirection.receive);
      if (dart.test(this[_socketClosedWrite])) {
        this[_close$]();
      }
    }
  }
  get writeEventsEnabled() {
    return this[_writeEventsEnabled];
  }
  set writeEventsEnabled(value) {
    this[_writeEventsEnabled] = value;
    if (dart.test(value)) {
      async.Timer.run(dart.fn(() => this[_sendWriteEvent](), VoidTodynamic()));
    }
  }
  get readEventsEnabled() {
    return this[_readEventsEnabled];
  }
  set readEventsEnabled(value) {
    this[_readEventsEnabled] = value;
    this[_scheduleReadEvent]();
  }
  read(length) {
    if (length === void 0) length = null;
    if (length != null && (!core.int.is(length) || dart.notNull(length) < 0)) {
      dart.throw(new core.ArgumentError.new("Invalid length parameter in SecureSocket.read (length: " + dart.str(length) + ")"));
    }
    if (dart.test(this[_closedRead])) {
      dart.throw(new io.SocketException.new("Reading from a closed socket"));
    }
    if (this[_status] !== 202) {
      return null;
    }
    let result = this[_secureFilter].buffers[$_get](0).read(length);
    this[_scheduleFilter]();
    return result;
  }
  write(data, offset, bytes) {
    if (offset === void 0) offset = null;
    if (bytes === void 0) bytes = null;
    if (bytes != null && (!core.int.is(bytes) || dart.notNull(bytes) < 0)) {
      dart.throw(new core.ArgumentError.new("Invalid bytes parameter in SecureSocket.read (bytes: " + dart.str(bytes) + ")"));
    }
    if (offset != null && (!core.int.is(offset) || dart.notNull(offset) < 0)) {
      dart.throw(new core.ArgumentError.new("Invalid offset parameter in SecureSocket.read (offset: " + dart.str(offset) + ")"));
    }
    if (dart.test(this[_closedWrite])) {
      this[_controller$].addError(new io.SocketException.new("Writing to a closed socket"));
      return 0;
    }
    if (this[_status] !== 202) return 0;
    let t = offset;
    t == null ? offset = 0 : t;
    let t$ = bytes;
    t$ == null ? bytes = dart.notNull(data[$length]) - dart.notNull(offset) : t$;
    let written = this[_secureFilter].buffers[$_get](1).write(data, offset, bytes);
    if (dart.notNull(written) > 0) {
      this[_filterStatus].writeEmpty = false;
    }
    this[_scheduleFilter]();
    return written;
  }
  get peerCertificate() {
    return this[_secureFilter].peerCertificate;
  }
  get selectedProtocol() {
    return this[_selectedProtocol];
  }
  [_onBadCertificateWrapper](certificate) {
    if (this.onBadCertificate == null) return false;
    let result = dart.dcall(this.onBadCertificate, [certificate]);
    if (typeof result == 'boolean') return result;
    dart.throw(new io.HandshakeException.new("onBadCertificate callback returned non-boolean " + dart.str(result)));
  }
  setOption(option, enabled) {
    if (this[_socket] == null) return false;
    return this[_socket].setOption(option, enabled);
  }
  getRawOption(option) {
    let t = this[_socket];
    return t == null ? null : t.getRawOption(option);
  }
  setRawOption(option) {
    let t = this[_socket];
    t == null ? null : t.setRawOption(option);
  }
  [_eventDispatcher](event) {
    try {
      if (dart.equals(event, io.RawSocketEvent.read)) {
        this[_readHandler]();
      } else if (dart.equals(event, io.RawSocketEvent.write)) {
        this[_writeHandler]();
      } else if (dart.equals(event, io.RawSocketEvent.readClosed)) {
        this[_closeHandler]();
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stackTrace = dart.stackTrace(e$);
      this[_reportError](e, stackTrace);
    }
  }
  [_readHandler]() {
    this[_readSocket]();
    this[_scheduleFilter]();
  }
  [_writeHandler]() {
    this[_writeSocket]();
    this[_scheduleFilter]();
  }
  [_doneHandler]() {
    if (dart.test(this[_filterStatus].readEmpty)) {
      this[_close$]();
    }
  }
  [_reportError](e, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    if (this[_status] === 203) {
      return;
    } else if (dart.test(this[_connectPending])) {
      this[_handshakeComplete].completeError(e, stackTrace);
    } else {
      this[_controller$].addError(e, stackTrace);
    }
    this[_close$]();
  }
  [_closeHandler]() {
    if (this[_status] === 202) {
      if (dart.test(this[_closedRead])) return;
      this[_socketClosedRead] = true;
      if (dart.test(this[_filterStatus].readEmpty)) {
        this[_closedRead] = true;
        this[_controller$].add(io.RawSocketEvent.readClosed);
        if (dart.test(this[_socketClosedWrite])) {
          this[_close$]();
        }
      } else {
        this[_scheduleFilter]();
      }
    } else if (this[_status] === 201) {
      this[_socketClosedRead] = true;
      if (dart.test(this[_filterStatus].readEmpty)) {
        this[_reportError](new io.HandshakeException.new("Connection terminated during handshake"), null);
      } else {
        this[_secureHandshake]();
      }
    }
  }
  [_secureHandshake]() {
    try {
      this[_secureFilter].handshake();
      this[_filterStatus].writeEmpty = false;
      this[_readSocket]();
      this[_writeSocket]();
      this[_scheduleFilter]();
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stackTrace = dart.stackTrace(e$);
      this[_reportError](e, stackTrace);
    }
  }
  renegotiate(opts) {
    let useSessionCache = opts && 'useSessionCache' in opts ? opts.useSessionCache : true;
    let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
    let requireClientCertificate = opts && 'requireClientCertificate' in opts ? opts.requireClientCertificate : false;
    if (this[_status] !== 202) {
      dart.throw(new io.HandshakeException.new("Called renegotiate on a non-connected socket"));
    }
    this[_secureFilter].renegotiate(useSessionCache, requestClientCertificate, requireClientCertificate);
    this[_status] = 201;
    this[_filterStatus].writeEmpty = false;
    this[_scheduleFilter]();
  }
  [_secureHandshakeCompleteHandler]() {
    this[_status] = 202;
    if (dart.test(this[_connectPending])) {
      this[_connectPending] = false;
      try {
        this[_selectedProtocol] = this[_secureFilter].selectedProtocol();
        async.Timer.run(dart.fn(() => this[_handshakeComplete].complete(this), VoidTovoid()));
      } catch (e) {
        let error = dart.getThrown(e);
        let stack = dart.stackTrace(e);
        this[_handshakeComplete].completeError(error, stack);
      }
    }
  }
  [_onPauseStateChange]() {
    if (dart.test(this[_controller$].isPaused)) {
      this[_pauseCount] = dart.notNull(this[_pauseCount]) + 1;
    } else {
      this[_pauseCount] = dart.notNull(this[_pauseCount]) - 1;
      if (this[_pauseCount] === 0) {
        this[_scheduleReadEvent]();
        this[_sendWriteEvent]();
      }
    }
    if (!dart.test(this[_socketClosedRead]) || !dart.test(this[_socketClosedWrite])) {
      if (dart.test(this[_controller$].isPaused)) {
        this[_socketSubscription].pause();
      } else {
        this[_socketSubscription].resume();
      }
    }
  }
  [_onSubscriptionStateChange]() {
    if (dart.test(this[_controller$].hasListener)) {
    }
  }
  [_scheduleFilter]() {
    this[_filterPending] = true;
    this[_tryFilter]();
  }
  [_tryFilter]() {
    if (this[_status] === 203) {
      return;
    }
    if (dart.test(this[_filterPending]) && !dart.test(this[_filterActive])) {
      this[_filterActive] = true;
      this[_filterPending] = false;
      FutureOfNull()._check(this[_pushAllFilterStages]().then(core.Null, dart.fn(status => {
        this[_filterStatus] = status;
        this[_filterActive] = false;
        if (this[_status] === 203) {
          this[_secureFilter].destroy();
          this[_secureFilter] = null;
          return;
        }
        this[_socket].readEventsEnabled = true;
        if (dart.test(this[_filterStatus].writeEmpty) && dart.test(this[_closedWrite]) && !dart.test(this[_socketClosedWrite])) {
          this.shutdown(io.SocketDirection.send);
          if (this[_status] === 203) {
            return;
          }
        }
        if (dart.test(this[_filterStatus].readEmpty) && dart.test(this[_socketClosedRead]) && !dart.test(this[_closedRead])) {
          if (this[_status] === 201) {
            this[_secureFilter].handshake();
            if (this[_status] === 201) {
              dart.throw(new io.HandshakeException.new("Connection terminated during handshake"));
            }
          }
          this[_closeHandler]();
        }
        if (this[_status] === 203) {
          return;
        }
        if (dart.test(this[_filterStatus].progress)) {
          this[_filterPending] = true;
          if (dart.test(this[_filterStatus].writeEncryptedNoLongerEmpty)) {
            this[_writeSocket]();
          }
          if (dart.test(this[_filterStatus].writePlaintextNoLongerFull)) {
            this[_sendWriteEvent]();
          }
          if (dart.test(this[_filterStatus].readEncryptedNoLongerFull)) {
            this[_readSocket]();
          }
          if (dart.test(this[_filterStatus].readPlaintextNoLongerEmpty)) {
            this[_scheduleReadEvent]();
          }
          if (this[_status] === 201) {
            this[_secureHandshake]();
          }
        }
        this[_tryFilter]();
      }, _FilterStatusToNull()))).catchError(dart.bind(this, _reportError));
    }
  }
  [_readSocketOrBufferedData](bytes) {
    if (this[_bufferedData] != null) {
      if (dart.notNull(bytes) > dart.notNull(this[_bufferedData][$length]) - dart.notNull(this[_bufferedDataIndex])) {
        bytes = dart.notNull(this[_bufferedData][$length]) - dart.notNull(this[_bufferedDataIndex]);
      }
      let result = this[_bufferedData][$sublist](this[_bufferedDataIndex], dart.notNull(this[_bufferedDataIndex]) + dart.notNull(bytes));
      this[_bufferedDataIndex] = dart.notNull(this[_bufferedDataIndex]) + dart.notNull(bytes);
      if (this[_bufferedData][$length] == this[_bufferedDataIndex]) {
        this[_bufferedData] = null;
      }
      return result;
    } else if (!dart.test(this[_socketClosedRead])) {
      return this[_socket].read(bytes);
    } else {
      return null;
    }
  }
  [_readSocket]() {
    if (this[_status] === 203) return;
    let buffer = this[_secureFilter].buffers[$_get](2);
    if (dart.notNull(buffer.writeFromSource(dart.bind(this, _readSocketOrBufferedData))) > 0) {
      this[_filterStatus].readEmpty = false;
    } else {
      this[_socket].readEventsEnabled = false;
    }
  }
  [_writeSocket]() {
    if (dart.test(this[_socketClosedWrite])) return;
    let buffer = this[_secureFilter].buffers[$_get](3);
    if (dart.test(buffer.readToSocket(this[_socket]))) {
      this[_socket].writeEventsEnabled = true;
    }
  }
  [_scheduleReadEvent]() {
    if (!dart.test(this[_pendingReadEvent]) && dart.test(this[_readEventsEnabled]) && this[_pauseCount] === 0 && this[_secureFilter] != null && !dart.test(this[_secureFilter].buffers[$_get](0).isEmpty)) {
      this[_pendingReadEvent] = true;
      async.Timer.run(dart.bind(this, _sendReadEvent));
    }
  }
  [_sendReadEvent]() {
    this[_pendingReadEvent] = false;
    if (this[_status] !== 203 && dart.test(this[_readEventsEnabled]) && this[_pauseCount] === 0 && this[_secureFilter] != null && !dart.test(this[_secureFilter].buffers[$_get](0).isEmpty)) {
      this[_controller$].add(io.RawSocketEvent.read);
      this[_scheduleReadEvent]();
    }
  }
  [_sendWriteEvent]() {
    if (!dart.test(this[_closedWrite]) && dart.test(this[_writeEventsEnabled]) && this[_pauseCount] === 0 && this[_secureFilter] != null && dart.notNull(this[_secureFilter].buffers[$_get](1).free) > 0) {
      this[_writeEventsEnabled] = false;
      this[_controller$].add(io.RawSocketEvent.write);
    }
  }
  [_pushAllFilterStages]() {
    let wasInHandshake = this[_status] !== 202;
    let args = core.List.new(2 + 4 * 2);
    args[$_set](0, this[_secureFilter][_pointer]());
    args[$_set](1, wasInHandshake);
    let bufs = this[_secureFilter].buffers;
    for (let i = 0; i < 4; ++i) {
      args[$_set](2 * i + 2, bufs[$_get](i).start);
      args[$_set](2 * i + 3, bufs[$_get](i).end);
    }
    return FutureOf_FilterStatus()._check(io._IOService._dispatch(io._IOService.sslProcessFilter, args).then(io._FilterStatus, dart.fn(response => {
      if (dart.equals(dart.dload(response, 'length'), 2)) {
        if (wasInHandshake) {
          this[_reportError](new io.HandshakeException.new(dart.str(dart.dindex(response, 1)) + " error " + dart.str(dart.dindex(response, 0))), null);
        } else {
          this[_reportError](new io.TlsException.new(dart.str(dart.dindex(response, 1)) + " error " + dart.str(dart.dindex(response, 0))), null);
        }
      }
      function start(index) {
        return core.int._check(dart.dindex(response, 2 * dart.notNull(index)));
      }
      dart.fn(start, intToint());
      function end(index) {
        return core.int._check(dart.dindex(response, 2 * dart.notNull(index) + 1));
      }
      dart.fn(end, intToint());
      let status = new io._FilterStatus.new();
      status.writeEmpty = dart.test(bufs[$_get](1).isEmpty) && start(3) == end(3);
      if (wasInHandshake) status.writeEmpty = false;
      status.readEmpty = dart.test(bufs[$_get](2).isEmpty) && start(0) == end(0);
      let buffer = bufs[$_get](1);
      let new_start = start(1);
      if (new_start != buffer.start) {
        status.progress = true;
        if (buffer.free === 0) {
          status.writePlaintextNoLongerFull = true;
        }
        buffer.start = new_start;
      }
      buffer = bufs[$_get](2);
      new_start = start(2);
      if (new_start != buffer.start) {
        status.progress = true;
        if (buffer.free === 0) {
          status.readEncryptedNoLongerFull = true;
        }
        buffer.start = new_start;
      }
      buffer = bufs[$_get](3);
      let new_end = end(3);
      if (new_end != buffer.end) {
        status.progress = true;
        if (buffer.length === 0) {
          status.writeEncryptedNoLongerEmpty = true;
        }
        buffer.end = new_end;
      }
      buffer = bufs[$_get](0);
      new_end = end(0);
      if (new_end != buffer.end) {
        status.progress = true;
        if (buffer.length === 0) {
          status.readPlaintextNoLongerEmpty = true;
        }
        buffer.end = new_end;
      }
      return status;
    }, dynamicTo_FilterStatus())));
  }
};
(io._RawSecureSocket.new = function(address, requestedPort, is_server, context, socket, socketSubscription, bufferedData, requestClientCertificate, requireClientCertificate, onBadCertificate, supportedProtocols) {
  this[_handshakeComplete] = CompleterOf_RawSecureSocket().new();
  this[_controller$] = null;
  this[_stream$] = null;
  this[_bufferedDataIndex] = 0;
  this[_status] = 201;
  this[_writeEventsEnabled] = true;
  this[_readEventsEnabled] = true;
  this[_pauseCount] = 0;
  this[_pendingReadEvent] = false;
  this[_socketClosedRead] = false;
  this[_socketClosedWrite] = false;
  this[_closedRead] = false;
  this[_closedWrite] = false;
  this[_closeCompleter] = CompleterOfRawSecureSocket().new();
  this[_filterStatus] = new io._FilterStatus.new();
  this[_connectPending] = true;
  this[_filterPending] = false;
  this[_filterActive] = false;
  this[_secureFilter] = io._SecureFilter.new();
  this[_selectedProtocol] = null;
  this.address = address;
  this.is_server = is_server;
  this.context = context;
  this[_socket] = socket;
  this[_socketSubscription] = socketSubscription;
  this[_bufferedData] = bufferedData;
  this.requestClientCertificate = requestClientCertificate;
  this.requireClientCertificate = requireClientCertificate;
  this.onBadCertificate = onBadCertificate;
  io._RawSecureSocket.__proto__.new.call(this);
  let t = this.context;
  t == null ? this.context = io.SecurityContext.defaultContext : t;
  this[_controller$] = StreamControllerOfRawSocketEvent().new({sync: true, onListen: dart.bind(this, _onSubscriptionStateChange), onPause: dart.bind(this, _onPauseStateChange), onResume: dart.bind(this, _onPauseStateChange), onCancel: dart.bind(this, _onSubscriptionStateChange)});
  this[_stream$] = this[_controller$].stream;
  this[_secureFilter].init();
  this[_secureFilter].registerHandshakeCompleteCallback(dart.bind(this, _secureHandshakeCompleteHandler));
  if (this.onBadCertificate != null) {
    this[_secureFilter].registerBadCertificateCallback(dart.bind(this, _onBadCertificateWrapper));
  }
  this[_socket].readEventsEnabled = true;
  this[_socket].writeEventsEnabled = false;
  if (this[_socketSubscription] == null) {
    this[_socketSubscription] = this[_socket].listen(dart.bind(this, _eventDispatcher), {onError: dart.bind(this, _reportError), onDone: dart.bind(this, _doneHandler)});
  } else {
    if (dart.test(this[_socketSubscription].isPaused)) {
      this[_socket].close();
      dart.throw(new core.ArgumentError.new("Subscription passed to TLS upgrade is paused"));
    }
    let s = this[_socket];
    if (dart.dtest(dart.dload(dart.dload(s, _socket), 'closedReadEventSent'))) {
      this[_eventDispatcher](io.RawSocketEvent.readClosed);
    }
    let _ = this[_socketSubscription];
    _.onData(dart.bind(this, _eventDispatcher));
    _.onError(dart.bind(this, _reportError));
    _.onDone(dart.bind(this, _doneHandler));
  }
  try {
    let encodedProtocols = io.SecurityContext._protocolsToLengthEncoding(supportedProtocols);
    this[_secureFilter].connect(this.address.host, this.context, this.is_server, dart.test(this.requestClientCertificate) || dart.test(this.requireClientCertificate), this.requireClientCertificate, encodedProtocols);
    this[_secureHandshake]();
  } catch (e$) {
    let e = dart.getThrown(e$);
    let s = dart.stackTrace(e$);
    this[_reportError](e, s);
  }
}).prototype = io._RawSecureSocket.prototype;
dart.addTypeTests(io._RawSecureSocket);
io._RawSecureSocket[dart.implements] = () => [io.RawSecureSocket];
dart.setMethodSignature(io._RawSecureSocket, () => ({
  __proto__: dart.getMethods(io._RawSecureSocket.__proto__),
  listen: dart.fnType(async.StreamSubscription$(io.RawSocketEvent), [dart.fnType(dart.void, [io.RawSocketEvent])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
  available: dart.fnType(core.int, []),
  close: dart.fnType(async.Future$(io.RawSecureSocket), []),
  [_completeCloseCompleter]: dart.fnType(dart.void, [], [io.RawSocket]),
  [_close$]: dart.fnType(dart.void, []),
  shutdown: dart.fnType(dart.void, [io.SocketDirection]),
  read: dart.fnType(core.List$(core.int), [], [core.int]),
  write: dart.fnType(core.int, [core.List$(core.int)], [core.int, core.int]),
  [_onBadCertificateWrapper]: dart.fnType(core.bool, [io.X509Certificate]),
  setOption: dart.fnType(core.bool, [io.SocketOption, core.bool]),
  getRawOption: dart.fnType(typed_data.Uint8List, [io.RawSocketOption]),
  setRawOption: dart.fnType(dart.void, [io.RawSocketOption]),
  [_eventDispatcher]: dart.fnType(dart.void, [io.RawSocketEvent]),
  [_readHandler]: dart.fnType(dart.void, []),
  [_writeHandler]: dart.fnType(dart.void, []),
  [_doneHandler]: dart.fnType(dart.void, []),
  [_reportError]: dart.fnType(dart.void, [dart.dynamic], [core.StackTrace]),
  [_closeHandler]: dart.fnType(dart.void, []),
  [_secureHandshake]: dart.fnType(dart.void, []),
  renegotiate: dart.fnType(dart.void, [], {useSessionCache: core.bool, requestClientCertificate: core.bool, requireClientCertificate: core.bool}),
  [_secureHandshakeCompleteHandler]: dart.fnType(dart.void, []),
  [_onPauseStateChange]: dart.fnType(dart.void, []),
  [_onSubscriptionStateChange]: dart.fnType(dart.void, []),
  [_scheduleFilter]: dart.fnType(dart.void, []),
  [_tryFilter]: dart.fnType(dart.void, []),
  [_readSocketOrBufferedData]: dart.fnType(core.List$(core.int), [core.int]),
  [_readSocket]: dart.fnType(dart.void, []),
  [_writeSocket]: dart.fnType(dart.void, []),
  [_scheduleReadEvent]: dart.fnType(dart.dynamic, []),
  [_sendReadEvent]: dart.fnType(dart.dynamic, []),
  [_sendWriteEvent]: dart.fnType(dart.dynamic, []),
  [_pushAllFilterStages]: dart.fnType(async.Future$(io._FilterStatus), [])
}));
dart.setGetterSignature(io._RawSecureSocket, () => ({
  __proto__: dart.getGetters(io._RawSecureSocket.__proto__),
  port: core.int,
  remoteAddress: io.InternetAddress,
  remotePort: core.int,
  writeEventsEnabled: core.bool,
  readEventsEnabled: core.bool,
  peerCertificate: io.X509Certificate,
  selectedProtocol: core.String
}));
dart.setSetterSignature(io._RawSecureSocket, () => ({
  __proto__: dart.getSetters(io._RawSecureSocket.__proto__),
  [_owner]: dart.dynamic,
  writeEventsEnabled: core.bool,
  readEventsEnabled: core.bool
}));
dart.setFieldSignature(io._RawSecureSocket, () => ({
  __proto__: dart.getFields(io._RawSecureSocket.__proto__),
  [_socket]: dart.fieldType(io.RawSocket),
  [_handshakeComplete]: dart.finalFieldType(CompleterOf_RawSecureSocket()),
  [_controller$]: dart.fieldType(StreamControllerOfRawSocketEvent()),
  [_stream$]: dart.fieldType(StreamOfRawSocketEvent()),
  [_socketSubscription]: dart.fieldType(StreamSubscriptionOfRawSocketEvent()),
  [_bufferedData]: dart.fieldType(ListOfint()),
  [_bufferedDataIndex]: dart.fieldType(core.int),
  address: dart.finalFieldType(io.InternetAddress),
  is_server: dart.finalFieldType(core.bool),
  context: dart.fieldType(io.SecurityContext),
  requestClientCertificate: dart.finalFieldType(core.bool),
  requireClientCertificate: dart.finalFieldType(core.bool),
  onBadCertificate: dart.finalFieldType(core.Function),
  [_status]: dart.fieldType(core.int),
  [_writeEventsEnabled]: dart.fieldType(core.bool),
  [_readEventsEnabled]: dart.fieldType(core.bool),
  [_pauseCount]: dart.fieldType(core.int),
  [_pendingReadEvent]: dart.fieldType(core.bool),
  [_socketClosedRead]: dart.fieldType(core.bool),
  [_socketClosedWrite]: dart.fieldType(core.bool),
  [_closedRead]: dart.fieldType(core.bool),
  [_closedWrite]: dart.fieldType(core.bool),
  [_closeCompleter]: dart.fieldType(CompleterOfRawSecureSocket()),
  [_filterStatus]: dart.fieldType(io._FilterStatus),
  [_connectPending]: dart.fieldType(core.bool),
  [_filterPending]: dart.fieldType(core.bool),
  [_filterActive]: dart.fieldType(core.bool),
  [_secureFilter]: dart.fieldType(io._SecureFilter),
  [_selectedProtocol]: dart.fieldType(core.String)
}));
dart.defineLazy(io._RawSecureSocket, {
  /*io._RawSecureSocket.handshakeStatus*/get handshakeStatus() {
    return 201;
  },
  /*io._RawSecureSocket.connectedStatus*/get connectedStatus() {
    return 202;
  },
  /*io._RawSecureSocket.closedStatus*/get closedStatus() {
    return 203;
  },
  /*io._RawSecureSocket.readPlaintextId*/get readPlaintextId() {
    return 0;
  },
  /*io._RawSecureSocket.writePlaintextId*/get writePlaintextId() {
    return 1;
  },
  /*io._RawSecureSocket.readEncryptedId*/get readEncryptedId() {
    return 2;
  },
  /*io._RawSecureSocket.writeEncryptedId*/get writeEncryptedId() {
    return 3;
  },
  /*io._RawSecureSocket.bufferCount*/get bufferCount() {
    return 4;
  }
});
io._ExternalBuffer = class _ExternalBuffer extends core.Object {
  advanceStart(bytes) {
    if (!(dart.notNull(this.start) > dart.notNull(this.end) || dart.notNull(this.start) + dart.notNull(bytes) <= dart.notNull(this.end))) dart.assertFailed();
    this.start = dart.notNull(this.start) + dart.notNull(bytes);
    if (dart.notNull(this.start) >= dart.notNull(core.num._check(this.size))) {
      this.start = dart.notNull(this.start) - dart.notNull(core.num._check(this.size));
      if (!(dart.notNull(this.start) <= dart.notNull(this.end))) dart.assertFailed();
      if (!(dart.notNull(this.start) < dart.notNull(core.num._check(this.size)))) dart.assertFailed();
    }
  }
  advanceEnd(bytes) {
    if (!(dart.notNull(this.start) <= dart.notNull(this.end) || dart.notNull(this.start) > dart.notNull(this.end) + dart.notNull(bytes))) dart.assertFailed();
    this.end = dart.notNull(this.end) + dart.notNull(bytes);
    if (dart.notNull(this.end) >= dart.notNull(core.num._check(this.size))) {
      this.end = dart.notNull(this.end) - dart.notNull(core.num._check(this.size));
      if (!(dart.notNull(this.end) < dart.notNull(this.start))) dart.assertFailed();
      if (!(dart.notNull(this.end) < dart.notNull(core.num._check(this.size)))) dart.assertFailed();
    }
  }
  get isEmpty() {
    return this.end == this.start;
  }
  get length() {
    return core.int._check(dart.notNull(this.start) > dart.notNull(this.end) ? dart.dsend(dart.dsend(this.size, '+', [this.end]), '-', [this.start]) : dart.notNull(this.end) - dart.notNull(this.start));
  }
  get linearLength() {
    return core.int._check(dart.notNull(this.start) > dart.notNull(this.end) ? dart.dsend(this.size, '-', [this.start]) : dart.notNull(this.end) - dart.notNull(this.start));
  }
  get free() {
    return core.int._check(dart.notNull(this.start) > dart.notNull(this.end) ? dart.notNull(this.start) - dart.notNull(this.end) - 1 : dart.dsend(dart.dsend(dart.dsend(this.size, '+', [this.start]), '-', [this.end]), '-', [1]));
  }
  get linearFree() {
    if (dart.notNull(this.start) > dart.notNull(this.end)) return dart.notNull(this.start) - dart.notNull(this.end) - 1;
    if (this.start === 0) return core.int._check(dart.dsend(dart.dsend(this.size, '-', [this.end]), '-', [1]));
    return core.int._check(dart.dsend(this.size, '-', [this.end]));
  }
  read(bytes) {
    if (bytes == null) {
      bytes = this.length;
    } else {
      bytes = math.min(core.int, bytes, this.length);
    }
    if (bytes === 0) return null;
    let result = typed_data.Uint8List.new(bytes);
    let bytesRead = 0;
    while (bytesRead < dart.notNull(bytes)) {
      let toRead = math.min(core.int, dart.notNull(bytes) - bytesRead, this.linearLength);
      result[$setRange](bytesRead, bytesRead + toRead, this.data, this.start);
      this.advanceStart(toRead);
      bytesRead = bytesRead + toRead;
    }
    return result;
  }
  write(inputData, offset, bytes) {
    if (dart.notNull(bytes) > dart.notNull(this.free)) {
      bytes = this.free;
    }
    let written = 0;
    let toWrite = math.min(core.int, bytes, this.linearFree);
    while (toWrite > 0) {
      this.data[$setRange](this.end, dart.notNull(this.end) + toWrite, inputData, offset);
      this.advanceEnd(toWrite);
      offset = dart.notNull(offset) + toWrite;
      written = written + toWrite;
      toWrite = math.min(core.int, dart.notNull(bytes) - written, this.linearFree);
    }
    return written;
  }
  writeFromSource(getData) {
    let written = 0;
    let toWrite = this.linearFree;
    while (dart.notNull(toWrite) > 0) {
      let inputData = getData(toWrite);
      if (inputData == null || inputData[$length] === 0) break;
      let len = inputData[$length];
      this.data[$setRange](this.end, dart.notNull(this.end) + dart.notNull(len), inputData);
      this.advanceEnd(len);
      written = written + dart.notNull(len);
      toWrite = this.linearFree;
    }
    return written;
  }
  readToSocket(socket) {
    while (true) {
      let toWrite = this.linearLength;
      if (toWrite === 0) return false;
      let bytes = socket.write(this.data, this.start, toWrite);
      this.advanceStart(bytes);
      if (dart.notNull(bytes) < dart.notNull(toWrite)) {
        return true;
      }
    }
  }
};
(io._ExternalBuffer.new = function(size) {
  this.data = null;
  this.start = null;
  this.end = null;
  this.size = size;
  this.start = core.int._check(this.end = core.int._check(dart.dsend(this.size, '~/', [2])));
}).prototype = io._ExternalBuffer.prototype;
dart.addTypeTests(io._ExternalBuffer);
dart.setMethodSignature(io._ExternalBuffer, () => ({
  __proto__: dart.getMethods(io._ExternalBuffer.__proto__),
  advanceStart: dart.fnType(dart.void, [core.int]),
  advanceEnd: dart.fnType(dart.void, [core.int]),
  read: dart.fnType(core.List$(core.int), [core.int]),
  write: dart.fnType(core.int, [core.List$(core.int), core.int, core.int]),
  writeFromSource: dart.fnType(core.int, [dart.fnType(core.List$(core.int), [core.int])]),
  readToSocket: dart.fnType(core.bool, [io.RawSocket])
}));
dart.setGetterSignature(io._ExternalBuffer, () => ({
  __proto__: dart.getGetters(io._ExternalBuffer.__proto__),
  isEmpty: core.bool,
  length: core.int,
  linearLength: core.int,
  free: core.int,
  linearFree: core.int
}));
dart.setFieldSignature(io._ExternalBuffer, () => ({
  __proto__: dart.getFields(io._ExternalBuffer.__proto__),
  data: dart.fieldType(ListOfint()),
  start: dart.fieldType(core.int),
  end: dart.fieldType(core.int),
  size: dart.finalFieldType(dart.dynamic)
}));
io._SecureFilter = class _SecureFilter extends core.Object {
  static new() {
    dart.throw(new core.UnsupportedError.new("_SecureFilter._SecureFilter"));
  }
};
(io._SecureFilter[dart.mixinNew] = function() {
}).prototype = io._SecureFilter.prototype;
dart.addTypeTests(io._SecureFilter);
io.TlsException = class TlsException extends core.Object {
  get type() {
    return this[type$1];
  }
  set type(value) {
    super.type = value;
  }
  get message() {
    return this[message$11];
  }
  set message(value) {
    super.message = value;
  }
  get osError() {
    return this[osError$1];
  }
  set osError(value) {
    super.osError = value;
  }
  toString() {
    let sb = new core.StringBuffer.new();
    sb.write(this.type);
    if (this.message[$isNotEmpty]) {
      sb.write(": " + dart.str(this.message));
      if (this.osError != null) {
        sb.write(" (" + dart.str(this.osError) + ")");
      }
    } else if (this.osError != null) {
      sb.write(": " + dart.str(this.osError));
    }
    return sb.toString();
  }
};
(io.TlsException.new = function(message, osError) {
  if (message === void 0) message = "";
  if (osError === void 0) osError = null;
  io.TlsException.__.call(this, "TlsException", message, osError);
}).prototype = io.TlsException.prototype;
(io.TlsException.__ = function(type, message, osError) {
  this[type$1] = type;
  this[message$11] = message;
  this[osError$1] = osError;
}).prototype = io.TlsException.prototype;
dart.addTypeTests(io.TlsException);
const type$1 = Symbol("TlsException.type");
const message$11 = Symbol("TlsException.message");
const osError$1 = Symbol("TlsException.osError");
io.TlsException[dart.implements] = () => [io.IOException];
dart.setFieldSignature(io.TlsException, () => ({
  __proto__: dart.getFields(io.TlsException.__proto__),
  type: dart.finalFieldType(core.String),
  message: dart.finalFieldType(core.String),
  osError: dart.finalFieldType(io.OSError)
}));
dart.defineExtensionMethods(io.TlsException, ['toString']);
io.HandshakeException = class HandshakeException extends io.TlsException {};
(io.HandshakeException.new = function(message, osError) {
  if (message === void 0) message = "";
  if (osError === void 0) osError = null;
  io.HandshakeException.__proto__.__.call(this, "HandshakeException", message, osError);
}).prototype = io.HandshakeException.prototype;
dart.addTypeTests(io.HandshakeException);
io.CertificateException = class CertificateException extends io.TlsException {};
(io.CertificateException.new = function(message, osError) {
  if (message === void 0) message = "";
  if (osError === void 0) osError = null;
  io.CertificateException.__proto__.__.call(this, "CertificateException", message, osError);
}).prototype = io.CertificateException.prototype;
dart.addTypeTests(io.CertificateException);
io.SecurityContext = class SecurityContext extends core.Object {
  static new(opts) {
    let withTrustedRoots = opts && 'withTrustedRoots' in opts ? opts.withTrustedRoots : false;
    dart.throw(new core.UnsupportedError.new("SecurityContext constructor"));
  }
  static get defaultContext() {
    dart.throw(new core.UnsupportedError.new("default SecurityContext getter"));
  }
  static get alpnSupported() {
    dart.throw(new core.UnsupportedError.new("SecurityContext alpnSupported getter"));
  }
  static _protocolsToLengthEncoding(protocols) {
    if (protocols == null || protocols[$length] === 0) {
      return typed_data.Uint8List.new(0);
    }
    let protocolsLength = protocols[$length];
    let expectedLength = protocolsLength;
    for (let i = 0; i < dart.notNull(protocolsLength); i++) {
      let length = protocols[$_get](i).length;
      if (length > 0 && length <= 255) {
        expectedLength = dart.notNull(expectedLength) + length;
      } else {
        dart.throw(new core.ArgumentError.new("Length of protocol must be between 1 and 255 (was: " + dart.str(length) + ")."));
      }
    }
    if (dart.notNull(expectedLength) >= 1 << 13) {
      dart.throw(new core.ArgumentError.new("The maximum message length supported is 2^13-1."));
    }
    let bytes = typed_data.Uint8List.new(expectedLength);
    let bytesOffset = 0;
    for (let i = 0; i < dart.notNull(protocolsLength); i++) {
      let proto = protocols[$_get](i);
      bytes[$_set](bytesOffset++, proto.length);
      let bits = 0;
      for (let j = 0; j < proto.length; j++) {
        let char = proto[$codeUnitAt](j);
        bits = (bits | char) >>> 0;
        bytes[$_set](bytesOffset++, char & 255);
      }
      if (bits > 127) {
        return io.SecurityContext._protocolsToLengthEncodingNonAsciiBailout(protocols);
      }
    }
    return bytes;
  }
  static _protocolsToLengthEncodingNonAsciiBailout(protocols) {
    function addProtocol(outBytes, protocol) {
      let protocolBytes = convert.utf8.encode(protocol);
      let len = protocolBytes[$length];
      if (dart.notNull(len) > 255) {
        dart.throw(new core.ArgumentError.new("Length of protocol must be between 1 and 255 (was: " + dart.str(len) + ")"));
      }
      outBytes[$add](len);
      outBytes[$addAll](protocolBytes);
    }
    dart.fn(addProtocol, ListOfintAndStringTovoid());
    let bytes = JSArrayOfint().of([]);
    for (let i = 0; i < dart.notNull(protocols[$length]); i++) {
      addProtocol(bytes, protocols[$_get](i));
    }
    if (dart.notNull(bytes[$length]) >= 1 << 13) {
      dart.throw(new core.ArgumentError.new("The maximum message length supported is 2^13-1."));
    }
    return typed_data.Uint8List.fromList(bytes);
  }
};
(io.SecurityContext[dart.mixinNew] = function() {
}).prototype = io.SecurityContext.prototype;
dart.addTypeTests(io.SecurityContext);
dart.defineLazy(io, {
  /*io._nextServiceId*/get _nextServiceId() {
    return 1;
  },
  set _nextServiceId(_) {}
});
const __serviceId = Symbol('__serviceId');
const _serviceId = Symbol('_serviceId');
const _serviceTypePath = Symbol('_serviceTypePath');
const _servicePath = Symbol('_servicePath');
const _serviceTypeName = Symbol('_serviceTypeName');
const _serviceType = Symbol('_serviceType');
io._ServiceObject = class _ServiceObject extends core.Object {
  get [_serviceId]() {
    if (this[__serviceId] === 0) {
      let x = io._nextServiceId;
      io._nextServiceId = dart.notNull(x) + 1;
      this[__serviceId] = x;
    }
    return this[__serviceId];
  }
  get [_servicePath]() {
    return dart.str(this[_serviceTypePath]) + "/" + dart.str(this[_serviceId]);
  }
  [_serviceType](ref) {
    if (dart.test(ref)) return "@" + dart.str(this[_serviceTypeName]);
    return this[_serviceTypeName];
  }
};
(io._ServiceObject.new = function() {
  this[__serviceId] = 0;
}).prototype = io._ServiceObject.prototype;
dart.addTypeTests(io._ServiceObject);
dart.setMethodSignature(io._ServiceObject, () => ({
  __proto__: dart.getMethods(io._ServiceObject.__proto__),
  [_serviceType]: dart.fnType(core.String, [core.bool])
}));
dart.setGetterSignature(io._ServiceObject, () => ({
  __proto__: dart.getGetters(io._ServiceObject.__proto__),
  [_serviceId]: core.int,
  [_servicePath]: core.String
}));
dart.setFieldSignature(io._ServiceObject, () => ({
  __proto__: dart.getFields(io._ServiceObject.__proto__),
  [__serviceId]: dart.fieldType(core.int)
}));
io.InternetAddressType = class InternetAddressType extends core.Object {
  static _from(value) {
    if (value === 0) return io.InternetAddressType.IPv4;
    if (value === 1) return io.InternetAddressType.IPv6;
    dart.throw(new core.ArgumentError.new("Invalid type: " + dart.str(value)));
  }
  get name() {
    switch (this[_value$2]) {
      case -1:
      {
        return "ANY";
      }
      case 0:
      {
        return "IPv4";
      }
      case 1:
      {
        return "IPv6";
      }
      default:
      {
        dart.throw(new core.ArgumentError.new("Invalid InternetAddress"));
      }
    }
  }
  toString() {
    return "InternetAddressType: " + dart.str(this.name);
  }
};
(io.InternetAddressType.__ = function(value) {
  this[_value$2] = value;
}).prototype = io.InternetAddressType.prototype;
dart.addTypeTests(io.InternetAddressType);
dart.setGetterSignature(io.InternetAddressType, () => ({
  __proto__: dart.getGetters(io.InternetAddressType.__proto__),
  name: core.String
}));
dart.setFieldSignature(io.InternetAddressType, () => ({
  __proto__: dart.getFields(io.InternetAddressType.__proto__),
  [_value$2]: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(io.InternetAddressType, ['toString']);
dart.defineLazy(io.InternetAddressType, {
  /*io.InternetAddressType.IPv4*/get IPv4() {
    return dart.const(new io.InternetAddressType.__(0));
  },
  /*io.InternetAddressType.IPv6*/get IPv6() {
    return dart.const(new io.InternetAddressType.__(1));
  },
  /*io.InternetAddressType.any*/get any() {
    return dart.const(new io.InternetAddressType.__(-1));
  },
  /*io.InternetAddressType.IP_V4*/get IP_V4() {
    return io.InternetAddressType.IPv4;
  },
  /*io.InternetAddressType.IP_V6*/get IP_V6() {
    return io.InternetAddressType.IPv6;
  },
  /*io.InternetAddressType.ANY*/get ANY() {
    return io.InternetAddressType.any;
  }
});
io.InternetAddress = class InternetAddress extends core.Object {
  static get loopbackIPv4() {
    return io.InternetAddress.LOOPBACK_IP_V4;
  }
  static get LOOPBACK_IP_V4() {
    dart.throw(new core.UnsupportedError.new("InternetAddress.LOOPBACK_IP_V4"));
  }
  static get loopbackIPv6() {
    return io.InternetAddress.LOOPBACK_IP_V6;
  }
  static get LOOPBACK_IP_V6() {
    dart.throw(new core.UnsupportedError.new("InternetAddress.LOOPBACK_IP_V6"));
  }
  static get anyIPv4() {
    return io.InternetAddress.ANY_IP_V4;
  }
  static get ANY_IP_V4() {
    dart.throw(new core.UnsupportedError.new("InternetAddress.ANY_IP_V4"));
  }
  static get anyIPv6() {
    return io.InternetAddress.ANY_IP_V6;
  }
  static get ANY_IP_V6() {
    dart.throw(new core.UnsupportedError.new("InternetAddress.ANY_IP_V6"));
  }
  static new(address) {
    dart.throw(new core.UnsupportedError.new("InternetAddress"));
  }
  static lookup(host, opts) {
    let type = opts && 'type' in opts ? opts.type : io.InternetAddressType.any;
    dart.throw(new core.UnsupportedError.new("InternetAddress.lookup"));
  }
  static _cloneWithNewHost(address, host) {
    dart.throw(new core.UnsupportedError.new("InternetAddress._cloneWithNewHost"));
  }
};
(io.InternetAddress[dart.mixinNew] = function() {
}).prototype = io.InternetAddress.prototype;
dart.addTypeTests(io.InternetAddress);
io.NetworkInterface = class NetworkInterface extends core.Object {
  static get listSupported() {
    dart.throw(new core.UnsupportedError.new("NetworkInterface.listSupported"));
  }
  static list(opts) {
    let includeLoopback = opts && 'includeLoopback' in opts ? opts.includeLoopback : false;
    let includeLinkLocal = opts && 'includeLinkLocal' in opts ? opts.includeLinkLocal : false;
    let type = opts && 'type' in opts ? opts.type : io.InternetAddressType.any;
    dart.throw(new core.UnsupportedError.new("NetworkInterface.list"));
  }
};
(io.NetworkInterface.new = function() {
}).prototype = io.NetworkInterface.prototype;
dart.addTypeTests(io.NetworkInterface);
io.RawServerSocket = class RawServerSocket extends core.Object {
  static bind(address, port, opts) {
    let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
    let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
    let shared = opts && 'shared' in opts ? opts.shared : false;
    dart.throw(new core.UnsupportedError.new("RawServerSocket.bind"));
  }
};
(io.RawServerSocket.new = function() {
}).prototype = io.RawServerSocket.prototype;
io.RawServerSocket.prototype[dart.isStream] = true;
dart.addTypeTests(io.RawServerSocket);
io.RawServerSocket[dart.implements] = () => [StreamOfRawSocket()];
io.ServerSocket = class ServerSocket extends core.Object {
  static bind(address, port, opts) {
    let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
    let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
    let shared = opts && 'shared' in opts ? opts.shared : false;
    dart.throw(new core.UnsupportedError.new("ServerSocket.bind"));
  }
};
(io.ServerSocket.new = function() {
}).prototype = io.ServerSocket.prototype;
io.ServerSocket.prototype[dart.isStream] = true;
dart.addTypeTests(io.ServerSocket);
io.ServerSocket[dart.implements] = () => [StreamOfSocket()];
io.SocketDirection = class SocketDirection extends core.Object {};
(io.SocketDirection.__ = function(value) {
  this[_value$2] = value;
}).prototype = io.SocketDirection.prototype;
dart.addTypeTests(io.SocketDirection);
dart.setFieldSignature(io.SocketDirection, () => ({
  __proto__: dart.getFields(io.SocketDirection.__proto__),
  [_value$2]: dart.finalFieldType(dart.dynamic)
}));
dart.defineLazy(io.SocketDirection, {
  /*io.SocketDirection.receive*/get receive() {
    return dart.const(new io.SocketDirection.__(0));
  },
  /*io.SocketDirection.send*/get send() {
    return dart.const(new io.SocketDirection.__(1));
  },
  /*io.SocketDirection.both*/get both() {
    return dart.const(new io.SocketDirection.__(2));
  },
  /*io.SocketDirection.RECEIVE*/get RECEIVE() {
    return io.SocketDirection.receive;
  },
  /*io.SocketDirection.SEND*/get SEND() {
    return io.SocketDirection.send;
  },
  /*io.SocketDirection.BOTH*/get BOTH() {
    return io.SocketDirection.both;
  }
});
io.SocketOption = class SocketOption extends core.Object {};
(io.SocketOption.__ = function(value) {
  this[_value$2] = value;
}).prototype = io.SocketOption.prototype;
dart.addTypeTests(io.SocketOption);
dart.setFieldSignature(io.SocketOption, () => ({
  __proto__: dart.getFields(io.SocketOption.__proto__),
  [_value$2]: dart.finalFieldType(dart.dynamic)
}));
dart.defineLazy(io.SocketOption, {
  /*io.SocketOption.tcpNoDelay*/get tcpNoDelay() {
    return dart.const(new io.SocketOption.__(0));
  },
  /*io.SocketOption.TCP_NODELAY*/get TCP_NODELAY() {
    return io.SocketOption.tcpNoDelay;
  },
  /*io.SocketOption._ipMulticastLoop*/get _ipMulticastLoop() {
    return dart.const(new io.SocketOption.__(1));
  },
  /*io.SocketOption._ipMulticastHops*/get _ipMulticastHops() {
    return dart.const(new io.SocketOption.__(2));
  },
  /*io.SocketOption._ipMulticastIf*/get _ipMulticastIf() {
    return dart.const(new io.SocketOption.__(3));
  },
  /*io.SocketOption._ipBroadcast*/get _ipBroadcast() {
    return dart.const(new io.SocketOption.__(4));
  }
});
io._RawSocketOptions = class _RawSocketOptions extends core.Object {
  toString() {
    return {
      0: "_RawSocketOptions.SOL_SOCKET",
      1: "_RawSocketOptions.IPPROTO_IP",
      2: "_RawSocketOptions.IP_MULTICAST_IF",
      3: "_RawSocketOptions.IPPROTO_IPV6",
      4: "_RawSocketOptions.IPV6_MULTICAST_IF",
      5: "_RawSocketOptions.IPPROTO_TCP",
      6: "_RawSocketOptions.IPPROTO_UDP"
    }[this.index];
  }
};
(io._RawSocketOptions.new = function(x) {
  this.index = x;
}).prototype = io._RawSocketOptions.prototype;
dart.addTypeTests(io._RawSocketOptions);
dart.setFieldSignature(io._RawSocketOptions, () => ({
  __proto__: dart.getFields(io._RawSocketOptions.__proto__),
  index: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(io._RawSocketOptions, ['toString']);
io._RawSocketOptions.SOL_SOCKET = dart.const(new io._RawSocketOptions.new(0));
io._RawSocketOptions.IPPROTO_IP = dart.const(new io._RawSocketOptions.new(1));
io._RawSocketOptions.IP_MULTICAST_IF = dart.const(new io._RawSocketOptions.new(2));
io._RawSocketOptions.IPPROTO_IPV6 = dart.const(new io._RawSocketOptions.new(3));
io._RawSocketOptions.IPV6_MULTICAST_IF = dart.const(new io._RawSocketOptions.new(4));
io._RawSocketOptions.IPPROTO_TCP = dart.const(new io._RawSocketOptions.new(5));
io._RawSocketOptions.IPPROTO_UDP = dart.const(new io._RawSocketOptions.new(6));
io._RawSocketOptions.values = dart.constList([io._RawSocketOptions.SOL_SOCKET, io._RawSocketOptions.IPPROTO_IP, io._RawSocketOptions.IP_MULTICAST_IF, io._RawSocketOptions.IPPROTO_IPV6, io._RawSocketOptions.IPV6_MULTICAST_IF, io._RawSocketOptions.IPPROTO_TCP, io._RawSocketOptions.IPPROTO_UDP], io._RawSocketOptions);
io.RawSocketOption = class RawSocketOption extends core.Object {
  static fromInt(level, option, value) {
    if (value == null) {
      value = 0;
    }
    let list = typed_data.Uint8List.new(4);
    let buffer = typed_data.ByteData.view(list[$buffer]);
    buffer[$setInt32](0, value);
    return new io.RawSocketOption.new(level, option, list);
  }
  static fromBool(level, option, value) {
    return io.RawSocketOption.fromInt(level, option, value === true ? 1 : 0);
  }
  get level() {
    return this[level$2];
  }
  set level(value) {
    super.level = value;
  }
  get option() {
    return this[option$];
  }
  set option(value) {
    super.option = value;
  }
  get value() {
    return this[value$];
  }
  set value(value) {
    super.value = value;
  }
  static get levelSocket() {
    return io.RawSocketOption._getOptionValue(io._RawSocketOptions.SOL_SOCKET.index);
  }
  static get levelIPv4() {
    return io.RawSocketOption._getOptionValue(io._RawSocketOptions.IPPROTO_IP.index);
  }
  static get IPv4MulticastInterface() {
    return io.RawSocketOption._getOptionValue(io._RawSocketOptions.IP_MULTICAST_IF.index);
  }
  static get levelIPv6() {
    return io.RawSocketOption._getOptionValue(io._RawSocketOptions.IPPROTO_IPV6.index);
  }
  static get IPv6MulticastInterface() {
    return io.RawSocketOption._getOptionValue(io._RawSocketOptions.IPV6_MULTICAST_IF.index);
  }
  static get levelTcp() {
    return io.RawSocketOption._getOptionValue(io._RawSocketOptions.IPPROTO_TCP.index);
  }
  static get levelUdp() {
    return io.RawSocketOption._getOptionValue(io._RawSocketOptions.IPPROTO_UDP.index);
  }
  static _getOptionValue(key) {
    dart.throw(new core.UnsupportedError.new("RawSocketOption._getOptionValue"));
  }
};
(io.RawSocketOption.new = function(level, option, value) {
  this[level$2] = level;
  this[option$] = option;
  this[value$] = value;
}).prototype = io.RawSocketOption.prototype;
dart.addTypeTests(io.RawSocketOption);
const level$2 = Symbol("RawSocketOption.level");
const option$ = Symbol("RawSocketOption.option");
const value$ = Symbol("RawSocketOption.value");
dart.setFieldSignature(io.RawSocketOption, () => ({
  __proto__: dart.getFields(io.RawSocketOption.__proto__),
  level: dart.finalFieldType(core.int),
  option: dart.finalFieldType(core.int),
  value: dart.finalFieldType(typed_data.Uint8List)
}));
const _is_ConnectionTask_default = Symbol('_is_ConnectionTask_default');
io.ConnectionTask$ = dart.generic(S => {
  let FutureOfS = () => (FutureOfS = dart.constFn(async.Future$(S)))();
  class ConnectionTask extends core.Object {
    get socket() {
      return this[socket$];
    }
    set socket(value) {
      super.socket = value;
    }
    cancel() {
      this[_onCancel$]();
    }
  }
  (ConnectionTask.__ = function(opts) {
    let socket = opts && 'socket' in opts ? opts.socket : null;
    let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
    if (!(socket != null)) dart.assertFailed();
    if (!(onCancel != null)) dart.assertFailed();
    this[socket$] = socket;
    this[_onCancel$] = onCancel;
  }).prototype = ConnectionTask.prototype;
  dart.addTypeTests(ConnectionTask);
  ConnectionTask.prototype[_is_ConnectionTask_default] = true;
  const socket$ = Symbol("ConnectionTask.socket");
  dart.setMethodSignature(ConnectionTask, () => ({
    __proto__: dart.getMethods(ConnectionTask.__proto__),
    cancel: dart.fnType(dart.void, [])
  }));
  dart.setFieldSignature(ConnectionTask, () => ({
    __proto__: dart.getFields(ConnectionTask.__proto__),
    socket: dart.finalFieldType(FutureOfS()),
    [_onCancel$]: dart.finalFieldType(VoidTovoid())
  }));
  return ConnectionTask;
});
io.ConnectionTask = io.ConnectionTask$();
dart.addTypeTests(io.ConnectionTask, _is_ConnectionTask_default);
io.RawSocket = class RawSocket extends core.Object {
  get readEventsEnabled() {
    return this[readEventsEnabled];
  }
  set readEventsEnabled(value) {
    this[readEventsEnabled] = value;
  }
  get writeEventsEnabled() {
    return this[writeEventsEnabled];
  }
  set writeEventsEnabled(value) {
    this[writeEventsEnabled] = value;
  }
  static connect(host, port, opts) {
    let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    dart.throw(new core.UnsupportedError.new("RawSocket constructor"));
  }
  static startConnect(host, port, opts) {
    let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
    dart.throw(new core.UnsupportedError.new("RawSocket constructor"));
  }
};
(io.RawSocket.new = function() {
  this[readEventsEnabled] = null;
  this[writeEventsEnabled] = null;
}).prototype = io.RawSocket.prototype;
io.RawSocket.prototype[dart.isStream] = true;
dart.addTypeTests(io.RawSocket);
const readEventsEnabled = Symbol("RawSocket.readEventsEnabled");
const writeEventsEnabled = Symbol("RawSocket.writeEventsEnabled");
io.RawSocket[dart.implements] = () => [StreamOfRawSocketEvent()];
dart.setFieldSignature(io.RawSocket, () => ({
  __proto__: dart.getFields(io.RawSocket.__proto__),
  readEventsEnabled: dart.fieldType(core.bool),
  writeEventsEnabled: dart.fieldType(core.bool)
}));
io.Socket = class Socket extends core.Object {
  static connect(host, port, opts) {
    let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io.Socket._connect(host, port, {sourceAddress: sourceAddress, timeout: timeout});
    }
    return overrides.socketConnect(host, port, {sourceAddress: sourceAddress, timeout: timeout});
  }
  static startConnect(host, port, opts) {
    let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
    let overrides = io.IOOverrides.current;
    if (overrides == null) {
      return io.Socket._startConnect(host, port, {sourceAddress: sourceAddress});
    }
    return overrides.socketStartConnect(host, port, {sourceAddress: sourceAddress});
  }
  static _connect(host, port, opts) {
    let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    dart.throw(new core.UnsupportedError.new("Socket constructor"));
  }
  static _startConnect(host, port, opts) {
    let sourceAddress = opts && 'sourceAddress' in opts ? opts.sourceAddress : null;
    dart.throw(new core.UnsupportedError.new("Socket constructor"));
  }
};
(io.Socket.new = function() {
}).prototype = io.Socket.prototype;
io.Socket.prototype[dart.isStream] = true;
dart.addTypeTests(io.Socket);
io.Socket[dart.implements] = () => [StreamOfListOfint(), io.IOSink];
io.Datagram = class Datagram extends core.Object {
  get data() {
    return this[data$];
  }
  set data(value) {
    this[data$] = value;
  }
  get address() {
    return this[address$];
  }
  set address(value) {
    this[address$] = value;
  }
  get port() {
    return this[port$];
  }
  set port(value) {
    this[port$] = value;
  }
};
(io.Datagram.new = function(data, address, port) {
  this[data$] = data;
  this[address$] = address;
  this[port$] = port;
}).prototype = io.Datagram.prototype;
dart.addTypeTests(io.Datagram);
const data$ = Symbol("Datagram.data");
const address$ = Symbol("Datagram.address");
const port$ = Symbol("Datagram.port");
dart.setFieldSignature(io.Datagram, () => ({
  __proto__: dart.getFields(io.Datagram.__proto__),
  data: dart.fieldType(ListOfint()),
  address: dart.fieldType(io.InternetAddress),
  port: dart.fieldType(core.int)
}));
io.RawDatagramSocket = class RawDatagramSocket extends async.Stream$(io.RawSocketEvent) {
  get readEventsEnabled() {
    return this[readEventsEnabled$];
  }
  set readEventsEnabled(value) {
    this[readEventsEnabled$] = value;
  }
  get writeEventsEnabled() {
    return this[writeEventsEnabled$];
  }
  set writeEventsEnabled(value) {
    this[writeEventsEnabled$] = value;
  }
  get multicastLoopback() {
    return this[multicastLoopback];
  }
  set multicastLoopback(value) {
    this[multicastLoopback] = value;
  }
  get multicastHops() {
    return this[multicastHops];
  }
  set multicastHops(value) {
    this[multicastHops] = value;
  }
  get multicastInterface() {
    return this[multicastInterface];
  }
  set multicastInterface(value) {
    this[multicastInterface] = value;
  }
  get broadcastEnabled() {
    return this[broadcastEnabled];
  }
  set broadcastEnabled(value) {
    this[broadcastEnabled] = value;
  }
  static bind(host, port, opts) {
    let reuseAddress = opts && 'reuseAddress' in opts ? opts.reuseAddress : true;
    let reusePort = opts && 'reusePort' in opts ? opts.reusePort : false;
    let ttl = opts && 'ttl' in opts ? opts.ttl : 1;
    dart.throw(new core.UnsupportedError.new("RawDatagramSocket.bind"));
  }
};
(io.RawDatagramSocket.new = function() {
  this[readEventsEnabled$] = null;
  this[writeEventsEnabled$] = null;
  this[multicastLoopback] = null;
  this[multicastHops] = null;
  this[multicastInterface] = null;
  this[broadcastEnabled] = null;
  io.RawDatagramSocket.__proto__.new.call(this);
}).prototype = io.RawDatagramSocket.prototype;
dart.addTypeTests(io.RawDatagramSocket);
const readEventsEnabled$ = Symbol("RawDatagramSocket.readEventsEnabled");
const writeEventsEnabled$ = Symbol("RawDatagramSocket.writeEventsEnabled");
const multicastLoopback = Symbol("RawDatagramSocket.multicastLoopback");
const multicastHops = Symbol("RawDatagramSocket.multicastHops");
const multicastInterface = Symbol("RawDatagramSocket.multicastInterface");
const broadcastEnabled = Symbol("RawDatagramSocket.broadcastEnabled");
dart.setFieldSignature(io.RawDatagramSocket, () => ({
  __proto__: dart.getFields(io.RawDatagramSocket.__proto__),
  readEventsEnabled: dart.fieldType(core.bool),
  writeEventsEnabled: dart.fieldType(core.bool),
  multicastLoopback: dart.fieldType(core.bool),
  multicastHops: dart.fieldType(core.int),
  multicastInterface: dart.fieldType(io.NetworkInterface),
  broadcastEnabled: dart.fieldType(core.bool)
}));
io.SocketException = class SocketException extends core.Object {
  get message() {
    return this[message$12];
  }
  set message(value) {
    super.message = value;
  }
  get osError() {
    return this[osError$2];
  }
  set osError(value) {
    super.osError = value;
  }
  get address() {
    return this[address$0];
  }
  set address(value) {
    super.address = value;
  }
  get port() {
    return this[port$0];
  }
  set port(value) {
    super.port = value;
  }
  toString() {
    let sb = new core.StringBuffer.new();
    sb.write("SocketException");
    if (this.message[$isNotEmpty]) {
      sb.write(": " + dart.str(this.message));
      if (this.osError != null) {
        sb.write(" (" + dart.str(this.osError) + ")");
      }
    } else if (this.osError != null) {
      sb.write(": " + dart.str(this.osError));
    }
    if (this.address != null) {
      sb.write(", address = " + dart.str(this.address.host));
    }
    if (this.port != null) {
      sb.write(", port = " + dart.str(this.port));
    }
    return sb.toString();
  }
};
(io.SocketException.new = function(message, opts) {
  let osError = opts && 'osError' in opts ? opts.osError : null;
  let address = opts && 'address' in opts ? opts.address : null;
  let port = opts && 'port' in opts ? opts.port : null;
  this[message$12] = message;
  this[osError$2] = osError;
  this[address$0] = address;
  this[port$0] = port;
}).prototype = io.SocketException.prototype;
(io.SocketException.closed = function() {
  this[message$12] = "Socket has been closed";
  this[osError$2] = null;
  this[address$0] = null;
  this[port$0] = null;
}).prototype = io.SocketException.prototype;
dart.addTypeTests(io.SocketException);
const message$12 = Symbol("SocketException.message");
const osError$2 = Symbol("SocketException.osError");
const address$0 = Symbol("SocketException.address");
const port$0 = Symbol("SocketException.port");
io.SocketException[dart.implements] = () => [io.IOException];
dart.setFieldSignature(io.SocketException, () => ({
  __proto__: dart.getFields(io.SocketException.__proto__),
  message: dart.finalFieldType(core.String),
  osError: dart.finalFieldType(io.OSError),
  address: dart.finalFieldType(io.InternetAddress),
  port: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(io.SocketException, ['toString']);
dart.defineLazy(io, {
  /*io._stdioHandleTypeTerminal*/get _stdioHandleTypeTerminal() {
    return 0;
  },
  /*io._stdioHandleTypePipe*/get _stdioHandleTypePipe() {
    return 1;
  },
  /*io._stdioHandleTypeFile*/get _stdioHandleTypeFile() {
    return 2;
  },
  /*io._stdioHandleTypeSocket*/get _stdioHandleTypeSocket() {
    return 3;
  },
  /*io._stdioHandleTypeOther*/get _stdioHandleTypeOther() {
    return 4;
  }
});
io._StdStream = class _StdStream extends async.Stream$(core.List$(core.int)) {
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    return this[_stream$].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
};
(io._StdStream.new = function(stream) {
  this[_stream$] = stream;
  io._StdStream.__proto__.new.call(this);
}).prototype = io._StdStream.prototype;
dart.addTypeTests(io._StdStream);
dart.setMethodSignature(io._StdStream, () => ({
  __proto__: dart.getMethods(io._StdStream.__proto__),
  listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
}));
dart.setFieldSignature(io._StdStream, () => ({
  __proto__: dart.getFields(io._StdStream.__proto__),
  [_stream$]: dart.finalFieldType(StreamOfListOfint())
}));
const _fd = Symbol('_fd');
io.Stdin = class Stdin extends io._StdStream {
  readLineSync(opts) {
    let encoding = opts && 'encoding' in opts ? opts.encoding : io.systemEncoding;
    let retainNewlines = opts && 'retainNewlines' in opts ? opts.retainNewlines : false;
    let CR = 13;
    let LF = 10;
    let line = JSArrayOfint().of([]);
    let crIsNewline = dart.test(io.Platform.isWindows) && dart.equals(io.stdioType(io.stdin), io.StdioType.terminal) && !dart.test(this.lineMode);
    if (dart.test(retainNewlines)) {
      let byte = null;
      do {
        byte = this.readByteSync();
        if (dart.notNull(byte) < 0) {
          break;
        }
        line[$add](byte);
      } while (byte !== LF && !(byte === CR && crIsNewline));
      if (dart.test(line[$isEmpty])) {
        return null;
      }
    } else if (crIsNewline) {
      while (true) {
        let byte = this.readByteSync();
        if (dart.notNull(byte) < 0) {
          if (dart.test(line[$isEmpty])) return null;
          break;
        }
        if (byte === LF || byte === CR) break;
        line[$add](byte);
      }
    } else {
      outer:
        while (true) {
          let byte = this.readByteSync();
          if (byte === LF) break;
          if (byte === CR) {
            do {
              byte = this.readByteSync();
              if (byte === LF) break outer;
              line[$add](CR);
            } while (byte === CR);
          }
          if (dart.notNull(byte) < 0) {
            if (dart.test(line[$isEmpty])) return null;
            break;
          }
          line[$add](byte);
        }
    }
    return encoding.decode(line);
  }
  get echoMode() {
    dart.throw(new core.UnsupportedError.new("Stdin.echoMode"));
  }
  set echoMode(enabled) {
    dart.throw(new core.UnsupportedError.new("Stdin.echoMode"));
  }
  get lineMode() {
    dart.throw(new core.UnsupportedError.new("Stdin.lineMode"));
  }
  set lineMode(enabled) {
    dart.throw(new core.UnsupportedError.new("Stdin.lineMode"));
  }
  get supportsAnsiEscapes() {
    dart.throw(new core.UnsupportedError.new("Stdin.supportsAnsiEscapes"));
  }
  readByteSync() {
    dart.throw(new core.UnsupportedError.new("Stdin.readByteSync"));
  }
  get hasTerminal() {
    try {
      return dart.equals(io.stdioType(this), io.StdioType.terminal);
    } catch (e) {
      let _ = dart.getThrown(e);
      if (io.FileSystemException.is(_)) {
        return false;
      } else
        throw e;
    }
  }
};
(io.Stdin.__ = function(stream, fd) {
  this[_fd] = fd;
  io.Stdin.__proto__.new.call(this, stream);
}).prototype = io.Stdin.prototype;
io.Stdin.prototype[dart.isStream] = true;
dart.addTypeTests(io.Stdin);
io.Stdin[dart.implements] = () => [StreamOfListOfint()];
dart.setMethodSignature(io.Stdin, () => ({
  __proto__: dart.getMethods(io.Stdin.__proto__),
  readLineSync: dart.fnType(core.String, [], {encoding: convert.Encoding, retainNewlines: core.bool}),
  readByteSync: dart.fnType(core.int, [])
}));
dart.setGetterSignature(io.Stdin, () => ({
  __proto__: dart.getGetters(io.Stdin.__proto__),
  echoMode: core.bool,
  lineMode: core.bool,
  supportsAnsiEscapes: core.bool,
  hasTerminal: core.bool
}));
dart.setSetterSignature(io.Stdin, () => ({
  __proto__: dart.getSetters(io.Stdin.__proto__),
  echoMode: core.bool,
  lineMode: core.bool
}));
dart.setFieldSignature(io.Stdin, () => ({
  __proto__: dart.getFields(io.Stdin.__proto__),
  [_fd]: dart.fieldType(core.int)
}));
const _nonBlocking = Symbol('_nonBlocking');
const _hasTerminal = Symbol('_hasTerminal');
const _terminalColumns = Symbol('_terminalColumns');
const _terminalLines = Symbol('_terminalLines');
io._StdSink = class _StdSink extends core.Object {
  get encoding() {
    return this[_sink$0].encoding;
  }
  set encoding(encoding) {
    this[_sink$0].encoding = encoding;
  }
  write(object) {
    this[_sink$0].write(object);
  }
  writeln(object) {
    if (object === void 0) object = "";
    this[_sink$0].writeln(object);
  }
  writeAll(objects, sep) {
    if (sep === void 0) sep = "";
    this[_sink$0].writeAll(objects, sep);
  }
  add(data) {
    ListOfint()._check(data);
    this[_sink$0].add(data);
  }
  addError(error, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    this[_sink$0].addError(error, stackTrace);
  }
  writeCharCode(charCode) {
    this[_sink$0].writeCharCode(charCode);
  }
  addStream(stream) {
    StreamOfListOfint()._check(stream);
    return this[_sink$0].addStream(stream);
  }
  flush() {
    return this[_sink$0].flush();
  }
  close() {
    return this[_sink$0].close();
  }
  get done() {
    return this[_sink$0].done;
  }
};
(io._StdSink.new = function(sink) {
  this[_sink$0] = sink;
}).prototype = io._StdSink.prototype;
dart.addTypeTests(io._StdSink);
io._StdSink[dart.implements] = () => [io.IOSink];
dart.setMethodSignature(io._StdSink, () => ({
  __proto__: dart.getMethods(io._StdSink.__proto__),
  write: dart.fnType(dart.void, [core.Object]),
  writeln: dart.fnType(dart.void, [], [core.Object]),
  writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
  add: dart.fnType(dart.void, [core.Object]),
  addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
  writeCharCode: dart.fnType(dart.void, [core.int]),
  addStream: dart.fnType(async.Future, [core.Object]),
  flush: dart.fnType(async.Future, []),
  close: dart.fnType(async.Future, [])
}));
dart.setGetterSignature(io._StdSink, () => ({
  __proto__: dart.getGetters(io._StdSink.__proto__),
  encoding: convert.Encoding,
  done: async.Future
}));
dart.setSetterSignature(io._StdSink, () => ({
  __proto__: dart.getSetters(io._StdSink.__proto__),
  encoding: convert.Encoding
}));
dart.setFieldSignature(io._StdSink, () => ({
  __proto__: dart.getFields(io._StdSink.__proto__),
  [_sink$0]: dart.finalFieldType(io.IOSink)
}));
io.Stdout = class Stdout extends io._StdSink {
  get hasTerminal() {
    return this[_hasTerminal](this[_fd]);
  }
  get terminalColumns() {
    return this[_terminalColumns](this[_fd]);
  }
  get terminalLines() {
    return this[_terminalLines](this[_fd]);
  }
  get supportsAnsiEscapes() {
    return io.Stdout._supportsAnsiEscapes(this[_fd]);
  }
  [_hasTerminal](fd) {
    dart.throw(new core.UnsupportedError.new("Stdout.hasTerminal"));
  }
  [_terminalColumns](fd) {
    dart.throw(new core.UnsupportedError.new("Stdout.terminalColumns"));
  }
  [_terminalLines](fd) {
    dart.throw(new core.UnsupportedError.new("Stdout.terminalLines"));
  }
  static _supportsAnsiEscapes(fd) {
    dart.throw(new core.UnsupportedError.new("Stdout.supportsAnsiEscapes"));
  }
  get nonBlocking() {
    let t = this[_nonBlocking];
    t == null ? this[_nonBlocking] = io.IOSink.new(new io._FileStreamConsumer.fromStdio(this[_fd])) : t;
    return this[_nonBlocking];
  }
};
(io.Stdout.__ = function(sink, fd) {
  this[_nonBlocking] = null;
  this[_fd] = fd;
  io.Stdout.__proto__.new.call(this, sink);
}).prototype = io.Stdout.prototype;
dart.addTypeTests(io.Stdout);
io.Stdout[dart.implements] = () => [io.IOSink];
dart.setMethodSignature(io.Stdout, () => ({
  __proto__: dart.getMethods(io.Stdout.__proto__),
  [_hasTerminal]: dart.fnType(core.bool, [core.int]),
  [_terminalColumns]: dart.fnType(core.int, [core.int]),
  [_terminalLines]: dart.fnType(core.int, [core.int])
}));
dart.setGetterSignature(io.Stdout, () => ({
  __proto__: dart.getGetters(io.Stdout.__proto__),
  hasTerminal: core.bool,
  terminalColumns: core.int,
  terminalLines: core.int,
  supportsAnsiEscapes: core.bool,
  nonBlocking: io.IOSink
}));
dart.setFieldSignature(io.Stdout, () => ({
  __proto__: dart.getFields(io.Stdout.__proto__),
  [_fd]: dart.finalFieldType(core.int),
  [_nonBlocking]: dart.fieldType(io.IOSink)
}));
io.StdoutException = class StdoutException extends core.Object {
  get message() {
    return this[message$13];
  }
  set message(value) {
    super.message = value;
  }
  get osError() {
    return this[osError$3];
  }
  set osError(value) {
    super.osError = value;
  }
  toString() {
    return "StdoutException: " + dart.str(this.message) + (this.osError == null ? "" : ", " + dart.str(this.osError));
  }
};
(io.StdoutException.new = function(message, osError) {
  if (osError === void 0) osError = null;
  this[message$13] = message;
  this[osError$3] = osError;
}).prototype = io.StdoutException.prototype;
dart.addTypeTests(io.StdoutException);
const message$13 = Symbol("StdoutException.message");
const osError$3 = Symbol("StdoutException.osError");
io.StdoutException[dart.implements] = () => [io.IOException];
dart.setFieldSignature(io.StdoutException, () => ({
  __proto__: dart.getFields(io.StdoutException.__proto__),
  message: dart.finalFieldType(core.String),
  osError: dart.finalFieldType(io.OSError)
}));
dart.defineExtensionMethods(io.StdoutException, ['toString']);
io.StdinException = class StdinException extends core.Object {
  get message() {
    return this[message$14];
  }
  set message(value) {
    super.message = value;
  }
  get osError() {
    return this[osError$4];
  }
  set osError(value) {
    super.osError = value;
  }
  toString() {
    return "StdinException: " + dart.str(this.message) + (this.osError == null ? "" : ", " + dart.str(this.osError));
  }
};
(io.StdinException.new = function(message, osError) {
  if (osError === void 0) osError = null;
  this[message$14] = message;
  this[osError$4] = osError;
}).prototype = io.StdinException.prototype;
dart.addTypeTests(io.StdinException);
const message$14 = Symbol("StdinException.message");
const osError$4 = Symbol("StdinException.osError");
io.StdinException[dart.implements] = () => [io.IOException];
dart.setFieldSignature(io.StdinException, () => ({
  __proto__: dart.getFields(io.StdinException.__proto__),
  message: dart.finalFieldType(core.String),
  osError: dart.finalFieldType(io.OSError)
}));
dart.defineExtensionMethods(io.StdinException, ['toString']);
io._StdConsumer = class _StdConsumer extends core.Object {
  addStream(stream) {
    StreamOfListOfint()._check(stream);
    let completer = async.Completer.new();
    let sub = null;
    sub = stream.listen(dart.fn(data => {
      try {
        dart.dsend(this[_file], 'writeFromSync', [data]);
      } catch (e$) {
        let e = dart.getThrown(e$);
        let s = dart.stackTrace(e$);
        dart.dsend(sub, 'cancel', []);
        completer.completeError(e, s);
      }
    }, ListOfintToNull()), {onError: dart.bind(completer, 'completeError'), onDone: dart.bind(completer, 'complete'), cancelOnError: true});
    return completer.future;
  }
  close() {
    dart.dsend(this[_file], 'closeSync', []);
    return async.Future.value();
  }
};
(io._StdConsumer.new = function(fd) {
  this[_file] = io._File._openStdioSync(fd);
}).prototype = io._StdConsumer.prototype;
dart.addTypeTests(io._StdConsumer);
io._StdConsumer[dart.implements] = () => [StreamConsumerOfListOfint()];
dart.setMethodSignature(io._StdConsumer, () => ({
  __proto__: dart.getMethods(io._StdConsumer.__proto__),
  addStream: dart.fnType(async.Future, [core.Object]),
  close: dart.fnType(async.Future, [])
}));
dart.setFieldSignature(io._StdConsumer, () => ({
  __proto__: dart.getFields(io._StdConsumer.__proto__),
  [_file]: dart.finalFieldType(dart.dynamic)
}));
io.StdioType = class StdioType extends core.Object {
  get name() {
    return this[name$3];
  }
  set name(value) {
    super.name = value;
  }
  toString() {
    return "StdioType: " + dart.str(this.name);
  }
};
(io.StdioType.__ = function(name) {
  this[name$3] = name;
}).prototype = io.StdioType.prototype;
dart.addTypeTests(io.StdioType);
const name$3 = Symbol("StdioType.name");
dart.setFieldSignature(io.StdioType, () => ({
  __proto__: dart.getFields(io.StdioType.__proto__),
  name: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(io.StdioType, ['toString']);
dart.defineLazy(io.StdioType, {
  /*io.StdioType.terminal*/get terminal() {
    return dart.const(new io.StdioType.__("terminal"));
  },
  /*io.StdioType.pipe*/get pipe() {
    return dart.const(new io.StdioType.__("pipe"));
  },
  /*io.StdioType.file*/get file() {
    return dart.const(new io.StdioType.__("file"));
  },
  /*io.StdioType.other*/get other() {
    return dart.const(new io.StdioType.__("other"));
  },
  /*io.StdioType.TERMINAL*/get TERMINAL() {
    return io.StdioType.terminal;
  },
  /*io.StdioType.PIPE*/get PIPE() {
    return io.StdioType.pipe;
  },
  /*io.StdioType.FILE*/get FILE() {
    return io.StdioType.file;
  },
  /*io.StdioType.OTHER*/get OTHER() {
    return io.StdioType.other;
  }
});
dart.defineLazy(io, {
  /*io._stdin*/get _stdin() {
    return null;
  },
  set _stdin(_) {},
  /*io._stdout*/get _stdout() {
    return null;
  },
  set _stdout(_) {},
  /*io._stderr*/get _stderr() {
    return null;
  },
  set _stderr(_) {},
  /*io._stdinFD*/get _stdinFD() {
    return 0;
  },
  set _stdinFD(_) {},
  /*io._stdoutFD*/get _stdoutFD() {
    return 1;
  },
  set _stdoutFD(_) {},
  /*io._stderrFD*/get _stderrFD() {
    return 2;
  },
  set _stderrFD(_) {}
});
io._setStdioFDs = function(stdin, stdout, stderr) {
  io._stdinFD = stdin;
  io._stdoutFD = stdout;
  io._stderrFD = stderr;
};
dart.copyProperties(io, {
  get stdin() {
    let t = io._stdin;
    t == null ? io._stdin = io._StdIOUtils._getStdioInputStream(io._stdinFD) : t;
    return io._stdin;
  }
});
dart.copyProperties(io, {
  get stdout() {
    let t = io._stdout;
    t == null ? io._stdout = io.Stdout._check(io._StdIOUtils._getStdioOutputStream(io._stdoutFD)) : t;
    return io._stdout;
  }
});
dart.copyProperties(io, {
  get stderr() {
    let t = io._stderr;
    t == null ? io._stderr = io.Stdout._check(io._StdIOUtils._getStdioOutputStream(io._stderrFD)) : t;
    return io._stderr;
  }
});
io.stdioType = function(object) {
  if (io._StdStream.is(object)) {
    object = dart.dload(object, _stream$);
  } else if (dart.equals(object, io.stdout) || dart.equals(object, io.stderr)) {
    let stdiofd = dart.equals(object, io.stdout) ? io._stdoutFD : io._stderrFD;
    switch (io._StdIOUtils._getStdioHandleType(stdiofd)) {
      case 0:
      {
        return io.StdioType.terminal;
      }
      case 1:
      {
        return io.StdioType.pipe;
      }
      case 2:
      {
        return io.StdioType.file;
      }
    }
  }
  if (io._FileStream.is(object)) {
    return io.StdioType.file;
  }
  if (io.Socket.is(object)) {
    let socketType = io._StdIOUtils._socketType(object);
    if (socketType == null) return io.StdioType.other;
    switch (socketType) {
      case 0:
      {
        return io.StdioType.terminal;
      }
      case 1:
      {
        return io.StdioType.pipe;
      }
      case 2:
      {
        return io.StdioType.file;
      }
    }
  }
  if (io._IOSinkImpl.is(object)) {
    try {
      if (io._FileStreamConsumer.is(object[_target$])) {
        return io.StdioType.file;
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
  }
  return io.StdioType.other;
};
io._StdIOUtils = class _StdIOUtils extends core.Object {
  static _getStdioOutputStream(fd) {
    dart.throw(new core.UnsupportedError.new("StdIOUtils._getStdioOutputStream"));
  }
  static _getStdioInputStream(fd) {
    dart.throw(new core.UnsupportedError.new("StdIOUtils._getStdioInputStream"));
  }
  static _socketType(socket) {
    dart.throw(new core.UnsupportedError.new("StdIOUtils._socketType"));
  }
  static _getStdioHandleType(fd) {
    dart.throw(new core.UnsupportedError.new("StdIOUtils._getStdioHandleType"));
  }
};
(io._StdIOUtils.new = function() {
}).prototype = io._StdIOUtils.prototype;
dart.addTypeTests(io._StdIOUtils);
dart.defineLazy(io, {
  /*io.systemEncoding*/get systemEncoding() {
    return dart.const(new io.SystemEncoding.new());
  },
  /*io.SYSTEM_ENCODING*/get SYSTEM_ENCODING() {
    return dart.const(new io.SystemEncoding.new());
  }
});
let const$64;
let const$65;
let const$66;
let const$67;
io.SystemEncoding = class SystemEncoding extends convert.Encoding {
  get name() {
    return "system";
  }
  encode(input) {
    core.String._check(input);
    return this.encoder.convert(input);
  }
  decode(encoded) {
    ListOfint()._check(encoded);
    return this.decoder.convert(encoded);
  }
  get encoder() {
    if (io.Platform.operatingSystem === "windows") {
      return const$64 || (const$64 = dart.const(new io._WindowsCodePageEncoder.new()));
    } else {
      return const$65 || (const$65 = dart.const(new convert.Utf8Encoder.new()));
    }
  }
  get decoder() {
    if (io.Platform.operatingSystem === "windows") {
      return const$66 || (const$66 = dart.const(new io._WindowsCodePageDecoder.new()));
    } else {
      return const$67 || (const$67 = dart.const(new convert.Utf8Decoder.new()));
    }
  }
};
(io.SystemEncoding.new = function() {
  io.SystemEncoding.__proto__.new.call(this);
}).prototype = io.SystemEncoding.prototype;
dart.addTypeTests(io.SystemEncoding);
dart.setMethodSignature(io.SystemEncoding, () => ({
  __proto__: dart.getMethods(io.SystemEncoding.__proto__),
  encode: dart.fnType(core.List$(core.int), [core.Object]),
  decode: dart.fnType(core.String, [core.Object])
}));
dart.setGetterSignature(io.SystemEncoding, () => ({
  __proto__: dart.getGetters(io.SystemEncoding.__proto__),
  name: core.String,
  encoder: convert.Converter$(core.String, core.List$(core.int)),
  decoder: convert.Converter$(core.List$(core.int), core.String)
}));
io._WindowsCodePageEncoder = class _WindowsCodePageEncoder extends convert.Converter$(core.String, core.List$(core.int)) {
  convert(input) {
    core.String._check(input);
    let encoded = io._WindowsCodePageEncoder._encodeString(input);
    if (encoded == null) {
      dart.throw(new core.FormatException.new("Invalid character for encoding"));
    }
    return encoded;
  }
  startChunkedConversion(sink) {
    SinkOfListOfint()._check(sink);
    return new io._WindowsCodePageEncoderSink.new(sink);
  }
  static _encodeString(string) {
    dart.throw(new core.UnsupportedError.new("_WindowsCodePageEncoder._encodeString"));
  }
};
(io._WindowsCodePageEncoder.new = function() {
  io._WindowsCodePageEncoder.__proto__.new.call(this);
}).prototype = io._WindowsCodePageEncoder.prototype;
dart.addTypeTests(io._WindowsCodePageEncoder);
dart.setMethodSignature(io._WindowsCodePageEncoder, () => ({
  __proto__: dart.getMethods(io._WindowsCodePageEncoder.__proto__),
  convert: dart.fnType(core.List$(core.int), [core.Object]),
  startChunkedConversion: dart.fnType(convert.StringConversionSink, [core.Object])
}));
io._WindowsCodePageEncoderSink = class _WindowsCodePageEncoderSink extends convert.StringConversionSinkBase {
  close() {
    this[_sink$0].close();
  }
  add(string) {
    core.String._check(string);
    let encoded = io._WindowsCodePageEncoder._encodeString(string);
    if (encoded == null) {
      dart.throw(new core.FormatException.new("Invalid character for encoding"));
    }
    this[_sink$0].add(encoded);
  }
  addSlice(source, start, end, isLast) {
    if (start !== 0 || end !== source.length) {
      source = source[$substring](start, end);
    }
    this.add(source);
    if (dart.test(isLast)) this.close();
  }
};
(io._WindowsCodePageEncoderSink.new = function(sink) {
  this[_sink$0] = sink;
}).prototype = io._WindowsCodePageEncoderSink.prototype;
dart.addTypeTests(io._WindowsCodePageEncoderSink);
dart.setMethodSignature(io._WindowsCodePageEncoderSink, () => ({
  __proto__: dart.getMethods(io._WindowsCodePageEncoderSink.__proto__),
  close: dart.fnType(dart.void, []),
  add: dart.fnType(dart.void, [core.Object]),
  addSlice: dart.fnType(dart.void, [core.String, core.int, core.int, core.bool])
}));
dart.setFieldSignature(io._WindowsCodePageEncoderSink, () => ({
  __proto__: dart.getFields(io._WindowsCodePageEncoderSink.__proto__),
  [_sink$0]: dart.finalFieldType(SinkOfListOfint())
}));
io._WindowsCodePageDecoder = class _WindowsCodePageDecoder extends convert.Converter$(core.List$(core.int), core.String) {
  convert(input) {
    ListOfint()._check(input);
    return io._WindowsCodePageDecoder._decodeBytes(input);
  }
  startChunkedConversion(sink) {
    SinkOfString()._check(sink);
    return new io._WindowsCodePageDecoderSink.new(sink);
  }
  static _decodeBytes(bytes) {
    dart.throw(new core.UnsupportedError.new("_WindowsCodePageDecoder._decodeBytes"));
  }
};
(io._WindowsCodePageDecoder.new = function() {
  io._WindowsCodePageDecoder.__proto__.new.call(this);
}).prototype = io._WindowsCodePageDecoder.prototype;
dart.addTypeTests(io._WindowsCodePageDecoder);
dart.setMethodSignature(io._WindowsCodePageDecoder, () => ({
  __proto__: dart.getMethods(io._WindowsCodePageDecoder.__proto__),
  convert: dart.fnType(core.String, [core.Object]),
  startChunkedConversion: dart.fnType(convert.ByteConversionSink, [core.Object])
}));
io._WindowsCodePageDecoderSink = class _WindowsCodePageDecoderSink extends convert.ByteConversionSinkBase {
  close() {
    this[_sink$0].close();
  }
  add(bytes) {
    ListOfint()._check(bytes);
    this[_sink$0].add(io._WindowsCodePageDecoder._decodeBytes(bytes));
  }
};
(io._WindowsCodePageDecoderSink.new = function(sink) {
  this[_sink$0] = sink;
  io._WindowsCodePageDecoderSink.__proto__.new.call(this);
}).prototype = io._WindowsCodePageDecoderSink.prototype;
dart.addTypeTests(io._WindowsCodePageDecoderSink);
dart.setMethodSignature(io._WindowsCodePageDecoderSink, () => ({
  __proto__: dart.getMethods(io._WindowsCodePageDecoderSink.__proto__),
  close: dart.fnType(dart.void, []),
  add: dart.fnType(dart.void, [core.Object])
}));
dart.setFieldSignature(io._WindowsCodePageDecoderSink, () => ({
  __proto__: dart.getFields(io._WindowsCodePageDecoderSink.__proto__),
  [_sink$0]: dart.finalFieldType(SinkOfString())
}));
io.RawSynchronousSocket = class RawSynchronousSocket extends core.Object {
  static connectSync(host, port) {
    dart.throw(new core.UnsupportedError.new("RawSynchronousSocket.connectSync"));
  }
};
(io.RawSynchronousSocket.new = function() {
}).prototype = io.RawSynchronousSocket.prototype;
dart.addTypeTests(io.RawSynchronousSocket);
isolate.IsolateSpawnException = class IsolateSpawnException extends core.Object {
  get message() {
    return this[message$15];
  }
  set message(value) {
    super.message = value;
  }
  toString() {
    return "IsolateSpawnException: " + dart.str(this.message);
  }
};
(isolate.IsolateSpawnException.new = function(message) {
  this[message$15] = message;
}).prototype = isolate.IsolateSpawnException.prototype;
dart.addTypeTests(isolate.IsolateSpawnException);
const message$15 = Symbol("IsolateSpawnException.message");
isolate.IsolateSpawnException[dart.implements] = () => [core.Exception];
dart.setFieldSignature(isolate.IsolateSpawnException, () => ({
  __proto__: dart.getFields(isolate.IsolateSpawnException.__proto__),
  message: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(isolate.IsolateSpawnException, ['toString']);
const _pause = Symbol('_pause');
isolate.Isolate = class Isolate extends core.Object {
  get controlPort() {
    return this[controlPort$];
  }
  set controlPort(value) {
    super.controlPort = value;
  }
  get pauseCapability() {
    return this[pauseCapability$];
  }
  set pauseCapability(value) {
    super.pauseCapability = value;
  }
  get terminateCapability() {
    return this[terminateCapability$];
  }
  set terminateCapability(value) {
    super.terminateCapability = value;
  }
  static get current() {
    return isolate._unsupported();
  }
  static get packageRoot() {
    return isolate._unsupported();
  }
  static get packageConfig() {
    return isolate._unsupported();
  }
  static resolvePackageUri(packageUri) {
    return async.async(core.Uri, function* resolvePackageUri() {
      if (packageUri.scheme !== "package") return packageUri;
      return isolate.Isolate._packageBase.resolveUri(packageUri.replace({scheme: ""}));
    });
  }
  static spawn(T, entryPoint, message, opts) {
    let paused = opts && 'paused' in opts ? opts.paused : false;
    let errorsAreFatal = opts && 'errorsAreFatal' in opts ? opts.errorsAreFatal : null;
    let onExit = opts && 'onExit' in opts ? opts.onExit : null;
    let onError = opts && 'onError' in opts ? opts.onError : null;
    return isolate._unsupported();
  }
  static spawnUri(uri, args, message, opts) {
    let paused = opts && 'paused' in opts ? opts.paused : false;
    let onExit = opts && 'onExit' in opts ? opts.onExit : null;
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let errorsAreFatal = opts && 'errorsAreFatal' in opts ? opts.errorsAreFatal : null;
    let checked = opts && 'checked' in opts ? opts.checked : null;
    let environment = opts && 'environment' in opts ? opts.environment : null;
    let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null;
    let packageConfig = opts && 'packageConfig' in opts ? opts.packageConfig : null;
    let automaticPackageResolution = opts && 'automaticPackageResolution' in opts ? opts.automaticPackageResolution : false;
    return isolate._unsupported();
  }
  pause(resumeCapability) {
    if (resumeCapability === void 0) resumeCapability = null;
    let t = resumeCapability;
    t == null ? resumeCapability = isolate.Capability.new() : t;
    this[_pause](resumeCapability);
    return resumeCapability;
  }
  [_pause](resumeCapability) {
    return isolate._unsupported();
  }
  resume(resumeCapability) {
    return isolate._unsupported();
  }
  addOnExitListener(responsePort, opts) {
    let response = opts && 'response' in opts ? opts.response : null;
    return isolate._unsupported();
  }
  removeOnExitListener(responsePort) {
    return isolate._unsupported();
  }
  setErrorsFatal(errorsAreFatal) {
    return isolate._unsupported();
  }
  kill(opts) {
    let priority = opts && 'priority' in opts ? opts.priority : 1;
    return isolate._unsupported();
  }
  ping(responsePort, opts) {
    let response = opts && 'response' in opts ? opts.response : null;
    let priority = opts && 'priority' in opts ? opts.priority : 0;
    return isolate._unsupported();
  }
  addErrorListener(port) {
    return isolate._unsupported();
  }
  removeErrorListener(port) {
    return isolate._unsupported();
  }
  get errors() {
    let controller = null;
    let port = null;
    function handleError(message) {
      let listMessage = core.List._check(message);
      let errorDescription = core.String._check(listMessage[$_get](0));
      let stackDescription = core.String._check(listMessage[$_get](1));
      let error = new isolate.RemoteError.new(errorDescription, stackDescription);
      controller.addError(error, error.stackTrace);
    }
    dart.fn(handleError, dynamicTovoid());
    controller = async.StreamController.broadcast({sync: true, onListen: dart.fn(() => {
        port = isolate.RawReceivePort.new(handleError);
        this.addErrorListener(port.sendPort);
      }, VoidToNull()), onCancel: dart.fn(() => {
        this.removeErrorListener(port.sendPort);
        port.close();
        port = null;
      }, VoidToNull())});
    return controller.stream;
  }
};
(isolate.Isolate.new = function(controlPort, opts) {
  let pauseCapability = opts && 'pauseCapability' in opts ? opts.pauseCapability : null;
  let terminateCapability = opts && 'terminateCapability' in opts ? opts.terminateCapability : null;
  this[controlPort$] = controlPort;
  this[pauseCapability$] = pauseCapability;
  this[terminateCapability$] = terminateCapability;
}).prototype = isolate.Isolate.prototype;
dart.addTypeTests(isolate.Isolate);
const controlPort$ = Symbol("Isolate.controlPort");
const pauseCapability$ = Symbol("Isolate.pauseCapability");
const terminateCapability$ = Symbol("Isolate.terminateCapability");
dart.setMethodSignature(isolate.Isolate, () => ({
  __proto__: dart.getMethods(isolate.Isolate.__proto__),
  pause: dart.fnType(isolate.Capability, [], [isolate.Capability]),
  [_pause]: dart.fnType(dart.void, [isolate.Capability]),
  resume: dart.fnType(dart.void, [isolate.Capability]),
  addOnExitListener: dart.fnType(dart.void, [isolate.SendPort], {response: core.Object}),
  removeOnExitListener: dart.fnType(dart.void, [isolate.SendPort]),
  setErrorsFatal: dart.fnType(dart.void, [core.bool]),
  kill: dart.fnType(dart.void, [], {priority: core.int}),
  ping: dart.fnType(dart.void, [isolate.SendPort], {response: core.Object, priority: core.int}),
  addErrorListener: dart.fnType(dart.void, [isolate.SendPort]),
  removeErrorListener: dart.fnType(dart.void, [isolate.SendPort])
}));
dart.setGetterSignature(isolate.Isolate, () => ({
  __proto__: dart.getGetters(isolate.Isolate.__proto__),
  errors: async.Stream
}));
dart.setFieldSignature(isolate.Isolate, () => ({
  __proto__: dart.getFields(isolate.Isolate.__proto__),
  controlPort: dart.finalFieldType(isolate.SendPort),
  pauseCapability: dart.finalFieldType(isolate.Capability),
  terminateCapability: dart.finalFieldType(isolate.Capability)
}));
dart.defineLazy(isolate.Isolate, {
  /*isolate.Isolate.immediate*/get immediate() {
    return 0;
  },
  /*isolate.Isolate.beforeNextEvent*/get beforeNextEvent() {
    return 1;
  },
  /*isolate.Isolate._packageBase*/get _packageBase() {
    return core.Uri.base.resolve("packages/");
  },
  set _packageBase(_) {}
});
isolate.SendPort = class SendPort extends core.Object {};
(isolate.SendPort.new = function() {
}).prototype = isolate.SendPort.prototype;
dart.addTypeTests(isolate.SendPort);
isolate.SendPort[dart.implements] = () => [isolate.Capability];
isolate.ReceivePort = class ReceivePort extends core.Object {
  static new() {
    return new isolate._ReceivePort.new();
  }
  static fromRawReceivePort(rawPort) {
    return isolate._unsupported();
  }
};
(isolate.ReceivePort[dart.mixinNew] = function() {
}).prototype = isolate.ReceivePort.prototype;
isolate.ReceivePort.prototype[dart.isStream] = true;
dart.addTypeTests(isolate.ReceivePort);
isolate.ReceivePort[dart.implements] = () => [async.Stream];
isolate.RawReceivePort = class RawReceivePort extends core.Object {
  static new(handler) {
    if (handler === void 0) handler = null;
    return isolate._unsupported();
  }
};
(isolate.RawReceivePort[dart.mixinNew] = function() {
}).prototype = isolate.RawReceivePort.prototype;
dart.addTypeTests(isolate.RawReceivePort);
const _description = Symbol('_description');
isolate.RemoteError = class RemoteError extends core.Object {
  get stackTrace() {
    return this[stackTrace];
  }
  set stackTrace(value) {
    super.stackTrace = value;
  }
  toString() {
    return this[_description];
  }
};
(isolate.RemoteError.new = function(description, stackDescription) {
  this[_description] = description;
  this[stackTrace] = core.StackTrace.fromString(stackDescription);
}).prototype = isolate.RemoteError.prototype;
dart.addTypeTests(isolate.RemoteError);
const stackTrace = Symbol("RemoteError.stackTrace");
isolate.RemoteError[dart.implements] = () => [core.Error];
dart.setFieldSignature(isolate.RemoteError, () => ({
  __proto__: dart.getFields(isolate.RemoteError.__proto__),
  [_description]: dart.finalFieldType(core.String),
  stackTrace: dart.finalFieldType(core.StackTrace)
}));
dart.defineExtensionMethods(isolate.RemoteError, ['toString']);
dart.defineExtensionAccessors(isolate.RemoteError, ['stackTrace']);
isolate._ReceivePort = class _ReceivePort extends async.Stream {
  close() {}
  get sendPort() {
    return isolate._unsupported();
  }
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    return isolate._unsupported();
  }
};
(isolate._ReceivePort.new = function() {
  isolate._ReceivePort.__proto__.new.call(this);
}).prototype = isolate._ReceivePort.prototype;
dart.addTypeTests(isolate._ReceivePort);
isolate._ReceivePort[dart.implements] = () => [isolate.ReceivePort];
dart.setMethodSignature(isolate._ReceivePort, () => ({
  __proto__: dart.getMethods(isolate._ReceivePort.__proto__),
  close: dart.fnType(dart.void, []),
  listen: dart.fnType(async.StreamSubscription, [dart.dynamic], {onError: core.Function, onDone: dart.dynamic, cancelOnError: core.bool})
}));
dart.setGetterSignature(isolate._ReceivePort, () => ({
  __proto__: dart.getGetters(isolate._ReceivePort.__proto__),
  sendPort: isolate.SendPort
}));
isolate._unsupported = function() {
  dart.throw(new core.UnsupportedError.new("dart:isolate is not supported on dart4web"));
};
isolate.Capability = class Capability extends core.Object {
  static new() {
    return isolate._unsupported();
  }
};
(isolate.Capability[dart.mixinNew] = function() {
}).prototype = isolate.Capability.prototype;
dart.addTypeTests(isolate.Capability);
dart.defineLazy(js, {
  /*js.context*/get context() {
    return js.JsObject._check(js._wrapToDart(dart.global));
  }
});
const _jsObject = Symbol('_jsObject');
js.JsObject = class JsObject extends core.Object {
  static new(constructor, arguments$0) {
    if (arguments$0 === void 0) arguments$0 = null;
    let ctor = constructor[_jsObject];
    if (arguments$0 == null) {
      return js.JsObject._check(js._wrapToDart(new ctor()));
    }
    let unwrapped = core.List.from(arguments$0[$map](dart.dynamic, dart.fn(js._convertToJS, dynamicTodynamic())));
    return js.JsObject._check(js._wrapToDart(new ctor(...unwrapped)));
  }
  static fromBrowserObject(object) {
    if (typeof object == 'number' || typeof object == 'string' || typeof object == 'boolean' || object == null) {
      dart.throw(new core.ArgumentError.new("object cannot be a num, string, bool, or null"));
    }
    return js.JsObject._check(js._wrapToDart(js._convertToJS(object)));
  }
  static jsify(object) {
    if (!core.Map.is(object) && !core.Iterable.is(object)) {
      dart.throw(new core.ArgumentError.new("object must be a Map or Iterable"));
    }
    return js.JsObject._check(js._wrapToDart(js.JsObject._convertDataTree(object)));
  }
  static _convertDataTree(data) {
    let _convertedObjects = new _js_helper.IdentityMap.new();
    function _convert(o) {
      if (dart.test(_convertedObjects.containsKey(o))) {
        return _convertedObjects._get(o);
      }
      if (core.Map.is(o)) {
        let convertedMap = {};
        _convertedObjects._set(o, convertedMap);
        for (let key of o[$keys]) {
          convertedMap[key] = _convert(o[$_get](key));
        }
        return convertedMap;
      } else if (core.Iterable.is(o)) {
        let convertedList = [];
        _convertedObjects._set(o, convertedList);
        convertedList[$addAll](o[$map](dart.dynamic, _convert));
        return convertedList;
      } else {
        return js._convertToJS(o);
      }
    }
    dart.fn(_convert, dynamicTodynamic());
    return _convert(data);
  }
  _get(property) {
    if (!(typeof property == 'string') && !(typeof property == 'number')) {
      dart.throw(new core.ArgumentError.new("property is not a String or num"));
    }
    return js._convertToDart(this[_jsObject][property]);
  }
  _set(property, value) {
    if (!(typeof property == 'string') && !(typeof property == 'number')) {
      dart.throw(new core.ArgumentError.new("property is not a String or num"));
    }
    this[_jsObject][property] = js._convertToJS(value);
    return value;
  }
  get hashCode() {
    return 0;
  }
  _equals(other) {
    return js.JsObject.is(other) && this[_jsObject] === other[_jsObject];
  }
  hasProperty(property) {
    if (!(typeof property == 'string') && !(typeof property == 'number')) {
      dart.throw(new core.ArgumentError.new("property is not a String or num"));
    }
    return property in this[_jsObject];
  }
  deleteProperty(property) {
    if (!(typeof property == 'string') && !(typeof property == 'number')) {
      dart.throw(new core.ArgumentError.new("property is not a String or num"));
    }
    delete this[_jsObject][property];
  }
  instanceof(type) {
    return this[_jsObject] instanceof js._convertToJS(type);
  }
  toString() {
    try {
      return String(this[_jsObject]);
    } catch (e$) {
      let e = dart.getThrown(e$);
      return super.toString();
    }
  }
  callMethod(method, args) {
    if (args === void 0) args = null;
    if (!(typeof method == 'string') && !(typeof method == 'number')) {
      dart.throw(new core.ArgumentError.new("method is not a String or num"));
    }
    if (args != null) args = core.List.from(args[$map](dart.dynamic, dart.fn(js._convertToJS, dynamicTodynamic())));
    let fn = this[_jsObject][method];
    if (typeof fn !== "function") {
      dart.throw(new core.NoSuchMethodError.new(this[_jsObject], core.Symbol.new(core.String._check(method)), args, new (LinkedMapOfSymbol$dynamic()).new()));
    }
    return js._convertToDart(fn.apply(this[_jsObject], args));
  }
};
(js.JsObject._fromJs = function(jsObject) {
  this[_jsObject] = jsObject;
  if (!(this[_jsObject] != null)) dart.assertFailed();
}).prototype = js.JsObject.prototype;
dart.addTypeTests(js.JsObject);
dart.setMethodSignature(js.JsObject, () => ({
  __proto__: dart.getMethods(js.JsObject.__proto__),
  _get: dart.fnType(dart.dynamic, [core.Object]),
  _set: dart.fnType(dart.void, [core.Object, dart.dynamic]),
  hasProperty: dart.fnType(core.bool, [dart.dynamic]),
  deleteProperty: dart.fnType(dart.void, [dart.dynamic]),
  instanceof: dart.fnType(core.bool, [js.JsFunction]),
  callMethod: dart.fnType(dart.dynamic, [dart.dynamic], [core.List])
}));
dart.setFieldSignature(js.JsObject, () => ({
  __proto__: dart.getFields(js.JsObject.__proto__),
  [_jsObject]: dart.finalFieldType(dart.dynamic)
}));
dart.defineExtensionMethods(js.JsObject, ['_equals', 'toString']);
dart.defineExtensionAccessors(js.JsObject, ['hashCode']);
js.JsFunction = class JsFunction extends js.JsObject {
  static withThis(f) {
    return new js.JsFunction._fromJs(function() {
      let args = [js._convertToDart(this)];
      for (let arg of arguments) {
        args.push(js._convertToDart(arg));
      }
      return js._convertToJS(f(...args));
    });
  }
  apply(args, opts) {
    let thisArg = opts && 'thisArg' in opts ? opts.thisArg : null;
    return js._convertToDart(this[_jsObject].apply(js._convertToJS(thisArg), args == null ? null : core.List.from(args[$map](dart.dynamic, js._convertToJS))));
  }
};
(js.JsFunction._fromJs = function(jsObject) {
  js.JsFunction.__proto__._fromJs.call(this, jsObject);
}).prototype = js.JsFunction.prototype;
dart.addTypeTests(js.JsFunction);
dart.setMethodSignature(js.JsFunction, () => ({
  __proto__: dart.getMethods(js.JsFunction.__proto__),
  apply: dart.fnType(dart.dynamic, [core.List], {thisArg: dart.dynamic})
}));
const _checkIndex = Symbol('_checkIndex');
const _checkInsertIndex = Symbol('_checkInsertIndex');
const _is_JsArray_default = Symbol('_is_JsArray_default');
js.JsArray$ = dart.generic(E => {
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  const JsObject_ListMixin$ = class JsObject_ListMixin extends js.JsObject {};
  (JsObject_ListMixin$._fromJs = function(_jsObject) {
    JsObject_ListMixin$.__proto__._fromJs.call(this, _jsObject);
  }).prototype = JsObject_ListMixin$.prototype;
  (JsObject_ListMixin$.new = function(constructor, arguments$0) {
    JsObject_ListMixin$.__proto__.new.call(this, constructor, arguments$0);
  }).prototype = JsObject_ListMixin$.prototype;
  (JsObject_ListMixin$.fromBrowserObject = function(object) {
    JsObject_ListMixin$.__proto__.fromBrowserObject.call(this, object);
  }).prototype = JsObject_ListMixin$.prototype;
  (JsObject_ListMixin$.jsify = function(object) {
    JsObject_ListMixin$.__proto__.jsify.call(this, object);
  }).prototype = JsObject_ListMixin$.prototype;
  dart.applyMixin(JsObject_ListMixin$, collection.ListMixin$(E));
  class JsArray extends JsObject_ListMixin$ {
    [_checkIndex](index) {
      if (core.int.is(index) && (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(this.length))) {
        dart.throw(new core.RangeError.range(index, 0, this.length));
      }
    }
    [_checkInsertIndex](index) {
      if (core.int.is(index) && (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(this.length) + 1)) {
        dart.throw(new core.RangeError.range(index, 0, this.length));
      }
    }
    static _checkRange(start, end, length) {
      if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(length)) {
        dart.throw(new core.RangeError.range(start, 0, length));
      }
      if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) > dart.notNull(length)) {
        dart.throw(new core.RangeError.range(end, start, length));
      }
    }
    _get(index) {
      if (typeof index == 'number' && index === index[$toInt]()) {
        this[_checkIndex](dart.asInt(index));
      }
      return E.as(super._get(index));
    }
    _set(index, value) {
      if (typeof index == 'number' && index === index[$toInt]()) {
        this[_checkIndex](dart.asInt(index));
      }
      super._set(index, value);
      return value;
    }
    get length() {
      let len = this[_jsObject].length;
      if (typeof len === "number" && len >>> 0 === len) {
        return len;
      }
      dart.throw(new core.StateError.new("Bad JsArray length"));
    }
    set length(length) {
      super._set("length", length);
    }
    add(value) {
      E._check(value);
      this.callMethod("push", [value]);
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      let list = iterable instanceof Array ? iterable : core.List.from(iterable);
      this.callMethod("push", core.List._check(list));
    }
    insert(index, element) {
      E._check(element);
      this[_checkInsertIndex](index);
      this.callMethod("splice", [index, 0, element]);
    }
    removeAt(index) {
      this[_checkIndex](index);
      return E.as(dart.dindex(this.callMethod("splice", [index, 1]), 0));
    }
    removeLast() {
      if (this.length === 0) dart.throw(new core.RangeError.new(-1));
      return E.as(this.callMethod("pop"));
    }
    removeRange(start, end) {
      js.JsArray._checkRange(start, end, this.length);
      this.callMethod("splice", [start, dart.notNull(end) - dart.notNull(start)]);
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      js.JsArray._checkRange(start, end, this.length);
      let length = dart.notNull(end) - dart.notNull(start);
      if (length === 0) return;
      if (dart.notNull(skipCount) < 0) dart.throw(new core.ArgumentError.new(skipCount));
      let args = JSArrayOfObject().of([start, length]);
      args[$addAll](iterable[$skip](skipCount)[$take](length));
      this.callMethod("splice", args);
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      this.callMethod("sort", compare == null ? [] : [compare]);
    }
  }
  (JsArray.new = function() {
    JsArray.__proto__._fromJs.call(this, []);
  }).prototype = JsArray.prototype;
  (JsArray.from = function(other) {
    JsArray.__proto__._fromJs.call(this, (() => {
      let _ = [];
      _[$addAll](other[$map](dart.dynamic, dart.fn(js._convertToJS, dynamicTodynamic())));
      return _;
    })());
  }).prototype = JsArray.prototype;
  (JsArray._fromJs = function(jsObject) {
    JsArray.__proto__._fromJs.call(this, jsObject);
  }).prototype = JsArray.prototype;
  dart.addTypeTests(JsArray);
  JsArray.prototype[_is_JsArray_default] = true;
  dart.setMethodSignature(JsArray, () => ({
    __proto__: dart.getMethods(JsArray.__proto__),
    [_checkIndex]: dart.fnType(dart.dynamic, [core.int]),
    [_checkInsertIndex]: dart.fnType(dart.dynamic, [core.int]),
    _get: dart.fnType(E, [core.Object]),
    [$_get]: dart.fnType(E, [core.Object]),
    _set: dart.fnType(dart.void, [core.Object, dart.dynamic]),
    [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
    add: dart.fnType(dart.void, [core.Object]),
    [$add]: dart.fnType(dart.void, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    insert: dart.fnType(dart.void, [core.int, core.Object]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int])
  }));
  dart.setGetterSignature(JsArray, () => ({
    __proto__: dart.getGetters(JsArray.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setSetterSignature(JsArray, () => ({
    __proto__: dart.getSetters(JsArray.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.defineExtensionMethods(JsArray, [
    '_get',
    '_set',
    'add',
    'addAll',
    'insert',
    'removeAt',
    'removeLast',
    'removeRange',
    'setRange',
    'sort'
  ]);
  dart.defineExtensionAccessors(JsArray, ['length']);
  return JsArray;
});
js.JsArray = js.JsArray$();
dart.addTypeTests(js.JsArray, _is_JsArray_default);
js._isBrowserType = function(o) {
  return o instanceof Object && (o instanceof Blob || o instanceof Event || window.KeyRange && o instanceof KeyRange || window.IDBKeyRange && o instanceof IDBKeyRange || o instanceof ImageData || o instanceof Node || window.Int8Array && o instanceof Int8Array.__proto__ || o instanceof Window);
};
const _dartObj = Symbol('_dartObj');
js._DartObject = class _DartObject extends core.Object {};
(js._DartObject.new = function(dartObj) {
  this[_dartObj] = dartObj;
}).prototype = js._DartObject.prototype;
dart.addTypeTests(js._DartObject);
dart.setFieldSignature(js._DartObject, () => ({
  __proto__: dart.getFields(js._DartObject.__proto__),
  [_dartObj]: dart.finalFieldType(dart.dynamic)
}));
js._convertToJS = function(o) {
  if (o == null || typeof o == 'string' || typeof o == 'number' || typeof o == 'boolean' || dart.test(js._isBrowserType(o))) {
    return o;
  } else if (core.DateTime.is(o)) {
    return _js_helper.Primitives.lazyAsJsDate(o);
  } else if (js.JsObject.is(o)) {
    return o[_jsObject];
  } else if (core.Function.is(o)) {
    return js._putIfAbsent(js._jsProxies, o, dart.fn(js._wrapDartFunction, dynamicTodynamic()));
  } else {
    return js._putIfAbsent(js._jsProxies, o, dart.fn(o => new js._DartObject.new(o), dynamicTo_DartObject()));
  }
};
js._wrapDartFunction = function(f) {
  let wrapper = function() {
    let args = Array.prototype.map.call(arguments, js._convertToDart);
    return js._convertToJS(f(...args));
  };
  js._dartProxies.set(wrapper, f);
  return wrapper;
};
js._convertToDart = function(o) {
  if (o == null || typeof o == 'string' || typeof o == 'number' || typeof o == 'boolean' || dart.test(js._isBrowserType(o))) {
    return o;
  } else if (o instanceof Date) {
    let ms = o.getTime();
    return new core.DateTime.fromMillisecondsSinceEpoch(dart.asInt(ms));
  } else if (js._DartObject.is(o) && !core.identical(dart.getReifiedType(o), dart.jsobject)) {
    return o[_dartObj];
  } else {
    return js._wrapToDart(o);
  }
};
js._wrapToDart = function(o) {
  return js._putIfAbsent(js._dartProxies, o, dart.fn(js._wrapToDartHelper, dynamicToObject()));
};
js._wrapToDartHelper = function(o) {
  if (typeof o == "function") {
    return new js.JsFunction._fromJs(o);
  }
  if (o instanceof Array) {
    return new js.JsArray._fromJs(o);
  }
  return new js.JsObject._fromJs(o);
};
dart.defineLazy(js, {
  /*js._dartProxies*/get _dartProxies() {
    return new WeakMap();
  },
  /*js._jsProxies*/get _jsProxies() {
    return new WeakMap();
  }
});
js._putIfAbsent = function(weakMap, o, getValue) {
  let value = weakMap.get(o);
  if (value == null) {
    value = getValue(o);
    weakMap.set(o, value);
  }
  return value;
};
js.allowInterop = function(F, f) {
  return f;
};
dart.defineLazy(js, {
  /*js._interopCaptureThisExpando*/get _interopCaptureThisExpando() {
    return new (ExpandoOfFunction()).new();
  },
  set _interopCaptureThisExpando(_) {}
});
js.allowInteropCaptureThis = function(f) {
  let ret = js._interopCaptureThisExpando._get(f);
  if (ret == null) {
    ret = function() {
      let args = [this];
      for (let arg of arguments) {
        args.push(arg);
      }
      return f(...args);
    };
    js._interopCaptureThisExpando._set(f, ret);
  }
  return ret;
};
js_util.jsify = function(object) {
  if (!core.Map.is(object) && !core.Iterable.is(object)) {
    dart.throw(new core.ArgumentError.new("object must be a Map or Iterable"));
  }
  return js_util._convertDataTree(object);
};
js_util._convertDataTree = function(data) {
  let _convertedObjects = new _js_helper.IdentityMap.new();
  function _convert(o) {
    if (dart.test(_convertedObjects.containsKey(o))) {
      return _convertedObjects._get(o);
    }
    if (core.Map.is(o)) {
      let convertedMap = {};
      _convertedObjects._set(o, convertedMap);
      for (let key of o[$keys]) {
        convertedMap[key] = _convert(o[$_get](key));
      }
      return convertedMap;
    } else if (core.Iterable.is(o)) {
      let convertedList = [];
      _convertedObjects._set(o, convertedList);
      convertedList[$addAll](o[$map](dart.dynamic, _convert));
      return convertedList;
    } else {
      return o;
    }
  }
  dart.fn(_convert, dynamicTodynamic());
  return _convert(data);
};
js_util.newObject = function() {
  return {};
};
js_util.hasProperty = function(o, name) {
  return name in o;
};
js_util.getProperty = function(o, name) {
  return o[name];
};
js_util.setProperty = function(o, name, value) {
  return o[name] = value;
};
js_util.callMethod = function(o, method, args) {
  return o[method].apply(o, args);
};
js_util.instanceof = function(o, type) {
  return o instanceof type;
};
js_util.callConstructor = function(constr, arguments$0) {
  if (arguments$0 == null) {
    return new constr();
  }
  if (arguments$0 instanceof Array) {
    let argumentCount = arguments$0.length;
    switch (argumentCount) {
      case 0:
      {
        return new constr();
      }
      case 1:
      {
        let arg0 = arguments$0[0];
        return new constr(arg0);
      }
      case 2:
      {
        let arg0 = arguments$0[0];
        let arg1 = arguments$0[1];
        return new constr(arg0, arg1);
      }
      case 3:
      {
        let arg0 = arguments$0[0];
        let arg1 = arguments$0[1];
        let arg2 = arguments$0[2];
        return new constr(arg0, arg1, arg2);
      }
      case 4:
      {
        let arg0 = arguments$0[0];
        let arg1 = arguments$0[1];
        let arg2 = arguments$0[2];
        let arg3 = arguments$0[3];
        return new constr(arg0, arg1, arg2, arg3);
      }
    }
  }
  let args = [null];
  args[$addAll](arguments$0);
  let factoryFunction = constr.bind.apply(constr, args);
  String(factoryFunction);
  return new factoryFunction();
};
dart.defineLazy(math, {
  /*math.e*/get e() {
    return 2.718281828459045;
  },
  /*math.ln10*/get ln10() {
    return 2.302585092994046;
  },
  /*math.ln2*/get ln2() {
    return 0.6931471805599453;
  },
  /*math.log2e*/get log2e() {
    return 1.4426950408889634;
  },
  /*math.log10e*/get log10e() {
    return 0.4342944819032518;
  },
  /*math.pi*/get pi() {
    return 3.141592653589793;
  },
  /*math.sqrt1_2*/get sqrt1_2() {
    return 0.7071067811865476;
  },
  /*math.sqrt2*/get sqrt2() {
    return 1.4142135623730951;
  }
});
math.min = function(T, a, b) {
  if (a == null) dart.argumentError(a);
  if (b == null) dart.argumentError(b);
  return Math.min(a, b);
};
math.max = function(T, a, b) {
  if (a == null) dart.argumentError(a);
  if (b == null) dart.argumentError(b);
  return Math.max(a, b);
};
math.atan2 = function(a, b) {
  if (a == null) dart.argumentError(a);
  if (b == null) dart.argumentError(b);
  return Math.atan2(a, b);
};
math.pow = function(x, exponent) {
  if (x == null) dart.argumentError(x);
  if (exponent == null) dart.argumentError(exponent);
  return Math.pow(x, exponent);
};
math.sin = function(radians) {
  if (radians == null) dart.argumentError(radians);
  return Math.sin(radians);
};
math.cos = function(radians) {
  if (radians == null) dart.argumentError(radians);
  return Math.cos(radians);
};
math.tan = function(radians) {
  if (radians == null) dart.argumentError(radians);
  return Math.tan(radians);
};
math.acos = function(x) {
  if (x == null) dart.argumentError(x);
  return Math.acos(x);
};
math.asin = function(x) {
  if (x == null) dart.argumentError(x);
  return Math.asin(x);
};
math.atan = function(x) {
  if (x == null) dart.argumentError(x);
  return Math.atan(x);
};
math.sqrt = function(x) {
  if (x == null) dart.argumentError(x);
  return Math.sqrt(x);
};
math.exp = function(x) {
  if (x == null) dart.argumentError(x);
  return Math.exp(x);
};
math.log = function(x) {
  if (x == null) dart.argumentError(x);
  return Math.log(x);
};
dart.defineLazy(math, {
  /*math._POW2_32*/get _POW2_32() {
    return 4294967296;
  }
});
math._JSRandom = class _JSRandom extends core.Object {
  nextInt(max) {
    if (dart.notNull(max) <= 0 || dart.notNull(max) > 4294967296) {
      dart.throw(new core.RangeError.new("max must be in range 0 < max ≤ 2^32, was " + dart.str(max)));
    }
    return Math.random() * max >>> 0;
  }
  nextDouble() {
    return Math.random();
  }
  nextBool() {
    return Math.random() < 0.5;
  }
};
(math._JSRandom.new = function() {
}).prototype = math._JSRandom.prototype;
dart.addTypeTests(math._JSRandom);
math._JSRandom[dart.implements] = () => [math.Random];
dart.setMethodSignature(math._JSRandom, () => ({
  __proto__: dart.getMethods(math._JSRandom.__proto__),
  nextInt: dart.fnType(core.int, [core.int]),
  nextDouble: dart.fnType(core.double, []),
  nextBool: dart.fnType(core.bool, [])
}));
const _lo = Symbol('_lo');
const _hi = Symbol('_hi');
const _nextState = Symbol('_nextState');
math._Random = class _Random extends core.Object {
  [_nextState]() {
    let tmpHi = 4294901760 * this[_lo];
    let tmpHiLo = (tmpHi & 4294967295) >>> 0;
    let tmpHiHi = tmpHi - tmpHiLo;
    let tmpLo = 55905 * this[_lo];
    let tmpLoLo = (tmpLo & 4294967295) >>> 0;
    let tmpLoHi = tmpLo - tmpLoLo;
    let newLo = tmpLoLo + tmpHiLo + this[_hi];
    this[_lo] = (newLo & 4294967295) >>> 0;
    let newLoHi = newLo - this[_lo];
    this[_hi] = (((tmpLoHi + tmpHiHi + newLoHi) / 4294967296)[$truncate]() & 4294967295) >>> 0;
    if (!(this[_lo] < 4294967296)) dart.assertFailed();
    if (!(this[_hi] < 4294967296)) dart.assertFailed();
  }
  nextInt(max) {
    if (max == null) dart.argumentError(max);
    if (max <= 0 || max > 4294967296) {
      dart.throw(new core.RangeError.new("max must be in range 0 < max ≤ 2^32, was " + dart.str(max)));
    }
    if ((max & max - 1) === 0) {
      this[_nextState]();
      return (this[_lo] & max - 1) >>> 0;
    }
    let rnd32 = null;
    let result = null;
    do {
      this[_nextState]();
      rnd32 = this[_lo];
      result = dart.asInt(rnd32[$remainder](max));
    } while (dart.notNull(rnd32) - dart.notNull(result) + max >= 4294967296);
    return result;
  }
  nextDouble() {
    this[_nextState]();
    let bits26 = (this[_lo] & (1 << 26) - 1) >>> 0;
    this[_nextState]();
    let bits27 = (this[_lo] & (1 << 27) - 1) >>> 0;
    return (bits26 * 134217728.0 + bits27) / 9007199254740992.0;
  }
  nextBool() {
    this[_nextState]();
    return (this[_lo] & 1) === 0;
  }
};
(math._Random.new = function(seed) {
  this[_lo] = 0;
  this[_hi] = 0;
  let empty_seed = 0;
  if (dart.notNull(seed) < 0) {
    empty_seed = -1;
  }
  do {
    let low = (dart.notNull(seed) & 4294967295) >>> 0;
    seed = ((dart.notNull(seed) - low) / 4294967296)[$truncate]();
    let high = (dart.notNull(seed) & 4294967295) >>> 0;
    seed = ((dart.notNull(seed) - high) / 4294967296)[$truncate]();
    let tmplow = low << 21 >>> 0;
    let tmphigh = (high << 21 | low[$rightShift](11)) >>> 0;
    tmplow = ((~low & 4294967295) >>> 0) + tmplow;
    low = (tmplow & 4294967295) >>> 0;
    high = ((~high >>> 0) + tmphigh + ((tmplow - low) / 4294967296)[$truncate]() & 4294967295) >>> 0;
    tmphigh = high[$rightShift](24);
    tmplow = (low[$rightShift](24) | high << 8) >>> 0;
    low = (low ^ tmplow) >>> 0;
    high = (high ^ tmphigh) >>> 0;
    tmplow = low * 265;
    low = (tmplow & 4294967295) >>> 0;
    high = (high * 265 + ((tmplow - low) / 4294967296)[$truncate]() & 4294967295) >>> 0;
    tmphigh = high[$rightShift](14);
    tmplow = (low[$rightShift](14) | high << 18) >>> 0;
    low = (low ^ tmplow) >>> 0;
    high = (high ^ tmphigh) >>> 0;
    tmplow = low * 21;
    low = (tmplow & 4294967295) >>> 0;
    high = (high * 21 + ((tmplow - low) / 4294967296)[$truncate]() & 4294967295) >>> 0;
    tmphigh = high[$rightShift](28);
    tmplow = (low[$rightShift](28) | high << 4) >>> 0;
    low = (low ^ tmplow) >>> 0;
    high = (high ^ tmphigh) >>> 0;
    tmplow = low << 31 >>> 0;
    tmphigh = (high << 31 | low[$rightShift](1)) >>> 0;
    tmplow = tmplow + low;
    low = (tmplow & 4294967295) >>> 0;
    high = (high + tmphigh + ((tmplow - low) / 4294967296)[$truncate]() & 4294967295) >>> 0;
    tmplow = this[_lo] * 1037;
    this[_lo] = (tmplow & 4294967295) >>> 0;
    this[_hi] = (this[_hi] * 1037 + ((tmplow - this[_lo]) / 4294967296)[$truncate]() & 4294967295) >>> 0;
    this[_lo] = (this[_lo] ^ low) >>> 0;
    this[_hi] = (this[_hi] ^ high) >>> 0;
  } while (seed !== empty_seed);
  if (this[_hi] === 0 && this[_lo] === 0) {
    this[_lo] = 23063;
  }
  this[_nextState]();
  this[_nextState]();
  this[_nextState]();
  this[_nextState]();
}).prototype = math._Random.prototype;
dart.addTypeTests(math._Random);
math._Random[dart.implements] = () => [math.Random];
dart.setMethodSignature(math._Random, () => ({
  __proto__: dart.getMethods(math._Random.__proto__),
  [_nextState]: dart.fnType(dart.void, []),
  nextInt: dart.fnType(core.int, [core.int]),
  nextDouble: dart.fnType(core.double, []),
  nextBool: dart.fnType(core.bool, [])
}));
dart.setFieldSignature(math._Random, () => ({
  __proto__: dart.getFields(math._Random.__proto__),
  [_lo]: dart.fieldType(core.int),
  [_hi]: dart.fieldType(core.int)
}));
dart.defineLazy(math._Random, {
  /*math._Random._POW2_53_D*/get _POW2_53_D() {
    return 1.0 * 9007199254740992;
  },
  /*math._Random._POW2_27_D*/get _POW2_27_D() {
    return 1.0 * (1 << 27);
  },
  /*math._Random._MASK32*/get _MASK32() {
    return 4294967295;
  }
});
const _buffer$0 = Symbol('_buffer');
const _getRandomBytes = Symbol('_getRandomBytes');
math._JSSecureRandom = class _JSSecureRandom extends core.Object {
  [_getRandomBytes](start, length) {
    crypto.getRandomValues(this[_buffer$0][$buffer][$asUint8List](start, length));
  }
  nextBool() {
    this[_getRandomBytes](0, 1);
    return this[_buffer$0][$getUint8](0)[$isOdd];
  }
  nextDouble() {
    this[_getRandomBytes](1, 7);
    this[_buffer$0][$setUint8](0, 63);
    let highByte = this[_buffer$0][$getUint8](1);
    this[_buffer$0][$setUint8](1, (dart.notNull(highByte) | 240) >>> 0);
    let result = dart.notNull(this[_buffer$0][$getFloat64](0)) - 1.0;
    if ((dart.notNull(highByte) & 16) !== 0) {
      result = result + 1.1102230246251565e-16;
    }
    return result;
  }
  nextInt(max) {
    if (max == null) dart.argumentError(max);
    if (max <= 0 || max > 4294967296) {
      dart.throw(new core.RangeError.new("max must be in range 0 < max ≤ 2^32, was " + dart.str(max)));
    }
    let byteCount = 1;
    if (max > 255) {
      byteCount++;
      if (max > 65535) {
        byteCount++;
        if (max > 16777215) {
          byteCount++;
        }
      }
    }
    this[_buffer$0][$setUint32](0, 0);
    let start = 4 - byteCount;
    let randomLimit = dart.asInt(math.pow(256, byteCount));
    while (true) {
      this[_getRandomBytes](start, byteCount);
      let random = this[_buffer$0][$getUint32](0);
      if ((max & max - 1) === 0) {
        return (dart.notNull(random) & max - 1) >>> 0;
      }
      let result = dart.asInt(random[$remainder](max));
      if (dart.notNull(random) - dart.notNull(result) + max < dart.notNull(randomLimit)) {
        return result;
      }
    }
  }
};
(math._JSSecureRandom.new = function() {
  this[_buffer$0] = typed_data.ByteData.new(8);
  let crypto = self.crypto;
  if (crypto != null) {
    let getRandomValues = crypto.getRandomValues;
    if (getRandomValues != null) {
      return;
    }
  }
  dart.throw(new core.UnsupportedError.new("No source of cryptographically secure random numbers available."));
}).prototype = math._JSSecureRandom.prototype;
dart.addTypeTests(math._JSSecureRandom);
math._JSSecureRandom[dart.implements] = () => [math.Random];
dart.setMethodSignature(math._JSSecureRandom, () => ({
  __proto__: dart.getMethods(math._JSSecureRandom.__proto__),
  [_getRandomBytes]: dart.fnType(dart.void, [core.int, core.int]),
  nextBool: dart.fnType(core.bool, []),
  nextDouble: dart.fnType(core.double, []),
  nextInt: dart.fnType(core.int, [core.int])
}));
dart.setFieldSignature(math._JSSecureRandom, () => ({
  __proto__: dart.getFields(math._JSSecureRandom.__proto__),
  [_buffer$0]: dart.finalFieldType(typed_data.ByteData)
}));
math._JenkinsSmiHash = class _JenkinsSmiHash extends core.Object {
  static combine(hash, value) {
    hash = 536870911 & dart.notNull(hash) + dart.notNull(value);
    hash = 536870911 & dart.notNull(hash) + ((524287 & dart.notNull(hash)) << 10);
    return (dart.notNull(hash) ^ hash[$rightShift](6)) >>> 0;
  }
  static finish(hash) {
    hash = 536870911 & dart.notNull(hash) + ((67108863 & dart.notNull(hash)) << 3);
    hash = (dart.notNull(hash) ^ hash[$rightShift](11)) >>> 0;
    return 536870911 & dart.notNull(hash) + ((16383 & dart.notNull(hash)) << 15);
  }
  static hash2(a, b) {
    return math._JenkinsSmiHash.finish(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)));
  }
  static hash4(a, b, c, d) {
    return math._JenkinsSmiHash.finish(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(math._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)), core.int._check(c)), core.int._check(d)));
  }
};
(math._JenkinsSmiHash.new = function() {
}).prototype = math._JenkinsSmiHash.prototype;
dart.addTypeTests(math._JenkinsSmiHash);
const _is_Point_default = Symbol('_is_Point_default');
math.Point$ = dart.generic(T => {
  let PointOfT = () => (PointOfT = dart.constFn(math.Point$(T)))();
  class Point extends core.Object {
    get x() {
      return this[x$];
    }
    set x(value) {
      super.x = value;
    }
    get y() {
      return this[y$];
    }
    set y(value) {
      super.y = value;
    }
    toString() {
      return "Point(" + dart.str(this.x) + ", " + dart.str(this.y) + ")";
    }
    _equals(other) {
      return PointOfnum().is(other) && this.x == other.x && this.y == other.y;
    }
    get hashCode() {
      return math._JenkinsSmiHash.hash2(dart.hashCode(this.x), dart.hashCode(this.y));
    }
    ['+'](other) {
      PointOfT()._check(other);
      return new (PointOfT()).new(dart.notNull(this.x) + dart.notNull(other.x), dart.notNull(this.y) + dart.notNull(other.y));
    }
    ['-'](other) {
      PointOfT()._check(other);
      return new (PointOfT()).new(dart.notNull(this.x) - dart.notNull(other.x), dart.notNull(this.y) - dart.notNull(other.y));
    }
    ['*'](factor) {
      return new (PointOfT()).new(dart.notNull(this.x) * dart.notNull(factor), dart.notNull(this.y) * dart.notNull(factor));
    }
    get magnitude() {
      return math.sqrt(dart.notNull(this.x) * dart.notNull(this.x) + dart.notNull(this.y) * dart.notNull(this.y));
    }
    distanceTo(other) {
      PointOfT()._check(other);
      let dx = dart.notNull(this.x) - dart.notNull(other.x);
      let dy = dart.notNull(this.y) - dart.notNull(other.y);
      return math.sqrt(dx * dx + dy * dy);
    }
    squaredDistanceTo(other) {
      PointOfT()._check(other);
      let dx = dart.notNull(this.x) - dart.notNull(other.x);
      let dy = dart.notNull(this.y) - dart.notNull(other.y);
      return dx * dx + dy * dy;
    }
  }
  (Point.new = function(x, y) {
    this[x$] = x;
    this[y$] = y;
  }).prototype = Point.prototype;
  dart.addTypeTests(Point);
  Point.prototype[_is_Point_default] = true;
  const x$ = Symbol("Point.x");
  const y$ = Symbol("Point.y");
  dart.setMethodSignature(Point, () => ({
    __proto__: dart.getMethods(Point.__proto__),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, []),
    _equals: dart.fnType(core.bool, [dart.dynamic]),
    [$_equals]: dart.fnType(core.bool, [dart.dynamic]),
    '+': dart.fnType(math.Point$(T), [core.Object]),
    '-': dart.fnType(math.Point$(T), [core.Object]),
    '*': dart.fnType(math.Point$(T), [core.num]),
    distanceTo: dart.fnType(core.double, [core.Object]),
    squaredDistanceTo: dart.fnType(T, [core.Object])
  }));
  dart.setGetterSignature(Point, () => ({
    __proto__: dart.getGetters(Point.__proto__),
    hashCode: core.int,
    [$hashCode]: core.int,
    magnitude: core.double
  }));
  dart.setFieldSignature(Point, () => ({
    __proto__: dart.getFields(Point.__proto__),
    x: dart.finalFieldType(T),
    y: dart.finalFieldType(T)
  }));
  dart.defineExtensionMethods(Point, ['toString', '_equals']);
  dart.defineExtensionAccessors(Point, ['hashCode']);
  return Point;
});
math.Point = math.Point$();
dart.addTypeTests(math.Point, _is_Point_default);
let const$68;
math.Random = class Random extends core.Object {
  static new(seed) {
    if (seed === void 0) seed = null;
    return seed == null ? const$68 || (const$68 = dart.const(new math._JSRandom.new())) : new math._Random.new(seed);
  }
  static secure() {
    return math.Random._secureRandom;
  }
};
(math.Random[dart.mixinNew] = function() {
}).prototype = math.Random.prototype;
dart.addTypeTests(math.Random);
dart.defineLazy(math.Random, {
  /*math.Random._secureRandom*/get _secureRandom() {
    return new math._JSSecureRandom.new();
  }
});
const _is__RectangleBase_default = Symbol('_is__RectangleBase_default');
math._RectangleBase$ = dart.generic(T => {
  let RectangleOfT = () => (RectangleOfT = dart.constFn(math.Rectangle$(T)))();
  let PointOfT = () => (PointOfT = dart.constFn(math.Point$(T)))();
  class _RectangleBase extends core.Object {
    get right() {
      return dart.notNull(this[$left]) + dart.notNull(this[$width]);
    }
    get bottom() {
      return dart.notNull(this[$top]) + dart.notNull(this[$height]);
    }
    toString() {
      return "Rectangle (" + dart.str(this[$left]) + ", " + dart.str(this[$top]) + ") " + dart.str(this[$width]) + " x " + dart.str(this[$height]);
    }
    _equals(other) {
      return RectangleOfnum().is(other) && this[$left] == other[$left] && this[$top] == other[$top] && this[$right] == other[$right] && this[$bottom] == other[$bottom];
    }
    get hashCode() {
      return math._JenkinsSmiHash.hash4(dart.hashCode(this[$left]), dart.hashCode(this[$top]), dart.hashCode(this[$right]), dart.hashCode(this[$bottom]));
    }
    intersection(other) {
      RectangleOfT()._check(other);
      let x0 = math.max(T, this[$left], other[$left]);
      let x1 = math.min(T, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
      if (x0 <= x1) {
        let y0 = math.max(T, this[$top], other[$top]);
        let y1 = math.min(T, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
        if (y0 <= y1) {
          return new (RectangleOfT()).new(x0, y0, x1 - x0, y1 - y0);
        }
      }
      return null;
    }
    intersects(other) {
      return dart.notNull(this[$left]) <= dart.notNull(other[$left]) + dart.notNull(other[$width]) && dart.notNull(other[$left]) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(this[$top]) <= dart.notNull(other[$top]) + dart.notNull(other[$height]) && dart.notNull(other[$top]) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
    }
    boundingBox(other) {
      RectangleOfT()._check(other);
      let right = math.max(T, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
      let bottom = math.max(T, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
      let left = math.min(T, this[$left], other[$left]);
      let top = math.min(T, this[$top], other[$top]);
      return new (RectangleOfT()).new(left, top, right - left, bottom - top);
    }
    containsRectangle(another) {
      return dart.notNull(this[$left]) <= dart.notNull(another[$left]) && dart.notNull(this[$left]) + dart.notNull(this[$width]) >= dart.notNull(another[$left]) + dart.notNull(another[$width]) && dart.notNull(this[$top]) <= dart.notNull(another[$top]) && dart.notNull(this[$top]) + dart.notNull(this[$height]) >= dart.notNull(another[$top]) + dart.notNull(another[$height]);
    }
    containsPoint(another) {
      return dart.notNull(another.x) >= dart.notNull(this[$left]) && dart.notNull(another.x) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(another.y) >= dart.notNull(this[$top]) && dart.notNull(another.y) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
    }
    get topLeft() {
      return new (PointOfT()).new(this[$left], this[$top]);
    }
    get topRight() {
      return new (PointOfT()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), this[$top]);
    }
    get bottomRight() {
      return new (PointOfT()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(this[$top]) + dart.notNull(this[$height]));
    }
    get bottomLeft() {
      return new (PointOfT()).new(this[$left], dart.notNull(this[$top]) + dart.notNull(this[$height]));
    }
  }
  (_RectangleBase.new = function() {
  }).prototype = _RectangleBase.prototype;
  dart.addTypeTests(_RectangleBase);
  _RectangleBase.prototype[_is__RectangleBase_default] = true;
  dart.setMethodSignature(_RectangleBase, () => ({
    __proto__: dart.getMethods(_RectangleBase.__proto__),
    toString: dart.fnType(core.String, []),
    [$toString]: dart.fnType(core.String, []),
    _equals: dart.fnType(core.bool, [dart.dynamic]),
    [$_equals]: dart.fnType(core.bool, [dart.dynamic]),
    intersection: dart.fnType(math.Rectangle$(T), [core.Object]),
    [$intersection]: dart.fnType(math.Rectangle$(T), [core.Object]),
    intersects: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
    [$intersects]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
    boundingBox: dart.fnType(math.Rectangle$(T), [core.Object]),
    [$boundingBox]: dart.fnType(math.Rectangle$(T), [core.Object]),
    containsRectangle: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
    [$containsRectangle]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
    containsPoint: dart.fnType(core.bool, [math.Point$(core.num)]),
    [$containsPoint]: dart.fnType(core.bool, [math.Point$(core.num)])
  }));
  dart.setGetterSignature(_RectangleBase, () => ({
    __proto__: dart.getGetters(_RectangleBase.__proto__),
    right: T,
    [$right]: T,
    bottom: T,
    [$bottom]: T,
    hashCode: core.int,
    [$hashCode]: core.int,
    topLeft: math.Point$(T),
    [$topLeft]: math.Point$(T),
    topRight: math.Point$(T),
    [$topRight]: math.Point$(T),
    bottomRight: math.Point$(T),
    [$bottomRight]: math.Point$(T),
    bottomLeft: math.Point$(T),
    [$bottomLeft]: math.Point$(T)
  }));
  dart.defineExtensionMethods(_RectangleBase, [
    'toString',
    '_equals',
    'intersection',
    'intersects',
    'boundingBox',
    'containsRectangle',
    'containsPoint'
  ]);
  dart.defineExtensionAccessors(_RectangleBase, [
    'right',
    'bottom',
    'hashCode',
    'topLeft',
    'topRight',
    'bottomRight',
    'bottomLeft'
  ]);
  return _RectangleBase;
});
math._RectangleBase = math._RectangleBase$();
dart.addTypeTests(math._RectangleBase, _is__RectangleBase_default);
const _is_Rectangle_default = Symbol('_is_Rectangle_default');
math.Rectangle$ = dart.generic(T => {
  let RectangleOfT = () => (RectangleOfT = dart.constFn(math.Rectangle$(T)))();
  class Rectangle extends math._RectangleBase$(T) {
    get left() {
      return this[left$];
    }
    set left(value) {
      super.left = value;
    }
    get top() {
      return this[top$];
    }
    set top(value) {
      super.top = value;
    }
    get width() {
      return this[width$];
    }
    set width(value) {
      super.width = value;
    }
    get height() {
      return this[height$];
    }
    set height(value) {
      super.height = value;
    }
    static fromPoints(a, b) {
      let left = math.min(T, a.x, b.x);
      let width = math.max(T, a.x, b.x) - left;
      let top = math.min(T, a.y, b.y);
      let height = math.max(T, a.y, b.y) - top;
      return new (RectangleOfT()).new(left, top, width, height);
    }
  }
  (Rectangle.new = function(left, top, width, height) {
    this[left$] = left;
    this[top$] = top;
    this[width$] = dart.notNull(width) < 0 ? -dart.notNull(width) * 0 : width;
    this[height$] = dart.notNull(height) < 0 ? -dart.notNull(height) * 0 : height;
    Rectangle.__proto__.new.call(this);
  }).prototype = Rectangle.prototype;
  dart.addTypeTests(Rectangle);
  Rectangle.prototype[_is_Rectangle_default] = true;
  const left$ = Symbol("Rectangle.left");
  const top$ = Symbol("Rectangle.top");
  const width$ = Symbol("Rectangle.width");
  const height$ = Symbol("Rectangle.height");
  dart.setFieldSignature(Rectangle, () => ({
    __proto__: dart.getFields(Rectangle.__proto__),
    left: dart.finalFieldType(T),
    top: dart.finalFieldType(T),
    width: dart.finalFieldType(T),
    height: dart.finalFieldType(T)
  }));
  dart.defineExtensionAccessors(Rectangle, ['left', 'top', 'width', 'height']);
  return Rectangle;
});
math.Rectangle = math.Rectangle$();
dart.addTypeTests(math.Rectangle, _is_Rectangle_default);
const _width = Symbol('_width');
const _height = Symbol('_height');
const _is_MutableRectangle_default = Symbol('_is_MutableRectangle_default');
math.MutableRectangle$ = dart.generic(T => {
  let MutableRectangleOfT = () => (MutableRectangleOfT = dart.constFn(math.MutableRectangle$(T)))();
  let RectangleOfT = () => (RectangleOfT = dart.constFn(math.Rectangle$(T)))();
  class MutableRectangle extends math._RectangleBase$(T) {
    get left() {
      return this[left$];
    }
    set left(value) {
      this[left$] = T._check(value);
    }
    get top() {
      return this[top$];
    }
    set top(value) {
      this[top$] = T._check(value);
    }
    static fromPoints(a, b) {
      let left = math.min(T, a.x, b.x);
      let width = math.max(T, a.x, b.x) - left;
      let top = math.min(T, a.y, b.y);
      let height = math.max(T, a.y, b.y) - top;
      return new (MutableRectangleOfT()).new(left, top, width, height);
    }
    get width() {
      return this[_width];
    }
    set width(width) {
      T._check(width);
      if (dart.notNull(width) < 0) width = math._clampToZero(T, width);
      this[_width] = width;
    }
    get height() {
      return this[_height];
    }
    set height(height) {
      T._check(height);
      if (dart.notNull(height) < 0) height = math._clampToZero(T, height);
      this[_height] = height;
    }
  }
  (MutableRectangle.new = function(left, top, width, height) {
    this[left$] = left;
    this[top$] = top;
    this[_width] = dart.notNull(width) < 0 ? math._clampToZero(T, width) : width;
    this[_height] = dart.notNull(height) < 0 ? math._clampToZero(T, height) : height;
    MutableRectangle.__proto__.new.call(this);
  }).prototype = MutableRectangle.prototype;
  dart.addTypeTests(MutableRectangle);
  MutableRectangle.prototype[_is_MutableRectangle_default] = true;
  const left$ = Symbol("MutableRectangle.left");
  const top$ = Symbol("MutableRectangle.top");
  MutableRectangle[dart.implements] = () => [RectangleOfT()];
  dart.setGetterSignature(MutableRectangle, () => ({
    __proto__: dart.getGetters(MutableRectangle.__proto__),
    width: T,
    [$width]: T,
    height: T,
    [$height]: T
  }));
  dart.setSetterSignature(MutableRectangle, () => ({
    __proto__: dart.getSetters(MutableRectangle.__proto__),
    width: T,
    [$width]: T,
    height: T,
    [$height]: T
  }));
  dart.setFieldSignature(MutableRectangle, () => ({
    __proto__: dart.getFields(MutableRectangle.__proto__),
    left: dart.fieldType(T),
    top: dart.fieldType(T),
    [_width]: dart.fieldType(T),
    [_height]: dart.fieldType(T)
  }));
  dart.defineExtensionAccessors(MutableRectangle, ['width', 'height', 'left', 'top']);
  return MutableRectangle;
});
math.MutableRectangle = math.MutableRectangle$();
dart.addTypeTests(math.MutableRectangle, _is_MutableRectangle_default);
math._clampToZero = function(T, value) {
  if (!(dart.notNull(value) < 0)) dart.assertFailed();
  return -dart.notNull(value) * 0;
};
mirrors.MirrorSystem = class MirrorSystem extends core.Object {
  findLibrary(libraryName) {
    return this.libraries[$values][$singleWhere](dart.fn(library => dart.equals(library.simpleName, libraryName), LibraryMirrorTobool()));
  }
  static getName(symbol) {
    return _js_mirrors.getName(symbol);
  }
  static getSymbol(name, library) {
    if (library === void 0) library = null;
    return _js_mirrors.getSymbol(name, library);
  }
};
(mirrors.MirrorSystem.new = function() {
}).prototype = mirrors.MirrorSystem.prototype;
dart.addTypeTests(mirrors.MirrorSystem);
dart.setMethodSignature(mirrors.MirrorSystem, () => ({
  __proto__: dart.getMethods(mirrors.MirrorSystem.__proto__),
  findLibrary: dart.fnType(mirrors.LibraryMirror, [core.Symbol])
}));
mirrors.currentMirrorSystem = function() {
  return _js_mirrors.currentJsMirrorSystem;
};
mirrors.reflect = function(reflectee) {
  return _js_mirrors.reflect(reflectee);
};
mirrors.reflectClass = function(key) {
  if (!core.Type.is(key) || dart.equals(key, dart.wrapType(dart.dynamic))) {
    dart.throw(new core.ArgumentError.new(dart.str(key) + " does not denote a class"));
  }
  let tm = mirrors.reflectType(key);
  if (!mirrors.ClassMirror.is(tm)) {
    dart.throw(new core.ArgumentError.new(dart.str(key) + " does not denote a class"));
  }
  return mirrors.ClassMirror._check(mirrors.ClassMirror.as(tm).originalDeclaration);
};
mirrors.reflectType = function(type, typeArguments) {
  if (typeArguments === void 0) typeArguments = null;
  if (typeArguments != null) {
    type = mirrors._instantiateClass(type, typeArguments);
  }
  return _js_mirrors.reflectType(type);
};
mirrors.Mirror = class Mirror extends core.Object {};
(mirrors.Mirror.new = function() {
}).prototype = mirrors.Mirror.prototype;
dart.addTypeTests(mirrors.Mirror);
mirrors.IsolateMirror = class IsolateMirror extends core.Object {};
(mirrors.IsolateMirror.new = function() {
}).prototype = mirrors.IsolateMirror.prototype;
dart.addTypeTests(mirrors.IsolateMirror);
mirrors.IsolateMirror[dart.implements] = () => [mirrors.Mirror];
mirrors.DeclarationMirror = class DeclarationMirror extends core.Object {};
(mirrors.DeclarationMirror.new = function() {
}).prototype = mirrors.DeclarationMirror.prototype;
dart.addTypeTests(mirrors.DeclarationMirror);
mirrors.DeclarationMirror[dart.implements] = () => [mirrors.Mirror];
mirrors.ObjectMirror = class ObjectMirror extends core.Object {};
(mirrors.ObjectMirror.new = function() {
}).prototype = mirrors.ObjectMirror.prototype;
dart.addTypeTests(mirrors.ObjectMirror);
mirrors.ObjectMirror[dart.implements] = () => [mirrors.Mirror];
mirrors.InstanceMirror = class InstanceMirror extends core.Object {};
(mirrors.InstanceMirror.new = function() {
}).prototype = mirrors.InstanceMirror.prototype;
dart.addTypeTests(mirrors.InstanceMirror);
mirrors.InstanceMirror[dart.implements] = () => [mirrors.ObjectMirror];
mirrors.ClosureMirror = class ClosureMirror extends core.Object {};
(mirrors.ClosureMirror.new = function() {
}).prototype = mirrors.ClosureMirror.prototype;
dart.addTypeTests(mirrors.ClosureMirror);
mirrors.ClosureMirror[dart.implements] = () => [mirrors.InstanceMirror];
mirrors.LibraryMirror = class LibraryMirror extends core.Object {};
(mirrors.LibraryMirror.new = function() {
}).prototype = mirrors.LibraryMirror.prototype;
dart.addTypeTests(mirrors.LibraryMirror);
mirrors.LibraryMirror[dart.implements] = () => [mirrors.DeclarationMirror, mirrors.ObjectMirror];
mirrors.LibraryDependencyMirror = class LibraryDependencyMirror extends core.Object {};
(mirrors.LibraryDependencyMirror.new = function() {
}).prototype = mirrors.LibraryDependencyMirror.prototype;
dart.addTypeTests(mirrors.LibraryDependencyMirror);
mirrors.LibraryDependencyMirror[dart.implements] = () => [mirrors.Mirror];
mirrors.CombinatorMirror = class CombinatorMirror extends core.Object {};
(mirrors.CombinatorMirror.new = function() {
}).prototype = mirrors.CombinatorMirror.prototype;
dart.addTypeTests(mirrors.CombinatorMirror);
mirrors.CombinatorMirror[dart.implements] = () => [mirrors.Mirror];
mirrors.TypeMirror = class TypeMirror extends core.Object {};
(mirrors.TypeMirror.new = function() {
}).prototype = mirrors.TypeMirror.prototype;
dart.addTypeTests(mirrors.TypeMirror);
mirrors.TypeMirror[dart.implements] = () => [mirrors.DeclarationMirror];
mirrors.ClassMirror = class ClassMirror extends core.Object {};
(mirrors.ClassMirror.new = function() {
}).prototype = mirrors.ClassMirror.prototype;
dart.addTypeTests(mirrors.ClassMirror);
mirrors.ClassMirror[dart.implements] = () => [mirrors.TypeMirror, mirrors.ObjectMirror];
mirrors.FunctionTypeMirror = class FunctionTypeMirror extends core.Object {};
(mirrors.FunctionTypeMirror.new = function() {
}).prototype = mirrors.FunctionTypeMirror.prototype;
dart.addTypeTests(mirrors.FunctionTypeMirror);
mirrors.FunctionTypeMirror[dart.implements] = () => [mirrors.ClassMirror];
mirrors.TypeVariableMirror = class TypeVariableMirror extends mirrors.TypeMirror {};
(mirrors.TypeVariableMirror.new = function() {
}).prototype = mirrors.TypeVariableMirror.prototype;
dart.addTypeTests(mirrors.TypeVariableMirror);
mirrors.TypedefMirror = class TypedefMirror extends core.Object {};
(mirrors.TypedefMirror.new = function() {
}).prototype = mirrors.TypedefMirror.prototype;
dart.addTypeTests(mirrors.TypedefMirror);
mirrors.TypedefMirror[dart.implements] = () => [mirrors.TypeMirror];
mirrors.MethodMirror = class MethodMirror extends core.Object {};
(mirrors.MethodMirror.new = function() {
}).prototype = mirrors.MethodMirror.prototype;
dart.addTypeTests(mirrors.MethodMirror);
mirrors.MethodMirror[dart.implements] = () => [mirrors.DeclarationMirror];
mirrors.VariableMirror = class VariableMirror extends core.Object {};
(mirrors.VariableMirror.new = function() {
}).prototype = mirrors.VariableMirror.prototype;
dart.addTypeTests(mirrors.VariableMirror);
mirrors.VariableMirror[dart.implements] = () => [mirrors.DeclarationMirror];
mirrors.ParameterMirror = class ParameterMirror extends core.Object {};
(mirrors.ParameterMirror.new = function() {
}).prototype = mirrors.ParameterMirror.prototype;
dart.addTypeTests(mirrors.ParameterMirror);
mirrors.ParameterMirror[dart.implements] = () => [mirrors.VariableMirror];
mirrors.SourceLocation = class SourceLocation extends core.Object {};
(mirrors.SourceLocation.new = function() {
}).prototype = mirrors.SourceLocation.prototype;
dart.addTypeTests(mirrors.SourceLocation);
mirrors.Comment = class Comment extends core.Object {
  get text() {
    return this[text$];
  }
  set text(value) {
    super.text = value;
  }
  get trimmedText() {
    return this[trimmedText$];
  }
  set trimmedText(value) {
    super.trimmedText = value;
  }
  get isDocComment() {
    return this[isDocComment$];
  }
  set isDocComment(value) {
    super.isDocComment = value;
  }
};
(mirrors.Comment.new = function(text, trimmedText, isDocComment) {
  this[text$] = text;
  this[trimmedText$] = trimmedText;
  this[isDocComment$] = isDocComment;
}).prototype = mirrors.Comment.prototype;
dart.addTypeTests(mirrors.Comment);
const text$ = Symbol("Comment.text");
const trimmedText$ = Symbol("Comment.trimmedText");
const isDocComment$ = Symbol("Comment.isDocComment");
dart.setFieldSignature(mirrors.Comment, () => ({
  __proto__: dart.getFields(mirrors.Comment.__proto__),
  text: dart.finalFieldType(core.String),
  trimmedText: dart.finalFieldType(core.String),
  isDocComment: dart.finalFieldType(core.bool)
}));
mirrors.MirrorsUsed = class MirrorsUsed extends core.Object {
  get symbols() {
    return this[symbols$];
  }
  set symbols(value) {
    super.symbols = value;
  }
  get targets() {
    return this[targets$];
  }
  set targets(value) {
    super.targets = value;
  }
  get metaTargets() {
    return this[metaTargets$];
  }
  set metaTargets(value) {
    super.metaTargets = value;
  }
  get override() {
    return this[override$];
  }
  set override(value) {
    super.override = value;
  }
};
(mirrors.MirrorsUsed.new = function(opts) {
  let symbols = opts && 'symbols' in opts ? opts.symbols : null;
  let targets = opts && 'targets' in opts ? opts.targets : null;
  let metaTargets = opts && 'metaTargets' in opts ? opts.metaTargets : null;
  let override = opts && 'override' in opts ? opts.override : null;
  this[symbols$] = symbols;
  this[targets$] = targets;
  this[metaTargets$] = metaTargets;
  this[override$] = override;
}).prototype = mirrors.MirrorsUsed.prototype;
dart.addTypeTests(mirrors.MirrorsUsed);
const symbols$ = Symbol("MirrorsUsed.symbols");
const targets$ = Symbol("MirrorsUsed.targets");
const metaTargets$ = Symbol("MirrorsUsed.metaTargets");
const override$ = Symbol("MirrorsUsed.override");
dart.setFieldSignature(mirrors.MirrorsUsed, () => ({
  __proto__: dart.getFields(mirrors.MirrorsUsed.__proto__),
  symbols: dart.finalFieldType(dart.dynamic),
  targets: dart.finalFieldType(dart.dynamic),
  metaTargets: dart.finalFieldType(dart.dynamic),
  override: dart.finalFieldType(dart.dynamic)
}));
mirrors._instantiateClass = function(type, typeArguments) {
  let unwrapped = dart.unwrapType(type);
  let genericClass = dart.getGenericClass(unwrapped);
  if (genericClass == null) {
    dart.throw(new core.ArgumentError.new("Type `" + dart.str(type) + "` must be generic to apply " + ("type arguments: `" + dart.str(typeArguments) + "`.")));
  }
  let typeArgsLenth = typeArguments[$length];
  let unwrappedArgs = core.List.new(typeArgsLenth);
  for (let i = 0; i < dart.notNull(typeArgsLenth); i++) {
    unwrappedArgs[$_set](i, dart.unwrapType(typeArguments[$_get](i)));
  }
  let typeFormals = dart.getGenericTypeFormals(genericClass);
  if (typeFormals[$length] != typeArgsLenth) {
    dart.throw(new core.ArgumentError.new("Type `" + dart.str(type) + "` has " + dart.str(typeFormals[$length]) + " type " + ("parameters, but " + dart.str(typeArgsLenth) + " type arguments were ") + ("passed: `" + dart.str(typeArguments) + "`.")));
  }
  return dart.wrapType(dart.instantiateClass(genericClass, unwrappedArgs));
};
typed_data.ByteBuffer = class ByteBuffer extends core.Object {};
(typed_data.ByteBuffer.new = function() {
}).prototype = typed_data.ByteBuffer.prototype;
dart.addTypeTests(typed_data.ByteBuffer);
typed_data.TypedData = class TypedData extends core.Object {};
(typed_data.TypedData.new = function() {
}).prototype = typed_data.TypedData.prototype;
dart.addTypeTests(typed_data.TypedData);
typed_data._TypedIntList = class _TypedIntList extends typed_data.TypedData {};
(typed_data._TypedIntList.new = function() {
}).prototype = typed_data._TypedIntList.prototype;
dart.addTypeTests(typed_data._TypedIntList);
typed_data._TypedFloatList = class _TypedFloatList extends typed_data.TypedData {};
(typed_data._TypedFloatList.new = function() {
}).prototype = typed_data._TypedFloatList.prototype;
dart.addTypeTests(typed_data._TypedFloatList);
const _littleEndian = Symbol('_littleEndian');
typed_data.Endian = class Endian extends core.Object {};
(typed_data.Endian.__ = function(littleEndian) {
  this[_littleEndian] = littleEndian;
}).prototype = typed_data.Endian.prototype;
dart.addTypeTests(typed_data.Endian);
dart.setFieldSignature(typed_data.Endian, () => ({
  __proto__: dart.getFields(typed_data.Endian.__proto__),
  [_littleEndian]: dart.finalFieldType(core.bool)
}));
dart.defineLazy(typed_data.Endian, {
  /*typed_data.Endian.big*/get big() {
    return dart.const(new typed_data.Endian.__(false));
  },
  /*typed_data.Endian.little*/get little() {
    return dart.const(new typed_data.Endian.__(true));
  },
  /*typed_data.Endian.host*/get host() {
    return typed_data.ByteData.view(typed_data.Uint16List.fromList(JSArrayOfint().of([1]))[$buffer])[$getInt8](0) === 1 ? typed_data.Endian.little : typed_data.Endian.big;
  }
});
typed_data.ByteData = class ByteData extends core.Object {
  static new(length) {
    return _native_typed_data.NativeByteData.new(length);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asByteData](offsetInBytes, length);
  }
};
(typed_data.ByteData[dart.mixinNew] = function() {
}).prototype = typed_data.ByteData.prototype;
dart.addTypeTests(typed_data.ByteData);
typed_data.ByteData[dart.implements] = () => [typed_data.TypedData];
typed_data.Int8List = class Int8List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeInt8List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt8List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asInt8List](offsetInBytes, length);
  }
};
(typed_data.Int8List[dart.mixinNew] = function() {
}).prototype = typed_data.Int8List.prototype;
typed_data.Int8List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Int8List);
typed_data.Int8List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
dart.defineLazy(typed_data.Int8List, {
  /*typed_data.Int8List.bytesPerElement*/get bytesPerElement() {
    return 1;
  }
});
typed_data.Uint8List = class Uint8List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeUint8List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint8List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asUint8List](offsetInBytes, length);
  }
};
(typed_data.Uint8List[dart.mixinNew] = function() {
}).prototype = typed_data.Uint8List.prototype;
typed_data.Uint8List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Uint8List);
typed_data.Uint8List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
dart.defineLazy(typed_data.Uint8List, {
  /*typed_data.Uint8List.bytesPerElement*/get bytesPerElement() {
    return 1;
  }
});
typed_data.Uint8ClampedList = class Uint8ClampedList extends core.Object {
  static new(length) {
    return _native_typed_data.NativeUint8ClampedList.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint8ClampedList.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asUint8ClampedList](offsetInBytes, length);
  }
};
(typed_data.Uint8ClampedList[dart.mixinNew] = function() {
}).prototype = typed_data.Uint8ClampedList.prototype;
typed_data.Uint8ClampedList.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Uint8ClampedList);
typed_data.Uint8ClampedList[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
dart.defineLazy(typed_data.Uint8ClampedList, {
  /*typed_data.Uint8ClampedList.bytesPerElement*/get bytesPerElement() {
    return 1;
  }
});
typed_data.Int16List = class Int16List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeInt16List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt16List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asInt16List](offsetInBytes, length);
  }
};
(typed_data.Int16List[dart.mixinNew] = function() {
}).prototype = typed_data.Int16List.prototype;
typed_data.Int16List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Int16List);
typed_data.Int16List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
dart.defineLazy(typed_data.Int16List, {
  /*typed_data.Int16List.bytesPerElement*/get bytesPerElement() {
    return 2;
  }
});
typed_data.Uint16List = class Uint16List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeUint16List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint16List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asUint16List](offsetInBytes, length);
  }
};
(typed_data.Uint16List[dart.mixinNew] = function() {
}).prototype = typed_data.Uint16List.prototype;
typed_data.Uint16List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Uint16List);
typed_data.Uint16List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
dart.defineLazy(typed_data.Uint16List, {
  /*typed_data.Uint16List.bytesPerElement*/get bytesPerElement() {
    return 2;
  }
});
typed_data.Int32List = class Int32List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeInt32List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt32List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asInt32List](offsetInBytes, length);
  }
};
(typed_data.Int32List[dart.mixinNew] = function() {
}).prototype = typed_data.Int32List.prototype;
typed_data.Int32List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Int32List);
typed_data.Int32List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
dart.defineLazy(typed_data.Int32List, {
  /*typed_data.Int32List.bytesPerElement*/get bytesPerElement() {
    return 4;
  }
});
typed_data.Uint32List = class Uint32List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeUint32List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeUint32List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asUint32List](offsetInBytes, length);
  }
};
(typed_data.Uint32List[dart.mixinNew] = function() {
}).prototype = typed_data.Uint32List.prototype;
typed_data.Uint32List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Uint32List);
typed_data.Uint32List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
dart.defineLazy(typed_data.Uint32List, {
  /*typed_data.Uint32List.bytesPerElement*/get bytesPerElement() {
    return 4;
  }
});
typed_data.Int64List = class Int64List extends core.Object {
  static new(length) {
    dart.throw(new core.UnsupportedError.new("Int64List not supported by dart2js."));
  }
  static fromList(elements) {
    dart.throw(new core.UnsupportedError.new("Int64List not supported by dart2js."));
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asInt64List](offsetInBytes, length);
  }
};
(typed_data.Int64List[dart.mixinNew] = function() {
}).prototype = typed_data.Int64List.prototype;
typed_data.Int64List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Int64List);
typed_data.Int64List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
dart.defineLazy(typed_data.Int64List, {
  /*typed_data.Int64List.bytesPerElement*/get bytesPerElement() {
    return 8;
  }
});
typed_data.Uint64List = class Uint64List extends core.Object {
  static new(length) {
    dart.throw(new core.UnsupportedError.new("Uint64List not supported by dart2js."));
  }
  static fromList(elements) {
    dart.throw(new core.UnsupportedError.new("Uint64List not supported by dart2js."));
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asUint64List](offsetInBytes, length);
  }
};
(typed_data.Uint64List[dart.mixinNew] = function() {
}).prototype = typed_data.Uint64List.prototype;
typed_data.Uint64List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Uint64List);
typed_data.Uint64List[dart.implements] = () => [ListOfint(), typed_data._TypedIntList];
dart.defineLazy(typed_data.Uint64List, {
  /*typed_data.Uint64List.bytesPerElement*/get bytesPerElement() {
    return 8;
  }
});
typed_data.Float32List = class Float32List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeFloat32List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat32List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asFloat32List](offsetInBytes, length);
  }
};
(typed_data.Float32List[dart.mixinNew] = function() {
}).prototype = typed_data.Float32List.prototype;
typed_data.Float32List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Float32List);
typed_data.Float32List[dart.implements] = () => [ListOfdouble(), typed_data._TypedFloatList];
dart.defineLazy(typed_data.Float32List, {
  /*typed_data.Float32List.bytesPerElement*/get bytesPerElement() {
    return 4;
  }
});
typed_data.Float64List = class Float64List extends core.Object {
  static new(length) {
    return _native_typed_data.NativeFloat64List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat64List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asFloat64List](offsetInBytes, length);
  }
};
(typed_data.Float64List[dart.mixinNew] = function() {
}).prototype = typed_data.Float64List.prototype;
typed_data.Float64List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Float64List);
typed_data.Float64List[dart.implements] = () => [ListOfdouble(), typed_data._TypedFloatList];
dart.defineLazy(typed_data.Float64List, {
  /*typed_data.Float64List.bytesPerElement*/get bytesPerElement() {
    return 8;
  }
});
typed_data.Float32x4List = class Float32x4List extends core.Object {
  static new(length) {
    return new _native_typed_data.NativeFloat32x4List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat32x4List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asFloat32x4List](offsetInBytes, length);
  }
};
(typed_data.Float32x4List[dart.mixinNew] = function() {
}).prototype = typed_data.Float32x4List.prototype;
typed_data.Float32x4List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Float32x4List);
typed_data.Float32x4List[dart.implements] = () => [ListOfFloat32x4(), typed_data.TypedData];
dart.defineLazy(typed_data.Float32x4List, {
  /*typed_data.Float32x4List.bytesPerElement*/get bytesPerElement() {
    return 16;
  }
});
typed_data.Int32x4List = class Int32x4List extends core.Object {
  static new(length) {
    return new _native_typed_data.NativeInt32x4List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeInt32x4List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asInt32x4List](offsetInBytes, length);
  }
};
(typed_data.Int32x4List[dart.mixinNew] = function() {
}).prototype = typed_data.Int32x4List.prototype;
typed_data.Int32x4List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Int32x4List);
typed_data.Int32x4List[dart.implements] = () => [ListOfInt32x4(), typed_data.TypedData];
dart.defineLazy(typed_data.Int32x4List, {
  /*typed_data.Int32x4List.bytesPerElement*/get bytesPerElement() {
    return 16;
  }
});
typed_data.Float64x2List = class Float64x2List extends core.Object {
  static new(length) {
    return new _native_typed_data.NativeFloat64x2List.new(length);
  }
  static fromList(elements) {
    return _native_typed_data.NativeFloat64x2List.fromList(elements);
  }
  static view(buffer, offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return buffer[$asFloat64x2List](offsetInBytes, length);
  }
};
(typed_data.Float64x2List[dart.mixinNew] = function() {
}).prototype = typed_data.Float64x2List.prototype;
typed_data.Float64x2List.prototype[dart.isList] = true;
dart.addTypeTests(typed_data.Float64x2List);
typed_data.Float64x2List[dart.implements] = () => [ListOfFloat64x2(), typed_data.TypedData];
dart.defineLazy(typed_data.Float64x2List, {
  /*typed_data.Float64x2List.bytesPerElement*/get bytesPerElement() {
    return 16;
  }
});
const _data$0 = Symbol('_data');
typed_data.UnmodifiableByteBufferView = class UnmodifiableByteBufferView extends core.Object {
  get lengthInBytes() {
    return this[_data$0][$lengthInBytes];
  }
  asUint8List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableUint8ListView.new(this[_data$0][$asUint8List](offsetInBytes, length));
  }
  asInt8List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableInt8ListView.new(this[_data$0][$asInt8List](offsetInBytes, length));
  }
  asUint8ClampedList(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableUint8ClampedListView.new(this[_data$0][$asUint8ClampedList](offsetInBytes, length));
  }
  asUint16List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableUint16ListView.new(this[_data$0][$asUint16List](offsetInBytes, length));
  }
  asInt16List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableInt16ListView.new(this[_data$0][$asInt16List](offsetInBytes, length));
  }
  asUint32List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableUint32ListView.new(this[_data$0][$asUint32List](offsetInBytes, length));
  }
  asInt32List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableInt32ListView.new(this[_data$0][$asInt32List](offsetInBytes, length));
  }
  asUint64List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableUint64ListView.new(this[_data$0][$asUint64List](offsetInBytes, length));
  }
  asInt64List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableInt64ListView.new(this[_data$0][$asInt64List](offsetInBytes, length));
  }
  asInt32x4List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableInt32x4ListView.new(this[_data$0][$asInt32x4List](offsetInBytes, length));
  }
  asFloat32List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableFloat32ListView.new(this[_data$0][$asFloat32List](offsetInBytes, length));
  }
  asFloat64List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableFloat64ListView.new(this[_data$0][$asFloat64List](offsetInBytes, length));
  }
  asFloat32x4List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableFloat32x4ListView.new(this[_data$0][$asFloat32x4List](offsetInBytes, length));
  }
  asFloat64x2List(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableFloat64x2ListView.new(this[_data$0][$asFloat64x2List](offsetInBytes, length));
  }
  asByteData(offsetInBytes, length) {
    if (offsetInBytes === void 0) offsetInBytes = 0;
    if (length === void 0) length = null;
    return new typed_data.UnmodifiableByteDataView.new(this[_data$0][$asByteData](offsetInBytes, length));
  }
};
(typed_data.UnmodifiableByteBufferView.new = function(data) {
  this[_data$0] = data;
}).prototype = typed_data.UnmodifiableByteBufferView.prototype;
dart.addTypeTests(typed_data.UnmodifiableByteBufferView);
typed_data.UnmodifiableByteBufferView[dart.implements] = () => [typed_data.ByteBuffer];
dart.setMethodSignature(typed_data.UnmodifiableByteBufferView, () => ({
  __proto__: dart.getMethods(typed_data.UnmodifiableByteBufferView.__proto__),
  asUint8List: dart.fnType(typed_data.Uint8List, [], [core.int, core.int]),
  [$asUint8List]: dart.fnType(typed_data.Uint8List, [], [core.int, core.int]),
  asInt8List: dart.fnType(typed_data.Int8List, [], [core.int, core.int]),
  [$asInt8List]: dart.fnType(typed_data.Int8List, [], [core.int, core.int]),
  asUint8ClampedList: dart.fnType(typed_data.Uint8ClampedList, [], [core.int, core.int]),
  [$asUint8ClampedList]: dart.fnType(typed_data.Uint8ClampedList, [], [core.int, core.int]),
  asUint16List: dart.fnType(typed_data.Uint16List, [], [core.int, core.int]),
  [$asUint16List]: dart.fnType(typed_data.Uint16List, [], [core.int, core.int]),
  asInt16List: dart.fnType(typed_data.Int16List, [], [core.int, core.int]),
  [$asInt16List]: dart.fnType(typed_data.Int16List, [], [core.int, core.int]),
  asUint32List: dart.fnType(typed_data.Uint32List, [], [core.int, core.int]),
  [$asUint32List]: dart.fnType(typed_data.Uint32List, [], [core.int, core.int]),
  asInt32List: dart.fnType(typed_data.Int32List, [], [core.int, core.int]),
  [$asInt32List]: dart.fnType(typed_data.Int32List, [], [core.int, core.int]),
  asUint64List: dart.fnType(typed_data.Uint64List, [], [core.int, core.int]),
  [$asUint64List]: dart.fnType(typed_data.Uint64List, [], [core.int, core.int]),
  asInt64List: dart.fnType(typed_data.Int64List, [], [core.int, core.int]),
  [$asInt64List]: dart.fnType(typed_data.Int64List, [], [core.int, core.int]),
  asInt32x4List: dart.fnType(typed_data.Int32x4List, [], [core.int, core.int]),
  [$asInt32x4List]: dart.fnType(typed_data.Int32x4List, [], [core.int, core.int]),
  asFloat32List: dart.fnType(typed_data.Float32List, [], [core.int, core.int]),
  [$asFloat32List]: dart.fnType(typed_data.Float32List, [], [core.int, core.int]),
  asFloat64List: dart.fnType(typed_data.Float64List, [], [core.int, core.int]),
  [$asFloat64List]: dart.fnType(typed_data.Float64List, [], [core.int, core.int]),
  asFloat32x4List: dart.fnType(typed_data.Float32x4List, [], [core.int, core.int]),
  [$asFloat32x4List]: dart.fnType(typed_data.Float32x4List, [], [core.int, core.int]),
  asFloat64x2List: dart.fnType(typed_data.Float64x2List, [], [core.int, core.int]),
  [$asFloat64x2List]: dart.fnType(typed_data.Float64x2List, [], [core.int, core.int]),
  asByteData: dart.fnType(typed_data.ByteData, [], [core.int, core.int]),
  [$asByteData]: dart.fnType(typed_data.ByteData, [], [core.int, core.int])
}));
dart.setGetterSignature(typed_data.UnmodifiableByteBufferView, () => ({
  __proto__: dart.getGetters(typed_data.UnmodifiableByteBufferView.__proto__),
  lengthInBytes: core.int,
  [$lengthInBytes]: core.int
}));
dart.setFieldSignature(typed_data.UnmodifiableByteBufferView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableByteBufferView.__proto__),
  [_data$0]: dart.finalFieldType(typed_data.ByteBuffer)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableByteBufferView, [
  'asUint8List',
  'asInt8List',
  'asUint8ClampedList',
  'asUint16List',
  'asInt16List',
  'asUint32List',
  'asInt32List',
  'asUint64List',
  'asInt64List',
  'asInt32x4List',
  'asFloat32List',
  'asFloat64List',
  'asFloat32x4List',
  'asFloat64x2List',
  'asByteData'
]);
dart.defineExtensionAccessors(typed_data.UnmodifiableByteBufferView, ['lengthInBytes']);
const _unsupported = Symbol('_unsupported');
typed_data.UnmodifiableByteDataView = class UnmodifiableByteDataView extends core.Object {
  getInt8(byteOffset) {
    return this[_data$0][$getInt8](byteOffset);
  }
  setInt8(byteOffset, value) {
    return this[_unsupported]();
  }
  getUint8(byteOffset) {
    return this[_data$0][$getUint8](byteOffset);
  }
  setUint8(byteOffset, value) {
    return this[_unsupported]();
  }
  getInt16(byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_data$0][$getInt16](byteOffset, endian);
  }
  setInt16(byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_unsupported]();
  }
  getUint16(byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_data$0][$getUint16](byteOffset, endian);
  }
  setUint16(byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_unsupported]();
  }
  getInt32(byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_data$0][$getInt32](byteOffset, endian);
  }
  setInt32(byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_unsupported]();
  }
  getUint32(byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_data$0][$getUint32](byteOffset, endian);
  }
  setUint32(byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_unsupported]();
  }
  getInt64(byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_data$0][$getInt64](byteOffset, endian);
  }
  setInt64(byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_unsupported]();
  }
  getUint64(byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_data$0][$getUint64](byteOffset, endian);
  }
  setUint64(byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_unsupported]();
  }
  getFloat32(byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_data$0][$getFloat32](byteOffset, endian);
  }
  setFloat32(byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_unsupported]();
  }
  getFloat64(byteOffset, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_data$0][$getFloat64](byteOffset, endian);
  }
  setFloat64(byteOffset, value, endian) {
    if (endian === void 0) endian = typed_data.Endian.big;
    return this[_unsupported]();
  }
  get elementSizeInBytes() {
    return this[_data$0][$elementSizeInBytes];
  }
  get offsetInBytes() {
    return this[_data$0][$offsetInBytes];
  }
  get lengthInBytes() {
    return this[_data$0][$lengthInBytes];
  }
  get buffer() {
    return new typed_data.UnmodifiableByteBufferView.new(this[_data$0][$buffer]);
  }
  [_unsupported]() {
    dart.throw(new core.UnsupportedError.new("An UnmodifiableByteDataView may not be modified"));
  }
};
(typed_data.UnmodifiableByteDataView.new = function(data) {
  this[_data$0] = data;
}).prototype = typed_data.UnmodifiableByteDataView.prototype;
dart.addTypeTests(typed_data.UnmodifiableByteDataView);
typed_data.UnmodifiableByteDataView[dart.implements] = () => [typed_data.ByteData];
dart.setMethodSignature(typed_data.UnmodifiableByteDataView, () => ({
  __proto__: dart.getMethods(typed_data.UnmodifiableByteDataView.__proto__),
  getInt8: dart.fnType(core.int, [core.int]),
  [$getInt8]: dart.fnType(core.int, [core.int]),
  setInt8: dart.fnType(dart.void, [core.int, core.int]),
  [$setInt8]: dart.fnType(dart.void, [core.int, core.int]),
  getUint8: dart.fnType(core.int, [core.int]),
  [$getUint8]: dart.fnType(core.int, [core.int]),
  setUint8: dart.fnType(dart.void, [core.int, core.int]),
  [$setUint8]: dart.fnType(dart.void, [core.int, core.int]),
  getInt16: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [$getInt16]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  setInt16: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [$setInt16]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  getUint16: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [$getUint16]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  setUint16: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [$setUint16]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  getInt32: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [$getInt32]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  setInt32: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [$setInt32]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  getUint32: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [$getUint32]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  setUint32: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [$setUint32]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  getInt64: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [$getInt64]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  setInt64: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [$setInt64]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  getUint64: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  [$getUint64]: dart.fnType(core.int, [core.int], [typed_data.Endian]),
  setUint64: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  [$setUint64]: dart.fnType(dart.void, [core.int, core.int], [typed_data.Endian]),
  getFloat32: dart.fnType(core.double, [core.int], [typed_data.Endian]),
  [$getFloat32]: dart.fnType(core.double, [core.int], [typed_data.Endian]),
  setFloat32: dart.fnType(dart.void, [core.int, core.double], [typed_data.Endian]),
  [$setFloat32]: dart.fnType(dart.void, [core.int, core.double], [typed_data.Endian]),
  getFloat64: dart.fnType(core.double, [core.int], [typed_data.Endian]),
  [$getFloat64]: dart.fnType(core.double, [core.int], [typed_data.Endian]),
  setFloat64: dart.fnType(dart.void, [core.int, core.double], [typed_data.Endian]),
  [$setFloat64]: dart.fnType(dart.void, [core.int, core.double], [typed_data.Endian]),
  [_unsupported]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(typed_data.UnmodifiableByteDataView, () => ({
  __proto__: dart.getGetters(typed_data.UnmodifiableByteDataView.__proto__),
  elementSizeInBytes: core.int,
  [$elementSizeInBytes]: core.int,
  offsetInBytes: core.int,
  [$offsetInBytes]: core.int,
  lengthInBytes: core.int,
  [$lengthInBytes]: core.int,
  buffer: typed_data.ByteBuffer,
  [$buffer]: typed_data.ByteBuffer
}));
dart.setFieldSignature(typed_data.UnmodifiableByteDataView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableByteDataView.__proto__),
  [_data$0]: dart.finalFieldType(typed_data.ByteData)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableByteDataView, [
  'getInt8',
  'setInt8',
  'getUint8',
  'setUint8',
  'getInt16',
  'setInt16',
  'getUint16',
  'setUint16',
  'getInt32',
  'setInt32',
  'getUint32',
  'setUint32',
  'getInt64',
  'setInt64',
  'getUint64',
  'setUint64',
  'getFloat32',
  'setFloat32',
  'getFloat64',
  'setFloat64'
]);
dart.defineExtensionAccessors(typed_data.UnmodifiableByteDataView, ['elementSizeInBytes', 'offsetInBytes', 'lengthInBytes', 'buffer']);
const _list$0 = Symbol('_list');
const _is__UnmodifiableListMixin_default = Symbol('_is__UnmodifiableListMixin_default');
typed_data._UnmodifiableListMixin$ = dart.generic((N, L, TD) => {
  class _UnmodifiableListMixin extends core.Object {
    get [_data$0]() {
      return TD.as(this[_list$0]);
    }
    get length() {
      return this[_list$0][$length];
    }
    _get(index) {
      return this[_list$0][$_get](index);
    }
    get elementSizeInBytes() {
      return this[_data$0][$elementSizeInBytes];
    }
    get offsetInBytes() {
      return this[_data$0][$offsetInBytes];
    }
    get lengthInBytes() {
      return this[_data$0][$lengthInBytes];
    }
    get buffer() {
      return new typed_data.UnmodifiableByteBufferView.new(this[_data$0][$buffer]);
    }
  }
  (_UnmodifiableListMixin.new = function() {
  }).prototype = _UnmodifiableListMixin.prototype;
  dart.addTypeTests(_UnmodifiableListMixin);
  _UnmodifiableListMixin.prototype[_is__UnmodifiableListMixin_default] = true;
  dart.setMethodSignature(_UnmodifiableListMixin, () => ({
    __proto__: dart.getMethods(_UnmodifiableListMixin.__proto__),
    _get: dart.fnType(N, [core.int])
  }));
  dart.setGetterSignature(_UnmodifiableListMixin, () => ({
    __proto__: dart.getGetters(_UnmodifiableListMixin.__proto__),
    [_data$0]: TD,
    length: core.int,
    elementSizeInBytes: core.int,
    offsetInBytes: core.int,
    lengthInBytes: core.int,
    buffer: typed_data.ByteBuffer
  }));
  return _UnmodifiableListMixin;
});
typed_data._UnmodifiableListMixin = typed_data._UnmodifiableListMixin$();
dart.addTypeTests(typed_data._UnmodifiableListMixin, _is__UnmodifiableListMixin_default);
const UnmodifiableListBase__UnmodifiableListMixin$ = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
(UnmodifiableListBase__UnmodifiableListMixin$.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$, typed_data._UnmodifiableListMixin$(core.int, typed_data.Uint8List, typed_data.Uint8List));
typed_data.UnmodifiableUint8ListView = class UnmodifiableUint8ListView extends UnmodifiableListBase__UnmodifiableListMixin$ {};
(typed_data.UnmodifiableUint8ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableUint8ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableUint8ListView);
typed_data.UnmodifiableUint8ListView[dart.implements] = () => [typed_data.Uint8List];
dart.setFieldSignature(typed_data.UnmodifiableUint8ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableUint8ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Uint8List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableUint8ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableUint8ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$ = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
(UnmodifiableListBase__UnmodifiableListMixin$$.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$, typed_data._UnmodifiableListMixin$(core.int, typed_data.Int8List, typed_data.Int8List));
typed_data.UnmodifiableInt8ListView = class UnmodifiableInt8ListView extends UnmodifiableListBase__UnmodifiableListMixin$$ {};
(typed_data.UnmodifiableInt8ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableInt8ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableInt8ListView);
typed_data.UnmodifiableInt8ListView[dart.implements] = () => [typed_data.Int8List];
dart.setFieldSignature(typed_data.UnmodifiableInt8ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableInt8ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Int8List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableInt8ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableInt8ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$0 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
(UnmodifiableListBase__UnmodifiableListMixin$$0.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$0.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$0, typed_data._UnmodifiableListMixin$(core.int, typed_data.Uint8ClampedList, typed_data.Uint8ClampedList));
typed_data.UnmodifiableUint8ClampedListView = class UnmodifiableUint8ClampedListView extends UnmodifiableListBase__UnmodifiableListMixin$$0 {};
(typed_data.UnmodifiableUint8ClampedListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableUint8ClampedListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableUint8ClampedListView);
typed_data.UnmodifiableUint8ClampedListView[dart.implements] = () => [typed_data.Uint8ClampedList];
dart.setFieldSignature(typed_data.UnmodifiableUint8ClampedListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableUint8ClampedListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Uint8ClampedList)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableUint8ClampedListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableUint8ClampedListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$1 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
(UnmodifiableListBase__UnmodifiableListMixin$$1.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$1.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$1, typed_data._UnmodifiableListMixin$(core.int, typed_data.Uint16List, typed_data.Uint16List));
typed_data.UnmodifiableUint16ListView = class UnmodifiableUint16ListView extends UnmodifiableListBase__UnmodifiableListMixin$$1 {};
(typed_data.UnmodifiableUint16ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableUint16ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableUint16ListView);
typed_data.UnmodifiableUint16ListView[dart.implements] = () => [typed_data.Uint16List];
dart.setFieldSignature(typed_data.UnmodifiableUint16ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableUint16ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Uint16List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableUint16ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableUint16ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$2 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
(UnmodifiableListBase__UnmodifiableListMixin$$2.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$2.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$2, typed_data._UnmodifiableListMixin$(core.int, typed_data.Int16List, typed_data.Int16List));
typed_data.UnmodifiableInt16ListView = class UnmodifiableInt16ListView extends UnmodifiableListBase__UnmodifiableListMixin$$2 {};
(typed_data.UnmodifiableInt16ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableInt16ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableInt16ListView);
typed_data.UnmodifiableInt16ListView[dart.implements] = () => [typed_data.Int16List];
dart.setFieldSignature(typed_data.UnmodifiableInt16ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableInt16ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Int16List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableInt16ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableInt16ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$3 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
(UnmodifiableListBase__UnmodifiableListMixin$$3.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$3.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$3, typed_data._UnmodifiableListMixin$(core.int, typed_data.Uint32List, typed_data.Uint32List));
typed_data.UnmodifiableUint32ListView = class UnmodifiableUint32ListView extends UnmodifiableListBase__UnmodifiableListMixin$$3 {};
(typed_data.UnmodifiableUint32ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableUint32ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableUint32ListView);
typed_data.UnmodifiableUint32ListView[dart.implements] = () => [typed_data.Uint32List];
dart.setFieldSignature(typed_data.UnmodifiableUint32ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableUint32ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Uint32List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableUint32ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableUint32ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$4 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
(UnmodifiableListBase__UnmodifiableListMixin$$4.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$4.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$4, typed_data._UnmodifiableListMixin$(core.int, typed_data.Int32List, typed_data.Int32List));
typed_data.UnmodifiableInt32ListView = class UnmodifiableInt32ListView extends UnmodifiableListBase__UnmodifiableListMixin$$4 {};
(typed_data.UnmodifiableInt32ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableInt32ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableInt32ListView);
typed_data.UnmodifiableInt32ListView[dart.implements] = () => [typed_data.Int32List];
dart.setFieldSignature(typed_data.UnmodifiableInt32ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableInt32ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Int32List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableInt32ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableInt32ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$5 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
(UnmodifiableListBase__UnmodifiableListMixin$$5.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$5.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$5, typed_data._UnmodifiableListMixin$(core.int, typed_data.Uint64List, typed_data.Uint64List));
typed_data.UnmodifiableUint64ListView = class UnmodifiableUint64ListView extends UnmodifiableListBase__UnmodifiableListMixin$$5 {};
(typed_data.UnmodifiableUint64ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableUint64ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableUint64ListView);
typed_data.UnmodifiableUint64ListView[dart.implements] = () => [typed_data.Uint64List];
dart.setFieldSignature(typed_data.UnmodifiableUint64ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableUint64ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Uint64List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableUint64ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableUint64ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$6 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.int) {};
(UnmodifiableListBase__UnmodifiableListMixin$$6.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$6.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$6, typed_data._UnmodifiableListMixin$(core.int, typed_data.Int64List, typed_data.Int64List));
typed_data.UnmodifiableInt64ListView = class UnmodifiableInt64ListView extends UnmodifiableListBase__UnmodifiableListMixin$$6 {};
(typed_data.UnmodifiableInt64ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableInt64ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableInt64ListView);
typed_data.UnmodifiableInt64ListView[dart.implements] = () => [typed_data.Int64List];
dart.setFieldSignature(typed_data.UnmodifiableInt64ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableInt64ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Int64List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableInt64ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableInt64ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$7 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(typed_data.Int32x4) {};
(UnmodifiableListBase__UnmodifiableListMixin$$7.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$7.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$7, typed_data._UnmodifiableListMixin$(typed_data.Int32x4, typed_data.Int32x4List, typed_data.Int32x4List));
typed_data.UnmodifiableInt32x4ListView = class UnmodifiableInt32x4ListView extends UnmodifiableListBase__UnmodifiableListMixin$$7 {};
(typed_data.UnmodifiableInt32x4ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableInt32x4ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableInt32x4ListView);
typed_data.UnmodifiableInt32x4ListView[dart.implements] = () => [typed_data.Int32x4List];
dart.setFieldSignature(typed_data.UnmodifiableInt32x4ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableInt32x4ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Int32x4List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableInt32x4ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableInt32x4ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$8 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(typed_data.Float32x4) {};
(UnmodifiableListBase__UnmodifiableListMixin$$8.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$8.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$8, typed_data._UnmodifiableListMixin$(typed_data.Float32x4, typed_data.Float32x4List, typed_data.Float32x4List));
typed_data.UnmodifiableFloat32x4ListView = class UnmodifiableFloat32x4ListView extends UnmodifiableListBase__UnmodifiableListMixin$$8 {};
(typed_data.UnmodifiableFloat32x4ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableFloat32x4ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableFloat32x4ListView);
typed_data.UnmodifiableFloat32x4ListView[dart.implements] = () => [typed_data.Float32x4List];
dart.setFieldSignature(typed_data.UnmodifiableFloat32x4ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableFloat32x4ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Float32x4List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableFloat32x4ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableFloat32x4ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$9 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(typed_data.Float64x2) {};
(UnmodifiableListBase__UnmodifiableListMixin$$9.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$9.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$9, typed_data._UnmodifiableListMixin$(typed_data.Float64x2, typed_data.Float64x2List, typed_data.Float64x2List));
typed_data.UnmodifiableFloat64x2ListView = class UnmodifiableFloat64x2ListView extends UnmodifiableListBase__UnmodifiableListMixin$$9 {};
(typed_data.UnmodifiableFloat64x2ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableFloat64x2ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableFloat64x2ListView);
typed_data.UnmodifiableFloat64x2ListView[dart.implements] = () => [typed_data.Float64x2List];
dart.setFieldSignature(typed_data.UnmodifiableFloat64x2ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableFloat64x2ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Float64x2List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableFloat64x2ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableFloat64x2ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$10 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.double) {};
(UnmodifiableListBase__UnmodifiableListMixin$$10.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$10.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$10, typed_data._UnmodifiableListMixin$(core.double, typed_data.Float32List, typed_data.Float32List));
typed_data.UnmodifiableFloat32ListView = class UnmodifiableFloat32ListView extends UnmodifiableListBase__UnmodifiableListMixin$$10 {};
(typed_data.UnmodifiableFloat32ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableFloat32ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableFloat32ListView);
typed_data.UnmodifiableFloat32ListView[dart.implements] = () => [typed_data.Float32List];
dart.setFieldSignature(typed_data.UnmodifiableFloat32ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableFloat32ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Float32List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableFloat32ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableFloat32ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
const UnmodifiableListBase__UnmodifiableListMixin$$11 = class UnmodifiableListBase__UnmodifiableListMixin extends _internal.UnmodifiableListBase$(core.double) {};
(UnmodifiableListBase__UnmodifiableListMixin$$11.new = function() {
}).prototype = UnmodifiableListBase__UnmodifiableListMixin$$11.prototype;
dart.applyMixin(UnmodifiableListBase__UnmodifiableListMixin$$11, typed_data._UnmodifiableListMixin$(core.double, typed_data.Float64List, typed_data.Float64List));
typed_data.UnmodifiableFloat64ListView = class UnmodifiableFloat64ListView extends UnmodifiableListBase__UnmodifiableListMixin$$11 {};
(typed_data.UnmodifiableFloat64ListView.new = function(list) {
  this[_list$0] = list;
}).prototype = typed_data.UnmodifiableFloat64ListView.prototype;
dart.addTypeTests(typed_data.UnmodifiableFloat64ListView);
typed_data.UnmodifiableFloat64ListView[dart.implements] = () => [typed_data.Float64List];
dart.setFieldSignature(typed_data.UnmodifiableFloat64ListView, () => ({
  __proto__: dart.getFields(typed_data.UnmodifiableFloat64ListView.__proto__),
  [_list$0]: dart.finalFieldType(typed_data.Float64List)
}));
dart.defineExtensionMethods(typed_data.UnmodifiableFloat64ListView, ['_get']);
dart.defineExtensionAccessors(typed_data.UnmodifiableFloat64ListView, [
  'length',
  'elementSizeInBytes',
  'offsetInBytes',
  'lengthInBytes',
  'buffer'
]);
indexed_db._KeyRangeFactoryProvider = class _KeyRangeFactoryProvider extends core.Object {
  static createKeyRange_only(value) {
    return indexed_db._KeyRangeFactoryProvider._only(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(value));
  }
  static createKeyRange_lowerBound(bound, open) {
    if (open === void 0) open = false;
    return indexed_db._KeyRangeFactoryProvider._lowerBound(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(bound), open);
  }
  static createKeyRange_upperBound(bound, open) {
    if (open === void 0) open = false;
    return indexed_db._KeyRangeFactoryProvider._upperBound(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(bound), open);
  }
  static createKeyRange_bound(lower, upper, lowerOpen, upperOpen) {
    if (lowerOpen === void 0) lowerOpen = false;
    if (upperOpen === void 0) upperOpen = false;
    return indexed_db._KeyRangeFactoryProvider._bound(indexed_db._KeyRangeFactoryProvider._class(), indexed_db._KeyRangeFactoryProvider._translateKey(lower), indexed_db._KeyRangeFactoryProvider._translateKey(upper), lowerOpen, upperOpen);
  }
  static _class() {
    if (indexed_db._KeyRangeFactoryProvider._cachedClass != null) return indexed_db._KeyRangeFactoryProvider._cachedClass;
    return indexed_db._KeyRangeFactoryProvider._cachedClass = indexed_db._KeyRangeFactoryProvider._uncachedClass();
  }
  static _uncachedClass() {
    return window.webkitIDBKeyRange || window.mozIDBKeyRange || window.msIDBKeyRange || window.IDBKeyRange;
  }
  static _translateKey(idbkey) {
    return idbkey;
  }
  static _only(cls, value) {
    return cls.only(value);
  }
  static _lowerBound(cls, bound, open) {
    return cls.lowerBound(bound, open);
  }
  static _upperBound(cls, bound, open) {
    return cls.upperBound(bound, open);
  }
  static _bound(cls, lower, upper, lowerOpen, upperOpen) {
    return cls.bound(lower, upper, lowerOpen, upperOpen);
  }
};
(indexed_db._KeyRangeFactoryProvider.new = function() {
}).prototype = indexed_db._KeyRangeFactoryProvider.prototype;
dart.addTypeTests(indexed_db._KeyRangeFactoryProvider);
dart.defineLazy(indexed_db._KeyRangeFactoryProvider, {
  /*indexed_db._KeyRangeFactoryProvider._cachedClass*/get _cachedClass() {
    return null;
  },
  set _cachedClass(_) {}
});
indexed_db._convertNativeToDart_IDBKey = function(nativeKey) {
  function containsDate(object) {
    if (dart.test(html_common.isJavaScriptDate(object))) return true;
    if (core.List.is(object)) {
      for (let i = 0; i < dart.notNull(object[$length]); i++) {
        if (dart.dtest(containsDate(object[$_get](i)))) return true;
      }
    }
    return false;
  }
  dart.fn(containsDate, dynamicTobool());
  if (dart.test(containsDate(nativeKey))) {
    dart.throw(new core.UnimplementedError.new("Key containing DateTime"));
  }
  return nativeKey;
};
indexed_db._convertDartToNative_IDBKey = function(dartKey) {
  return dartKey;
};
indexed_db._convertNativeToDart_IDBAny = function(object) {
  return html_common.convertNativeToDart_AcceptStructuredClone(object, {mustCopy: false});
};
dart.defineLazy(indexed_db, {
  /*indexed_db._idbKey*/get _idbKey() {
    return "JSExtendableArray|=Object|num|String";
  },
  /*indexed_db._annotation_Creates_IDBKey*/get _annotation_Creates_IDBKey() {
    return dart.const(new _js_helper.Creates.new("JSExtendableArray|=Object|num|String"));
  },
  /*indexed_db._annotation_Returns_IDBKey*/get _annotation_Returns_IDBKey() {
    return dart.const(new _js_helper.Returns.new("JSExtendableArray|=Object|num|String"));
  }
});
const _delete$ = Symbol('_delete');
const _update = Symbol('_update');
const _update_1 = Symbol('_update_1');
indexed_db.Cursor = class Cursor extends _interceptors.Interceptor {
  [$delete]() {
    try {
      return indexed_db._completeRequest(dart.dynamic, this[_delete$]());
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return async.Future.error(e, stacktrace);
    }
  }
  [$update](value) {
    try {
      return indexed_db._completeRequest(dart.dynamic, this[_update](value));
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return async.Future.error(e, stacktrace);
    }
  }
  [$next](key) {
    if (key === void 0) key = null;
    if (key == null) {
      this.continue();
    } else {
      this.continue(key);
    }
  }
  get [$direction]() {
    return this.direction;
  }
  get [$key]() {
    return this.key;
  }
  get [$primaryKey]() {
    return this.primaryKey;
  }
  get [$source]() {
    return this.source;
  }
  [$advance](...args) {
    return this.advance.apply(this, args);
  }
  [$continuePrimaryKey](...args) {
    return this.continuePrimaryKey.apply(this, args);
  }
  [_delete$](...args) {
    return this.delete.apply(this, args);
  }
  [_update](value) {
    let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
    return this[_update_1](value_1);
  }
  [_update_1](...args) {
    return this.update.apply(this, args);
  }
};
dart.addTypeTests(indexed_db.Cursor);
const direction = Symbol("Cursor.direction");
const key = Symbol("Cursor.key");
const primaryKey = Symbol("Cursor.primaryKey");
const source = Symbol("Cursor.source");
dart.setMethodSignature(indexed_db.Cursor, () => ({
  __proto__: dart.getMethods(indexed_db.Cursor.__proto__),
  [$delete]: dart.fnType(async.Future, []),
  [$update]: dart.fnType(async.Future, [dart.dynamic]),
  [$next]: dart.fnType(dart.void, [], [core.Object]),
  [$advance]: dart.fnType(dart.void, [core.int]),
  [$continuePrimaryKey]: dart.fnType(dart.void, [core.Object, core.Object]),
  [_delete$]: dart.fnType(indexed_db.Request, []),
  [_update]: dart.fnType(indexed_db.Request, [dart.dynamic]),
  [_update_1]: dart.fnType(indexed_db.Request, [dart.dynamic])
}));
dart.setFieldSignature(indexed_db.Cursor, () => ({
  __proto__: dart.getFields(indexed_db.Cursor.__proto__),
  [$direction]: dart.finalFieldType(core.String),
  [$key]: dart.finalFieldType(core.Object),
  [$primaryKey]: dart.finalFieldType(core.Object),
  [$source]: dart.finalFieldType(core.Object)
}));
dart.registerExtension("IDBCursor", indexed_db.Cursor);
const _get_value = Symbol('_get_value');
indexed_db.CursorWithValue = class CursorWithValue extends indexed_db.Cursor {
  get [$value]() {
    return indexed_db._convertNativeToDart_IDBAny(this[_get_value]);
  }
  get [_get_value]() {
    return this.value;
  }
};
dart.addTypeTests(indexed_db.CursorWithValue);
dart.setGetterSignature(indexed_db.CursorWithValue, () => ({
  __proto__: dart.getGetters(indexed_db.CursorWithValue.__proto__),
  [$value]: dart.dynamic
}));
dart.setFieldSignature(indexed_db.CursorWithValue, () => ({
  __proto__: dart.getFields(indexed_db.CursorWithValue.__proto__),
  [_get_value]: dart.finalFieldType(dart.dynamic)
}));
dart.registerExtension("IDBCursorWithValue", indexed_db.CursorWithValue);
const _createObjectStore = Symbol('_createObjectStore');
const _transaction = Symbol('_transaction');
const _createObjectStore_1 = Symbol('_createObjectStore_1');
const _createObjectStore_2 = Symbol('_createObjectStore_2');
const _addEventListener = Symbol('_addEventListener');
const _removeEventListener = Symbol('_removeEventListener');
html$.EventTarget = class EventTarget extends _interceptors.Interceptor {
  get [$on]() {
    return new html$.Events.new(this);
  }
  [$addEventListener](type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    if (listener != null) {
      this[_addEventListener](type, listener, useCapture);
    }
  }
  [$removeEventListener](type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    if (listener != null) {
      this[_removeEventListener](type, listener, useCapture);
    }
  }
  [_addEventListener](...args) {
    return this.addEventListener.apply(this, args);
  }
  [$dispatchEvent](...args) {
    return this.dispatchEvent.apply(this, args);
  }
  [_removeEventListener](...args) {
    return this.removeEventListener.apply(this, args);
  }
};
(html$.EventTarget._created = function() {
  html$.EventTarget.__proto__.new.call(this);
}).prototype = html$.EventTarget.prototype;
dart.addTypeTests(html$.EventTarget);
dart.setMethodSignature(html$.EventTarget, () => ({
  __proto__: dart.getMethods(html$.EventTarget.__proto__),
  [$addEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
  [$removeEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
  [_addEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
  [$dispatchEvent]: dart.fnType(core.bool, [html$.Event]),
  [_removeEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool])
}));
dart.setGetterSignature(html$.EventTarget, () => ({
  __proto__: dart.getGetters(html$.EventTarget.__proto__),
  [$on]: html$.Events
}));
dart.registerExtension("EventTarget", html$.EventTarget);
indexed_db.Database = class Database extends html$.EventTarget {
  [$createObjectStore](name, opts) {
    let keyPath = opts && 'keyPath' in opts ? opts.keyPath : null;
    let autoIncrement = opts && 'autoIncrement' in opts ? opts.autoIncrement : null;
    let options = new _js_helper.LinkedMap.new();
    if (keyPath != null) {
      options[$_set]("keyPath", keyPath);
    }
    if (autoIncrement != null) {
      options[$_set]("autoIncrement", autoIncrement);
    }
    return this[_createObjectStore](name, options);
  }
  [$transaction](storeName_OR_storeNames, mode) {
    if (mode !== "readonly" && mode !== "readwrite") {
      dart.throw(new core.ArgumentError.new(mode));
    }
    return this[_transaction](storeName_OR_storeNames, mode);
  }
  [$transactionStore](storeName, mode) {
    if (mode !== "readonly" && mode !== "readwrite") {
      dart.throw(new core.ArgumentError.new(mode));
    }
    return this[_transaction](storeName, mode);
  }
  [$transactionList](storeNames, mode) {
    if (mode !== "readonly" && mode !== "readwrite") {
      dart.throw(new core.ArgumentError.new(mode));
    }
    let storeNames_1 = html_common.convertDartToNative_StringArray(storeNames);
    return this[_transaction](storeNames_1, mode);
  }
  [$transactionStores](storeNames, mode) {
    if (mode !== "readonly" && mode !== "readwrite") {
      dart.throw(new core.ArgumentError.new(mode));
    }
    return this[_transaction](storeNames, mode);
  }
  [_transaction](...args) {
    return this.transaction.apply(this, args);
  }
  get [$name]() {
    return this.name;
  }
  get [$objectStoreNames]() {
    return this.objectStoreNames;
  }
  get [$version]() {
    return this.version;
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [_createObjectStore](name, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_createObjectStore_1](name, options_1);
    }
    return this[_createObjectStore_2](name);
  }
  [_createObjectStore_1](...args) {
    return this.createObjectStore.apply(this, args);
  }
  [_createObjectStore_2](...args) {
    return this.createObjectStore.apply(this, args);
  }
  [$deleteObjectStore](...args) {
    return this.deleteObjectStore.apply(this, args);
  }
  get [$onAbort]() {
    return indexed_db.Database.abortEvent.forTarget(this);
  }
  get [$onClose]() {
    return indexed_db.Database.closeEvent.forTarget(this);
  }
  get [$onError]() {
    return indexed_db.Database.errorEvent.forTarget(this);
  }
  get [$onVersionChange]() {
    return indexed_db.Database.versionChangeEvent.forTarget(this);
  }
};
dart.addTypeTests(indexed_db.Database);
const name = Symbol("Database.name");
const objectStoreNames = Symbol("Database.objectStoreNames");
const version$ = Symbol("Database.version");
dart.setMethodSignature(indexed_db.Database, () => ({
  __proto__: dart.getMethods(indexed_db.Database.__proto__),
  [$createObjectStore]: dart.fnType(indexed_db.ObjectStore, [core.String], {keyPath: dart.dynamic, autoIncrement: core.bool}),
  [$transaction]: dart.fnType(indexed_db.Transaction, [dart.dynamic, core.String]),
  [$transactionStore]: dart.fnType(indexed_db.Transaction, [core.String, core.String]),
  [$transactionList]: dart.fnType(indexed_db.Transaction, [core.List$(core.String), core.String]),
  [$transactionStores]: dart.fnType(indexed_db.Transaction, [html$.DomStringList, core.String]),
  [_transaction]: dart.fnType(indexed_db.Transaction, [dart.dynamic, dart.dynamic]),
  [$close]: dart.fnType(dart.void, []),
  [_createObjectStore]: dart.fnType(indexed_db.ObjectStore, [core.String], [core.Map]),
  [_createObjectStore_1]: dart.fnType(indexed_db.ObjectStore, [dart.dynamic, dart.dynamic]),
  [_createObjectStore_2]: dart.fnType(indexed_db.ObjectStore, [dart.dynamic]),
  [$deleteObjectStore]: dart.fnType(dart.void, [core.String])
}));
dart.setGetterSignature(indexed_db.Database, () => ({
  __proto__: dart.getGetters(indexed_db.Database.__proto__),
  [$onAbort]: async.Stream$(html$.Event),
  [$onClose]: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.Event),
  [$onVersionChange]: async.Stream$(indexed_db.VersionChangeEvent)
}));
dart.setFieldSignature(indexed_db.Database, () => ({
  __proto__: dart.getFields(indexed_db.Database.__proto__),
  [$name]: dart.finalFieldType(core.String),
  [$objectStoreNames]: dart.finalFieldType(ListOfString()),
  [$version]: dart.finalFieldType(core.int)
}));
dart.defineLazy(indexed_db.Database, {
  /*indexed_db.Database.abortEvent*/get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
  },
  /*indexed_db.Database.closeEvent*/get closeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("close"));
  },
  /*indexed_db.Database.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*indexed_db.Database.versionChangeEvent*/get versionChangeEvent() {
    return dart.const(new (EventStreamProviderOfVersionChangeEvent()).new("versionchange"));
  }
});
dart.registerExtension("IDBDatabase", indexed_db.Database);
const _open = Symbol('_open');
const _deleteDatabase = Symbol('_deleteDatabase');
indexed_db.IdbFactory = class IdbFactory extends _interceptors.Interceptor {
  static get supported() {
    return !!(window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB);
  }
  [$open](name, opts) {
    let version = opts && 'version' in opts ? opts.version : null;
    let onUpgradeNeeded = opts && 'onUpgradeNeeded' in opts ? opts.onUpgradeNeeded : null;
    let onBlocked = opts && 'onBlocked' in opts ? opts.onBlocked : null;
    if (version == null !== (onUpgradeNeeded == null)) {
      return FutureOfDatabase().error(new core.ArgumentError.new("version and onUpgradeNeeded must be specified together"));
    }
    try {
      let request = null;
      if (version != null) {
        request = this[_open](name, version);
      } else {
        request = this[_open](name);
      }
      if (onUpgradeNeeded != null) {
        dart.dsend(dart.dload(request, 'onUpgradeNeeded'), 'listen', [onUpgradeNeeded]);
      }
      if (onBlocked != null) {
        dart.dsend(dart.dload(request, 'onBlocked'), 'listen', [onBlocked]);
      }
      return indexed_db._completeRequest(indexed_db.Database, indexed_db.Request._check(request));
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return FutureOfDatabase().error(e, stacktrace);
    }
  }
  [$deleteDatabase](name, opts) {
    let onBlocked = opts && 'onBlocked' in opts ? opts.onBlocked : null;
    try {
      let request = this[_deleteDatabase](name);
      if (onBlocked != null) {
        request[$onBlocked].listen(onBlocked);
      }
      let completer = CompleterOfIdbFactory().sync();
      request[$onSuccess].listen(dart.fn(e => {
        completer.complete(this);
      }, EventToNull()));
      request[$onError].listen(dart.bind(completer, 'completeError'));
      return completer.future;
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return FutureOfIdbFactory().error(e, stacktrace);
    }
  }
  get [$supportsDatabaseNames]() {
    return dart.test(indexed_db.IdbFactory.supported) && !!(this.getDatabaseNames || this.webkitGetDatabaseNames);
  }
  [$cmp](...args) {
    return this.cmp.apply(this, args);
  }
  [_deleteDatabase](...args) {
    return this.deleteDatabase.apply(this, args);
  }
  [_open](...args) {
    return this.open.apply(this, args);
  }
};
dart.addTypeTests(indexed_db.IdbFactory);
dart.setMethodSignature(indexed_db.IdbFactory, () => ({
  __proto__: dart.getMethods(indexed_db.IdbFactory.__proto__),
  [$open]: dart.fnType(async.Future$(indexed_db.Database), [core.String], {version: core.int, onUpgradeNeeded: dart.fnType(dart.void, [indexed_db.VersionChangeEvent]), onBlocked: dart.fnType(dart.void, [html$.Event])}),
  [$deleteDatabase]: dart.fnType(async.Future$(indexed_db.IdbFactory), [core.String], {onBlocked: dart.fnType(dart.void, [html$.Event])}),
  [$cmp]: dart.fnType(core.int, [core.Object, core.Object]),
  [_deleteDatabase]: dart.fnType(indexed_db.OpenDBRequest, [core.String]),
  [_open]: dart.fnType(indexed_db.OpenDBRequest, [core.String], [core.int])
}));
dart.setGetterSignature(indexed_db.IdbFactory, () => ({
  __proto__: dart.getGetters(indexed_db.IdbFactory.__proto__),
  [$supportsDatabaseNames]: core.bool
}));
dart.registerExtension("IDBFactory", indexed_db.IdbFactory);
indexed_db._completeRequest = function(T, request) {
  let completer = async.Completer$(T).sync();
  request[$onSuccess].listen(dart.fn(e => {
    let result = T._check(request[$result]);
    completer.complete(result);
  }, EventToNull()));
  request[$onError].listen(dart.bind(completer, 'completeError'));
  return completer.future;
};
const _count$0 = Symbol('_count');
const _get = Symbol('_get');
const _getKey$ = Symbol('_getKey');
const _openCursor = Symbol('_openCursor');
const _openKeyCursor = Symbol('_openKeyCursor');
indexed_db.Index = class Index extends _interceptors.Interceptor {
  [$count](key_OR_range) {
    if (key_OR_range === void 0) key_OR_range = null;
    try {
      let request = this[_count$0](key_OR_range);
      return indexed_db._completeRequest(core.int, request);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return FutureOfint().error(e, stacktrace);
    }
  }
  [$get](key) {
    try {
      let request = this[_get](key);
      return indexed_db._completeRequest(dart.dynamic, request);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return async.Future.error(e, stacktrace);
    }
  }
  [$getKey](key) {
    try {
      let request = this[_getKey$](key);
      return indexed_db._completeRequest(dart.dynamic, request);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return async.Future.error(e, stacktrace);
    }
  }
  [$openCursor](opts) {
    let key = opts && 'key' in opts ? opts.key : null;
    let range = opts && 'range' in opts ? opts.range : null;
    let direction = opts && 'direction' in opts ? opts.direction : null;
    let autoAdvance = opts && 'autoAdvance' in opts ? opts.autoAdvance : null;
    let key_OR_range = null;
    if (key != null) {
      if (range != null) {
        dart.throw(new core.ArgumentError.new("Cannot specify both key and range."));
      }
      key_OR_range = key;
    } else {
      key_OR_range = range;
    }
    let request = null;
    if (direction == null) {
      request = this[_openCursor](key_OR_range, "next");
    } else {
      request = this[_openCursor](key_OR_range, direction);
    }
    return indexed_db.ObjectStore._cursorStreamFromResult(indexed_db.CursorWithValue, indexed_db.Request._check(request), autoAdvance);
  }
  [$openKeyCursor](opts) {
    let key = opts && 'key' in opts ? opts.key : null;
    let range = opts && 'range' in opts ? opts.range : null;
    let direction = opts && 'direction' in opts ? opts.direction : null;
    let autoAdvance = opts && 'autoAdvance' in opts ? opts.autoAdvance : null;
    let key_OR_range = null;
    if (key != null) {
      if (range != null) {
        dart.throw(new core.ArgumentError.new("Cannot specify both key and range."));
      }
      key_OR_range = key;
    } else {
      key_OR_range = range;
    }
    let request = null;
    if (direction == null) {
      request = this[_openKeyCursor](key_OR_range, "next");
    } else {
      request = this[_openKeyCursor](key_OR_range, direction);
    }
    return indexed_db.ObjectStore._cursorStreamFromResult(indexed_db.Cursor, indexed_db.Request._check(request), autoAdvance);
  }
  get [$keyPath]() {
    return this.keyPath;
  }
  get [$multiEntry]() {
    return this.multiEntry;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$objectStore]() {
    return this.objectStore;
  }
  get [$unique]() {
    return this.unique;
  }
  [_count$0](...args) {
    return this.count.apply(this, args);
  }
  [_get](...args) {
    return this.get.apply(this, args);
  }
  [$getAll](...args) {
    return this.getAll.apply(this, args);
  }
  [$getAllKeys](...args) {
    return this.getAllKeys.apply(this, args);
  }
  [_getKey$](...args) {
    return this.getKey.apply(this, args);
  }
  [_openCursor](...args) {
    return this.openCursor.apply(this, args);
  }
  [_openKeyCursor](...args) {
    return this.openKeyCursor.apply(this, args);
  }
};
dart.addTypeTests(indexed_db.Index);
const keyPath = Symbol("Index.keyPath");
const multiEntry = Symbol("Index.multiEntry");
const name$4 = Symbol("Index.name");
const objectStore = Symbol("Index.objectStore");
const unique = Symbol("Index.unique");
dart.setMethodSignature(indexed_db.Index, () => ({
  __proto__: dart.getMethods(indexed_db.Index.__proto__),
  [$count]: dart.fnType(async.Future$(core.int), [], [dart.dynamic]),
  [$get]: dart.fnType(async.Future, [dart.dynamic]),
  [$getKey]: dart.fnType(async.Future, [dart.dynamic]),
  [$openCursor]: dart.fnType(async.Stream$(indexed_db.CursorWithValue), [], {key: dart.dynamic, range: indexed_db.KeyRange, direction: core.String, autoAdvance: core.bool}),
  [$openKeyCursor]: dart.fnType(async.Stream$(indexed_db.Cursor), [], {key: dart.dynamic, range: indexed_db.KeyRange, direction: core.String, autoAdvance: core.bool}),
  [_count$0]: dart.fnType(indexed_db.Request, [core.Object]),
  [_get]: dart.fnType(indexed_db.Request, [core.Object]),
  [$getAll]: dart.fnType(indexed_db.Request, [core.Object], [core.int]),
  [$getAllKeys]: dart.fnType(indexed_db.Request, [core.Object], [core.int]),
  [_getKey$]: dart.fnType(indexed_db.Request, [core.Object]),
  [_openCursor]: dart.fnType(indexed_db.Request, [core.Object], [core.String]),
  [_openKeyCursor]: dart.fnType(indexed_db.Request, [core.Object], [core.String])
}));
dart.setFieldSignature(indexed_db.Index, () => ({
  __proto__: dart.getFields(indexed_db.Index.__proto__),
  [$keyPath]: dart.finalFieldType(core.Object),
  [$multiEntry]: dart.finalFieldType(core.bool),
  [$name]: dart.fieldType(core.String),
  [$objectStore]: dart.finalFieldType(indexed_db.ObjectStore),
  [$unique]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("IDBIndex", indexed_db.Index);
indexed_db.KeyRange = class KeyRange extends _interceptors.Interceptor {
  static only(value) {
    return indexed_db._KeyRangeFactoryProvider.createKeyRange_only(value);
  }
  static lowerBound(bound, open) {
    if (open === void 0) open = false;
    return indexed_db._KeyRangeFactoryProvider.createKeyRange_lowerBound(bound, open);
  }
  static upperBound(bound, open) {
    if (open === void 0) open = false;
    return indexed_db._KeyRangeFactoryProvider.createKeyRange_upperBound(bound, open);
  }
  static bound(lower, upper, lowerOpen, upperOpen) {
    if (lowerOpen === void 0) lowerOpen = false;
    if (upperOpen === void 0) upperOpen = false;
    return indexed_db._KeyRangeFactoryProvider.createKeyRange_bound(lower, upper, lowerOpen, upperOpen);
  }
  get [$lower]() {
    return this.lower;
  }
  get [$lowerOpen]() {
    return this.lowerOpen;
  }
  get [$upper]() {
    return this.upper;
  }
  get [$upperOpen]() {
    return this.upperOpen;
  }
  [$includes](...args) {
    return this.includes.apply(this, args);
  }
};
dart.addTypeTests(indexed_db.KeyRange);
const lower = Symbol("KeyRange.lower");
const lowerOpen = Symbol("KeyRange.lowerOpen");
const upper = Symbol("KeyRange.upper");
const upperOpen = Symbol("KeyRange.upperOpen");
dart.setMethodSignature(indexed_db.KeyRange, () => ({
  __proto__: dart.getMethods(indexed_db.KeyRange.__proto__),
  [$includes]: dart.fnType(core.bool, [core.Object])
}));
dart.setFieldSignature(indexed_db.KeyRange, () => ({
  __proto__: dart.getFields(indexed_db.KeyRange.__proto__),
  [$lower]: dart.finalFieldType(core.Object),
  [$lowerOpen]: dart.finalFieldType(core.bool),
  [$upper]: dart.finalFieldType(core.Object),
  [$upperOpen]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("IDBKeyRange", indexed_db.KeyRange);
const _add$1 = Symbol('_add');
const _clear$ = Symbol('_clear');
const _put = Symbol('_put');
const _createIndex = Symbol('_createIndex');
const _add_1 = Symbol('_add_1');
const _add_2 = Symbol('_add_2');
const _createIndex_1 = Symbol('_createIndex_1');
const _createIndex_2 = Symbol('_createIndex_2');
const _put_1 = Symbol('_put_1');
const _put_2 = Symbol('_put_2');
indexed_db.ObjectStore = class ObjectStore extends _interceptors.Interceptor {
  [$add](value, key) {
    if (key === void 0) key = null;
    try {
      let request = null;
      if (key != null) {
        request = this[_add$1](value, key);
      } else {
        request = this[_add$1](value);
      }
      return indexed_db._completeRequest(dart.dynamic, indexed_db.Request._check(request));
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return async.Future.error(e, stacktrace);
    }
  }
  [$clear]() {
    try {
      return indexed_db._completeRequest(dart.dynamic, this[_clear$]());
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return async.Future.error(e, stacktrace);
    }
  }
  [$delete](key_OR_keyRange) {
    try {
      return indexed_db._completeRequest(dart.dynamic, this[_delete$](key_OR_keyRange));
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return async.Future.error(e, stacktrace);
    }
  }
  [$count](key_OR_range) {
    if (key_OR_range === void 0) key_OR_range = null;
    try {
      let request = this[_count$0](key_OR_range);
      return indexed_db._completeRequest(core.int, request);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return FutureOfint().error(e, stacktrace);
    }
  }
  [$put](value, key) {
    if (key === void 0) key = null;
    try {
      let request = null;
      if (key != null) {
        request = this[_put](value, key);
      } else {
        request = this[_put](value);
      }
      return indexed_db._completeRequest(dart.dynamic, indexed_db.Request._check(request));
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return async.Future.error(e, stacktrace);
    }
  }
  [$getObject](key) {
    try {
      let request = this[_get](key);
      return indexed_db._completeRequest(dart.dynamic, request);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      return async.Future.error(e, stacktrace);
    }
  }
  [$openCursor](opts) {
    let key = opts && 'key' in opts ? opts.key : null;
    let range = opts && 'range' in opts ? opts.range : null;
    let direction = opts && 'direction' in opts ? opts.direction : null;
    let autoAdvance = opts && 'autoAdvance' in opts ? opts.autoAdvance : null;
    let key_OR_range = null;
    if (key != null) {
      if (range != null) {
        dart.throw(new core.ArgumentError.new("Cannot specify both key and range."));
      }
      key_OR_range = key;
    } else {
      key_OR_range = range;
    }
    let request = null;
    if (direction == null) {
      request = this[_openCursor](key_OR_range);
    } else {
      request = this[_openCursor](key_OR_range, direction);
    }
    return indexed_db.ObjectStore._cursorStreamFromResult(indexed_db.CursorWithValue, indexed_db.Request._check(request), autoAdvance);
  }
  [$createIndex](name, keyPath, opts) {
    let unique = opts && 'unique' in opts ? opts.unique : null;
    let multiEntry = opts && 'multiEntry' in opts ? opts.multiEntry : null;
    let options = new _js_helper.LinkedMap.new();
    if (unique != null) {
      options[$_set]("unique", unique);
    }
    if (multiEntry != null) {
      options[$_set]("multiEntry", multiEntry);
    }
    return this[_createIndex](name, keyPath, options);
  }
  get [$autoIncrement]() {
    return this.autoIncrement;
  }
  get [$indexNames]() {
    return this.indexNames;
  }
  get [$keyPath]() {
    return this.keyPath;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$transaction]() {
    return this.transaction;
  }
  [_add$1](value, key) {
    if (key === void 0) key = null;
    if (key != null) {
      let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
      let key_2 = html_common.convertDartToNative_SerializedScriptValue(key);
      return this[_add_1](value_1, key_2);
    }
    let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
    return this[_add_2](value_1);
  }
  [_add_1](...args) {
    return this.add.apply(this, args);
  }
  [_add_2](...args) {
    return this.add.apply(this, args);
  }
  [_clear$](...args) {
    return this.clear.apply(this, args);
  }
  [_count$0](...args) {
    return this.count.apply(this, args);
  }
  [_createIndex](name, keyPath, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_createIndex_1](name, keyPath, options_1);
    }
    return this[_createIndex_2](name, keyPath);
  }
  [_createIndex_1](...args) {
    return this.createIndex.apply(this, args);
  }
  [_createIndex_2](...args) {
    return this.createIndex.apply(this, args);
  }
  [_delete$](...args) {
    return this.delete.apply(this, args);
  }
  [$deleteIndex](...args) {
    return this.deleteIndex.apply(this, args);
  }
  [_get](...args) {
    return this.get.apply(this, args);
  }
  [$getAll](...args) {
    return this.getAll.apply(this, args);
  }
  [$getAllKeys](...args) {
    return this.getAllKeys.apply(this, args);
  }
  [$getKey](...args) {
    return this.getKey.apply(this, args);
  }
  [$index](...args) {
    return this.index.apply(this, args);
  }
  [_openCursor](...args) {
    return this.openCursor.apply(this, args);
  }
  [$openKeyCursor](...args) {
    return this.openKeyCursor.apply(this, args);
  }
  [_put](value, key) {
    if (key === void 0) key = null;
    if (key != null) {
      let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
      let key_2 = html_common.convertDartToNative_SerializedScriptValue(key);
      return this[_put_1](value_1, key_2);
    }
    let value_1 = html_common.convertDartToNative_SerializedScriptValue(value);
    return this[_put_2](value_1);
  }
  [_put_1](...args) {
    return this.put.apply(this, args);
  }
  [_put_2](...args) {
    return this.put.apply(this, args);
  }
  static _cursorStreamFromResult(T, request, autoAdvance) {
    let controller = async.StreamController$(T).new({sync: true});
    request[$onError].listen(dart.bind(controller, 'addError'));
    request[$onSuccess].listen(dart.fn(e => {
      let cursor = T._check(request[$result]);
      if (cursor == null) {
        controller.close();
      } else {
        controller.add(cursor);
        if (autoAdvance === true && dart.test(controller.hasListener)) {
          cursor[$next]();
        }
      }
    }, EventToNull()));
    return controller.stream;
  }
};
dart.addTypeTests(indexed_db.ObjectStore);
const autoIncrement = Symbol("ObjectStore.autoIncrement");
const indexNames = Symbol("ObjectStore.indexNames");
const keyPath$ = Symbol("ObjectStore.keyPath");
const name$5 = Symbol("ObjectStore.name");
const transaction = Symbol("ObjectStore.transaction");
dart.setMethodSignature(indexed_db.ObjectStore, () => ({
  __proto__: dart.getMethods(indexed_db.ObjectStore.__proto__),
  [$add]: dart.fnType(async.Future, [dart.dynamic], [dart.dynamic]),
  [$clear]: dart.fnType(async.Future, []),
  [$delete]: dart.fnType(async.Future, [dart.dynamic]),
  [$count]: dart.fnType(async.Future$(core.int), [], [dart.dynamic]),
  [$put]: dart.fnType(async.Future, [dart.dynamic], [dart.dynamic]),
  [$getObject]: dart.fnType(async.Future, [dart.dynamic]),
  [$openCursor]: dart.fnType(async.Stream$(indexed_db.CursorWithValue), [], {key: dart.dynamic, range: indexed_db.KeyRange, direction: core.String, autoAdvance: core.bool}),
  [$createIndex]: dart.fnType(indexed_db.Index, [core.String, dart.dynamic], {unique: core.bool, multiEntry: core.bool}),
  [_add$1]: dart.fnType(indexed_db.Request, [dart.dynamic], [dart.dynamic]),
  [_add_1]: dart.fnType(indexed_db.Request, [dart.dynamic, dart.dynamic]),
  [_add_2]: dart.fnType(indexed_db.Request, [dart.dynamic]),
  [_clear$]: dart.fnType(indexed_db.Request, []),
  [_count$0]: dart.fnType(indexed_db.Request, [core.Object]),
  [_createIndex]: dart.fnType(indexed_db.Index, [core.String, core.Object], [core.Map]),
  [_createIndex_1]: dart.fnType(indexed_db.Index, [dart.dynamic, dart.dynamic, dart.dynamic]),
  [_createIndex_2]: dart.fnType(indexed_db.Index, [dart.dynamic, dart.dynamic]),
  [_delete$]: dart.fnType(indexed_db.Request, [core.Object]),
  [$deleteIndex]: dart.fnType(dart.void, [core.String]),
  [_get]: dart.fnType(indexed_db.Request, [core.Object]),
  [$getAll]: dart.fnType(indexed_db.Request, [core.Object], [core.int]),
  [$getAllKeys]: dart.fnType(indexed_db.Request, [core.Object], [core.int]),
  [$getKey]: dart.fnType(indexed_db.Request, [core.Object]),
  [$index]: dart.fnType(indexed_db.Index, [core.String]),
  [_openCursor]: dart.fnType(indexed_db.Request, [core.Object], [core.String]),
  [$openKeyCursor]: dart.fnType(indexed_db.Request, [core.Object], [core.String]),
  [_put]: dart.fnType(indexed_db.Request, [dart.dynamic], [dart.dynamic]),
  [_put_1]: dart.fnType(indexed_db.Request, [dart.dynamic, dart.dynamic]),
  [_put_2]: dart.fnType(indexed_db.Request, [dart.dynamic])
}));
dart.setFieldSignature(indexed_db.ObjectStore, () => ({
  __proto__: dart.getFields(indexed_db.ObjectStore.__proto__),
  [$autoIncrement]: dart.finalFieldType(core.bool),
  [$indexNames]: dart.finalFieldType(ListOfString()),
  [$keyPath]: dart.finalFieldType(core.Object),
  [$name]: dart.fieldType(core.String),
  [$transaction]: dart.finalFieldType(indexed_db.Transaction)
}));
dart.registerExtension("IDBObjectStore", indexed_db.ObjectStore);
indexed_db.Observation = class Observation extends _interceptors.Interceptor {
  get [$key]() {
    return this.key;
  }
  get [$type]() {
    return this.type;
  }
  get [$value]() {
    return this.value;
  }
};
dart.addTypeTests(indexed_db.Observation);
const key$ = Symbol("Observation.key");
const type = Symbol("Observation.type");
const value = Symbol("Observation.value");
dart.setFieldSignature(indexed_db.Observation, () => ({
  __proto__: dart.getFields(indexed_db.Observation.__proto__),
  [$key]: dart.finalFieldType(core.Object),
  [$type]: dart.finalFieldType(core.String),
  [$value]: dart.finalFieldType(core.Object)
}));
dart.registerExtension("IDBObservation", indexed_db.Observation);
const _observe_1 = Symbol('_observe_1');
indexed_db.Observer = class Observer extends _interceptors.Interceptor {
  static new(callback) {
    let callback_1 = _js_helper.convertDartClosureToJS(ObserverChangesTovoid(), callback, 1);
    return indexed_db.Observer._create_1(callback_1);
  }
  static _create_1(callback) {
    return new IDBObserver(callback);
  }
  [$observe](db, tx, options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    this[_observe_1](db, tx, options_1);
    return;
  }
  [_observe_1](...args) {
    return this.observe.apply(this, args);
  }
  [$unobserve](...args) {
    return this.unobserve.apply(this, args);
  }
};
dart.addTypeTests(indexed_db.Observer);
dart.setMethodSignature(indexed_db.Observer, () => ({
  __proto__: dart.getMethods(indexed_db.Observer.__proto__),
  [$observe]: dart.fnType(dart.void, [indexed_db.Database, indexed_db.Transaction, core.Map]),
  [_observe_1]: dart.fnType(dart.void, [indexed_db.Database, indexed_db.Transaction, dart.dynamic]),
  [$unobserve]: dart.fnType(dart.void, [indexed_db.Database])
}));
dart.registerExtension("IDBObserver", indexed_db.Observer);
indexed_db.ObserverChanges = class ObserverChanges extends _interceptors.Interceptor {
  get [$database]() {
    return this.database;
  }
  get [$records]() {
    return this.records;
  }
  get [$transaction]() {
    return this.transaction;
  }
};
dart.addTypeTests(indexed_db.ObserverChanges);
const database = Symbol("ObserverChanges.database");
const records = Symbol("ObserverChanges.records");
const transaction$ = Symbol("ObserverChanges.transaction");
dart.setFieldSignature(indexed_db.ObserverChanges, () => ({
  __proto__: dart.getFields(indexed_db.ObserverChanges.__proto__),
  [$database]: dart.finalFieldType(indexed_db.Database),
  [$records]: dart.finalFieldType(core.Object),
  [$transaction]: dart.finalFieldType(indexed_db.Transaction)
}));
dart.registerExtension("IDBObserverChanges", indexed_db.ObserverChanges);
const _get_result = Symbol('_get_result');
indexed_db.Request = class Request extends html$.EventTarget {
  get [$error]() {
    return this.error;
  }
  get [$readyState]() {
    return this.readyState;
  }
  get [$result]() {
    return indexed_db._convertNativeToDart_IDBAny(this[_get_result]);
  }
  get [_get_result]() {
    return this.result;
  }
  get [$source]() {
    return this.source;
  }
  get [$transaction]() {
    return this.transaction;
  }
  get [$onError]() {
    return indexed_db.Request.errorEvent.forTarget(this);
  }
  get [$onSuccess]() {
    return indexed_db.Request.successEvent.forTarget(this);
  }
};
dart.addTypeTests(indexed_db.Request);
const error = Symbol("Request.error");
const readyState = Symbol("Request.readyState");
const source$0 = Symbol("Request.source");
const transaction$0 = Symbol("Request.transaction");
dart.setGetterSignature(indexed_db.Request, () => ({
  __proto__: dart.getGetters(indexed_db.Request.__proto__),
  [$result]: dart.dynamic,
  [$onError]: async.Stream$(html$.Event),
  [$onSuccess]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(indexed_db.Request, () => ({
  __proto__: dart.getFields(indexed_db.Request.__proto__),
  [$error]: dart.finalFieldType(html$.DomException),
  [$readyState]: dart.finalFieldType(core.String),
  [_get_result]: dart.finalFieldType(dart.dynamic),
  [$source]: dart.finalFieldType(core.Object),
  [$transaction]: dart.finalFieldType(indexed_db.Transaction)
}));
dart.defineLazy(indexed_db.Request, {
  /*indexed_db.Request.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*indexed_db.Request.successEvent*/get successEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("success"));
  }
});
dart.registerExtension("IDBRequest", indexed_db.Request);
indexed_db.OpenDBRequest = class OpenDBRequest extends indexed_db.Request {
  get [$onBlocked]() {
    return indexed_db.OpenDBRequest.blockedEvent.forTarget(this);
  }
  get [$onUpgradeNeeded]() {
    return indexed_db.OpenDBRequest.upgradeNeededEvent.forTarget(this);
  }
};
dart.addTypeTests(indexed_db.OpenDBRequest);
dart.setGetterSignature(indexed_db.OpenDBRequest, () => ({
  __proto__: dart.getGetters(indexed_db.OpenDBRequest.__proto__),
  [$onBlocked]: async.Stream$(html$.Event),
  [$onUpgradeNeeded]: async.Stream$(indexed_db.VersionChangeEvent)
}));
dart.defineLazy(indexed_db.OpenDBRequest, {
  /*indexed_db.OpenDBRequest.blockedEvent*/get blockedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("blocked"));
  },
  /*indexed_db.OpenDBRequest.upgradeNeededEvent*/get upgradeNeededEvent() {
    return dart.const(new (EventStreamProviderOfVersionChangeEvent()).new("upgradeneeded"));
  }
});
dart.registerExtension("IDBOpenDBRequest", indexed_db.OpenDBRequest);
dart.registerExtension("IDBVersionChangeRequest", indexed_db.OpenDBRequest);
indexed_db.Transaction = class Transaction extends html$.EventTarget {
  get [$completed]() {
    let completer = CompleterOfDatabase().new();
    FutureOfNull()._check(this[$onComplete].first.then(core.Null, dart.fn(_ => {
      completer.complete(this.db);
    }, EventToNull())));
    FutureOfNull()._check(this[$onError].first.then(core.Null, dart.fn(e => {
      completer.completeError(e);
    }, EventToNull())));
    FutureOfNull()._check(this[$onAbort].first.then(core.Null, dart.fn(e => {
      if (!dart.test(completer.isCompleted)) {
        completer.completeError(e);
      }
    }, EventToNull())));
    return completer.future;
  }
  get [$db]() {
    return this.db;
  }
  get [$error]() {
    return this.error;
  }
  get [$mode]() {
    return this.mode;
  }
  get [$objectStoreNames]() {
    return this.objectStoreNames;
  }
  [$abort](...args) {
    return this.abort.apply(this, args);
  }
  [$objectStore](...args) {
    return this.objectStore.apply(this, args);
  }
  get [$onAbort]() {
    return indexed_db.Transaction.abortEvent.forTarget(this);
  }
  get [$onComplete]() {
    return indexed_db.Transaction.completeEvent.forTarget(this);
  }
  get [$onError]() {
    return indexed_db.Transaction.errorEvent.forTarget(this);
  }
};
dart.addTypeTests(indexed_db.Transaction);
const db = Symbol("Transaction.db");
const error$0 = Symbol("Transaction.error");
const mode = Symbol("Transaction.mode");
const objectStoreNames$ = Symbol("Transaction.objectStoreNames");
dart.setMethodSignature(indexed_db.Transaction, () => ({
  __proto__: dart.getMethods(indexed_db.Transaction.__proto__),
  [$abort]: dart.fnType(dart.void, []),
  [$objectStore]: dart.fnType(indexed_db.ObjectStore, [core.String])
}));
dart.setGetterSignature(indexed_db.Transaction, () => ({
  __proto__: dart.getGetters(indexed_db.Transaction.__proto__),
  [$completed]: async.Future$(indexed_db.Database),
  [$onAbort]: async.Stream$(html$.Event),
  [$onComplete]: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(indexed_db.Transaction, () => ({
  __proto__: dart.getFields(indexed_db.Transaction.__proto__),
  [$db]: dart.finalFieldType(indexed_db.Database),
  [$error]: dart.finalFieldType(html$.DomException),
  [$mode]: dart.finalFieldType(core.String),
  [$objectStoreNames]: dart.finalFieldType(ListOfString())
}));
dart.defineLazy(indexed_db.Transaction, {
  /*indexed_db.Transaction.abortEvent*/get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
  },
  /*indexed_db.Transaction.completeEvent*/get completeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("complete"));
  },
  /*indexed_db.Transaction.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  }
});
dart.registerExtension("IDBTransaction", indexed_db.Transaction);
const _createEvent = Symbol('_createEvent');
const _initEvent = Symbol('_initEvent');
const _selector = Symbol('_selector');
const _get_currentTarget = Symbol('_get_currentTarget');
const _get_target = Symbol('_get_target');
html$.Event = class Event$ extends _interceptors.Interceptor {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    return html$.Event.eventType("Event", type, {canBubble: canBubble, cancelable: cancelable});
  }
  static eventType(type, name, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let e = html$.document[_createEvent](type);
    e[_initEvent](name, canBubble, cancelable);
    return e;
  }
  get [_selector]() {
    return this._selector;
  }
  set [_selector](value) {
    this._selector = value;
  }
  get [$matchingTarget]() {
    if (this[_selector] == null) {
      dart.throw(new core.UnsupportedError.new("Cannot call matchingTarget if this Event did" + " not arise as a result of event delegation."));
    }
    let currentTarget = html$.Element._check(this[$currentTarget]);
    let target = html$.Element._check(this[$target]);
    let matchedTarget = null;
    do {
      if (dart.test(target[$matches](this[_selector]))) return target;
      target = target[$parent];
    } while (target != null && !dart.equals(target, currentTarget[$parent]));
    dart.throw(new core.StateError.new("No selector matched for populating matchedTarget."));
  }
  get [$path]() {
    return !!this.composedPath ? this.composedPath() : JSArrayOfEventTarget().of([]);
  }
  static __(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.Event._create_1(type, eventInitDict_1);
    }
    return html$.Event._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new Event(type, eventInitDict);
  }
  static _create_2(type) {
    return new Event(type);
  }
  get [$bubbles]() {
    return this.bubbles;
  }
  get [$cancelable]() {
    return this.cancelable;
  }
  get [$composed]() {
    return this.composed;
  }
  get [$currentTarget]() {
    return html$._convertNativeToDart_EventTarget(this[_get_currentTarget]);
  }
  get [_get_currentTarget]() {
    return this.currentTarget;
  }
  get [$defaultPrevented]() {
    return this.defaultPrevented;
  }
  get [$eventPhase]() {
    return this.eventPhase;
  }
  get [$isTrusted]() {
    return this.isTrusted;
  }
  get [$target]() {
    return html$._convertNativeToDart_EventTarget(this[_get_target]);
  }
  get [_get_target]() {
    return this.target;
  }
  get [$timeStamp]() {
    return this.timeStamp;
  }
  get [$type]() {
    return this.type;
  }
  [$composedPath](...args) {
    return this.composedPath.apply(this, args);
  }
  [_initEvent](...args) {
    return this.initEvent.apply(this, args);
  }
  [$preventDefault](...args) {
    return this.preventDefault.apply(this, args);
  }
  [$stopImmediatePropagation](...args) {
    return this.stopImmediatePropagation.apply(this, args);
  }
  [$stopPropagation](...args) {
    return this.stopPropagation.apply(this, args);
  }
};
dart.addTypeTests(html$.Event);
const bubbles = Symbol("Event.bubbles");
const cancelable = Symbol("Event.cancelable");
const composed = Symbol("Event.composed");
const defaultPrevented = Symbol("Event.defaultPrevented");
const eventPhase = Symbol("Event.eventPhase");
const isTrusted = Symbol("Event.isTrusted");
const timeStamp = Symbol("Event.timeStamp");
const type$2 = Symbol("Event.type");
dart.setMethodSignature(html$.Event, () => ({
  __proto__: dart.getMethods(html$.Event.__proto__),
  [$composedPath]: dart.fnType(core.List$(html$.EventTarget), []),
  [_initEvent]: dart.fnType(dart.void, [core.String], [core.bool, core.bool]),
  [$preventDefault]: dart.fnType(dart.void, []),
  [$stopImmediatePropagation]: dart.fnType(dart.void, []),
  [$stopPropagation]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.Event, () => ({
  __proto__: dart.getGetters(html$.Event.__proto__),
  [$matchingTarget]: html$.Element,
  [$path]: core.List$(html$.EventTarget),
  [$currentTarget]: html$.EventTarget,
  [$target]: html$.EventTarget
}));
dart.setFieldSignature(html$.Event, () => ({
  __proto__: dart.getFields(html$.Event.__proto__),
  [_selector]: dart.fieldType(core.String),
  [$bubbles]: dart.finalFieldType(core.bool),
  [$cancelable]: dart.finalFieldType(core.bool),
  [$composed]: dart.finalFieldType(core.bool),
  [_get_currentTarget]: dart.finalFieldType(dart.dynamic),
  [$defaultPrevented]: dart.finalFieldType(core.bool),
  [$eventPhase]: dart.finalFieldType(core.int),
  [$isTrusted]: dart.finalFieldType(core.bool),
  [_get_target]: dart.finalFieldType(dart.dynamic),
  [$timeStamp]: dart.finalFieldType(core.num),
  [$type]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.Event, {
  /*html$.Event.AT_TARGET*/get AT_TARGET() {
    return 2;
  },
  /*html$.Event.BUBBLING_PHASE*/get BUBBLING_PHASE() {
    return 3;
  },
  /*html$.Event.CAPTURING_PHASE*/get CAPTURING_PHASE() {
    return 1;
  }
});
dart.registerExtension("Event", html$.Event);
dart.registerExtension("InputEvent", html$.Event);
indexed_db.VersionChangeEvent = class VersionChangeEvent extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return indexed_db.VersionChangeEvent._create_1(type, eventInitDict_1);
    }
    return indexed_db.VersionChangeEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new IDBVersionChangeEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new IDBVersionChangeEvent(type);
  }
  get [$dataLoss]() {
    return this.dataLoss;
  }
  get [$dataLossMessage]() {
    return this.dataLossMessage;
  }
  get [$newVersion]() {
    return this.newVersion;
  }
  get [$oldVersion]() {
    return this.oldVersion;
  }
  get [$target]() {
    return this.target;
  }
};
dart.addTypeTests(indexed_db.VersionChangeEvent);
const dataLoss = Symbol("VersionChangeEvent.dataLoss");
const dataLossMessage = Symbol("VersionChangeEvent.dataLossMessage");
const newVersion = Symbol("VersionChangeEvent.newVersion");
const oldVersion = Symbol("VersionChangeEvent.oldVersion");
const target = Symbol("VersionChangeEvent.target");
dart.setFieldSignature(indexed_db.VersionChangeEvent, () => ({
  __proto__: dart.getFields(indexed_db.VersionChangeEvent.__proto__),
  [$dataLoss]: dart.finalFieldType(core.String),
  [$dataLossMessage]: dart.finalFieldType(core.String),
  [$newVersion]: dart.finalFieldType(core.int),
  [$oldVersion]: dart.finalFieldType(core.int),
  [$target]: dart.finalFieldType(indexed_db.OpenDBRequest)
}));
dart.registerExtension("IDBVersionChangeEvent", indexed_db.VersionChangeEvent);
dart.copyProperties(html$, {
  get window() {
    return window;
  }
});
dart.copyProperties(html$, {
  get document() {
    return document;
  }
});
html$.promiseToFuture = function(T, jsPromise) {
  let completer = async.Completer$(T).new();
  let thenSuccessCode = promiseValue => completer.complete(async.FutureOr$(T)._check(promiseValue));
  dart.fn(thenSuccessCode, dynamicTovoid());
  let thenErrorCode = promiseError => completer.completeError(promiseError);
  dart.fn(thenErrorCode, dynamicTovoid());
  jsPromise.then(_js_helper.convertDartClosureToJS(dynamicTovoid(), thenSuccessCode, 1), _js_helper.convertDartClosureToJS(dynamicTovoid(), thenErrorCode, 1));
  return completer.future;
};
html$.promiseToFutureAsMap = function(jsPromise) {
  let completer = CompleterOfMapOfString$dynamic().new();
  let thenSuccessCode = promiseValue => completer.complete(html_common.convertNativeToDart_Dictionary(promiseValue));
  dart.fn(thenSuccessCode, dynamicTovoid());
  let thenErrorCode = promiseError => completer.completeError(promiseError);
  dart.fn(thenErrorCode, dynamicTovoid());
  jsPromise.then(_js_helper.convertDartClosureToJS(dynamicTovoid(), thenSuccessCode, 1), _js_helper.convertDartClosureToJS(dynamicTovoid(), thenErrorCode, 1));
  return completer.future;
};
const _attributes$ = Symbol('_attributes');
const _innerHtml = Symbol('_innerHtml');
const _localName = Symbol('_localName');
const _namespaceUri = Symbol('_namespaceUri');
const _scrollHeight = Symbol('_scrollHeight');
const _scrollLeft = Symbol('_scrollLeft');
const _scrollTop = Symbol('_scrollTop');
const _scrollWidth = Symbol('_scrollWidth');
const _childElementCount = Symbol('_childElementCount');
const _children = Symbol('_children');
const _firstElementChild = Symbol('_firstElementChild');
const _lastElementChild = Symbol('_lastElementChild');
const _getAttribute = Symbol('_getAttribute');
const _getAttributeNS = Symbol('_getAttributeNS');
const _hasAttribute = Symbol('_hasAttribute');
const _hasAttributeNS = Symbol('_hasAttributeNS');
const _removeAttribute = Symbol('_removeAttribute');
const _removeAttributeNS = Symbol('_removeAttributeNS');
const _setAttribute = Symbol('_setAttribute');
const _setAttributeNS = Symbol('_setAttributeNS');
const _querySelectorAll = Symbol('_querySelectorAll');
const _setApplyScroll = Symbol('_setApplyScroll');
const _setDistributeScroll = Symbol('_setDistributeScroll');
const _getComputedStyle = Symbol('_getComputedStyle');
const _getClientRects = Symbol('_getClientRects');
const _animate = Symbol('_animate');
const _scrollIntoView = Symbol('_scrollIntoView');
const _scrollIntoViewIfNeeded = Symbol('_scrollIntoViewIfNeeded');
const _insertAdjacentText = Symbol('_insertAdjacentText');
const _insertAdjacentNode = Symbol('_insertAdjacentNode');
const _insertAdjacentHtml = Symbol('_insertAdjacentHtml');
const _insertAdjacentElement = Symbol('_insertAdjacentElement');
const _canBeUsedToCreateContextualFragment = Symbol('_canBeUsedToCreateContextualFragment');
const _cannotBeUsedToCreateContextualFragment = Symbol('_cannotBeUsedToCreateContextualFragment');
const _attachShadow_1 = Symbol('_attachShadow_1');
const _getElementsByTagName = Symbol('_getElementsByTagName');
const _scroll_1 = Symbol('_scroll_1');
const _scroll_2 = Symbol('_scroll_2');
const _scroll_3 = Symbol('_scroll_3');
const _scrollBy_1 = Symbol('_scrollBy_1');
const _scrollBy_2 = Symbol('_scrollBy_2');
const _scrollBy_3 = Symbol('_scrollBy_3');
const _scrollTo_1 = Symbol('_scrollTo_1');
const _scrollTo_2 = Symbol('_scrollTo_2');
const _scrollTo_3 = Symbol('_scrollTo_3');
const _removeChild = Symbol('_removeChild');
const _replaceChild = Symbol('_replaceChild');
const _this = Symbol('_this');
const _clearChildren = Symbol('_clearChildren');
const _getRootNode_1 = Symbol('_getRootNode_1');
const _getRootNode_2 = Symbol('_getRootNode_2');
html$.Node = class Node extends html$.EventTarget {
  get [$nodes]() {
    return new html$._ChildNodeListLazy.new(this);
  }
  set [$nodes](value) {
    let copy = value[$toList]();
    this[$text] = "";
    for (let node of copy) {
      this[$append](node);
    }
  }
  [$remove]() {
    if (this.parentNode != null) {
      let parent = this.parentNode;
      this.parentNode[_removeChild](this);
    }
  }
  [$replaceWith](otherNode) {
    try {
      let parent = this.parentNode;
      parent[_replaceChild](otherNode, this);
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
    ;
    return this;
  }
  [$insertAllBefore](newNodes, refChild) {
    if (html$._ChildNodeListLazy.is(newNodes)) {
      let otherList = newNodes;
      if (otherList[_this] === this) {
        dart.throw(new core.ArgumentError.new(newNodes));
      }
      for (let i = 0, len = otherList.length; i < dart.notNull(len); ++i) {
        this.insertBefore(otherList[_this].firstChild, refChild);
      }
    } else {
      for (let node of newNodes) {
        this.insertBefore(node, refChild);
      }
    }
  }
  [_clearChildren]() {
    while (this.firstChild != null) {
      this[_removeChild](this.firstChild);
    }
  }
  [$toString]() {
    let value = this.nodeValue;
    return value == null ? super[$toString]() : value;
  }
  get [$childNodes]() {
    return this.childNodes;
  }
  get [$baseUri]() {
    return this.baseURI;
  }
  get [$firstChild]() {
    return this.firstChild;
  }
  get [$isConnected]() {
    return this.isConnected;
  }
  get [$lastChild]() {
    return this.lastChild;
  }
  get [$nextNode]() {
    return this.nextSibling;
  }
  get [$nodeName]() {
    return this.nodeName;
  }
  get [$nodeType]() {
    return this.nodeType;
  }
  get [$nodeValue]() {
    return this.nodeValue;
  }
  get [$ownerDocument]() {
    return this.ownerDocument;
  }
  get [$parent]() {
    return this.parentElement;
  }
  get [$parentNode]() {
    return this.parentNode;
  }
  get [$previousNode]() {
    return this.previousSibling;
  }
  get [$text]() {
    return this.textContent;
  }
  set [$text](value) {
    this.textContent = value;
  }
  [$append](...args) {
    return this.appendChild.apply(this, args);
  }
  [$clone](...args) {
    return this.cloneNode.apply(this, args);
  }
  [$contains](...args) {
    return this.contains.apply(this, args);
  }
  [$getRootNode](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_getRootNode_1](options_1);
    }
    return this[_getRootNode_2]();
  }
  [_getRootNode_1](...args) {
    return this.getRootNode.apply(this, args);
  }
  [_getRootNode_2](...args) {
    return this.getRootNode.apply(this, args);
  }
  [$hasChildNodes](...args) {
    return this.hasChildNodes.apply(this, args);
  }
  [$insertBefore](...args) {
    return this.insertBefore.apply(this, args);
  }
  [_removeChild](...args) {
    return this.removeChild.apply(this, args);
  }
  [_replaceChild](...args) {
    return this.replaceChild.apply(this, args);
  }
};
(html$.Node._created = function() {
  this[childNodes] = null;
  this[baseUri] = null;
  this[firstChild] = null;
  this[isConnected] = null;
  this[lastChild] = null;
  this[nextNode] = null;
  this[nodeName] = null;
  this[nodeType] = null;
  this[nodeValue] = null;
  this[ownerDocument] = null;
  this[parent] = null;
  this[parentNode] = null;
  this[previousNode] = null;
  this[text] = null;
  html$.Node.__proto__._created.call(this);
}).prototype = html$.Node.prototype;
dart.addTypeTests(html$.Node);
const childNodes = Symbol("Node.childNodes");
const baseUri = Symbol("Node.baseUri");
const firstChild = Symbol("Node.firstChild");
const isConnected = Symbol("Node.isConnected");
const lastChild = Symbol("Node.lastChild");
const nextNode = Symbol("Node.nextNode");
const nodeName = Symbol("Node.nodeName");
const nodeType = Symbol("Node.nodeType");
const nodeValue = Symbol("Node.nodeValue");
const ownerDocument = Symbol("Node.ownerDocument");
const parent = Symbol("Node.parent");
const parentNode = Symbol("Node.parentNode");
const previousNode = Symbol("Node.previousNode");
const text = Symbol("Node.text");
dart.setMethodSignature(html$.Node, () => ({
  __proto__: dart.getMethods(html$.Node.__proto__),
  [$remove]: dart.fnType(dart.void, []),
  [$replaceWith]: dart.fnType(html$.Node, [html$.Node]),
  [$insertAllBefore]: dart.fnType(html$.Node, [core.Iterable$(html$.Node), html$.Node]),
  [_clearChildren]: dart.fnType(dart.void, []),
  [$append]: dart.fnType(html$.Node, [html$.Node]),
  [$clone]: dart.fnType(html$.Node, [core.bool]),
  [$contains]: dart.fnType(core.bool, [html$.Node]),
  [$getRootNode]: dart.fnType(html$.Node, [], [core.Map]),
  [_getRootNode_1]: dart.fnType(html$.Node, [dart.dynamic]),
  [_getRootNode_2]: dart.fnType(html$.Node, []),
  [$hasChildNodes]: dart.fnType(core.bool, []),
  [$insertBefore]: dart.fnType(html$.Node, [html$.Node, html$.Node]),
  [_removeChild]: dart.fnType(html$.Node, [html$.Node]),
  [_replaceChild]: dart.fnType(html$.Node, [html$.Node, html$.Node])
}));
dart.setGetterSignature(html$.Node, () => ({
  __proto__: dart.getGetters(html$.Node.__proto__),
  [$nodes]: core.List$(html$.Node)
}));
dart.setSetterSignature(html$.Node, () => ({
  __proto__: dart.getSetters(html$.Node.__proto__),
  [$nodes]: core.Iterable$(html$.Node)
}));
dart.setFieldSignature(html$.Node, () => ({
  __proto__: dart.getFields(html$.Node.__proto__),
  [$childNodes]: dart.finalFieldType(ListOfNode()),
  [$baseUri]: dart.finalFieldType(core.String),
  [$firstChild]: dart.finalFieldType(html$.Node),
  [$isConnected]: dart.finalFieldType(core.bool),
  [$lastChild]: dart.finalFieldType(html$.Node),
  [$nextNode]: dart.finalFieldType(html$.Node),
  [$nodeName]: dart.finalFieldType(core.String),
  [$nodeType]: dart.finalFieldType(core.int),
  [$nodeValue]: dart.finalFieldType(core.String),
  [$ownerDocument]: dart.finalFieldType(html$.Document),
  [$parent]: dart.finalFieldType(html$.Element),
  [$parentNode]: dart.finalFieldType(html$.Node),
  [$previousNode]: dart.finalFieldType(html$.Node),
  [$text]: dart.fieldType(core.String)
}));
dart.defineLazy(html$.Node, {
  /*html$.Node.ATTRIBUTE_NODE*/get ATTRIBUTE_NODE() {
    return 2;
  },
  /*html$.Node.CDATA_SECTION_NODE*/get CDATA_SECTION_NODE() {
    return 4;
  },
  /*html$.Node.COMMENT_NODE*/get COMMENT_NODE() {
    return 8;
  },
  /*html$.Node.DOCUMENT_FRAGMENT_NODE*/get DOCUMENT_FRAGMENT_NODE() {
    return 11;
  },
  /*html$.Node.DOCUMENT_NODE*/get DOCUMENT_NODE() {
    return 9;
  },
  /*html$.Node.DOCUMENT_TYPE_NODE*/get DOCUMENT_TYPE_NODE() {
    return 10;
  },
  /*html$.Node.ELEMENT_NODE*/get ELEMENT_NODE() {
    return 1;
  },
  /*html$.Node.ENTITY_NODE*/get ENTITY_NODE() {
    return 6;
  },
  /*html$.Node.ENTITY_REFERENCE_NODE*/get ENTITY_REFERENCE_NODE() {
    return 5;
  },
  /*html$.Node.NOTATION_NODE*/get NOTATION_NODE() {
    return 12;
  },
  /*html$.Node.PROCESSING_INSTRUCTION_NODE*/get PROCESSING_INSTRUCTION_NODE() {
    return 7;
  },
  /*html$.Node.TEXT_NODE*/get TEXT_NODE() {
    return 3;
  }
});
dart.registerExtension("Node", html$.Node);
html$.Element = class Element extends html$.Node {
  static html(html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    let fragment = html$.document.body[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    return html$.Element._check(fragment[$nodes][$where](dart.fn(e => html$.Element.is(e), NodeTobool()))[$single]);
  }
  static tag(tag, typeExtention) {
    if (typeExtention === void 0) typeExtention = null;
    return html$.Element._check(html$._ElementFactoryProvider.createElement_tag(tag, typeExtention));
  }
  static a() {
    return html$.AnchorElement.new();
  }
  static article() {
    return html$.Element.tag("article");
  }
  static aside() {
    return html$.Element.tag("aside");
  }
  static audio() {
    return html$.Element.tag("audio");
  }
  static br() {
    return html$.BRElement.new();
  }
  static canvas() {
    return html$.CanvasElement.new();
  }
  static div() {
    return html$.DivElement.new();
  }
  static footer() {
    return html$.Element.tag("footer");
  }
  static header() {
    return html$.Element.tag("header");
  }
  static hr() {
    return html$.Element.tag("hr");
  }
  static iframe() {
    return html$.Element.tag("iframe");
  }
  static img() {
    return html$.Element.tag("img");
  }
  static li() {
    return html$.Element.tag("li");
  }
  static nav() {
    return html$.Element.tag("nav");
  }
  static ol() {
    return html$.Element.tag("ol");
  }
  static option() {
    return html$.Element.tag("option");
  }
  static p() {
    return html$.Element.tag("p");
  }
  static pre() {
    return html$.Element.tag("pre");
  }
  static section() {
    return html$.Element.tag("section");
  }
  static select() {
    return html$.Element.tag("select");
  }
  static span() {
    return html$.Element.tag("span");
  }
  static svg() {
    return html$.Element.tag("svg");
  }
  static table() {
    return html$.Element.tag("table");
  }
  static td() {
    return html$.Element.tag("td");
  }
  static textarea() {
    return html$.Element.tag("textarea");
  }
  static th() {
    return html$.Element.tag("th");
  }
  static tr() {
    return html$.Element.tag("tr");
  }
  static ul() {
    return html$.Element.tag("ul");
  }
  static video() {
    return html$.Element.tag("video");
  }
  get [$attributes]() {
    return new html$._ElementAttributeMap.new(this);
  }
  set [$attributes](value) {
    let attributes = this[$attributes];
    attributes[$clear]();
    for (let key of value[$keys]) {
      attributes[$_set](key, value[$_get](key));
    }
  }
  [$getAttribute](name) {
    if (!(name != null)) dart.assertFailed("Attribute name cannot be null");
    return this[_getAttribute](name);
  }
  [$getAttributeNS](namespaceURI, name) {
    if (!(name != null)) dart.assertFailed("Attribute name cannot be null");
    return this[_getAttributeNS](namespaceURI, name);
  }
  [$hasAttribute](name) {
    if (!(name != null)) dart.assertFailed("Attribute name cannot be null");
    return this[_hasAttribute](name);
  }
  [$hasAttributeNS](namespaceURI, name) {
    if (!(name != null)) dart.assertFailed("Attribute name cannot be null");
    return this[_hasAttributeNS](namespaceURI, name);
  }
  [$removeAttribute](name) {
    if (!(name != null)) dart.assertFailed("Attribute name cannot be null");
    this[_removeAttribute](name);
  }
  [$removeAttributeNS](namespaceURI, name) {
    if (!(name != null)) dart.assertFailed("Attribute name cannot be null");
    this[_removeAttributeNS](namespaceURI, name);
  }
  [$setAttribute](name, value) {
    if (!(name != null)) dart.assertFailed("Attribute name cannot be null");
    this[_setAttribute](name, value);
  }
  [$setAttributeNS](namespaceURI, name, value) {
    if (!(name != null)) dart.assertFailed("Attribute name cannot be null");
    this[_setAttributeNS](namespaceURI, name, value);
  }
  get [$children]() {
    return new html$._ChildrenElementList._wrap(this);
  }
  set [$children](value) {
    let copy = value[$toList]();
    let children = this[$children];
    children[$clear]();
    children[$addAll](copy);
  }
  [$querySelectorAll](T, selectors) {
    return new (html$._FrozenElementList$(T))._wrap(this[_querySelectorAll](selectors));
  }
  [_setApplyScroll](...args) {
    return this.setApplyScroll.apply(this, args);
  }
  [$setApplyScroll](nativeScrollBehavior) {
    let completer = CompleterOfScrollState().new();
    this[_setApplyScroll](dart.fn(value => {
      completer.complete(value);
    }, ScrollStateToNull()), nativeScrollBehavior);
    return completer.future;
  }
  [_setDistributeScroll](...args) {
    return this.setDistributeScroll.apply(this, args);
  }
  [$setDistributeScroll](nativeScrollBehavior) {
    let completer = CompleterOfScrollState().new();
    this[_setDistributeScroll](dart.fn(value => {
      completer.complete(value);
    }, ScrollStateToNull()), nativeScrollBehavior);
    return completer.future;
  }
  get [$classes]() {
    return new html$._ElementCssClassSet.new(this);
  }
  set [$classes](value) {
    let classSet = this[$classes];
    classSet.clear();
    classSet.addAll(value);
  }
  get [$dataset]() {
    return new html$._DataAttributeMap.new(this[$attributes]);
  }
  set [$dataset](value) {
    let data = this[$dataset];
    data[$clear]();
    for (let key of value[$keys]) {
      data[$_set](key, value[$_get](key));
    }
  }
  [$getNamespacedAttributes](namespace) {
    return new html$._NamespacedAttributeMap.new(this, namespace);
  }
  [$getComputedStyle](pseudoElement) {
    if (pseudoElement === void 0) pseudoElement = null;
    if (pseudoElement == null) {
      pseudoElement = "";
    }
    return html$.window[_getComputedStyle](this, pseudoElement);
  }
  get [$client]() {
    return new (RectangleOfnum()).new(this.clientLeft, this.clientTop, this.clientWidth, this.clientHeight);
  }
  get [$offset]() {
    return new (RectangleOfnum()).new(this[$offsetLeft], this[$offsetTop], this[$offsetWidth], this[$offsetHeight]);
  }
  [$appendText](text) {
    this[$append](html$.Text.new(text));
  }
  [$appendHtml](text, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    this[$insertAdjacentHtml]("beforeend", text, {validator: validator, treeSanitizer: treeSanitizer});
  }
  static isTagSupported(tag) {
    let e = html$._ElementFactoryProvider.createElement_tag(tag, null);
    return html$.Element.is(e) && !html$.UnknownElement.is(e);
  }
  [$attached]() {
    this[$enteredView]();
  }
  [$detached]() {
    this[$leftView]();
  }
  [$enteredView]() {}
  [$getClientRects]() {
    let value = this[_getClientRects]();
    let jsProto = value.prototype;
    if (jsProto == null) {
      value.prototype = Object.create(null);
    }
    _js_helper.applyExtension("DOMRectList", value);
    return value;
  }
  [$leftView]() {}
  [$animate](frames, timing) {
    if (timing === void 0) timing = null;
    if (!core.Iterable.is(frames) || !dart.test(frames[$every](dart.fn(x => core.Map.is(x), MapOfString$dynamicTobool())))) {
      dart.throw(new core.ArgumentError.new("The frames parameter should be a List of Maps " + "with frame information"));
    }
    let convertedFrames = null;
    if (core.Iterable.is(frames)) {
      convertedFrames = frames[$map](dart.dynamic, dart.fn(html_common.convertDartToNative_Dictionary, Map__Todynamic()))[$toList]();
    } else {
      convertedFrames = frames;
    }
    let convertedTiming = core.Map.is(timing) ? html_common.convertDartToNative_Dictionary(timing) : timing;
    return convertedTiming == null ? this[_animate](convertedFrames) : this[_animate](convertedFrames, convertedTiming);
  }
  [_animate](...args) {
    return this.animate.apply(this, args);
  }
  [$attributeChanged](name, oldValue, newValue) {}
  get [$localName]() {
    return this[_localName];
  }
  get [$namespaceUri]() {
    return this[_namespaceUri];
  }
  [$toString]() {
    return this[$localName];
  }
  [$scrollIntoView](alignment) {
    if (alignment === void 0) alignment = null;
    let hasScrollIntoViewIfNeeded = true;
    hasScrollIntoViewIfNeeded = !!this.scrollIntoViewIfNeeded;
    if (dart.equals(alignment, html$.ScrollAlignment.TOP)) {
      this[_scrollIntoView](true);
    } else if (dart.equals(alignment, html$.ScrollAlignment.BOTTOM)) {
      this[_scrollIntoView](false);
    } else if (hasScrollIntoViewIfNeeded) {
      if (dart.equals(alignment, html$.ScrollAlignment.CENTER)) {
        this[_scrollIntoViewIfNeeded](true);
      } else {
        this[_scrollIntoViewIfNeeded]();
      }
    } else {
      this[_scrollIntoView]();
    }
  }
  static _determineMouseWheelEventType(e) {
    return "wheel";
  }
  static _determineTransitionEventType(e) {
    if (dart.test(html_common.Device.isWebKit)) {
      return "webkitTransitionEnd";
    } else if (dart.test(html_common.Device.isOpera)) {
      return "oTransitionEnd";
    }
    return "transitionend";
  }
  [$insertAdjacentText](where, text) {
    if (!!this.insertAdjacentText) {
      this[_insertAdjacentText](where, text);
    } else {
      this[_insertAdjacentNode](where, html$.Text.new(text));
    }
  }
  [_insertAdjacentText](...args) {
    return this.insertAdjacentText.apply(this, args);
  }
  [$insertAdjacentHtml](where, html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (html$._TrustedHtmlTreeSanitizer.is(treeSanitizer)) {
      this[_insertAdjacentHtml](where, html);
    } else {
      this[_insertAdjacentNode](where, this[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer}));
    }
  }
  [_insertAdjacentHtml](...args) {
    return this.insertAdjacentHTML.apply(this, args);
  }
  [$insertAdjacentElement](where, element) {
    if (!!this.insertAdjacentElement) {
      this[_insertAdjacentElement](where, element);
    } else {
      this[_insertAdjacentNode](where, element);
    }
    return element;
  }
  [_insertAdjacentElement](...args) {
    return this.insertAdjacentElement.apply(this, args);
  }
  [_insertAdjacentNode](where, node) {
    switch (where[$toLowerCase]()) {
      case "beforebegin":
      {
        this.parentNode.insertBefore(node, this);
        break;
      }
      case "afterbegin":
      {
        let first = dart.notNull(this[$nodes][$length]) > 0 ? this[$nodes][$_get](0) : null;
        this.insertBefore(node, first);
        break;
      }
      case "beforeend":
      {
        this[$append](node);
        break;
      }
      case "afterend":
      {
        this.parentNode.insertBefore(node, this[$nextNode]);
        break;
      }
      default:
      {
        dart.throw(new core.ArgumentError.new("Invalid position " + dart.str(where)));
      }
    }
  }
  [$matches](selectors) {
    if (!!this.matches) {
      return this.matches(selectors);
    } else if (!!this.webkitMatchesSelector) {
      return this.webkitMatchesSelector(selectors);
    } else if (!!this.mozMatchesSelector) {
      return this.mozMatchesSelector(selectors);
    } else if (!!this.msMatchesSelector) {
      return this.msMatchesSelector(selectors);
    } else if (!!this.oMatchesSelector) {
      return this.oMatchesSelector(selectors);
    } else {
      dart.throw(new core.UnsupportedError.new("Not supported on this platform"));
    }
  }
  [$matchesWithAncestors](selectors) {
    let elem = this;
    do {
      if (dart.test(elem[$matches](selectors))) return true;
      elem = elem[$parent];
    } while (elem != null);
    return false;
  }
  [$createShadowRoot]() {
    return (this.createShadowRoot || this.webkitCreateShadowRoot).call(this);
  }
  get [$shadowRoot]() {
    return this.shadowRoot || this.webkitShadowRoot;
  }
  get [$contentEdge]() {
    return new html$._ContentCssRect.new(this);
  }
  get [$paddingEdge]() {
    return new html$._PaddingCssRect.new(this);
  }
  get [$borderEdge]() {
    return new html$._BorderCssRect.new(this);
  }
  get [$marginEdge]() {
    return new html$._MarginCssRect.new(this);
  }
  get [$documentOffset]() {
    return this[$offsetTo](html$.document.documentElement);
  }
  [$offsetTo](parent) {
    return html$.Element._offsetToHelper(this, parent);
  }
  static _offsetToHelper(current, parent) {
    let sameAsParent = current == parent;
    let foundAsParent = sameAsParent || parent.tagName === "HTML";
    if (current == null || sameAsParent) {
      if (foundAsParent) return new (PointOfnum()).new(0, 0);
      dart.throw(new core.ArgumentError.new("Specified element is not a transitive offset " + "parent of this element."));
    }
    let parentOffset = current.offsetParent;
    let p = html$.Element._offsetToHelper(parentOffset, parent);
    return new (PointOfnum()).new(dart.notNull(p.x) + dart.notNull(current[$offsetLeft]), dart.notNull(p.y) + dart.notNull(current[$offsetTop]));
  }
  [$createFragment](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (treeSanitizer == null) {
      if (validator == null) {
        if (html$.Element._defaultValidator == null) {
          html$.Element._defaultValidator = new html$.NodeValidatorBuilder.common();
        }
        validator = html$.Element._defaultValidator;
      }
      if (html$.Element._defaultSanitizer == null) {
        html$.Element._defaultSanitizer = new html$._ValidatingTreeSanitizer.new(validator);
      } else {
        html$.Element._defaultSanitizer.validator = validator;
      }
      treeSanitizer = html$.Element._defaultSanitizer;
    } else if (validator != null) {
      dart.throw(new core.ArgumentError.new("validator can only be passed if treeSanitizer is null"));
    }
    if (html$.Element._parseDocument == null) {
      html$.Element._parseDocument = html$.document.implementation[$createHtmlDocument]("");
      html$.Element._parseRange = html$.Element._parseDocument.createRange();
      let base = html$.BaseElement._check(html$.Element._parseDocument[$createElement]("base"));
      base.href = html$.document[$baseUri];
      html$.Element._parseDocument[$head][$append](base);
    }
    if (html$.Element._parseDocument.body == null) {
      html$.Element._parseDocument.body = html$.BodyElement._check(html$.Element._parseDocument[$createElement]("body"));
    }
    let contextElement = null;
    if (html$.BodyElement.is(this)) {
      contextElement = html$.Element._parseDocument.body;
    } else {
      contextElement = html$.Element._parseDocument[$createElement](this.tagName);
      html$.Element._parseDocument.body[$append](html$.Node._check(contextElement));
    }
    let fragment = null;
    if (dart.test(html$.Range.supportsCreateContextualFragment) && dart.test(this[_canBeUsedToCreateContextualFragment])) {
      html$.Element._parseRange.selectNodeContents(html$.Node._check(contextElement));
      fragment = html$.Element._parseRange.createContextualFragment(html);
    } else {
      dart.dput(contextElement, _innerHtml, html);
      fragment = html$.Element._parseDocument.createDocumentFragment();
      while (dart.dload(contextElement, 'firstChild') != null) {
        dart.dsend(fragment, 'append', [dart.dload(contextElement, 'firstChild')]);
      }
    }
    if (!dart.equals(contextElement, html$.Element._parseDocument.body)) {
      dart.dsend(contextElement, 'remove', []);
    }
    treeSanitizer.sanitizeTree(html$.Node._check(fragment));
    html$.document.adoptNode(html$.Node._check(fragment));
    return html$.DocumentFragment._check(fragment);
  }
  get [_canBeUsedToCreateContextualFragment]() {
    return !dart.test(this[_cannotBeUsedToCreateContextualFragment]);
  }
  get [_cannotBeUsedToCreateContextualFragment]() {
    return html$.Element._tagsForWhichCreateContextualFragmentIsNotSupported[$contains](this.tagName);
  }
  set [$innerHtml](html) {
    this[$setInnerHtml](html);
  }
  [$setInnerHtml](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    this[$text] = null;
    if (html$._TrustedHtmlTreeSanitizer.is(treeSanitizer)) {
      this[_innerHtml] = html;
    } else {
      this[$append](this[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer}));
    }
  }
  get [$innerHtml]() {
    return this[_innerHtml];
  }
  get [$on]() {
    return new html$.ElementEvents.new(this);
  }
  static _hasCorruptedAttributes(element) {
    return (function(element) {
      if (!(element.attributes instanceof NamedNodeMap)) {
        return true;
      }
      var childNodes = element.childNodes;
      if (element.lastChild && element.lastChild !== childNodes[childNodes.length - 1]) {
        return true;
      }
      if (element.children) {
        if (!(element.children instanceof HTMLCollection || element.children instanceof NodeList)) {
          return true;
        }
      }
      var length = 0;
      if (element.children) {
        length = element.children.length;
      }
      for (var i = 0; i < length; i++) {
        var child = element.children[i];
        if (child.id == 'attributes' || child.name == 'attributes' || child.id == 'lastChild' || child.name == 'lastChild' || child.id == 'children' || child.name == 'children') {
          return true;
        }
      }
      return false;
    })(element);
  }
  static _hasCorruptedAttributesAdditionalCheck(element) {
    return !(element.attributes instanceof NamedNodeMap);
  }
  static _safeTagName(element) {
    let result = "element tag unavailable";
    try {
      if (typeof dart.dload(element, 'tagName') == 'string') {
        result = core.String._check(dart.dload(element, 'tagName'));
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
    return result;
  }
  get [$offsetParent]() {
    return this.offsetParent;
  }
  get [$offsetHeight]() {
    return this.offsetHeight[$round]();
  }
  get [$offsetLeft]() {
    return this.offsetLeft[$round]();
  }
  get [$offsetTop]() {
    return this.offsetTop[$round]();
  }
  get [$offsetWidth]() {
    return this.offsetWidth[$round]();
  }
  get [$scrollHeight]() {
    return this.scrollHeight[$round]();
  }
  get [$scrollLeft]() {
    return this.scrollLeft[$round]();
  }
  set [$scrollLeft](value) {
    this.scrollLeft = value[$round]();
  }
  get [$scrollTop]() {
    return this.scrollTop[$round]();
  }
  set [$scrollTop](value) {
    this.scrollTop = value[$round]();
  }
  get [$scrollWidth]() {
    return this.scrollWidth[$round]();
  }
  get [$contentEditable]() {
    return this.contentEditable;
  }
  set [$contentEditable](value) {
    this.contentEditable = value;
  }
  get [$dir]() {
    return this.dir;
  }
  set [$dir](value) {
    this.dir = value;
  }
  get [$draggable]() {
    return this.draggable;
  }
  set [$draggable](value) {
    this.draggable = value;
  }
  get [$hidden]() {
    return this.hidden;
  }
  set [$hidden](value) {
    this.hidden = value;
  }
  get [$inert]() {
    return this.inert;
  }
  set [$inert](value) {
    this.inert = value;
  }
  get [$inputMode]() {
    return this.inputMode;
  }
  set [$inputMode](value) {
    this.inputMode = value;
  }
  get [$isContentEditable]() {
    return this.isContentEditable;
  }
  get [$lang]() {
    return this.lang;
  }
  set [$lang](value) {
    this.lang = value;
  }
  get [$spellcheck]() {
    return this.spellcheck;
  }
  set [$spellcheck](value) {
    this.spellcheck = value;
  }
  get [$style]() {
    return this.style;
  }
  get [$tabIndex]() {
    return this.tabIndex;
  }
  set [$tabIndex](value) {
    this.tabIndex = value;
  }
  get [$title]() {
    return this.title;
  }
  set [$title](value) {
    this.title = value;
  }
  get [$translate]() {
    return this.translate;
  }
  set [$translate](value) {
    this.translate = value;
  }
  [$blur](...args) {
    return this.blur.apply(this, args);
  }
  [$click](...args) {
    return this.click.apply(this, args);
  }
  [$focus](...args) {
    return this.focus.apply(this, args);
  }
  get [$accessibleNode]() {
    return this.accessibleNode;
  }
  get [$assignedSlot]() {
    return this.assignedSlot;
  }
  get [_attributes$]() {
    return this.attributes;
  }
  get [$className]() {
    return this.className;
  }
  set [$className](value) {
    this.className = value;
  }
  get [$clientHeight]() {
    return this.clientHeight;
  }
  get [$clientLeft]() {
    return this.clientLeft;
  }
  get [$clientTop]() {
    return this.clientTop;
  }
  get [$clientWidth]() {
    return this.clientWidth;
  }
  get [$computedName]() {
    return this.computedName;
  }
  get [$computedRole]() {
    return this.computedRole;
  }
  get [$id]() {
    return this.id;
  }
  set [$id](value) {
    this.id = value;
  }
  get [_innerHtml]() {
    return this.innerHTML;
  }
  set [_innerHtml](value) {
    this.innerHTML = value;
  }
  get [_localName]() {
    return this.localName;
  }
  get [_namespaceUri]() {
    return this.namespaceURI;
  }
  get [$outerHtml]() {
    return this.outerHTML;
  }
  get [_scrollHeight]() {
    return this.scrollHeight;
  }
  get [_scrollLeft]() {
    return this.scrollLeft;
  }
  set [_scrollLeft](value) {
    this.scrollLeft = value;
  }
  get [_scrollTop]() {
    return this.scrollTop;
  }
  set [_scrollTop](value) {
    this.scrollTop = value;
  }
  get [_scrollWidth]() {
    return this.scrollWidth;
  }
  get [$slot]() {
    return this.slot;
  }
  set [$slot](value) {
    this.slot = value;
  }
  get [$styleMap]() {
    return this.styleMap;
  }
  get [$tagName]() {
    return this.tagName;
  }
  [$attachShadow](shadowRootInitDict) {
    let shadowRootInitDict_1 = html_common.convertDartToNative_Dictionary(shadowRootInitDict);
    return this[_attachShadow_1](shadowRootInitDict_1);
  }
  [_attachShadow_1](...args) {
    return this.attachShadow.apply(this, args);
  }
  [$closest](...args) {
    return this.closest.apply(this, args);
  }
  [$getAnimations](...args) {
    return this.getAnimations.apply(this, args);
  }
  [_getAttribute](...args) {
    return this.getAttribute.apply(this, args);
  }
  [_getAttributeNS](...args) {
    return this.getAttributeNS.apply(this, args);
  }
  [$getAttributeNames](...args) {
    return this.getAttributeNames.apply(this, args);
  }
  [$getBoundingClientRect](...args) {
    return this.getBoundingClientRect.apply(this, args);
  }
  [_getClientRects](...args) {
    return this.getClientRects.apply(this, args);
  }
  [$getDestinationInsertionPoints](...args) {
    return this.getDestinationInsertionPoints.apply(this, args);
  }
  [$getElementsByClassName](...args) {
    return this.getElementsByClassName.apply(this, args);
  }
  [_getElementsByTagName](...args) {
    return this.getElementsByTagName.apply(this, args);
  }
  [_hasAttribute](...args) {
    return this.hasAttribute.apply(this, args);
  }
  [_hasAttributeNS](...args) {
    return this.hasAttributeNS.apply(this, args);
  }
  [$hasPointerCapture](...args) {
    return this.hasPointerCapture.apply(this, args);
  }
  [$releasePointerCapture](...args) {
    return this.releasePointerCapture.apply(this, args);
  }
  [_removeAttribute](...args) {
    return this.removeAttribute.apply(this, args);
  }
  [_removeAttributeNS](...args) {
    return this.removeAttributeNS.apply(this, args);
  }
  [$requestPointerLock](...args) {
    return this.requestPointerLock.apply(this, args);
  }
  [$scroll](options_OR_x, y) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (options_OR_x == null && y == null) {
      this[_scroll_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scroll_2](options_1);
      return;
    }
    if (y != null && typeof options_OR_x == 'number') {
      this[_scroll_3](options_OR_x, y);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_scroll_1](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_2](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_3](...args) {
    return this.scroll.apply(this, args);
  }
  [$scrollBy](options_OR_x, y) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (options_OR_x == null && y == null) {
      this[_scrollBy_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scrollBy_2](options_1);
      return;
    }
    if (y != null && typeof options_OR_x == 'number') {
      this[_scrollBy_3](options_OR_x, y);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_scrollBy_1](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_2](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_3](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollIntoView](...args) {
    return this.scrollIntoView.apply(this, args);
  }
  [_scrollIntoViewIfNeeded](...args) {
    return this.scrollIntoViewIfNeeded.apply(this, args);
  }
  [$scrollTo](options_OR_x, y) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (options_OR_x == null && y == null) {
      this[_scrollTo_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scrollTo_2](options_1);
      return;
    }
    if (y != null && typeof options_OR_x == 'number') {
      this[_scrollTo_3](options_OR_x, y);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_scrollTo_1](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_2](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_3](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_setAttribute](...args) {
    return this.setAttribute.apply(this, args);
  }
  [_setAttributeNS](...args) {
    return this.setAttributeNS.apply(this, args);
  }
  [$setPointerCapture](...args) {
    return this.setPointerCapture.apply(this, args);
  }
  [$requestFullscreen](...args) {
    return this.webkitRequestFullscreen.apply(this, args);
  }
  [$after](...args) {
    return this.after.apply(this, args);
  }
  [$before](...args) {
    return this.before.apply(this, args);
  }
  get [$nextElementSibling]() {
    return this.nextElementSibling;
  }
  get [$previousElementSibling]() {
    return this.previousElementSibling;
  }
  get [_childElementCount]() {
    return this.childElementCount;
  }
  get [_children]() {
    return this.children;
  }
  get [_firstElementChild]() {
    return this.firstElementChild;
  }
  get [_lastElementChild]() {
    return this.lastElementChild;
  }
  [$querySelector](...args) {
    return this.querySelector.apply(this, args);
  }
  [_querySelectorAll](...args) {
    return this.querySelectorAll.apply(this, args);
  }
  get [$onAbort]() {
    return html$.Element.abortEvent.forElement(this);
  }
  get [$onBeforeCopy]() {
    return html$.Element.beforeCopyEvent.forElement(this);
  }
  get [$onBeforeCut]() {
    return html$.Element.beforeCutEvent.forElement(this);
  }
  get [$onBeforePaste]() {
    return html$.Element.beforePasteEvent.forElement(this);
  }
  get [$onBlur]() {
    return html$.Element.blurEvent.forElement(this);
  }
  get [$onCanPlay]() {
    return html$.Element.canPlayEvent.forElement(this);
  }
  get [$onCanPlayThrough]() {
    return html$.Element.canPlayThroughEvent.forElement(this);
  }
  get [$onChange]() {
    return html$.Element.changeEvent.forElement(this);
  }
  get [$onClick]() {
    return html$.Element.clickEvent.forElement(this);
  }
  get [$onContextMenu]() {
    return html$.Element.contextMenuEvent.forElement(this);
  }
  get [$onCopy]() {
    return html$.Element.copyEvent.forElement(this);
  }
  get [$onCut]() {
    return html$.Element.cutEvent.forElement(this);
  }
  get [$onDoubleClick]() {
    return html$.Element.doubleClickEvent.forElement(this);
  }
  get [$onDrag]() {
    return html$.Element.dragEvent.forElement(this);
  }
  get [$onDragEnd]() {
    return html$.Element.dragEndEvent.forElement(this);
  }
  get [$onDragEnter]() {
    return html$.Element.dragEnterEvent.forElement(this);
  }
  get [$onDragLeave]() {
    return html$.Element.dragLeaveEvent.forElement(this);
  }
  get [$onDragOver]() {
    return html$.Element.dragOverEvent.forElement(this);
  }
  get [$onDragStart]() {
    return html$.Element.dragStartEvent.forElement(this);
  }
  get [$onDrop]() {
    return html$.Element.dropEvent.forElement(this);
  }
  get [$onDurationChange]() {
    return html$.Element.durationChangeEvent.forElement(this);
  }
  get [$onEmptied]() {
    return html$.Element.emptiedEvent.forElement(this);
  }
  get [$onEnded]() {
    return html$.Element.endedEvent.forElement(this);
  }
  get [$onError]() {
    return html$.Element.errorEvent.forElement(this);
  }
  get [$onFocus]() {
    return html$.Element.focusEvent.forElement(this);
  }
  get [$onInput]() {
    return html$.Element.inputEvent.forElement(this);
  }
  get [$onInvalid]() {
    return html$.Element.invalidEvent.forElement(this);
  }
  get [$onKeyDown]() {
    return html$.Element.keyDownEvent.forElement(this);
  }
  get [$onKeyPress]() {
    return html$.Element.keyPressEvent.forElement(this);
  }
  get [$onKeyUp]() {
    return html$.Element.keyUpEvent.forElement(this);
  }
  get [$onLoad]() {
    return html$.Element.loadEvent.forElement(this);
  }
  get [$onLoadedData]() {
    return html$.Element.loadedDataEvent.forElement(this);
  }
  get [$onLoadedMetadata]() {
    return html$.Element.loadedMetadataEvent.forElement(this);
  }
  get [$onMouseDown]() {
    return html$.Element.mouseDownEvent.forElement(this);
  }
  get [$onMouseEnter]() {
    return html$.Element.mouseEnterEvent.forElement(this);
  }
  get [$onMouseLeave]() {
    return html$.Element.mouseLeaveEvent.forElement(this);
  }
  get [$onMouseMove]() {
    return html$.Element.mouseMoveEvent.forElement(this);
  }
  get [$onMouseOut]() {
    return html$.Element.mouseOutEvent.forElement(this);
  }
  get [$onMouseOver]() {
    return html$.Element.mouseOverEvent.forElement(this);
  }
  get [$onMouseUp]() {
    return html$.Element.mouseUpEvent.forElement(this);
  }
  get [$onMouseWheel]() {
    return html$.Element.mouseWheelEvent.forElement(this);
  }
  get [$onPaste]() {
    return html$.Element.pasteEvent.forElement(this);
  }
  get [$onPause]() {
    return html$.Element.pauseEvent.forElement(this);
  }
  get [$onPlay]() {
    return html$.Element.playEvent.forElement(this);
  }
  get [$onPlaying]() {
    return html$.Element.playingEvent.forElement(this);
  }
  get [$onRateChange]() {
    return html$.Element.rateChangeEvent.forElement(this);
  }
  get [$onReset]() {
    return html$.Element.resetEvent.forElement(this);
  }
  get [$onResize]() {
    return html$.Element.resizeEvent.forElement(this);
  }
  get [$onScroll]() {
    return html$.Element.scrollEvent.forElement(this);
  }
  get [$onSearch]() {
    return html$.Element.searchEvent.forElement(this);
  }
  get [$onSeeked]() {
    return html$.Element.seekedEvent.forElement(this);
  }
  get [$onSeeking]() {
    return html$.Element.seekingEvent.forElement(this);
  }
  get [$onSelect]() {
    return html$.Element.selectEvent.forElement(this);
  }
  get [$onSelectStart]() {
    return html$.Element.selectStartEvent.forElement(this);
  }
  get [$onStalled]() {
    return html$.Element.stalledEvent.forElement(this);
  }
  get [$onSubmit]() {
    return html$.Element.submitEvent.forElement(this);
  }
  get [$onSuspend]() {
    return html$.Element.suspendEvent.forElement(this);
  }
  get [$onTimeUpdate]() {
    return html$.Element.timeUpdateEvent.forElement(this);
  }
  get [$onTouchCancel]() {
    return html$.Element.touchCancelEvent.forElement(this);
  }
  get [$onTouchEnd]() {
    return html$.Element.touchEndEvent.forElement(this);
  }
  get [$onTouchEnter]() {
    return html$.Element.touchEnterEvent.forElement(this);
  }
  get [$onTouchLeave]() {
    return html$.Element.touchLeaveEvent.forElement(this);
  }
  get [$onTouchMove]() {
    return html$.Element.touchMoveEvent.forElement(this);
  }
  get [$onTouchStart]() {
    return html$.Element.touchStartEvent.forElement(this);
  }
  get [$onTransitionEnd]() {
    return html$.Element.transitionEndEvent.forElement(this);
  }
  get [$onVolumeChange]() {
    return html$.Element.volumeChangeEvent.forElement(this);
  }
  get [$onWaiting]() {
    return html$.Element.waitingEvent.forElement(this);
  }
  get [$onFullscreenChange]() {
    return html$.Element.fullscreenChangeEvent.forElement(this);
  }
  get [$onFullscreenError]() {
    return html$.Element.fullscreenErrorEvent.forElement(this);
  }
  get [$onWheel]() {
    return html$.Element.wheelEvent.forElement(this);
  }
};
(html$.Element.created = function() {
  this[offsetParent] = null;
  this[contentEditable] = null;
  this[dir] = null;
  this[draggable] = null;
  this[hidden] = null;
  this[inert] = null;
  this[inputMode] = null;
  this[lang] = null;
  this[spellcheck] = null;
  this[style] = null;
  this[tabIndex] = null;
  this[title] = null;
  this[translate] = null;
  this[accessibleNode] = null;
  this[assignedSlot] = null;
  this[_attributes$] = null;
  this[className] = null;
  this[clientHeight] = null;
  this[clientLeft] = null;
  this[clientTop] = null;
  this[clientWidth] = null;
  this[computedName] = null;
  this[computedRole] = null;
  this[id] = null;
  this[_innerHtml] = null;
  this[_localName] = null;
  this[_namespaceUri] = null;
  this[_scrollHeight] = null;
  this[_scrollLeft] = null;
  this[_scrollTop] = null;
  this[_scrollWidth] = null;
  this[slot] = null;
  this[styleMap] = null;
  this[tagName] = null;
  this[nextElementSibling] = null;
  this[previousElementSibling] = null;
  this[_childElementCount] = null;
  this[_children] = null;
  this[_firstElementChild] = null;
  this[_lastElementChild] = null;
  html$.Element.__proto__._created.call(this);
}).prototype = html$.Element.prototype;
dart.addTypeTests(html$.Element);
const offsetParent = Symbol("Element.offsetParent");
const contentEditable = Symbol("Element.contentEditable");
const dir = Symbol("Element.dir");
const draggable = Symbol("Element.draggable");
const hidden = Symbol("Element.hidden");
const inert = Symbol("Element.inert");
const inputMode = Symbol("Element.inputMode");
const lang = Symbol("Element.lang");
const spellcheck = Symbol("Element.spellcheck");
const style = Symbol("Element.style");
const tabIndex = Symbol("Element.tabIndex");
const title = Symbol("Element.title");
const translate = Symbol("Element.translate");
const accessibleNode = Symbol("Element.accessibleNode");
const assignedSlot = Symbol("Element.assignedSlot");
const className = Symbol("Element.className");
const clientHeight = Symbol("Element.clientHeight");
const clientLeft = Symbol("Element.clientLeft");
const clientTop = Symbol("Element.clientTop");
const clientWidth = Symbol("Element.clientWidth");
const computedName = Symbol("Element.computedName");
const computedRole = Symbol("Element.computedRole");
const id = Symbol("Element.id");
const slot = Symbol("Element.slot");
const styleMap = Symbol("Element.styleMap");
const tagName = Symbol("Element.tagName");
const nextElementSibling = Symbol("Element.nextElementSibling");
const previousElementSibling = Symbol("Element.previousElementSibling");
html$.Element[dart.implements] = () => [html$.NonDocumentTypeChildNode, html$.GlobalEventHandlers, html$.ParentNode, html$.ChildNode];
dart.setMethodSignature(html$.Element, () => ({
  __proto__: dart.getMethods(html$.Element.__proto__),
  [$getAttribute]: dart.fnType(core.String, [core.String]),
  [$getAttributeNS]: dart.fnType(core.String, [core.String, core.String]),
  [$hasAttribute]: dart.fnType(core.bool, [core.String]),
  [$hasAttributeNS]: dart.fnType(core.bool, [core.String, core.String]),
  [$removeAttribute]: dart.fnType(dart.void, [core.String]),
  [$removeAttributeNS]: dart.fnType(dart.void, [core.String, core.String]),
  [$setAttribute]: dart.fnType(dart.void, [core.String, core.String]),
  [$setAttributeNS]: dart.fnType(dart.void, [core.String, core.String, core.String]),
  [$querySelectorAll]: dart.gFnType(T => [html$.ElementList$(T), [core.String]], T => [html$.Element]),
  [_setApplyScroll]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.ScrollState]), core.String]),
  [$setApplyScroll]: dart.fnType(async.Future$(html$.ScrollState), [core.String]),
  [_setDistributeScroll]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.ScrollState]), core.String]),
  [$setDistributeScroll]: dart.fnType(async.Future$(html$.ScrollState), [core.String]),
  [$getNamespacedAttributes]: dart.fnType(core.Map$(core.String, core.String), [core.String]),
  [$getComputedStyle]: dart.fnType(html$.CssStyleDeclaration, [], [core.String]),
  [$appendText]: dart.fnType(dart.void, [core.String]),
  [$appendHtml]: dart.fnType(dart.void, [core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
  [$attached]: dart.fnType(dart.void, []),
  [$detached]: dart.fnType(dart.void, []),
  [$enteredView]: dart.fnType(dart.void, []),
  [$getClientRects]: dart.fnType(core.List$(math.Rectangle$(core.num)), []),
  [$leftView]: dart.fnType(dart.void, []),
  [$animate]: dart.fnType(html$.Animation, [core.Iterable$(core.Map$(core.String, dart.dynamic))], [dart.dynamic]),
  [_animate]: dart.fnType(html$.Animation, [core.Object], [dart.dynamic]),
  [$attributeChanged]: dart.fnType(dart.void, [core.String, core.String, core.String]),
  [$scrollIntoView]: dart.fnType(dart.void, [], [html$.ScrollAlignment]),
  [$insertAdjacentText]: dart.fnType(dart.void, [core.String, core.String]),
  [_insertAdjacentText]: dart.fnType(dart.void, [core.String, core.String]),
  [$insertAdjacentHtml]: dart.fnType(dart.void, [core.String, core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
  [_insertAdjacentHtml]: dart.fnType(dart.void, [core.String, core.String]),
  [$insertAdjacentElement]: dart.fnType(html$.Element, [core.String, html$.Element]),
  [_insertAdjacentElement]: dart.fnType(dart.void, [core.String, html$.Element]),
  [_insertAdjacentNode]: dart.fnType(dart.void, [core.String, html$.Node]),
  [$matches]: dart.fnType(core.bool, [core.String]),
  [$matchesWithAncestors]: dart.fnType(core.bool, [core.String]),
  [$createShadowRoot]: dart.fnType(html$.ShadowRoot, []),
  [$offsetTo]: dart.fnType(math.Point$(core.num), [html$.Element]),
  [$createFragment]: dart.fnType(html$.DocumentFragment, [core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
  [$setInnerHtml]: dart.fnType(dart.void, [core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
  [$blur]: dart.fnType(dart.void, []),
  [$click]: dart.fnType(dart.void, []),
  [$focus]: dart.fnType(dart.void, []),
  [$attachShadow]: dart.fnType(html$.ShadowRoot, [core.Map]),
  [_attachShadow_1]: dart.fnType(html$.ShadowRoot, [dart.dynamic]),
  [$closest]: dart.fnType(html$.Element, [core.String]),
  [$getAnimations]: dart.fnType(core.List$(html$.Animation), []),
  [_getAttribute]: dart.fnType(core.String, [core.String]),
  [_getAttributeNS]: dart.fnType(core.String, [core.String, core.String]),
  [$getAttributeNames]: dart.fnType(core.List$(core.String), []),
  [$getBoundingClientRect]: dart.fnType(math.Rectangle$(core.num), []),
  [_getClientRects]: dart.fnType(core.List$(math.Rectangle$(core.num)), []),
  [$getDestinationInsertionPoints]: dart.fnType(core.List$(html$.Node), []),
  [$getElementsByClassName]: dart.fnType(core.List$(html$.Node), [core.String]),
  [_getElementsByTagName]: dart.fnType(core.List$(html$.Node), [core.String]),
  [_hasAttribute]: dart.fnType(core.bool, [core.String]),
  [_hasAttributeNS]: dart.fnType(core.bool, [core.String, core.String]),
  [$hasPointerCapture]: dart.fnType(core.bool, [core.int]),
  [$releasePointerCapture]: dart.fnType(dart.void, [core.int]),
  [_removeAttribute]: dart.fnType(dart.void, [core.String]),
  [_removeAttributeNS]: dart.fnType(dart.void, [core.String, core.String]),
  [$requestPointerLock]: dart.fnType(dart.void, []),
  [$scroll]: dart.fnType(dart.void, [], [dart.dynamic, core.num]),
  [_scroll_1]: dart.fnType(dart.void, []),
  [_scroll_2]: dart.fnType(dart.void, [dart.dynamic]),
  [_scroll_3]: dart.fnType(dart.void, [core.num, dart.dynamic]),
  [$scrollBy]: dart.fnType(dart.void, [], [dart.dynamic, core.num]),
  [_scrollBy_1]: dart.fnType(dart.void, []),
  [_scrollBy_2]: dart.fnType(dart.void, [dart.dynamic]),
  [_scrollBy_3]: dart.fnType(dart.void, [core.num, dart.dynamic]),
  [_scrollIntoView]: dart.fnType(dart.void, [], [core.Object]),
  [_scrollIntoViewIfNeeded]: dart.fnType(dart.void, [], [core.bool]),
  [$scrollTo]: dart.fnType(dart.void, [], [dart.dynamic, core.num]),
  [_scrollTo_1]: dart.fnType(dart.void, []),
  [_scrollTo_2]: dart.fnType(dart.void, [dart.dynamic]),
  [_scrollTo_3]: dart.fnType(dart.void, [core.num, dart.dynamic]),
  [_setAttribute]: dart.fnType(dart.void, [core.String, core.String]),
  [_setAttributeNS]: dart.fnType(dart.void, [core.String, core.String, core.String]),
  [$setPointerCapture]: dart.fnType(dart.void, [core.int]),
  [$requestFullscreen]: dart.fnType(dart.void, []),
  [$after]: dart.fnType(dart.void, [core.Object]),
  [$before]: dart.fnType(dart.void, [core.Object]),
  [$querySelector]: dart.fnType(html$.Element, [core.String]),
  [_querySelectorAll]: dart.fnType(core.List$(html$.Node), [core.String])
}));
dart.setGetterSignature(html$.Element, () => ({
  __proto__: dart.getGetters(html$.Element.__proto__),
  [$attributes]: core.Map$(core.String, core.String),
  [$children]: core.List$(html$.Element),
  [$classes]: html$.CssClassSet,
  [$dataset]: core.Map$(core.String, core.String),
  [$client]: math.Rectangle$(core.num),
  [$offset]: math.Rectangle$(core.num),
  [$localName]: core.String,
  [$namespaceUri]: core.String,
  [$shadowRoot]: html$.ShadowRoot,
  [$contentEdge]: html$.CssRect,
  [$paddingEdge]: html$.CssRect,
  [$borderEdge]: html$.CssRect,
  [$marginEdge]: html$.CssRect,
  [$documentOffset]: math.Point$(core.num),
  [_canBeUsedToCreateContextualFragment]: core.bool,
  [_cannotBeUsedToCreateContextualFragment]: core.bool,
  [$innerHtml]: core.String,
  [$on]: html$.ElementEvents,
  [$offsetHeight]: core.int,
  [$offsetLeft]: core.int,
  [$offsetTop]: core.int,
  [$offsetWidth]: core.int,
  [$scrollHeight]: core.int,
  [$scrollLeft]: core.int,
  [$scrollTop]: core.int,
  [$scrollWidth]: core.int,
  [$isContentEditable]: core.bool,
  [$outerHtml]: core.String,
  [$onAbort]: html$.ElementStream$(html$.Event),
  [$onBeforeCopy]: html$.ElementStream$(html$.Event),
  [$onBeforeCut]: html$.ElementStream$(html$.Event),
  [$onBeforePaste]: html$.ElementStream$(html$.Event),
  [$onBlur]: html$.ElementStream$(html$.Event),
  [$onCanPlay]: html$.ElementStream$(html$.Event),
  [$onCanPlayThrough]: html$.ElementStream$(html$.Event),
  [$onChange]: html$.ElementStream$(html$.Event),
  [$onClick]: html$.ElementStream$(html$.MouseEvent),
  [$onContextMenu]: html$.ElementStream$(html$.MouseEvent),
  [$onCopy]: html$.ElementStream$(html$.ClipboardEvent),
  [$onCut]: html$.ElementStream$(html$.ClipboardEvent),
  [$onDoubleClick]: html$.ElementStream$(html$.Event),
  [$onDrag]: html$.ElementStream$(html$.MouseEvent),
  [$onDragEnd]: html$.ElementStream$(html$.MouseEvent),
  [$onDragEnter]: html$.ElementStream$(html$.MouseEvent),
  [$onDragLeave]: html$.ElementStream$(html$.MouseEvent),
  [$onDragOver]: html$.ElementStream$(html$.MouseEvent),
  [$onDragStart]: html$.ElementStream$(html$.MouseEvent),
  [$onDrop]: html$.ElementStream$(html$.MouseEvent),
  [$onDurationChange]: html$.ElementStream$(html$.Event),
  [$onEmptied]: html$.ElementStream$(html$.Event),
  [$onEnded]: html$.ElementStream$(html$.Event),
  [$onError]: html$.ElementStream$(html$.Event),
  [$onFocus]: html$.ElementStream$(html$.Event),
  [$onInput]: html$.ElementStream$(html$.Event),
  [$onInvalid]: html$.ElementStream$(html$.Event),
  [$onKeyDown]: html$.ElementStream$(html$.KeyboardEvent),
  [$onKeyPress]: html$.ElementStream$(html$.KeyboardEvent),
  [$onKeyUp]: html$.ElementStream$(html$.KeyboardEvent),
  [$onLoad]: html$.ElementStream$(html$.Event),
  [$onLoadedData]: html$.ElementStream$(html$.Event),
  [$onLoadedMetadata]: html$.ElementStream$(html$.Event),
  [$onMouseDown]: html$.ElementStream$(html$.MouseEvent),
  [$onMouseEnter]: html$.ElementStream$(html$.MouseEvent),
  [$onMouseLeave]: html$.ElementStream$(html$.MouseEvent),
  [$onMouseMove]: html$.ElementStream$(html$.MouseEvent),
  [$onMouseOut]: html$.ElementStream$(html$.MouseEvent),
  [$onMouseOver]: html$.ElementStream$(html$.MouseEvent),
  [$onMouseUp]: html$.ElementStream$(html$.MouseEvent),
  [$onMouseWheel]: html$.ElementStream$(html$.WheelEvent),
  [$onPaste]: html$.ElementStream$(html$.ClipboardEvent),
  [$onPause]: html$.ElementStream$(html$.Event),
  [$onPlay]: html$.ElementStream$(html$.Event),
  [$onPlaying]: html$.ElementStream$(html$.Event),
  [$onRateChange]: html$.ElementStream$(html$.Event),
  [$onReset]: html$.ElementStream$(html$.Event),
  [$onResize]: html$.ElementStream$(html$.Event),
  [$onScroll]: html$.ElementStream$(html$.Event),
  [$onSearch]: html$.ElementStream$(html$.Event),
  [$onSeeked]: html$.ElementStream$(html$.Event),
  [$onSeeking]: html$.ElementStream$(html$.Event),
  [$onSelect]: html$.ElementStream$(html$.Event),
  [$onSelectStart]: html$.ElementStream$(html$.Event),
  [$onStalled]: html$.ElementStream$(html$.Event),
  [$onSubmit]: html$.ElementStream$(html$.Event),
  [$onSuspend]: html$.ElementStream$(html$.Event),
  [$onTimeUpdate]: html$.ElementStream$(html$.Event),
  [$onTouchCancel]: html$.ElementStream$(html$.TouchEvent),
  [$onTouchEnd]: html$.ElementStream$(html$.TouchEvent),
  [$onTouchEnter]: html$.ElementStream$(html$.TouchEvent),
  [$onTouchLeave]: html$.ElementStream$(html$.TouchEvent),
  [$onTouchMove]: html$.ElementStream$(html$.TouchEvent),
  [$onTouchStart]: html$.ElementStream$(html$.TouchEvent),
  [$onTransitionEnd]: html$.ElementStream$(html$.TransitionEvent),
  [$onVolumeChange]: html$.ElementStream$(html$.Event),
  [$onWaiting]: html$.ElementStream$(html$.Event),
  [$onFullscreenChange]: html$.ElementStream$(html$.Event),
  [$onFullscreenError]: html$.ElementStream$(html$.Event),
  [$onWheel]: html$.ElementStream$(html$.WheelEvent)
}));
dart.setSetterSignature(html$.Element, () => ({
  __proto__: dart.getSetters(html$.Element.__proto__),
  [$attributes]: core.Map$(core.String, core.String),
  [$children]: core.List$(html$.Element),
  [$classes]: core.Iterable$(core.String),
  [$dataset]: core.Map$(core.String, core.String),
  [$innerHtml]: core.String,
  [$scrollLeft]: core.int,
  [$scrollTop]: core.int
}));
dart.setFieldSignature(html$.Element, () => ({
  __proto__: dart.getFields(html$.Element.__proto__),
  [$offsetParent]: dart.finalFieldType(html$.Element),
  [$contentEditable]: dart.fieldType(core.String),
  [$dir]: dart.fieldType(core.String),
  [$draggable]: dart.fieldType(core.bool),
  [$hidden]: dart.fieldType(core.bool),
  [$inert]: dart.fieldType(core.bool),
  [$inputMode]: dart.fieldType(core.String),
  [$lang]: dart.fieldType(core.String),
  [$spellcheck]: dart.fieldType(core.bool),
  [$style]: dart.finalFieldType(html$.CssStyleDeclaration),
  [$tabIndex]: dart.fieldType(core.int),
  [$title]: dart.fieldType(core.String),
  [$translate]: dart.fieldType(core.bool),
  [$accessibleNode]: dart.finalFieldType(html$.AccessibleNode),
  [$assignedSlot]: dart.finalFieldType(html$.SlotElement),
  [_attributes$]: dart.finalFieldType(html$._NamedNodeMap),
  [$className]: dart.fieldType(core.String),
  [$clientHeight]: dart.finalFieldType(core.int),
  [$clientLeft]: dart.finalFieldType(core.int),
  [$clientTop]: dart.finalFieldType(core.int),
  [$clientWidth]: dart.finalFieldType(core.int),
  [$computedName]: dart.finalFieldType(core.String),
  [$computedRole]: dart.finalFieldType(core.String),
  [$id]: dart.fieldType(core.String),
  [_innerHtml]: dart.fieldType(core.String),
  [_localName]: dart.finalFieldType(core.String),
  [_namespaceUri]: dart.finalFieldType(core.String),
  [_scrollHeight]: dart.finalFieldType(core.int),
  [_scrollLeft]: dart.fieldType(core.num),
  [_scrollTop]: dart.fieldType(core.num),
  [_scrollWidth]: dart.finalFieldType(core.int),
  [$slot]: dart.fieldType(core.String),
  [$styleMap]: dart.finalFieldType(html$.StylePropertyMap),
  [$tagName]: dart.finalFieldType(core.String),
  [$nextElementSibling]: dart.finalFieldType(html$.Element),
  [$previousElementSibling]: dart.finalFieldType(html$.Element),
  [_childElementCount]: dart.finalFieldType(core.int),
  [_children]: dart.finalFieldType(ListOfNode()),
  [_firstElementChild]: dart.finalFieldType(html$.Element),
  [_lastElementChild]: dart.finalFieldType(html$.Element)
}));
dart.defineLazy(html$.Element, {
  /*html$.Element.mouseWheelEvent*/get mouseWheelEvent() {
    return dart.const(new (_CustomEventStreamProviderOfWheelEvent()).new(dart.fn(html$.Element._determineMouseWheelEventType, EventTargetToString())));
  },
  /*html$.Element.transitionEndEvent*/get transitionEndEvent() {
    return dart.const(new (_CustomEventStreamProviderOfTransitionEvent()).new(dart.fn(html$.Element._determineTransitionEventType, EventTargetToString())));
  },
  /*html$.Element._parseDocument*/get _parseDocument() {
    return null;
  },
  set _parseDocument(_) {},
  /*html$.Element._parseRange*/get _parseRange() {
    return null;
  },
  set _parseRange(_) {},
  /*html$.Element._defaultValidator*/get _defaultValidator() {
    return null;
  },
  set _defaultValidator(_) {},
  /*html$.Element._defaultSanitizer*/get _defaultSanitizer() {
    return null;
  },
  set _defaultSanitizer(_) {},
  /*html$.Element._tagsForWhichCreateContextualFragmentIsNotSupported*/get _tagsForWhichCreateContextualFragmentIsNotSupported() {
    return dart.constList(["HEAD", "AREA", "BASE", "BASEFONT", "BR", "COL", "COLGROUP", "EMBED", "FRAME", "FRAMESET", "HR", "IMAGE", "IMG", "INPUT", "ISINDEX", "LINK", "META", "PARAM", "SOURCE", "STYLE", "TITLE", "WBR"], core.String);
  },
  /*html$.Element.abortEvent*/get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
  },
  /*html$.Element.beforeCopyEvent*/get beforeCopyEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("beforecopy"));
  },
  /*html$.Element.beforeCutEvent*/get beforeCutEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("beforecut"));
  },
  /*html$.Element.beforePasteEvent*/get beforePasteEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("beforepaste"));
  },
  /*html$.Element.blurEvent*/get blurEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("blur"));
  },
  /*html$.Element.canPlayEvent*/get canPlayEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("canplay"));
  },
  /*html$.Element.canPlayThroughEvent*/get canPlayThroughEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("canplaythrough"));
  },
  /*html$.Element.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  },
  /*html$.Element.clickEvent*/get clickEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("click"));
  },
  /*html$.Element.contextMenuEvent*/get contextMenuEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("contextmenu"));
  },
  /*html$.Element.copyEvent*/get copyEvent() {
    return dart.const(new (EventStreamProviderOfClipboardEvent()).new("copy"));
  },
  /*html$.Element.cutEvent*/get cutEvent() {
    return dart.const(new (EventStreamProviderOfClipboardEvent()).new("cut"));
  },
  /*html$.Element.doubleClickEvent*/get doubleClickEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("dblclick"));
  },
  /*html$.Element.dragEvent*/get dragEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("drag"));
  },
  /*html$.Element.dragEndEvent*/get dragEndEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragend"));
  },
  /*html$.Element.dragEnterEvent*/get dragEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragenter"));
  },
  /*html$.Element.dragLeaveEvent*/get dragLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragleave"));
  },
  /*html$.Element.dragOverEvent*/get dragOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragover"));
  },
  /*html$.Element.dragStartEvent*/get dragStartEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragstart"));
  },
  /*html$.Element.dropEvent*/get dropEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("drop"));
  },
  /*html$.Element.durationChangeEvent*/get durationChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("durationchange"));
  },
  /*html$.Element.emptiedEvent*/get emptiedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("emptied"));
  },
  /*html$.Element.endedEvent*/get endedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("ended"));
  },
  /*html$.Element.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.Element.focusEvent*/get focusEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("focus"));
  },
  /*html$.Element.inputEvent*/get inputEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("input"));
  },
  /*html$.Element.invalidEvent*/get invalidEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("invalid"));
  },
  /*html$.Element.keyDownEvent*/get keyDownEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keydown"));
  },
  /*html$.Element.keyPressEvent*/get keyPressEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keypress"));
  },
  /*html$.Element.keyUpEvent*/get keyUpEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keyup"));
  },
  /*html$.Element.loadEvent*/get loadEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("load"));
  },
  /*html$.Element.loadedDataEvent*/get loadedDataEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("loadeddata"));
  },
  /*html$.Element.loadedMetadataEvent*/get loadedMetadataEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("loadedmetadata"));
  },
  /*html$.Element.mouseDownEvent*/get mouseDownEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousedown"));
  },
  /*html$.Element.mouseEnterEvent*/get mouseEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseenter"));
  },
  /*html$.Element.mouseLeaveEvent*/get mouseLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseleave"));
  },
  /*html$.Element.mouseMoveEvent*/get mouseMoveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousemove"));
  },
  /*html$.Element.mouseOutEvent*/get mouseOutEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseout"));
  },
  /*html$.Element.mouseOverEvent*/get mouseOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseover"));
  },
  /*html$.Element.mouseUpEvent*/get mouseUpEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseup"));
  },
  /*html$.Element.pasteEvent*/get pasteEvent() {
    return dart.const(new (EventStreamProviderOfClipboardEvent()).new("paste"));
  },
  /*html$.Element.pauseEvent*/get pauseEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("pause"));
  },
  /*html$.Element.playEvent*/get playEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("play"));
  },
  /*html$.Element.playingEvent*/get playingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("playing"));
  },
  /*html$.Element.rateChangeEvent*/get rateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("ratechange"));
  },
  /*html$.Element.resetEvent*/get resetEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("reset"));
  },
  /*html$.Element.resizeEvent*/get resizeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("resize"));
  },
  /*html$.Element.scrollEvent*/get scrollEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("scroll"));
  },
  /*html$.Element.searchEvent*/get searchEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("search"));
  },
  /*html$.Element.seekedEvent*/get seekedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("seeked"));
  },
  /*html$.Element.seekingEvent*/get seekingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("seeking"));
  },
  /*html$.Element.selectEvent*/get selectEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("select"));
  },
  /*html$.Element.selectStartEvent*/get selectStartEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("selectstart"));
  },
  /*html$.Element.stalledEvent*/get stalledEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("stalled"));
  },
  /*html$.Element.submitEvent*/get submitEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("submit"));
  },
  /*html$.Element.suspendEvent*/get suspendEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("suspend"));
  },
  /*html$.Element.timeUpdateEvent*/get timeUpdateEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("timeupdate"));
  },
  /*html$.Element.touchCancelEvent*/get touchCancelEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchcancel"));
  },
  /*html$.Element.touchEndEvent*/get touchEndEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchend"));
  },
  /*html$.Element.touchEnterEvent*/get touchEnterEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchenter"));
  },
  /*html$.Element.touchLeaveEvent*/get touchLeaveEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchleave"));
  },
  /*html$.Element.touchMoveEvent*/get touchMoveEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchmove"));
  },
  /*html$.Element.touchStartEvent*/get touchStartEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchstart"));
  },
  /*html$.Element.volumeChangeEvent*/get volumeChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("volumechange"));
  },
  /*html$.Element.waitingEvent*/get waitingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("waiting"));
  },
  /*html$.Element.fullscreenChangeEvent*/get fullscreenChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("webkitfullscreenchange"));
  },
  /*html$.Element.fullscreenErrorEvent*/get fullscreenErrorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("webkitfullscreenerror"));
  },
  /*html$.Element.wheelEvent*/get wheelEvent() {
    return dart.const(new (EventStreamProviderOfWheelEvent()).new("wheel"));
  }
});
dart.registerExtension("Element", html$.Element);
html$.HtmlElement = class HtmlElement extends html$.Element {
  static new() {
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  get [$nonce]() {
    return this.nonce;
  }
  set [$nonce](value) {
    this.nonce = value;
  }
};
(html$.HtmlElement.created = function() {
  this[nonce] = null;
  html$.HtmlElement.__proto__.created.call(this);
}).prototype = html$.HtmlElement.prototype;
dart.addTypeTests(html$.HtmlElement);
const nonce = Symbol("HtmlElement.nonce");
html$.HtmlElement[dart.implements] = () => [html$.NoncedElement];
dart.setFieldSignature(html$.HtmlElement, () => ({
  __proto__: dart.getFields(html$.HtmlElement.__proto__),
  [$nonce]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLElement", html$.HtmlElement);
dart.copyProperties(html$, {
  get _workerSelf() {
    return self;
  }
});
html$.ExtendableEvent = class ExtendableEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.ExtendableEvent._create_1(type, eventInitDict_1);
    }
    return html$.ExtendableEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ExtendableEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ExtendableEvent(type);
  }
  [$waitUntil](...args) {
    return this.waitUntil.apply(this, args);
  }
};
dart.addTypeTests(html$.ExtendableEvent);
dart.setMethodSignature(html$.ExtendableEvent, () => ({
  __proto__: dart.getMethods(html$.ExtendableEvent.__proto__),
  [$waitUntil]: dart.fnType(dart.void, [async.Future])
}));
dart.registerExtension("ExtendableEvent", html$.ExtendableEvent);
html$.AbortPaymentEvent = class AbortPaymentEvent$ extends html$.ExtendableEvent {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.AbortPaymentEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new AbortPaymentEvent(type, eventInitDict);
  }
  [$respondWith](...args) {
    return this.respondWith.apply(this, args);
  }
};
dart.addTypeTests(html$.AbortPaymentEvent);
dart.setMethodSignature(html$.AbortPaymentEvent, () => ({
  __proto__: dart.getMethods(html$.AbortPaymentEvent.__proto__),
  [$respondWith]: dart.fnType(dart.void, [async.Future])
}));
dart.registerExtension("AbortPaymentEvent", html$.AbortPaymentEvent);
html$.Sensor = class Sensor extends html$.EventTarget {
  get [$activated]() {
    return this.activated;
  }
  get [$hasReading]() {
    return this.hasReading;
  }
  get [$timestamp]() {
    return this.timestamp;
  }
  [$start](...args) {
    return this.start.apply(this, args);
  }
  [$stop](...args) {
    return this.stop.apply(this, args);
  }
  get [$onError]() {
    return html$.Sensor.errorEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.Sensor);
const activated = Symbol("Sensor.activated");
const hasReading = Symbol("Sensor.hasReading");
const timestamp = Symbol("Sensor.timestamp");
dart.setMethodSignature(html$.Sensor, () => ({
  __proto__: dart.getMethods(html$.Sensor.__proto__),
  [$start]: dart.fnType(dart.void, []),
  [$stop]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.Sensor, () => ({
  __proto__: dart.getGetters(html$.Sensor.__proto__),
  [$onError]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.Sensor, () => ({
  __proto__: dart.getFields(html$.Sensor.__proto__),
  [$activated]: dart.finalFieldType(core.bool),
  [$hasReading]: dart.finalFieldType(core.bool),
  [$timestamp]: dart.finalFieldType(core.num)
}));
dart.defineLazy(html$.Sensor, {
  /*html$.Sensor.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  }
});
dart.registerExtension("Sensor", html$.Sensor);
html$.OrientationSensor = class OrientationSensor extends html$.Sensor {
  get [$quaternion]() {
    return this.quaternion;
  }
  [$populateMatrix](...args) {
    return this.populateMatrix.apply(this, args);
  }
};
dart.addTypeTests(html$.OrientationSensor);
const quaternion = Symbol("OrientationSensor.quaternion");
dart.setMethodSignature(html$.OrientationSensor, () => ({
  __proto__: dart.getMethods(html$.OrientationSensor.__proto__),
  [$populateMatrix]: dart.fnType(dart.void, [core.Object])
}));
dart.setFieldSignature(html$.OrientationSensor, () => ({
  __proto__: dart.getFields(html$.OrientationSensor.__proto__),
  [$quaternion]: dart.finalFieldType(ListOfnum())
}));
dart.registerExtension("OrientationSensor", html$.OrientationSensor);
html$.AbsoluteOrientationSensor = class AbsoluteOrientationSensor$ extends html$.OrientationSensor {
  static new(sensorOptions) {
    if (sensorOptions === void 0) sensorOptions = null;
    if (sensorOptions != null) {
      let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
      return html$.AbsoluteOrientationSensor._create_1(sensorOptions_1);
    }
    return html$.AbsoluteOrientationSensor._create_2();
  }
  static _create_1(sensorOptions) {
    return new AbsoluteOrientationSensor(sensorOptions);
  }
  static _create_2() {
    return new AbsoluteOrientationSensor();
  }
};
dart.addTypeTests(html$.AbsoluteOrientationSensor);
dart.registerExtension("AbsoluteOrientationSensor", html$.AbsoluteOrientationSensor);
html$.AbstractWorker = class AbstractWorker extends _interceptors.Interceptor {
  get onError() {
    return html$.AbstractWorker.errorEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.AbstractWorker);
html$.AbstractWorker[dart.implements] = () => [html$.EventTarget];
dart.setGetterSignature(html$.AbstractWorker, () => ({
  __proto__: dart.getGetters(html$.AbstractWorker.__proto__),
  onError: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.Event)
}));
dart.defineExtensionAccessors(html$.AbstractWorker, ['onError']);
dart.defineLazy(html$.AbstractWorker, {
  /*html$.AbstractWorker.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  }
});
html$.Accelerometer = class Accelerometer$ extends html$.Sensor {
  static new(sensorOptions) {
    if (sensorOptions === void 0) sensorOptions = null;
    if (sensorOptions != null) {
      let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
      return html$.Accelerometer._create_1(sensorOptions_1);
    }
    return html$.Accelerometer._create_2();
  }
  static _create_1(sensorOptions) {
    return new Accelerometer(sensorOptions);
  }
  static _create_2() {
    return new Accelerometer();
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$z]() {
    return this.z;
  }
};
dart.addTypeTests(html$.Accelerometer);
const x = Symbol("Accelerometer.x");
const y = Symbol("Accelerometer.y");
const z = Symbol("Accelerometer.z");
dart.setFieldSignature(html$.Accelerometer, () => ({
  __proto__: dart.getFields(html$.Accelerometer.__proto__),
  [$x]: dart.finalFieldType(core.num),
  [$y]: dart.finalFieldType(core.num),
  [$z]: dart.finalFieldType(core.num)
}));
dart.registerExtension("Accelerometer", html$.Accelerometer);
html$.AccessibleNode = class AccessibleNode$ extends html$.EventTarget {
  static new() {
    return html$.AccessibleNode._create_1();
  }
  static _create_1() {
    return new AccessibleNode();
  }
  get [$activeDescendant]() {
    return this.activeDescendant;
  }
  set [$activeDescendant](value) {
    this.activeDescendant = value;
  }
  get [$atomic]() {
    return this.atomic;
  }
  set [$atomic](value) {
    this.atomic = value;
  }
  get [$autocomplete]() {
    return this.autocomplete;
  }
  set [$autocomplete](value) {
    this.autocomplete = value;
  }
  get [$busy]() {
    return this.busy;
  }
  set [$busy](value) {
    this.busy = value;
  }
  get [$checked]() {
    return this.checked;
  }
  set [$checked](value) {
    this.checked = value;
  }
  get [$colCount]() {
    return this.colCount;
  }
  set [$colCount](value) {
    this.colCount = value;
  }
  get [$colIndex]() {
    return this.colIndex;
  }
  set [$colIndex](value) {
    this.colIndex = value;
  }
  get [$colSpan]() {
    return this.colSpan;
  }
  set [$colSpan](value) {
    this.colSpan = value;
  }
  get [$controls]() {
    return this.controls;
  }
  set [$controls](value) {
    this.controls = value;
  }
  get [$current]() {
    return this.current;
  }
  set [$current](value) {
    this.current = value;
  }
  get [$describedBy]() {
    return this.describedBy;
  }
  set [$describedBy](value) {
    this.describedBy = value;
  }
  get [$details]() {
    return this.details;
  }
  set [$details](value) {
    this.details = value;
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$errorMessage]() {
    return this.errorMessage;
  }
  set [$errorMessage](value) {
    this.errorMessage = value;
  }
  get [$expanded]() {
    return this.expanded;
  }
  set [$expanded](value) {
    this.expanded = value;
  }
  get [$flowTo]() {
    return this.flowTo;
  }
  set [$flowTo](value) {
    this.flowTo = value;
  }
  get [$hasPopUp]() {
    return this.hasPopUp;
  }
  set [$hasPopUp](value) {
    this.hasPopUp = value;
  }
  get [$hidden]() {
    return this.hidden;
  }
  set [$hidden](value) {
    this.hidden = value;
  }
  get [$invalid]() {
    return this.invalid;
  }
  set [$invalid](value) {
    this.invalid = value;
  }
  get [$keyShortcuts]() {
    return this.keyShortcuts;
  }
  set [$keyShortcuts](value) {
    this.keyShortcuts = value;
  }
  get [$label]() {
    return this.label;
  }
  set [$label](value) {
    this.label = value;
  }
  get [$labeledBy]() {
    return this.labeledBy;
  }
  set [$labeledBy](value) {
    this.labeledBy = value;
  }
  get [$level]() {
    return this.level;
  }
  set [$level](value) {
    this.level = value;
  }
  get [$live]() {
    return this.live;
  }
  set [$live](value) {
    this.live = value;
  }
  get [$modal]() {
    return this.modal;
  }
  set [$modal](value) {
    this.modal = value;
  }
  get [$multiline]() {
    return this.multiline;
  }
  set [$multiline](value) {
    this.multiline = value;
  }
  get [$multiselectable]() {
    return this.multiselectable;
  }
  set [$multiselectable](value) {
    this.multiselectable = value;
  }
  get [$orientation]() {
    return this.orientation;
  }
  set [$orientation](value) {
    this.orientation = value;
  }
  get [$owns]() {
    return this.owns;
  }
  set [$owns](value) {
    this.owns = value;
  }
  get [$placeholder]() {
    return this.placeholder;
  }
  set [$placeholder](value) {
    this.placeholder = value;
  }
  get [$posInSet]() {
    return this.posInSet;
  }
  set [$posInSet](value) {
    this.posInSet = value;
  }
  get [$pressed]() {
    return this.pressed;
  }
  set [$pressed](value) {
    this.pressed = value;
  }
  get [$readOnly]() {
    return this.readOnly;
  }
  set [$readOnly](value) {
    this.readOnly = value;
  }
  get [$relevant]() {
    return this.relevant;
  }
  set [$relevant](value) {
    this.relevant = value;
  }
  get [$required]() {
    return this.required;
  }
  set [$required](value) {
    this.required = value;
  }
  get [$role]() {
    return this.role;
  }
  set [$role](value) {
    this.role = value;
  }
  get [$roleDescription]() {
    return this.roleDescription;
  }
  set [$roleDescription](value) {
    this.roleDescription = value;
  }
  get [$rowCount]() {
    return this.rowCount;
  }
  set [$rowCount](value) {
    this.rowCount = value;
  }
  get [$rowIndex]() {
    return this.rowIndex;
  }
  set [$rowIndex](value) {
    this.rowIndex = value;
  }
  get [$rowSpan]() {
    return this.rowSpan;
  }
  set [$rowSpan](value) {
    this.rowSpan = value;
  }
  get [$selected]() {
    return this.selected;
  }
  set [$selected](value) {
    this.selected = value;
  }
  get [$setSize]() {
    return this.setSize;
  }
  set [$setSize](value) {
    this.setSize = value;
  }
  get [$sort]() {
    return this.sort;
  }
  set [$sort](value) {
    this.sort = value;
  }
  get [$valueMax]() {
    return this.valueMax;
  }
  set [$valueMax](value) {
    this.valueMax = value;
  }
  get [$valueMin]() {
    return this.valueMin;
  }
  set [$valueMin](value) {
    this.valueMin = value;
  }
  get [$valueNow]() {
    return this.valueNow;
  }
  set [$valueNow](value) {
    this.valueNow = value;
  }
  get [$valueText]() {
    return this.valueText;
  }
  set [$valueText](value) {
    this.valueText = value;
  }
  [$appendChild](...args) {
    return this.appendChild.apply(this, args);
  }
  get [$onAccessibleClick]() {
    return html$.AccessibleNode.accessibleClickEvent.forTarget(this);
  }
  get [$onAccessibleContextMenu]() {
    return html$.AccessibleNode.accessibleContextMenuEvent.forTarget(this);
  }
  get [$onAccessibleDecrement]() {
    return html$.AccessibleNode.accessibleDecrementEvent.forTarget(this);
  }
  get [$onAccessibleFocus]() {
    return html$.AccessibleNode.accessibleFocusEvent.forTarget(this);
  }
  get [$onAccessibleIncrement]() {
    return html$.AccessibleNode.accessibleIncrementEvent.forTarget(this);
  }
  get [$onAccessibleScrollIntoView]() {
    return html$.AccessibleNode.accessibleScrollIntoViewEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.AccessibleNode);
const activeDescendant = Symbol("AccessibleNode.activeDescendant");
const atomic = Symbol("AccessibleNode.atomic");
const autocomplete = Symbol("AccessibleNode.autocomplete");
const busy = Symbol("AccessibleNode.busy");
const checked = Symbol("AccessibleNode.checked");
const colCount = Symbol("AccessibleNode.colCount");
const colIndex = Symbol("AccessibleNode.colIndex");
const colSpan = Symbol("AccessibleNode.colSpan");
const controls = Symbol("AccessibleNode.controls");
const current = Symbol("AccessibleNode.current");
const describedBy = Symbol("AccessibleNode.describedBy");
const details = Symbol("AccessibleNode.details");
const disabled = Symbol("AccessibleNode.disabled");
const errorMessage = Symbol("AccessibleNode.errorMessage");
const expanded = Symbol("AccessibleNode.expanded");
const flowTo = Symbol("AccessibleNode.flowTo");
const hasPopUp = Symbol("AccessibleNode.hasPopUp");
const hidden$ = Symbol("AccessibleNode.hidden");
const invalid = Symbol("AccessibleNode.invalid");
const keyShortcuts = Symbol("AccessibleNode.keyShortcuts");
const label = Symbol("AccessibleNode.label");
const labeledBy = Symbol("AccessibleNode.labeledBy");
const level = Symbol("AccessibleNode.level");
const live = Symbol("AccessibleNode.live");
const modal = Symbol("AccessibleNode.modal");
const multiline = Symbol("AccessibleNode.multiline");
const multiselectable = Symbol("AccessibleNode.multiselectable");
const orientation = Symbol("AccessibleNode.orientation");
const owns = Symbol("AccessibleNode.owns");
const placeholder = Symbol("AccessibleNode.placeholder");
const posInSet = Symbol("AccessibleNode.posInSet");
const pressed = Symbol("AccessibleNode.pressed");
const readOnly = Symbol("AccessibleNode.readOnly");
const relevant = Symbol("AccessibleNode.relevant");
const required = Symbol("AccessibleNode.required");
const role = Symbol("AccessibleNode.role");
const roleDescription = Symbol("AccessibleNode.roleDescription");
const rowCount = Symbol("AccessibleNode.rowCount");
const rowIndex = Symbol("AccessibleNode.rowIndex");
const rowSpan = Symbol("AccessibleNode.rowSpan");
const selected = Symbol("AccessibleNode.selected");
const setSize = Symbol("AccessibleNode.setSize");
const sort = Symbol("AccessibleNode.sort");
const valueMax = Symbol("AccessibleNode.valueMax");
const valueMin = Symbol("AccessibleNode.valueMin");
const valueNow = Symbol("AccessibleNode.valueNow");
const valueText = Symbol("AccessibleNode.valueText");
dart.setMethodSignature(html$.AccessibleNode, () => ({
  __proto__: dart.getMethods(html$.AccessibleNode.__proto__),
  [$appendChild]: dart.fnType(dart.void, [html$.AccessibleNode])
}));
dart.setGetterSignature(html$.AccessibleNode, () => ({
  __proto__: dart.getGetters(html$.AccessibleNode.__proto__),
  [$onAccessibleClick]: async.Stream$(html$.Event),
  [$onAccessibleContextMenu]: async.Stream$(html$.Event),
  [$onAccessibleDecrement]: async.Stream$(html$.Event),
  [$onAccessibleFocus]: async.Stream$(html$.Event),
  [$onAccessibleIncrement]: async.Stream$(html$.Event),
  [$onAccessibleScrollIntoView]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.AccessibleNode, () => ({
  __proto__: dart.getFields(html$.AccessibleNode.__proto__),
  [$activeDescendant]: dart.fieldType(html$.AccessibleNode),
  [$atomic]: dart.fieldType(core.bool),
  [$autocomplete]: dart.fieldType(core.String),
  [$busy]: dart.fieldType(core.bool),
  [$checked]: dart.fieldType(core.String),
  [$colCount]: dart.fieldType(core.int),
  [$colIndex]: dart.fieldType(core.int),
  [$colSpan]: dart.fieldType(core.int),
  [$controls]: dart.fieldType(html$.AccessibleNodeList),
  [$current]: dart.fieldType(core.String),
  [$describedBy]: dart.fieldType(html$.AccessibleNodeList),
  [$details]: dart.fieldType(html$.AccessibleNode),
  [$disabled]: dart.fieldType(core.bool),
  [$errorMessage]: dart.fieldType(html$.AccessibleNode),
  [$expanded]: dart.fieldType(core.bool),
  [$flowTo]: dart.fieldType(html$.AccessibleNodeList),
  [$hasPopUp]: dart.fieldType(core.String),
  [$hidden]: dart.fieldType(core.bool),
  [$invalid]: dart.fieldType(core.String),
  [$keyShortcuts]: dart.fieldType(core.String),
  [$label]: dart.fieldType(core.String),
  [$labeledBy]: dart.fieldType(html$.AccessibleNodeList),
  [$level]: dart.fieldType(core.int),
  [$live]: dart.fieldType(core.String),
  [$modal]: dart.fieldType(core.bool),
  [$multiline]: dart.fieldType(core.bool),
  [$multiselectable]: dart.fieldType(core.bool),
  [$orientation]: dart.fieldType(core.String),
  [$owns]: dart.fieldType(html$.AccessibleNodeList),
  [$placeholder]: dart.fieldType(core.String),
  [$posInSet]: dart.fieldType(core.int),
  [$pressed]: dart.fieldType(core.String),
  [$readOnly]: dart.fieldType(core.bool),
  [$relevant]: dart.fieldType(core.String),
  [$required]: dart.fieldType(core.bool),
  [$role]: dart.fieldType(core.String),
  [$roleDescription]: dart.fieldType(core.String),
  [$rowCount]: dart.fieldType(core.int),
  [$rowIndex]: dart.fieldType(core.int),
  [$rowSpan]: dart.fieldType(core.int),
  [$selected]: dart.fieldType(core.bool),
  [$setSize]: dart.fieldType(core.int),
  [$sort]: dart.fieldType(core.String),
  [$valueMax]: dart.fieldType(core.num),
  [$valueMin]: dart.fieldType(core.num),
  [$valueNow]: dart.fieldType(core.num),
  [$valueText]: dart.fieldType(core.String)
}));
dart.defineLazy(html$.AccessibleNode, {
  /*html$.AccessibleNode.accessibleClickEvent*/get accessibleClickEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("accessibleclick"));
  },
  /*html$.AccessibleNode.accessibleContextMenuEvent*/get accessibleContextMenuEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("accessiblecontextmenu"));
  },
  /*html$.AccessibleNode.accessibleDecrementEvent*/get accessibleDecrementEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("accessibledecrement"));
  },
  /*html$.AccessibleNode.accessibleFocusEvent*/get accessibleFocusEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("accessiblefocus"));
  },
  /*html$.AccessibleNode.accessibleIncrementEvent*/get accessibleIncrementEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("accessibleincrement"));
  },
  /*html$.AccessibleNode.accessibleScrollIntoViewEvent*/get accessibleScrollIntoViewEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("accessiblescrollintoview"));
  }
});
dart.registerExtension("AccessibleNode", html$.AccessibleNode);
const __setter__ = Symbol('__setter__');
html$.AccessibleNodeList = class AccessibleNodeList$ extends _interceptors.Interceptor {
  static new(nodes) {
    if (nodes === void 0) nodes = null;
    if (nodes != null) {
      return html$.AccessibleNodeList._create_1(nodes);
    }
    return html$.AccessibleNodeList._create_2();
  }
  static _create_1(nodes) {
    return new AccessibleNodeList(nodes);
  }
  static _create_2() {
    return new AccessibleNodeList();
  }
  get [$length]() {
    return this.length;
  }
  set [$length](value) {
    this.length = value;
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [$add](...args) {
    return this.add.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$remove](...args) {
    return this.remove.apply(this, args);
  }
};
dart.addTypeTests(html$.AccessibleNodeList);
const length = Symbol("AccessibleNodeList.length");
dart.setMethodSignature(html$.AccessibleNodeList, () => ({
  __proto__: dart.getMethods(html$.AccessibleNodeList.__proto__),
  [__setter__]: dart.fnType(dart.void, [core.int, html$.AccessibleNode]),
  [$add]: dart.fnType(dart.void, [html$.AccessibleNode, html$.AccessibleNode]),
  [$item]: dart.fnType(html$.AccessibleNode, [core.int]),
  [$remove]: dart.fnType(dart.void, [core.int])
}));
dart.setFieldSignature(html$.AccessibleNodeList, () => ({
  __proto__: dart.getFields(html$.AccessibleNodeList.__proto__),
  [$length]: dart.fieldType(core.int)
}));
dart.registerExtension("AccessibleNodeList", html$.AccessibleNodeList);
html$.AmbientLightSensor = class AmbientLightSensor$ extends html$.Sensor {
  static new(sensorOptions) {
    if (sensorOptions === void 0) sensorOptions = null;
    if (sensorOptions != null) {
      let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
      return html$.AmbientLightSensor._create_1(sensorOptions_1);
    }
    return html$.AmbientLightSensor._create_2();
  }
  static _create_1(sensorOptions) {
    return new AmbientLightSensor(sensorOptions);
  }
  static _create_2() {
    return new AmbientLightSensor();
  }
  get [$illuminance]() {
    return this.illuminance;
  }
};
dart.addTypeTests(html$.AmbientLightSensor);
const illuminance = Symbol("AmbientLightSensor.illuminance");
dart.setFieldSignature(html$.AmbientLightSensor, () => ({
  __proto__: dart.getFields(html$.AmbientLightSensor.__proto__),
  [$illuminance]: dart.finalFieldType(core.num)
}));
dart.registerExtension("AmbientLightSensor", html$.AmbientLightSensor);
html$.AnchorElement = class AnchorElement extends html$.HtmlElement {
  static new(opts) {
    let href = opts && 'href' in opts ? opts.href : null;
    let e = html$.document.createElement("a");
    if (href != null) e.href = href;
    return e;
  }
  get [$download]() {
    return this.download;
  }
  set [$download](value) {
    this.download = value;
  }
  get [$hreflang]() {
    return this.hreflang;
  }
  set [$hreflang](value) {
    this.hreflang = value;
  }
  get [$referrerPolicy]() {
    return this.referrerPolicy;
  }
  set [$referrerPolicy](value) {
    this.referrerPolicy = value;
  }
  get [$rel]() {
    return this.rel;
  }
  set [$rel](value) {
    this.rel = value;
  }
  get [$target]() {
    return this.target;
  }
  set [$target](value) {
    this.target = value;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
  get [$hash]() {
    return this.hash;
  }
  set [$hash](value) {
    this.hash = value;
  }
  get [$host]() {
    return this.host;
  }
  set [$host](value) {
    this.host = value;
  }
  get [$hostname]() {
    return this.hostname;
  }
  set [$hostname](value) {
    this.hostname = value;
  }
  get [$href]() {
    return this.href;
  }
  set [$href](value) {
    this.href = value;
  }
  get [$origin]() {
    return this.origin;
  }
  get [$password]() {
    return this.password;
  }
  set [$password](value) {
    this.password = value;
  }
  get [$pathname]() {
    return this.pathname;
  }
  set [$pathname](value) {
    this.pathname = value;
  }
  get [$port]() {
    return this.port;
  }
  set [$port](value) {
    this.port = value;
  }
  get [$protocol]() {
    return this.protocol;
  }
  set [$protocol](value) {
    this.protocol = value;
  }
  get [$search]() {
    return this.search;
  }
  set [$search](value) {
    this.search = value;
  }
  get [$username]() {
    return this.username;
  }
  set [$username](value) {
    this.username = value;
  }
  [$toString]() {
    return String(this);
  }
};
(html$.AnchorElement.created = function() {
  this[download] = null;
  this[hreflang] = null;
  this[referrerPolicy] = null;
  this[rel] = null;
  this[target$] = null;
  this[type$3] = null;
  this[hash] = null;
  this[host] = null;
  this[hostname] = null;
  this[href] = null;
  this[origin] = null;
  this[password] = null;
  this[pathname] = null;
  this[port] = null;
  this[protocol] = null;
  this[search] = null;
  this[username] = null;
  html$.AnchorElement.__proto__.created.call(this);
}).prototype = html$.AnchorElement.prototype;
dart.addTypeTests(html$.AnchorElement);
const download = Symbol("AnchorElement.download");
const hreflang = Symbol("AnchorElement.hreflang");
const referrerPolicy = Symbol("AnchorElement.referrerPolicy");
const rel = Symbol("AnchorElement.rel");
const target$ = Symbol("AnchorElement.target");
const type$3 = Symbol("AnchorElement.type");
const hash = Symbol("AnchorElement.hash");
const host = Symbol("AnchorElement.host");
const hostname = Symbol("AnchorElement.hostname");
const href = Symbol("AnchorElement.href");
const origin = Symbol("AnchorElement.origin");
const password = Symbol("AnchorElement.password");
const pathname = Symbol("AnchorElement.pathname");
const port = Symbol("AnchorElement.port");
const protocol = Symbol("AnchorElement.protocol");
const search = Symbol("AnchorElement.search");
const username = Symbol("AnchorElement.username");
html$.AnchorElement[dart.implements] = () => [html$.HtmlHyperlinkElementUtils];
dart.setFieldSignature(html$.AnchorElement, () => ({
  __proto__: dart.getFields(html$.AnchorElement.__proto__),
  [$download]: dart.fieldType(core.String),
  [$hreflang]: dart.fieldType(core.String),
  [$referrerPolicy]: dart.fieldType(core.String),
  [$rel]: dart.fieldType(core.String),
  [$target]: dart.fieldType(core.String),
  [$type]: dart.fieldType(core.String),
  [$hash]: dart.fieldType(core.String),
  [$host]: dart.fieldType(core.String),
  [$hostname]: dart.fieldType(core.String),
  [$href]: dart.fieldType(core.String),
  [$origin]: dart.finalFieldType(core.String),
  [$password]: dart.fieldType(core.String),
  [$pathname]: dart.fieldType(core.String),
  [$port]: dart.fieldType(core.String),
  [$protocol]: dart.fieldType(core.String),
  [$search]: dart.fieldType(core.String),
  [$username]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLAnchorElement", html$.AnchorElement);
html$.Animation = class Animation$ extends html$.EventTarget {
  static new(effect, timeline) {
    if (effect === void 0) effect = null;
    if (timeline === void 0) timeline = null;
    if (timeline != null) {
      return html$.Animation._create_1(effect, timeline);
    }
    if (effect != null) {
      return html$.Animation._create_2(effect);
    }
    return html$.Animation._create_3();
  }
  static _create_1(effect, timeline) {
    return new Animation(effect, timeline);
  }
  static _create_2(effect) {
    return new Animation(effect);
  }
  static _create_3() {
    return new Animation();
  }
  static get supported() {
    return !!document.body.animate;
  }
  get [$currentTime]() {
    return this.currentTime;
  }
  set [$currentTime](value) {
    this.currentTime = value;
  }
  get [$effect]() {
    return this.effect;
  }
  set [$effect](value) {
    this.effect = value;
  }
  get [$finished]() {
    return html$.promiseToFuture(html$.Animation, this.finished);
  }
  get [$id]() {
    return this.id;
  }
  set [$id](value) {
    this.id = value;
  }
  get [$playState]() {
    return this.playState;
  }
  get [$playbackRate]() {
    return this.playbackRate;
  }
  set [$playbackRate](value) {
    this.playbackRate = value;
  }
  get [$ready]() {
    return html$.promiseToFuture(html$.Animation, this.ready);
  }
  get [$startTime]() {
    return this.startTime;
  }
  set [$startTime](value) {
    this.startTime = value;
  }
  get [$timeline]() {
    return this.timeline;
  }
  [$cancel](...args) {
    return this.cancel.apply(this, args);
  }
  [$finish](...args) {
    return this.finish.apply(this, args);
  }
  [$pause](...args) {
    return this.pause.apply(this, args);
  }
  [$play](...args) {
    return this.play.apply(this, args);
  }
  [$reverse](...args) {
    return this.reverse.apply(this, args);
  }
  get [$onCancel]() {
    return html$.Animation.cancelEvent.forTarget(this);
  }
  get [$onFinish]() {
    return html$.Animation.finishEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.Animation);
const currentTime = Symbol("Animation.currentTime");
const effect = Symbol("Animation.effect");
const id$0 = Symbol("Animation.id");
const playState = Symbol("Animation.playState");
const playbackRate = Symbol("Animation.playbackRate");
const startTime = Symbol("Animation.startTime");
const timeline = Symbol("Animation.timeline");
dart.setMethodSignature(html$.Animation, () => ({
  __proto__: dart.getMethods(html$.Animation.__proto__),
  [$cancel]: dart.fnType(dart.void, []),
  [$finish]: dart.fnType(dart.void, []),
  [$pause]: dart.fnType(dart.void, []),
  [$play]: dart.fnType(dart.void, []),
  [$reverse]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.Animation, () => ({
  __proto__: dart.getGetters(html$.Animation.__proto__),
  [$finished]: async.Future$(html$.Animation),
  [$ready]: async.Future$(html$.Animation),
  [$onCancel]: async.Stream$(html$.Event),
  [$onFinish]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.Animation, () => ({
  __proto__: dart.getFields(html$.Animation.__proto__),
  [$currentTime]: dart.fieldType(core.num),
  [$effect]: dart.fieldType(html$.AnimationEffectReadOnly),
  [$id]: dart.fieldType(core.String),
  [$playState]: dart.finalFieldType(core.String),
  [$playbackRate]: dart.fieldType(core.num),
  [$startTime]: dart.fieldType(core.num),
  [$timeline]: dart.finalFieldType(html$.AnimationTimeline)
}));
dart.defineLazy(html$.Animation, {
  /*html$.Animation.cancelEvent*/get cancelEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("cancel"));
  },
  /*html$.Animation.finishEvent*/get finishEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("finish"));
  }
});
dart.registerExtension("Animation", html$.Animation);
const _getComputedTiming_1 = Symbol('_getComputedTiming_1');
html$.AnimationEffectReadOnly = class AnimationEffectReadOnly extends _interceptors.Interceptor {
  get [$timing]() {
    return this.timing;
  }
  [$getComputedTiming]() {
    return html_common.convertNativeToDart_Dictionary(this[_getComputedTiming_1]());
  }
  [_getComputedTiming_1](...args) {
    return this.getComputedTiming.apply(this, args);
  }
};
dart.addTypeTests(html$.AnimationEffectReadOnly);
const timing = Symbol("AnimationEffectReadOnly.timing");
dart.setMethodSignature(html$.AnimationEffectReadOnly, () => ({
  __proto__: dart.getMethods(html$.AnimationEffectReadOnly.__proto__),
  [$getComputedTiming]: dart.fnType(core.Map, []),
  [_getComputedTiming_1]: dart.fnType(dart.dynamic, [])
}));
dart.setFieldSignature(html$.AnimationEffectReadOnly, () => ({
  __proto__: dart.getFields(html$.AnimationEffectReadOnly.__proto__),
  [$timing]: dart.finalFieldType(html$.AnimationEffectTimingReadOnly)
}));
dart.registerExtension("AnimationEffectReadOnly", html$.AnimationEffectReadOnly);
html$.AnimationEffectTimingReadOnly = class AnimationEffectTimingReadOnly extends _interceptors.Interceptor {
  get [$delay]() {
    return this.delay;
  }
  get [$direction]() {
    return this.direction;
  }
  get [$duration]() {
    return this.duration;
  }
  get [$easing]() {
    return this.easing;
  }
  get [$endDelay]() {
    return this.endDelay;
  }
  get [$fill]() {
    return this.fill;
  }
  get [$iterationStart]() {
    return this.iterationStart;
  }
  get [$iterations]() {
    return this.iterations;
  }
};
dart.addTypeTests(html$.AnimationEffectTimingReadOnly);
const delay = Symbol("AnimationEffectTimingReadOnly.delay");
const direction$ = Symbol("AnimationEffectTimingReadOnly.direction");
const duration = Symbol("AnimationEffectTimingReadOnly.duration");
const easing = Symbol("AnimationEffectTimingReadOnly.easing");
const endDelay = Symbol("AnimationEffectTimingReadOnly.endDelay");
const fill = Symbol("AnimationEffectTimingReadOnly.fill");
const iterationStart = Symbol("AnimationEffectTimingReadOnly.iterationStart");
const iterations = Symbol("AnimationEffectTimingReadOnly.iterations");
dart.setFieldSignature(html$.AnimationEffectTimingReadOnly, () => ({
  __proto__: dart.getFields(html$.AnimationEffectTimingReadOnly.__proto__),
  [$delay]: dart.finalFieldType(core.num),
  [$direction]: dart.finalFieldType(core.String),
  [$duration]: dart.finalFieldType(core.Object),
  [$easing]: dart.finalFieldType(core.String),
  [$endDelay]: dart.finalFieldType(core.num),
  [$fill]: dart.finalFieldType(core.String),
  [$iterationStart]: dart.finalFieldType(core.num),
  [$iterations]: dart.finalFieldType(core.num)
}));
dart.registerExtension("AnimationEffectTimingReadOnly", html$.AnimationEffectTimingReadOnly);
html$.AnimationEffectTiming = class AnimationEffectTiming extends html$.AnimationEffectTimingReadOnly {
  get [$delay]() {
    return this.delay;
  }
  set [$delay](value) {
    this.delay = value;
  }
  get [$direction]() {
    return this.direction;
  }
  set [$direction](value) {
    this.direction = value;
  }
  get [$duration]() {
    return this.duration;
  }
  set [$duration](value) {
    this.duration = value;
  }
  get [$easing]() {
    return this.easing;
  }
  set [$easing](value) {
    this.easing = value;
  }
  get [$endDelay]() {
    return this.endDelay;
  }
  set [$endDelay](value) {
    this.endDelay = value;
  }
  get [$fill]() {
    return this.fill;
  }
  set [$fill](value) {
    this.fill = value;
  }
  get [$iterationStart]() {
    return this.iterationStart;
  }
  set [$iterationStart](value) {
    this.iterationStart = value;
  }
  get [$iterations]() {
    return this.iterations;
  }
  set [$iterations](value) {
    this.iterations = value;
  }
};
dart.addTypeTests(html$.AnimationEffectTiming);
dart.setSetterSignature(html$.AnimationEffectTiming, () => ({
  __proto__: dart.getSetters(html$.AnimationEffectTiming.__proto__),
  [$delay]: core.num,
  [$direction]: core.String,
  [$duration]: core.Object,
  [$easing]: core.String,
  [$endDelay]: core.num,
  [$fill]: core.String,
  [$iterationStart]: core.num,
  [$iterations]: core.num
}));
dart.registerExtension("AnimationEffectTiming", html$.AnimationEffectTiming);
html$.AnimationEvent = class AnimationEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.AnimationEvent._create_1(type, eventInitDict_1);
    }
    return html$.AnimationEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new AnimationEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new AnimationEvent(type);
  }
  get [$animationName]() {
    return this.animationName;
  }
  get [$elapsedTime]() {
    return this.elapsedTime;
  }
};
dart.addTypeTests(html$.AnimationEvent);
const animationName = Symbol("AnimationEvent.animationName");
const elapsedTime = Symbol("AnimationEvent.elapsedTime");
dart.setFieldSignature(html$.AnimationEvent, () => ({
  __proto__: dart.getFields(html$.AnimationEvent.__proto__),
  [$animationName]: dart.finalFieldType(core.String),
  [$elapsedTime]: dart.finalFieldType(core.num)
}));
dart.registerExtension("AnimationEvent", html$.AnimationEvent);
html$.AnimationPlaybackEvent = class AnimationPlaybackEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.AnimationPlaybackEvent._create_1(type, eventInitDict_1);
    }
    return html$.AnimationPlaybackEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new AnimationPlaybackEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new AnimationPlaybackEvent(type);
  }
  get [$currentTime]() {
    return this.currentTime;
  }
  get [$timelineTime]() {
    return this.timelineTime;
  }
};
dart.addTypeTests(html$.AnimationPlaybackEvent);
const currentTime$ = Symbol("AnimationPlaybackEvent.currentTime");
const timelineTime = Symbol("AnimationPlaybackEvent.timelineTime");
dart.setFieldSignature(html$.AnimationPlaybackEvent, () => ({
  __proto__: dart.getFields(html$.AnimationPlaybackEvent.__proto__),
  [$currentTime]: dart.finalFieldType(core.num),
  [$timelineTime]: dart.finalFieldType(core.num)
}));
dart.registerExtension("AnimationPlaybackEvent", html$.AnimationPlaybackEvent);
html$.AnimationTimeline = class AnimationTimeline extends _interceptors.Interceptor {
  get [$currentTime]() {
    return this.currentTime;
  }
};
dart.addTypeTests(html$.AnimationTimeline);
const currentTime$0 = Symbol("AnimationTimeline.currentTime");
dart.setFieldSignature(html$.AnimationTimeline, () => ({
  __proto__: dart.getFields(html$.AnimationTimeline.__proto__),
  [$currentTime]: dart.finalFieldType(core.num)
}));
dart.registerExtension("AnimationTimeline", html$.AnimationTimeline);
html$.WorkletGlobalScope = class WorkletGlobalScope extends _interceptors.Interceptor {};
dart.addTypeTests(html$.WorkletGlobalScope);
dart.registerExtension("WorkletGlobalScope", html$.WorkletGlobalScope);
html$.AnimationWorkletGlobalScope = class AnimationWorkletGlobalScope extends html$.WorkletGlobalScope {
  [$registerAnimator](...args) {
    return this.registerAnimator.apply(this, args);
  }
};
dart.addTypeTests(html$.AnimationWorkletGlobalScope);
dart.setMethodSignature(html$.AnimationWorkletGlobalScope, () => ({
  __proto__: dart.getMethods(html$.AnimationWorkletGlobalScope.__proto__),
  [$registerAnimator]: dart.fnType(dart.void, [core.String, core.Object])
}));
dart.registerExtension("AnimationWorkletGlobalScope", html$.AnimationWorkletGlobalScope);
html$.ApplicationCache = class ApplicationCache extends html$.EventTarget {
  static get supported() {
    return !!window.applicationCache;
  }
  get [$status]() {
    return this.status;
  }
  [$abort](...args) {
    return this.abort.apply(this, args);
  }
  [$swapCache](...args) {
    return this.swapCache.apply(this, args);
  }
  [$update](...args) {
    return this.update.apply(this, args);
  }
  get [$onCached]() {
    return html$.ApplicationCache.cachedEvent.forTarget(this);
  }
  get [$onChecking]() {
    return html$.ApplicationCache.checkingEvent.forTarget(this);
  }
  get [$onDownloading]() {
    return html$.ApplicationCache.downloadingEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.ApplicationCache.errorEvent.forTarget(this);
  }
  get [$onNoUpdate]() {
    return html$.ApplicationCache.noUpdateEvent.forTarget(this);
  }
  get [$onObsolete]() {
    return html$.ApplicationCache.obsoleteEvent.forTarget(this);
  }
  get [$onProgress]() {
    return html$.ApplicationCache.progressEvent.forTarget(this);
  }
  get [$onUpdateReady]() {
    return html$.ApplicationCache.updateReadyEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.ApplicationCache);
const status = Symbol("ApplicationCache.status");
dart.setMethodSignature(html$.ApplicationCache, () => ({
  __proto__: dart.getMethods(html$.ApplicationCache.__proto__),
  [$abort]: dart.fnType(dart.void, []),
  [$swapCache]: dart.fnType(dart.void, []),
  [$update]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.ApplicationCache, () => ({
  __proto__: dart.getGetters(html$.ApplicationCache.__proto__),
  [$onCached]: async.Stream$(html$.Event),
  [$onChecking]: async.Stream$(html$.Event),
  [$onDownloading]: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.Event),
  [$onNoUpdate]: async.Stream$(html$.Event),
  [$onObsolete]: async.Stream$(html$.Event),
  [$onProgress]: async.Stream$(html$.ProgressEvent),
  [$onUpdateReady]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.ApplicationCache, () => ({
  __proto__: dart.getFields(html$.ApplicationCache.__proto__),
  [$status]: dart.finalFieldType(core.int)
}));
dart.defineLazy(html$.ApplicationCache, {
  /*html$.ApplicationCache.cachedEvent*/get cachedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("cached"));
  },
  /*html$.ApplicationCache.checkingEvent*/get checkingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("checking"));
  },
  /*html$.ApplicationCache.downloadingEvent*/get downloadingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("downloading"));
  },
  /*html$.ApplicationCache.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.ApplicationCache.noUpdateEvent*/get noUpdateEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("noupdate"));
  },
  /*html$.ApplicationCache.obsoleteEvent*/get obsoleteEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("obsolete"));
  },
  /*html$.ApplicationCache.progressEvent*/get progressEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("progress"));
  },
  /*html$.ApplicationCache.updateReadyEvent*/get updateReadyEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("updateready"));
  },
  /*html$.ApplicationCache.CHECKING*/get CHECKING() {
    return 2;
  },
  /*html$.ApplicationCache.DOWNLOADING*/get DOWNLOADING() {
    return 3;
  },
  /*html$.ApplicationCache.IDLE*/get IDLE() {
    return 1;
  },
  /*html$.ApplicationCache.OBSOLETE*/get OBSOLETE() {
    return 5;
  },
  /*html$.ApplicationCache.UNCACHED*/get UNCACHED() {
    return 0;
  },
  /*html$.ApplicationCache.UPDATEREADY*/get UPDATEREADY() {
    return 4;
  }
});
dart.registerExtension("ApplicationCache", html$.ApplicationCache);
dart.registerExtension("DOMApplicationCache", html$.ApplicationCache);
dart.registerExtension("OfflineResourceList", html$.ApplicationCache);
html$.ApplicationCacheErrorEvent = class ApplicationCacheErrorEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.ApplicationCacheErrorEvent._create_1(type, eventInitDict_1);
    }
    return html$.ApplicationCacheErrorEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ApplicationCacheErrorEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ApplicationCacheErrorEvent(type);
  }
  get [$message]() {
    return this.message;
  }
  get [$reason]() {
    return this.reason;
  }
  get [$status]() {
    return this.status;
  }
  get [$url]() {
    return this.url;
  }
};
dart.addTypeTests(html$.ApplicationCacheErrorEvent);
const message = Symbol("ApplicationCacheErrorEvent.message");
const reason = Symbol("ApplicationCacheErrorEvent.reason");
const status$ = Symbol("ApplicationCacheErrorEvent.status");
const url = Symbol("ApplicationCacheErrorEvent.url");
dart.setFieldSignature(html$.ApplicationCacheErrorEvent, () => ({
  __proto__: dart.getFields(html$.ApplicationCacheErrorEvent.__proto__),
  [$message]: dart.finalFieldType(core.String),
  [$reason]: dart.finalFieldType(core.String),
  [$status]: dart.finalFieldType(core.int),
  [$url]: dart.finalFieldType(core.String)
}));
dart.registerExtension("ApplicationCacheErrorEvent", html$.ApplicationCacheErrorEvent);
html$.AreaElement = class AreaElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("area");
  }
  get [$alt]() {
    return this.alt;
  }
  set [$alt](value) {
    this.alt = value;
  }
  get [$coords]() {
    return this.coords;
  }
  set [$coords](value) {
    this.coords = value;
  }
  get [$download]() {
    return this.download;
  }
  set [$download](value) {
    this.download = value;
  }
  get [$referrerPolicy]() {
    return this.referrerPolicy;
  }
  set [$referrerPolicy](value) {
    this.referrerPolicy = value;
  }
  get [$rel]() {
    return this.rel;
  }
  set [$rel](value) {
    this.rel = value;
  }
  get [$shape]() {
    return this.shape;
  }
  set [$shape](value) {
    this.shape = value;
  }
  get [$target]() {
    return this.target;
  }
  set [$target](value) {
    this.target = value;
  }
  get [$hash]() {
    return this.hash;
  }
  set [$hash](value) {
    this.hash = value;
  }
  get [$host]() {
    return this.host;
  }
  set [$host](value) {
    this.host = value;
  }
  get [$hostname]() {
    return this.hostname;
  }
  set [$hostname](value) {
    this.hostname = value;
  }
  get [$href]() {
    return this.href;
  }
  set [$href](value) {
    this.href = value;
  }
  get [$origin]() {
    return this.origin;
  }
  get [$password]() {
    return this.password;
  }
  set [$password](value) {
    this.password = value;
  }
  get [$pathname]() {
    return this.pathname;
  }
  set [$pathname](value) {
    this.pathname = value;
  }
  get [$port]() {
    return this.port;
  }
  set [$port](value) {
    this.port = value;
  }
  get [$protocol]() {
    return this.protocol;
  }
  set [$protocol](value) {
    this.protocol = value;
  }
  get [$search]() {
    return this.search;
  }
  set [$search](value) {
    this.search = value;
  }
  get [$username]() {
    return this.username;
  }
  set [$username](value) {
    this.username = value;
  }
  [$toString]() {
    return String(this);
  }
};
(html$.AreaElement.created = function() {
  this[alt] = null;
  this[coords] = null;
  this[download$] = null;
  this[referrerPolicy$] = null;
  this[rel$] = null;
  this[shape] = null;
  this[target$0] = null;
  this[hash$] = null;
  this[host$] = null;
  this[hostname$] = null;
  this[href$] = null;
  this[origin$] = null;
  this[password$] = null;
  this[pathname$] = null;
  this[port$1] = null;
  this[protocol$] = null;
  this[search$] = null;
  this[username$] = null;
  html$.AreaElement.__proto__.created.call(this);
}).prototype = html$.AreaElement.prototype;
dart.addTypeTests(html$.AreaElement);
const alt = Symbol("AreaElement.alt");
const coords = Symbol("AreaElement.coords");
const download$ = Symbol("AreaElement.download");
const referrerPolicy$ = Symbol("AreaElement.referrerPolicy");
const rel$ = Symbol("AreaElement.rel");
const shape = Symbol("AreaElement.shape");
const target$0 = Symbol("AreaElement.target");
const hash$ = Symbol("AreaElement.hash");
const host$ = Symbol("AreaElement.host");
const hostname$ = Symbol("AreaElement.hostname");
const href$ = Symbol("AreaElement.href");
const origin$ = Symbol("AreaElement.origin");
const password$ = Symbol("AreaElement.password");
const pathname$ = Symbol("AreaElement.pathname");
const port$1 = Symbol("AreaElement.port");
const protocol$ = Symbol("AreaElement.protocol");
const search$ = Symbol("AreaElement.search");
const username$ = Symbol("AreaElement.username");
html$.AreaElement[dart.implements] = () => [html$.HtmlHyperlinkElementUtils];
dart.setFieldSignature(html$.AreaElement, () => ({
  __proto__: dart.getFields(html$.AreaElement.__proto__),
  [$alt]: dart.fieldType(core.String),
  [$coords]: dart.fieldType(core.String),
  [$download]: dart.fieldType(core.String),
  [$referrerPolicy]: dart.fieldType(core.String),
  [$rel]: dart.fieldType(core.String),
  [$shape]: dart.fieldType(core.String),
  [$target]: dart.fieldType(core.String),
  [$hash]: dart.fieldType(core.String),
  [$host]: dart.fieldType(core.String),
  [$hostname]: dart.fieldType(core.String),
  [$href]: dart.fieldType(core.String),
  [$origin]: dart.finalFieldType(core.String),
  [$password]: dart.fieldType(core.String),
  [$pathname]: dart.fieldType(core.String),
  [$port]: dart.fieldType(core.String),
  [$protocol]: dart.fieldType(core.String),
  [$search]: dart.fieldType(core.String),
  [$username]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLAreaElement", html$.AreaElement);
html$.MediaElement = class MediaElement extends html$.HtmlElement {
  get [$audioTracks]() {
    return this.audioTracks;
  }
  get [$autoplay]() {
    return this.autoplay;
  }
  set [$autoplay](value) {
    this.autoplay = value;
  }
  get [$buffered]() {
    return this.buffered;
  }
  get [$controls]() {
    return this.controls;
  }
  set [$controls](value) {
    this.controls = value;
  }
  get [$controlsList]() {
    return this.controlsList;
  }
  get [$crossOrigin]() {
    return this.crossOrigin;
  }
  set [$crossOrigin](value) {
    this.crossOrigin = value;
  }
  get [$currentSrc]() {
    return this.currentSrc;
  }
  get [$currentTime]() {
    return this.currentTime;
  }
  set [$currentTime](value) {
    this.currentTime = value;
  }
  get [$defaultMuted]() {
    return this.defaultMuted;
  }
  set [$defaultMuted](value) {
    this.defaultMuted = value;
  }
  get [$defaultPlaybackRate]() {
    return this.defaultPlaybackRate;
  }
  set [$defaultPlaybackRate](value) {
    this.defaultPlaybackRate = value;
  }
  get [$disableRemotePlayback]() {
    return this.disableRemotePlayback;
  }
  set [$disableRemotePlayback](value) {
    this.disableRemotePlayback = value;
  }
  get [$duration]() {
    return this.duration;
  }
  get [$ended]() {
    return this.ended;
  }
  get [$error]() {
    return this.error;
  }
  get [$loop]() {
    return this.loop;
  }
  set [$loop](value) {
    this.loop = value;
  }
  get [$mediaKeys]() {
    return this.mediaKeys;
  }
  get [$muted]() {
    return this.muted;
  }
  set [$muted](value) {
    this.muted = value;
  }
  get [$networkState]() {
    return this.networkState;
  }
  get [$paused]() {
    return this.paused;
  }
  get [$playbackRate]() {
    return this.playbackRate;
  }
  set [$playbackRate](value) {
    this.playbackRate = value;
  }
  get [$played]() {
    return this.played;
  }
  get [$preload]() {
    return this.preload;
  }
  set [$preload](value) {
    this.preload = value;
  }
  get [$readyState]() {
    return this.readyState;
  }
  get [$remote]() {
    return this.remote;
  }
  get [$seekable]() {
    return this.seekable;
  }
  get [$seeking]() {
    return this.seeking;
  }
  get [$sinkId]() {
    return this.sinkId;
  }
  get [$src]() {
    return this.src;
  }
  set [$src](value) {
    this.src = value;
  }
  get [$srcObject]() {
    return this.srcObject;
  }
  set [$srcObject](value) {
    this.srcObject = value;
  }
  get [$textTracks]() {
    return this.textTracks;
  }
  get [$videoTracks]() {
    return this.videoTracks;
  }
  get [$volume]() {
    return this.volume;
  }
  set [$volume](value) {
    this.volume = value;
  }
  get [$audioDecodedByteCount]() {
    return this.webkitAudioDecodedByteCount;
  }
  get [$videoDecodedByteCount]() {
    return this.webkitVideoDecodedByteCount;
  }
  [$addTextTrack](...args) {
    return this.addTextTrack.apply(this, args);
  }
  [$canPlayType](...args) {
    return this.canPlayType.apply(this, args);
  }
  [$captureStream](...args) {
    return this.captureStream.apply(this, args);
  }
  [$load](...args) {
    return this.load.apply(this, args);
  }
  [$pause](...args) {
    return this.pause.apply(this, args);
  }
  [$play]() {
    return html$.promiseToFuture(dart.dynamic, this.play());
  }
  [$setMediaKeys](mediaKeys) {
    return html$.promiseToFuture(dart.dynamic, this.setMediaKeys(mediaKeys));
  }
  [$setSinkId](sinkId) {
    return html$.promiseToFuture(dart.dynamic, this.setSinkId(sinkId));
  }
};
(html$.MediaElement.created = function() {
  this[audioTracks] = null;
  this[autoplay] = null;
  this[buffered] = null;
  this[controls$] = null;
  this[controlsList] = null;
  this[crossOrigin] = null;
  this[currentSrc] = null;
  this[currentTime$1] = null;
  this[defaultMuted] = null;
  this[defaultPlaybackRate] = null;
  this[disableRemotePlayback] = null;
  this[duration$0] = null;
  this[ended] = null;
  this[error$1] = null;
  this[loop] = null;
  this[mediaKeys] = null;
  this[muted] = null;
  this[networkState] = null;
  this[paused] = null;
  this[playbackRate$] = null;
  this[played] = null;
  this[preload] = null;
  this[readyState$] = null;
  this[remote] = null;
  this[seekable] = null;
  this[seeking] = null;
  this[sinkId] = null;
  this[src] = null;
  this[srcObject] = null;
  this[textTracks] = null;
  this[videoTracks] = null;
  this[volume] = null;
  this[audioDecodedByteCount] = null;
  this[videoDecodedByteCount] = null;
  html$.MediaElement.__proto__.created.call(this);
}).prototype = html$.MediaElement.prototype;
dart.addTypeTests(html$.MediaElement);
const audioTracks = Symbol("MediaElement.audioTracks");
const autoplay = Symbol("MediaElement.autoplay");
const buffered = Symbol("MediaElement.buffered");
const controls$ = Symbol("MediaElement.controls");
const controlsList = Symbol("MediaElement.controlsList");
const crossOrigin = Symbol("MediaElement.crossOrigin");
const currentSrc = Symbol("MediaElement.currentSrc");
const currentTime$1 = Symbol("MediaElement.currentTime");
const defaultMuted = Symbol("MediaElement.defaultMuted");
const defaultPlaybackRate = Symbol("MediaElement.defaultPlaybackRate");
const disableRemotePlayback = Symbol("MediaElement.disableRemotePlayback");
const duration$0 = Symbol("MediaElement.duration");
const ended = Symbol("MediaElement.ended");
const error$1 = Symbol("MediaElement.error");
const loop = Symbol("MediaElement.loop");
const mediaKeys = Symbol("MediaElement.mediaKeys");
const muted = Symbol("MediaElement.muted");
const networkState = Symbol("MediaElement.networkState");
const paused = Symbol("MediaElement.paused");
const playbackRate$ = Symbol("MediaElement.playbackRate");
const played = Symbol("MediaElement.played");
const preload = Symbol("MediaElement.preload");
const readyState$ = Symbol("MediaElement.readyState");
const remote = Symbol("MediaElement.remote");
const seekable = Symbol("MediaElement.seekable");
const seeking = Symbol("MediaElement.seeking");
const sinkId = Symbol("MediaElement.sinkId");
const src = Symbol("MediaElement.src");
const srcObject = Symbol("MediaElement.srcObject");
const textTracks = Symbol("MediaElement.textTracks");
const videoTracks = Symbol("MediaElement.videoTracks");
const volume = Symbol("MediaElement.volume");
const audioDecodedByteCount = Symbol("MediaElement.audioDecodedByteCount");
const videoDecodedByteCount = Symbol("MediaElement.videoDecodedByteCount");
dart.setMethodSignature(html$.MediaElement, () => ({
  __proto__: dart.getMethods(html$.MediaElement.__proto__),
  [$addTextTrack]: dart.fnType(html$.TextTrack, [core.String], [core.String, core.String]),
  [$canPlayType]: dart.fnType(core.String, [core.String], [core.String]),
  [$captureStream]: dart.fnType(html$.MediaStream, []),
  [$load]: dart.fnType(dart.void, []),
  [$pause]: dart.fnType(dart.void, []),
  [$play]: dart.fnType(async.Future, []),
  [$setMediaKeys]: dart.fnType(async.Future, [html$.MediaKeys]),
  [$setSinkId]: dart.fnType(async.Future, [core.String])
}));
dart.setFieldSignature(html$.MediaElement, () => ({
  __proto__: dart.getFields(html$.MediaElement.__proto__),
  [$audioTracks]: dart.finalFieldType(web_audio.AudioTrackList),
  [$autoplay]: dart.fieldType(core.bool),
  [$buffered]: dart.finalFieldType(html$.TimeRanges),
  [$controls]: dart.fieldType(core.bool),
  [$controlsList]: dart.finalFieldType(html$.DomTokenList),
  [$crossOrigin]: dart.fieldType(core.String),
  [$currentSrc]: dart.finalFieldType(core.String),
  [$currentTime]: dart.fieldType(core.num),
  [$defaultMuted]: dart.fieldType(core.bool),
  [$defaultPlaybackRate]: dart.fieldType(core.num),
  [$disableRemotePlayback]: dart.fieldType(core.bool),
  [$duration]: dart.finalFieldType(core.num),
  [$ended]: dart.finalFieldType(core.bool),
  [$error]: dart.finalFieldType(html$.MediaError),
  [$loop]: dart.fieldType(core.bool),
  [$mediaKeys]: dart.finalFieldType(html$.MediaKeys),
  [$muted]: dart.fieldType(core.bool),
  [$networkState]: dart.finalFieldType(core.int),
  [$paused]: dart.finalFieldType(core.bool),
  [$playbackRate]: dart.fieldType(core.num),
  [$played]: dart.finalFieldType(html$.TimeRanges),
  [$preload]: dart.fieldType(core.String),
  [$readyState]: dart.finalFieldType(core.int),
  [$remote]: dart.finalFieldType(html$.RemotePlayback),
  [$seekable]: dart.finalFieldType(html$.TimeRanges),
  [$seeking]: dart.finalFieldType(core.bool),
  [$sinkId]: dart.finalFieldType(core.String),
  [$src]: dart.fieldType(core.String),
  [$srcObject]: dart.fieldType(html$.MediaStream),
  [$textTracks]: dart.finalFieldType(html$.TextTrackList),
  [$videoTracks]: dart.finalFieldType(html$.VideoTrackList),
  [$volume]: dart.fieldType(core.num),
  [$audioDecodedByteCount]: dart.finalFieldType(core.int),
  [$videoDecodedByteCount]: dart.finalFieldType(core.int)
}));
dart.defineLazy(html$.MediaElement, {
  /*html$.MediaElement.HAVE_CURRENT_DATA*/get HAVE_CURRENT_DATA() {
    return 2;
  },
  /*html$.MediaElement.HAVE_ENOUGH_DATA*/get HAVE_ENOUGH_DATA() {
    return 4;
  },
  /*html$.MediaElement.HAVE_FUTURE_DATA*/get HAVE_FUTURE_DATA() {
    return 3;
  },
  /*html$.MediaElement.HAVE_METADATA*/get HAVE_METADATA() {
    return 1;
  },
  /*html$.MediaElement.HAVE_NOTHING*/get HAVE_NOTHING() {
    return 0;
  },
  /*html$.MediaElement.NETWORK_EMPTY*/get NETWORK_EMPTY() {
    return 0;
  },
  /*html$.MediaElement.NETWORK_IDLE*/get NETWORK_IDLE() {
    return 1;
  },
  /*html$.MediaElement.NETWORK_LOADING*/get NETWORK_LOADING() {
    return 2;
  },
  /*html$.MediaElement.NETWORK_NO_SOURCE*/get NETWORK_NO_SOURCE() {
    return 3;
  }
});
dart.registerExtension("HTMLMediaElement", html$.MediaElement);
html$.AudioElement = class AudioElement extends html$.MediaElement {
  static __(src) {
    if (src === void 0) src = null;
    if (src != null) {
      return html$.AudioElement._create_1(src);
    }
    return html$.AudioElement._create_2();
  }
  static _create_1(src) {
    return new Audio(src);
  }
  static _create_2() {
    return new Audio();
  }
  static new(src) {
    if (src === void 0) src = null;
    return html$.AudioElement.__(src);
  }
};
(html$.AudioElement.created = function() {
  html$.AudioElement.__proto__.created.call(this);
}).prototype = html$.AudioElement.prototype;
dart.addTypeTests(html$.AudioElement);
dart.registerExtension("HTMLAudioElement", html$.AudioElement);
html$.AuthenticatorResponse = class AuthenticatorResponse extends _interceptors.Interceptor {
  get [$clientDataJson]() {
    return this.clientDataJSON;
  }
};
dart.addTypeTests(html$.AuthenticatorResponse);
const clientDataJson = Symbol("AuthenticatorResponse.clientDataJson");
dart.setFieldSignature(html$.AuthenticatorResponse, () => ({
  __proto__: dart.getFields(html$.AuthenticatorResponse.__proto__),
  [$clientDataJson]: dart.finalFieldType(typed_data.ByteBuffer)
}));
dart.registerExtension("AuthenticatorResponse", html$.AuthenticatorResponse);
html$.AuthenticatorAssertionResponse = class AuthenticatorAssertionResponse extends html$.AuthenticatorResponse {
  get [$authenticatorData]() {
    return this.authenticatorData;
  }
  get [$signature]() {
    return this.signature;
  }
};
dart.addTypeTests(html$.AuthenticatorAssertionResponse);
const authenticatorData = Symbol("AuthenticatorAssertionResponse.authenticatorData");
const signature = Symbol("AuthenticatorAssertionResponse.signature");
dart.setFieldSignature(html$.AuthenticatorAssertionResponse, () => ({
  __proto__: dart.getFields(html$.AuthenticatorAssertionResponse.__proto__),
  [$authenticatorData]: dart.finalFieldType(typed_data.ByteBuffer),
  [$signature]: dart.finalFieldType(typed_data.ByteBuffer)
}));
dart.registerExtension("AuthenticatorAssertionResponse", html$.AuthenticatorAssertionResponse);
html$.AuthenticatorAttestationResponse = class AuthenticatorAttestationResponse extends html$.AuthenticatorResponse {
  get [$attestationObject]() {
    return this.attestationObject;
  }
};
dart.addTypeTests(html$.AuthenticatorAttestationResponse);
const attestationObject = Symbol("AuthenticatorAttestationResponse.attestationObject");
dart.setFieldSignature(html$.AuthenticatorAttestationResponse, () => ({
  __proto__: dart.getFields(html$.AuthenticatorAttestationResponse.__proto__),
  [$attestationObject]: dart.finalFieldType(typed_data.ByteBuffer)
}));
dart.registerExtension("AuthenticatorAttestationResponse", html$.AuthenticatorAttestationResponse);
html$.BRElement = class BRElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("br");
  }
};
(html$.BRElement.created = function() {
  html$.BRElement.__proto__.created.call(this);
}).prototype = html$.BRElement.prototype;
dart.addTypeTests(html$.BRElement);
dart.registerExtension("HTMLBRElement", html$.BRElement);
html$.BackgroundFetchEvent = class BackgroundFetchEvent$ extends html$.ExtendableEvent {
  static new(type, init) {
    let init_1 = html_common.convertDartToNative_Dictionary(init);
    return html$.BackgroundFetchEvent._create_1(type, init_1);
  }
  static _create_1(type, init) {
    return new BackgroundFetchEvent(type, init);
  }
  get [$id]() {
    return this.id;
  }
};
dart.addTypeTests(html$.BackgroundFetchEvent);
const id$1 = Symbol("BackgroundFetchEvent.id");
dart.setFieldSignature(html$.BackgroundFetchEvent, () => ({
  __proto__: dart.getFields(html$.BackgroundFetchEvent.__proto__),
  [$id]: dart.finalFieldType(core.String)
}));
dart.registerExtension("BackgroundFetchEvent", html$.BackgroundFetchEvent);
html$.BackgroundFetchClickEvent = class BackgroundFetchClickEvent$ extends html$.BackgroundFetchEvent {
  static new(type, init) {
    let init_1 = html_common.convertDartToNative_Dictionary(init);
    return html$.BackgroundFetchClickEvent._create_1(type, init_1);
  }
  static _create_1(type, init) {
    return new BackgroundFetchClickEvent(type, init);
  }
  get [$state]() {
    return this.state;
  }
};
dart.addTypeTests(html$.BackgroundFetchClickEvent);
const state = Symbol("BackgroundFetchClickEvent.state");
dart.setFieldSignature(html$.BackgroundFetchClickEvent, () => ({
  __proto__: dart.getFields(html$.BackgroundFetchClickEvent.__proto__),
  [$state]: dart.finalFieldType(core.String)
}));
dart.registerExtension("BackgroundFetchClickEvent", html$.BackgroundFetchClickEvent);
html$.BackgroundFetchFailEvent = class BackgroundFetchFailEvent$ extends html$.BackgroundFetchEvent {
  static new(type, init) {
    let init_1 = html_common.convertDartToNative_Dictionary(init);
    return html$.BackgroundFetchFailEvent._create_1(type, init_1);
  }
  static _create_1(type, init) {
    return new BackgroundFetchFailEvent(type, init);
  }
  get [$fetches]() {
    return this.fetches;
  }
};
dart.addTypeTests(html$.BackgroundFetchFailEvent);
const fetches = Symbol("BackgroundFetchFailEvent.fetches");
dart.setFieldSignature(html$.BackgroundFetchFailEvent, () => ({
  __proto__: dart.getFields(html$.BackgroundFetchFailEvent.__proto__),
  [$fetches]: dart.finalFieldType(ListOfBackgroundFetchSettledFetch())
}));
dart.registerExtension("BackgroundFetchFailEvent", html$.BackgroundFetchFailEvent);
html$.BackgroundFetchFetch = class BackgroundFetchFetch extends _interceptors.Interceptor {
  get [$request]() {
    return this.request;
  }
};
dart.addTypeTests(html$.BackgroundFetchFetch);
const request = Symbol("BackgroundFetchFetch.request");
dart.setFieldSignature(html$.BackgroundFetchFetch, () => ({
  __proto__: dart.getFields(html$.BackgroundFetchFetch.__proto__),
  [$request]: dart.finalFieldType(html$._Request)
}));
dart.registerExtension("BackgroundFetchFetch", html$.BackgroundFetchFetch);
html$.BackgroundFetchManager = class BackgroundFetchManager extends _interceptors.Interceptor {
  [$fetch](id, requests, options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(html$.BackgroundFetchRegistration, this.fetch(id, requests, options_dict));
  }
  [$get](id) {
    return html$.promiseToFuture(html$.BackgroundFetchRegistration, this.get(id));
  }
  [$getIds]() {
    return html$.promiseToFuture(ListOfString(), this.getIds());
  }
};
dart.addTypeTests(html$.BackgroundFetchManager);
dart.setMethodSignature(html$.BackgroundFetchManager, () => ({
  __proto__: dart.getMethods(html$.BackgroundFetchManager.__proto__),
  [$fetch]: dart.fnType(async.Future$(html$.BackgroundFetchRegistration), [core.String, core.Object], [core.Map]),
  [$get]: dart.fnType(async.Future$(html$.BackgroundFetchRegistration), [core.String]),
  [$getIds]: dart.fnType(async.Future$(core.List$(core.String)), [])
}));
dart.registerExtension("BackgroundFetchManager", html$.BackgroundFetchManager);
html$.BackgroundFetchRegistration = class BackgroundFetchRegistration extends html$.EventTarget {
  get [$downloadTotal]() {
    return this.downloadTotal;
  }
  get [$downloaded]() {
    return this.downloaded;
  }
  get [$id]() {
    return this.id;
  }
  get [$title]() {
    return this.title;
  }
  get [$totalDownloadSize]() {
    return this.totalDownloadSize;
  }
  get [$uploadTotal]() {
    return this.uploadTotal;
  }
  get [$uploaded]() {
    return this.uploaded;
  }
  [$abort]() {
    return html$.promiseToFuture(core.bool, this.abort());
  }
};
dart.addTypeTests(html$.BackgroundFetchRegistration);
const downloadTotal = Symbol("BackgroundFetchRegistration.downloadTotal");
const downloaded = Symbol("BackgroundFetchRegistration.downloaded");
const id$2 = Symbol("BackgroundFetchRegistration.id");
const title$ = Symbol("BackgroundFetchRegistration.title");
const totalDownloadSize = Symbol("BackgroundFetchRegistration.totalDownloadSize");
const uploadTotal = Symbol("BackgroundFetchRegistration.uploadTotal");
const uploaded = Symbol("BackgroundFetchRegistration.uploaded");
dart.setMethodSignature(html$.BackgroundFetchRegistration, () => ({
  __proto__: dart.getMethods(html$.BackgroundFetchRegistration.__proto__),
  [$abort]: dart.fnType(async.Future$(core.bool), [])
}));
dart.setFieldSignature(html$.BackgroundFetchRegistration, () => ({
  __proto__: dart.getFields(html$.BackgroundFetchRegistration.__proto__),
  [$downloadTotal]: dart.finalFieldType(core.int),
  [$downloaded]: dart.finalFieldType(core.int),
  [$id]: dart.finalFieldType(core.String),
  [$title]: dart.finalFieldType(core.String),
  [$totalDownloadSize]: dart.finalFieldType(core.int),
  [$uploadTotal]: dart.finalFieldType(core.int),
  [$uploaded]: dart.finalFieldType(core.int)
}));
dart.registerExtension("BackgroundFetchRegistration", html$.BackgroundFetchRegistration);
html$.BackgroundFetchSettledFetch = class BackgroundFetchSettledFetch$ extends html$.BackgroundFetchFetch {
  static new(request, response) {
    return html$.BackgroundFetchSettledFetch._create_1(request, response);
  }
  static _create_1(request, response) {
    return new BackgroundFetchSettledFetch(request, response);
  }
  get [$response]() {
    return this.response;
  }
};
dart.addTypeTests(html$.BackgroundFetchSettledFetch);
const response = Symbol("BackgroundFetchSettledFetch.response");
dart.setFieldSignature(html$.BackgroundFetchSettledFetch, () => ({
  __proto__: dart.getFields(html$.BackgroundFetchSettledFetch.__proto__),
  [$response]: dart.finalFieldType(html$._Response)
}));
dart.registerExtension("BackgroundFetchSettledFetch", html$.BackgroundFetchSettledFetch);
html$.BackgroundFetchedEvent = class BackgroundFetchedEvent$ extends html$.BackgroundFetchEvent {
  static new(type, init) {
    let init_1 = html_common.convertDartToNative_Dictionary(init);
    return html$.BackgroundFetchedEvent._create_1(type, init_1);
  }
  static _create_1(type, init) {
    return new BackgroundFetchedEvent(type, init);
  }
  get [$fetches]() {
    return this.fetches;
  }
  [$updateUI](title) {
    return html$.promiseToFuture(dart.dynamic, this.updateUI(title));
  }
};
dart.addTypeTests(html$.BackgroundFetchedEvent);
const fetches$ = Symbol("BackgroundFetchedEvent.fetches");
dart.setMethodSignature(html$.BackgroundFetchedEvent, () => ({
  __proto__: dart.getMethods(html$.BackgroundFetchedEvent.__proto__),
  [$updateUI]: dart.fnType(async.Future, [core.String])
}));
dart.setFieldSignature(html$.BackgroundFetchedEvent, () => ({
  __proto__: dart.getFields(html$.BackgroundFetchedEvent.__proto__),
  [$fetches]: dart.finalFieldType(ListOfBackgroundFetchSettledFetch())
}));
dart.registerExtension("BackgroundFetchedEvent", html$.BackgroundFetchedEvent);
html$.BarProp = class BarProp extends _interceptors.Interceptor {
  get [$visible]() {
    return this.visible;
  }
};
dart.addTypeTests(html$.BarProp);
const visible = Symbol("BarProp.visible");
dart.setFieldSignature(html$.BarProp, () => ({
  __proto__: dart.getFields(html$.BarProp.__proto__),
  [$visible]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("BarProp", html$.BarProp);
html$.BarcodeDetector = class BarcodeDetector$ extends _interceptors.Interceptor {
  static new() {
    return html$.BarcodeDetector._create_1();
  }
  static _create_1() {
    return new BarcodeDetector();
  }
  [$detect](image) {
    return html$.promiseToFuture(ListOfDetectedBarcode(), this.detect(image));
  }
};
dart.addTypeTests(html$.BarcodeDetector);
dart.setMethodSignature(html$.BarcodeDetector, () => ({
  __proto__: dart.getMethods(html$.BarcodeDetector.__proto__),
  [$detect]: dart.fnType(async.Future$(core.List$(html$.DetectedBarcode)), [dart.dynamic])
}));
dart.registerExtension("BarcodeDetector", html$.BarcodeDetector);
html$.BaseElement = class BaseElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("base");
  }
  get [$href]() {
    return this.href;
  }
  set [$href](value) {
    this.href = value;
  }
  get [$target]() {
    return this.target;
  }
  set [$target](value) {
    this.target = value;
  }
};
(html$.BaseElement.created = function() {
  this[href$0] = null;
  this[target$1] = null;
  html$.BaseElement.__proto__.created.call(this);
}).prototype = html$.BaseElement.prototype;
dart.addTypeTests(html$.BaseElement);
const href$0 = Symbol("BaseElement.href");
const target$1 = Symbol("BaseElement.target");
dart.setFieldSignature(html$.BaseElement, () => ({
  __proto__: dart.getFields(html$.BaseElement.__proto__),
  [$href]: dart.fieldType(core.String),
  [$target]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLBaseElement", html$.BaseElement);
html$.BatteryManager = class BatteryManager extends html$.EventTarget {
  get [$charging]() {
    return this.charging;
  }
  get [$chargingTime]() {
    return this.chargingTime;
  }
  get [$dischargingTime]() {
    return this.dischargingTime;
  }
  get [$level]() {
    return this.level;
  }
};
dart.addTypeTests(html$.BatteryManager);
const charging = Symbol("BatteryManager.charging");
const chargingTime = Symbol("BatteryManager.chargingTime");
const dischargingTime = Symbol("BatteryManager.dischargingTime");
const level$3 = Symbol("BatteryManager.level");
dart.setFieldSignature(html$.BatteryManager, () => ({
  __proto__: dart.getFields(html$.BatteryManager.__proto__),
  [$charging]: dart.finalFieldType(core.bool),
  [$chargingTime]: dart.finalFieldType(core.num),
  [$dischargingTime]: dart.finalFieldType(core.num),
  [$level]: dart.finalFieldType(core.num)
}));
dart.registerExtension("BatteryManager", html$.BatteryManager);
html$.BeforeInstallPromptEvent = class BeforeInstallPromptEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.BeforeInstallPromptEvent._create_1(type, eventInitDict_1);
    }
    return html$.BeforeInstallPromptEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new BeforeInstallPromptEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new BeforeInstallPromptEvent(type);
  }
  get [$platforms]() {
    return this.platforms;
  }
  get [$userChoice]() {
    return html$.promiseToFutureAsMap(this.userChoice);
  }
  [$prompt]() {
    return html$.promiseToFuture(dart.dynamic, this.prompt());
  }
};
dart.addTypeTests(html$.BeforeInstallPromptEvent);
const platforms = Symbol("BeforeInstallPromptEvent.platforms");
dart.setMethodSignature(html$.BeforeInstallPromptEvent, () => ({
  __proto__: dart.getMethods(html$.BeforeInstallPromptEvent.__proto__),
  [$prompt]: dart.fnType(async.Future, [])
}));
dart.setGetterSignature(html$.BeforeInstallPromptEvent, () => ({
  __proto__: dart.getGetters(html$.BeforeInstallPromptEvent.__proto__),
  [$userChoice]: async.Future$(core.Map$(core.String, dart.dynamic))
}));
dart.setFieldSignature(html$.BeforeInstallPromptEvent, () => ({
  __proto__: dart.getFields(html$.BeforeInstallPromptEvent.__proto__),
  [$platforms]: dart.finalFieldType(ListOfString())
}));
dart.registerExtension("BeforeInstallPromptEvent", html$.BeforeInstallPromptEvent);
html$.BeforeUnloadEvent = class BeforeUnloadEvent extends html$.Event {
  get [$returnValue]() {
    return this.returnValue;
  }
  set [$returnValue](value) {
    this.returnValue = value;
  }
};
dart.addTypeTests(html$.BeforeUnloadEvent);
dart.setGetterSignature(html$.BeforeUnloadEvent, () => ({
  __proto__: dart.getGetters(html$.BeforeUnloadEvent.__proto__),
  [$returnValue]: core.String
}));
dart.setSetterSignature(html$.BeforeUnloadEvent, () => ({
  __proto__: dart.getSetters(html$.BeforeUnloadEvent.__proto__),
  [$returnValue]: core.String
}));
dart.registerExtension("BeforeUnloadEvent", html$.BeforeUnloadEvent);
html$.Blob = class Blob extends _interceptors.Interceptor {
  get [$size]() {
    return this.size;
  }
  get [$type]() {
    return this.type;
  }
  [$slice](...args) {
    return this.slice.apply(this, args);
  }
  static new(blobParts, type, endings) {
    if (type === void 0) type = null;
    if (endings === void 0) endings = null;
    if (type == null && endings == null) {
      return html$.Blob._check(html$.Blob._create_1(blobParts));
    }
    let bag = html$.Blob._create_bag();
    if (type != null) html$.Blob._bag_set(bag, "type", type);
    if (endings != null) html$.Blob._bag_set(bag, "endings", endings);
    return html$.Blob._check(html$.Blob._create_2(blobParts, bag));
  }
  static _create_1(parts) {
    return new self.Blob(parts);
  }
  static _create_2(parts, bag) {
    return new self.Blob(parts, bag);
  }
  static _create_bag() {
    return {};
  }
  static _bag_set(bag, key, value) {
    bag[key] = value;
  }
};
dart.addTypeTests(html$.Blob);
const size = Symbol("Blob.size");
const type$4 = Symbol("Blob.type");
dart.setMethodSignature(html$.Blob, () => ({
  __proto__: dart.getMethods(html$.Blob.__proto__),
  [$slice]: dart.fnType(html$.Blob, [], [core.int, core.int, core.String])
}));
dart.setFieldSignature(html$.Blob, () => ({
  __proto__: dart.getFields(html$.Blob.__proto__),
  [$size]: dart.finalFieldType(core.int),
  [$type]: dart.finalFieldType(core.String)
}));
dart.registerExtension("Blob", html$.Blob);
html$.BlobEvent = class BlobEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.BlobEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new BlobEvent(type, eventInitDict);
  }
  get [$data]() {
    return this.data;
  }
  get [$timecode]() {
    return this.timecode;
  }
};
dart.addTypeTests(html$.BlobEvent);
const data = Symbol("BlobEvent.data");
const timecode = Symbol("BlobEvent.timecode");
dart.setFieldSignature(html$.BlobEvent, () => ({
  __proto__: dart.getFields(html$.BlobEvent.__proto__),
  [$data]: dart.finalFieldType(html$.Blob),
  [$timecode]: dart.finalFieldType(core.num)
}));
dart.registerExtension("BlobEvent", html$.BlobEvent);
html$.BluetoothRemoteGattDescriptor = class BluetoothRemoteGattDescriptor extends _interceptors.Interceptor {
  get [$characteristic]() {
    return this.characteristic;
  }
  get [$uuid]() {
    return this.uuid;
  }
  get [$value]() {
    return this.value;
  }
  [$readValue]() {
    return html$.promiseToFuture(dart.dynamic, this.readValue());
  }
  [$writeValue](value) {
    return html$.promiseToFuture(dart.dynamic, this.writeValue(value));
  }
};
dart.addTypeTests(html$.BluetoothRemoteGattDescriptor);
const characteristic = Symbol("BluetoothRemoteGattDescriptor.characteristic");
const uuid = Symbol("BluetoothRemoteGattDescriptor.uuid");
const value$0 = Symbol("BluetoothRemoteGattDescriptor.value");
dart.setMethodSignature(html$.BluetoothRemoteGattDescriptor, () => ({
  __proto__: dart.getMethods(html$.BluetoothRemoteGattDescriptor.__proto__),
  [$readValue]: dart.fnType(async.Future, []),
  [$writeValue]: dart.fnType(async.Future, [dart.dynamic])
}));
dart.setFieldSignature(html$.BluetoothRemoteGattDescriptor, () => ({
  __proto__: dart.getFields(html$.BluetoothRemoteGattDescriptor.__proto__),
  [$characteristic]: dart.finalFieldType(html$._BluetoothRemoteGATTCharacteristic),
  [$uuid]: dart.finalFieldType(core.String),
  [$value]: dart.finalFieldType(typed_data.ByteData)
}));
dart.registerExtension("BluetoothRemoteGATTDescriptor", html$.BluetoothRemoteGattDescriptor);
html$.Body = class Body extends _interceptors.Interceptor {
  get [$bodyUsed]() {
    return this.bodyUsed;
  }
  [$arrayBuffer]() {
    return html$.promiseToFuture(dart.dynamic, this.arrayBuffer());
  }
  [$blob]() {
    return html$.promiseToFuture(html$.Blob, this.blob());
  }
  [$formData]() {
    return html$.promiseToFuture(html$.FormData, this.formData());
  }
  [$json]() {
    return html$.promiseToFuture(dart.dynamic, this.json());
  }
  [$text]() {
    return html$.promiseToFuture(core.String, this.text());
  }
};
dart.addTypeTests(html$.Body);
const bodyUsed = Symbol("Body.bodyUsed");
dart.setMethodSignature(html$.Body, () => ({
  __proto__: dart.getMethods(html$.Body.__proto__),
  [$arrayBuffer]: dart.fnType(async.Future, []),
  [$blob]: dart.fnType(async.Future$(html$.Blob), []),
  [$formData]: dart.fnType(async.Future$(html$.FormData), []),
  [$json]: dart.fnType(async.Future, []),
  [$text]: dart.fnType(async.Future$(core.String), [])
}));
dart.setFieldSignature(html$.Body, () => ({
  __proto__: dart.getFields(html$.Body.__proto__),
  [$bodyUsed]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("Body", html$.Body);
html$.BodyElement = class BodyElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("body");
  }
  get [$onBlur]() {
    return html$.BodyElement.blurEvent.forElement(this);
  }
  get [$onError]() {
    return html$.BodyElement.errorEvent.forElement(this);
  }
  get [$onFocus]() {
    return html$.BodyElement.focusEvent.forElement(this);
  }
  get [$onHashChange]() {
    return html$.BodyElement.hashChangeEvent.forElement(this);
  }
  get [$onLoad]() {
    return html$.BodyElement.loadEvent.forElement(this);
  }
  get [$onMessage]() {
    return html$.BodyElement.messageEvent.forElement(this);
  }
  get [$onOffline]() {
    return html$.BodyElement.offlineEvent.forElement(this);
  }
  get [$onOnline]() {
    return html$.BodyElement.onlineEvent.forElement(this);
  }
  get [$onPopState]() {
    return html$.BodyElement.popStateEvent.forElement(this);
  }
  get [$onResize]() {
    return html$.BodyElement.resizeEvent.forElement(this);
  }
  get [$onScroll]() {
    return html$.BodyElement.scrollEvent.forElement(this);
  }
  get [$onStorage]() {
    return html$.BodyElement.storageEvent.forElement(this);
  }
  get [$onUnload]() {
    return html$.BodyElement.unloadEvent.forElement(this);
  }
};
(html$.BodyElement.created = function() {
  html$.BodyElement.__proto__.created.call(this);
}).prototype = html$.BodyElement.prototype;
dart.addTypeTests(html$.BodyElement);
html$.BodyElement[dart.implements] = () => [html$.WindowEventHandlers];
dart.setGetterSignature(html$.BodyElement, () => ({
  __proto__: dart.getGetters(html$.BodyElement.__proto__),
  [$onHashChange]: html$.ElementStream$(html$.Event),
  [$onMessage]: html$.ElementStream$(html$.MessageEvent),
  [$onOffline]: html$.ElementStream$(html$.Event),
  [$onOnline]: html$.ElementStream$(html$.Event),
  [$onPopState]: html$.ElementStream$(html$.PopStateEvent),
  [$onStorage]: html$.ElementStream$(html$.StorageEvent),
  [$onUnload]: html$.ElementStream$(html$.Event)
}));
dart.defineLazy(html$.BodyElement, {
  /*html$.BodyElement.blurEvent*/get blurEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("blur"));
  },
  /*html$.BodyElement.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.BodyElement.focusEvent*/get focusEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("focus"));
  },
  /*html$.BodyElement.hashChangeEvent*/get hashChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("hashchange"));
  },
  /*html$.BodyElement.loadEvent*/get loadEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("load"));
  },
  /*html$.BodyElement.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  },
  /*html$.BodyElement.offlineEvent*/get offlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("offline"));
  },
  /*html$.BodyElement.onlineEvent*/get onlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("online"));
  },
  /*html$.BodyElement.popStateEvent*/get popStateEvent() {
    return dart.const(new (EventStreamProviderOfPopStateEvent()).new("popstate"));
  },
  /*html$.BodyElement.resizeEvent*/get resizeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("resize"));
  },
  /*html$.BodyElement.scrollEvent*/get scrollEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("scroll"));
  },
  /*html$.BodyElement.storageEvent*/get storageEvent() {
    return dart.const(new (EventStreamProviderOfStorageEvent()).new("storage"));
  },
  /*html$.BodyElement.unloadEvent*/get unloadEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("unload"));
  }
});
dart.registerExtension("HTMLBodyElement", html$.BodyElement);
html$.BroadcastChannel = class BroadcastChannel$ extends html$.EventTarget {
  static new(name) {
    return html$.BroadcastChannel._create_1(name);
  }
  static _create_1(name) {
    return new BroadcastChannel(name);
  }
  get [$name]() {
    return this.name;
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [$postMessage](...args) {
    return this.postMessage.apply(this, args);
  }
  get [$onMessage]() {
    return html$.BroadcastChannel.messageEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.BroadcastChannel);
const name$6 = Symbol("BroadcastChannel.name");
dart.setMethodSignature(html$.BroadcastChannel, () => ({
  __proto__: dart.getMethods(html$.BroadcastChannel.__proto__),
  [$close]: dart.fnType(dart.void, []),
  [$postMessage]: dart.fnType(dart.void, [core.Object])
}));
dart.setGetterSignature(html$.BroadcastChannel, () => ({
  __proto__: dart.getGetters(html$.BroadcastChannel.__proto__),
  [$onMessage]: async.Stream$(html$.MessageEvent)
}));
dart.setFieldSignature(html$.BroadcastChannel, () => ({
  __proto__: dart.getFields(html$.BroadcastChannel.__proto__),
  [$name]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.BroadcastChannel, {
  /*html$.BroadcastChannel.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  }
});
dart.registerExtension("BroadcastChannel", html$.BroadcastChannel);
html$.BudgetState = class BudgetState extends _interceptors.Interceptor {
  get [$budgetAt]() {
    return this.budgetAt;
  }
  get [$time]() {
    return this.time;
  }
};
dart.addTypeTests(html$.BudgetState);
const budgetAt = Symbol("BudgetState.budgetAt");
const time = Symbol("BudgetState.time");
dart.setFieldSignature(html$.BudgetState, () => ({
  __proto__: dart.getFields(html$.BudgetState.__proto__),
  [$budgetAt]: dart.finalFieldType(core.num),
  [$time]: dart.finalFieldType(core.int)
}));
dart.registerExtension("BudgetState", html$.BudgetState);
html$.ButtonElement = class ButtonElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("button");
  }
  get [$autofocus]() {
    return this.autofocus;
  }
  set [$autofocus](value) {
    this.autofocus = value;
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$form]() {
    return this.form;
  }
  get [$formAction]() {
    return this.formAction;
  }
  set [$formAction](value) {
    this.formAction = value;
  }
  get [$formEnctype]() {
    return this.formEnctype;
  }
  set [$formEnctype](value) {
    this.formEnctype = value;
  }
  get [$formMethod]() {
    return this.formMethod;
  }
  set [$formMethod](value) {
    this.formMethod = value;
  }
  get [$formNoValidate]() {
    return this.formNoValidate;
  }
  set [$formNoValidate](value) {
    this.formNoValidate = value;
  }
  get [$formTarget]() {
    return this.formTarget;
  }
  set [$formTarget](value) {
    this.formTarget = value;
  }
  get [$labels]() {
    return this.labels;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
  get [$validationMessage]() {
    return this.validationMessage;
  }
  get [$validity]() {
    return this.validity;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
  get [$willValidate]() {
    return this.willValidate;
  }
  [$checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [$reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [$setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
};
(html$.ButtonElement.created = function() {
  this[autofocus] = null;
  this[disabled$] = null;
  this[form] = null;
  this[formAction] = null;
  this[formEnctype] = null;
  this[formMethod] = null;
  this[formNoValidate] = null;
  this[formTarget] = null;
  this[labels] = null;
  this[name$7] = null;
  this[type$5] = null;
  this[validationMessage] = null;
  this[validity] = null;
  this[value$1] = null;
  this[willValidate] = null;
  html$.ButtonElement.__proto__.created.call(this);
}).prototype = html$.ButtonElement.prototype;
dart.addTypeTests(html$.ButtonElement);
const autofocus = Symbol("ButtonElement.autofocus");
const disabled$ = Symbol("ButtonElement.disabled");
const form = Symbol("ButtonElement.form");
const formAction = Symbol("ButtonElement.formAction");
const formEnctype = Symbol("ButtonElement.formEnctype");
const formMethod = Symbol("ButtonElement.formMethod");
const formNoValidate = Symbol("ButtonElement.formNoValidate");
const formTarget = Symbol("ButtonElement.formTarget");
const labels = Symbol("ButtonElement.labels");
const name$7 = Symbol("ButtonElement.name");
const type$5 = Symbol("ButtonElement.type");
const validationMessage = Symbol("ButtonElement.validationMessage");
const validity = Symbol("ButtonElement.validity");
const value$1 = Symbol("ButtonElement.value");
const willValidate = Symbol("ButtonElement.willValidate");
dart.setMethodSignature(html$.ButtonElement, () => ({
  __proto__: dart.getMethods(html$.ButtonElement.__proto__),
  [$checkValidity]: dart.fnType(core.bool, []),
  [$reportValidity]: dart.fnType(core.bool, []),
  [$setCustomValidity]: dart.fnType(dart.void, [core.String])
}));
dart.setFieldSignature(html$.ButtonElement, () => ({
  __proto__: dart.getFields(html$.ButtonElement.__proto__),
  [$autofocus]: dart.fieldType(core.bool),
  [$disabled]: dart.fieldType(core.bool),
  [$form]: dart.finalFieldType(html$.FormElement),
  [$formAction]: dart.fieldType(core.String),
  [$formEnctype]: dart.fieldType(core.String),
  [$formMethod]: dart.fieldType(core.String),
  [$formNoValidate]: dart.fieldType(core.bool),
  [$formTarget]: dart.fieldType(core.String),
  [$labels]: dart.finalFieldType(ListOfNode()),
  [$name]: dart.fieldType(core.String),
  [$type]: dart.fieldType(core.String),
  [$validationMessage]: dart.finalFieldType(core.String),
  [$validity]: dart.finalFieldType(html$.ValidityState),
  [$value]: dart.fieldType(core.String),
  [$willValidate]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("HTMLButtonElement", html$.ButtonElement);
html$.CharacterData = class CharacterData extends html$.Node {
  get [$data]() {
    return this.data;
  }
  set [$data](value) {
    this.data = value;
  }
  get [$length]() {
    return this.length;
  }
  [$appendData](...args) {
    return this.appendData.apply(this, args);
  }
  [$deleteData](...args) {
    return this.deleteData.apply(this, args);
  }
  [$insertData](...args) {
    return this.insertData.apply(this, args);
  }
  [$replaceData](...args) {
    return this.replaceData.apply(this, args);
  }
  [$substringData](...args) {
    return this.substringData.apply(this, args);
  }
  [$after](...args) {
    return this.after.apply(this, args);
  }
  [$before](...args) {
    return this.before.apply(this, args);
  }
  get [$nextElementSibling]() {
    return this.nextElementSibling;
  }
  get [$previousElementSibling]() {
    return this.previousElementSibling;
  }
};
dart.addTypeTests(html$.CharacterData);
const data$0 = Symbol("CharacterData.data");
const length$0 = Symbol("CharacterData.length");
const nextElementSibling$ = Symbol("CharacterData.nextElementSibling");
const previousElementSibling$ = Symbol("CharacterData.previousElementSibling");
html$.CharacterData[dart.implements] = () => [html$.NonDocumentTypeChildNode, html$.ChildNode];
dart.setMethodSignature(html$.CharacterData, () => ({
  __proto__: dart.getMethods(html$.CharacterData.__proto__),
  [$appendData]: dart.fnType(dart.void, [core.String]),
  [$deleteData]: dart.fnType(dart.void, [core.int, core.int]),
  [$insertData]: dart.fnType(dart.void, [core.int, core.String]),
  [$replaceData]: dart.fnType(dart.void, [core.int, core.int, core.String]),
  [$substringData]: dart.fnType(core.String, [core.int, core.int]),
  [$after]: dart.fnType(dart.void, [core.Object]),
  [$before]: dart.fnType(dart.void, [core.Object])
}));
dart.setFieldSignature(html$.CharacterData, () => ({
  __proto__: dart.getFields(html$.CharacterData.__proto__),
  [$data]: dart.fieldType(core.String),
  [$length]: dart.finalFieldType(core.int),
  [$nextElementSibling]: dart.finalFieldType(html$.Element),
  [$previousElementSibling]: dart.finalFieldType(html$.Element)
}));
dart.registerExtension("CharacterData", html$.CharacterData);
html$.Text = class Text extends html$.CharacterData {
  static new(data) {
    return html$.document.createTextNode(data);
  }
  get [$assignedSlot]() {
    return this.assignedSlot;
  }
  get [$wholeText]() {
    return this.wholeText;
  }
  [$getDestinationInsertionPoints](...args) {
    return this.getDestinationInsertionPoints.apply(this, args);
  }
  [$splitText](...args) {
    return this.splitText.apply(this, args);
  }
};
dart.addTypeTests(html$.Text);
const assignedSlot$ = Symbol("Text.assignedSlot");
const wholeText = Symbol("Text.wholeText");
dart.setMethodSignature(html$.Text, () => ({
  __proto__: dart.getMethods(html$.Text.__proto__),
  [$getDestinationInsertionPoints]: dart.fnType(core.List$(html$.Node), []),
  [$splitText]: dart.fnType(html$.Text, [core.int])
}));
dart.setFieldSignature(html$.Text, () => ({
  __proto__: dart.getFields(html$.Text.__proto__),
  [$assignedSlot]: dart.finalFieldType(html$.SlotElement),
  [$wholeText]: dart.finalFieldType(core.String)
}));
dart.registerExtension("Text", html$.Text);
html$.CDataSection = class CDataSection extends html$.Text {};
dart.addTypeTests(html$.CDataSection);
dart.registerExtension("CDATASection", html$.CDataSection);
html$.CacheStorage = class CacheStorage extends _interceptors.Interceptor {
  [$delete](cacheName) {
    return html$.promiseToFuture(dart.dynamic, this.delete(cacheName));
  }
  [$has](cacheName) {
    return html$.promiseToFuture(dart.dynamic, this.has(cacheName));
  }
  [$keys]() {
    return html$.promiseToFuture(dart.dynamic, this.keys());
  }
  [$match](request, options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.match(request, options_dict));
  }
  [$open](cacheName) {
    return html$.promiseToFuture(dart.dynamic, this.open(cacheName));
  }
};
dart.addTypeTests(html$.CacheStorage);
dart.setMethodSignature(html$.CacheStorage, () => ({
  __proto__: dart.getMethods(html$.CacheStorage.__proto__),
  [$delete]: dart.fnType(async.Future, [core.String]),
  [$has]: dart.fnType(async.Future, [core.String]),
  [$keys]: dart.fnType(async.Future, []),
  [$match]: dart.fnType(async.Future, [dart.dynamic], [core.Map]),
  [$open]: dart.fnType(async.Future, [core.String])
}));
dart.registerExtension("CacheStorage", html$.CacheStorage);
html$.CanMakePaymentEvent = class CanMakePaymentEvent$ extends html$.ExtendableEvent {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.CanMakePaymentEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new CanMakePaymentEvent(type, eventInitDict);
  }
  get [$methodData]() {
    return this.methodData;
  }
  get [$modifiers]() {
    return this.modifiers;
  }
  get [$paymentRequestOrigin]() {
    return this.paymentRequestOrigin;
  }
  get [$topLevelOrigin]() {
    return this.topLevelOrigin;
  }
  [$respondWith](...args) {
    return this.respondWith.apply(this, args);
  }
};
dart.addTypeTests(html$.CanMakePaymentEvent);
const methodData = Symbol("CanMakePaymentEvent.methodData");
const modifiers = Symbol("CanMakePaymentEvent.modifiers");
const paymentRequestOrigin = Symbol("CanMakePaymentEvent.paymentRequestOrigin");
const topLevelOrigin = Symbol("CanMakePaymentEvent.topLevelOrigin");
dart.setMethodSignature(html$.CanMakePaymentEvent, () => ({
  __proto__: dart.getMethods(html$.CanMakePaymentEvent.__proto__),
  [$respondWith]: dart.fnType(dart.void, [async.Future])
}));
dart.setFieldSignature(html$.CanMakePaymentEvent, () => ({
  __proto__: dart.getFields(html$.CanMakePaymentEvent.__proto__),
  [$methodData]: dart.finalFieldType(core.List),
  [$modifiers]: dart.finalFieldType(core.List),
  [$paymentRequestOrigin]: dart.finalFieldType(core.String),
  [$topLevelOrigin]: dart.finalFieldType(core.String)
}));
dart.registerExtension("CanMakePaymentEvent", html$.CanMakePaymentEvent);
const _getCapabilities_1 = Symbol('_getCapabilities_1');
const _getConstraints_1 = Symbol('_getConstraints_1');
const _getSettings_1 = Symbol('_getSettings_1');
html$.MediaStreamTrack = class MediaStreamTrack extends html$.EventTarget {
  get [$contentHint]() {
    return this.contentHint;
  }
  set [$contentHint](value) {
    this.contentHint = value;
  }
  get [$enabled]() {
    return this.enabled;
  }
  set [$enabled](value) {
    this.enabled = value;
  }
  get [$id]() {
    return this.id;
  }
  get [$kind]() {
    return this.kind;
  }
  get [$label]() {
    return this.label;
  }
  get [$muted]() {
    return this.muted;
  }
  get [$readyState]() {
    return this.readyState;
  }
  [$applyConstraints](constraints) {
    if (constraints === void 0) constraints = null;
    let constraints_dict = null;
    if (constraints != null) {
      constraints_dict = html_common.convertDartToNative_Dictionary(constraints);
    }
    return html$.promiseToFuture(dart.dynamic, this.applyConstraints(constraints_dict));
  }
  [$clone](...args) {
    return this.clone.apply(this, args);
  }
  [$getCapabilities]() {
    return html_common.convertNativeToDart_Dictionary(this[_getCapabilities_1]());
  }
  [_getCapabilities_1](...args) {
    return this.getCapabilities.apply(this, args);
  }
  [$getConstraints]() {
    return html_common.convertNativeToDart_Dictionary(this[_getConstraints_1]());
  }
  [_getConstraints_1](...args) {
    return this.getConstraints.apply(this, args);
  }
  [$getSettings]() {
    return html_common.convertNativeToDart_Dictionary(this[_getSettings_1]());
  }
  [_getSettings_1](...args) {
    return this.getSettings.apply(this, args);
  }
  [$stop](...args) {
    return this.stop.apply(this, args);
  }
  get [$onEnded]() {
    return html$.MediaStreamTrack.endedEvent.forTarget(this);
  }
  get [$onMute]() {
    return html$.MediaStreamTrack.muteEvent.forTarget(this);
  }
  get [$onUnmute]() {
    return html$.MediaStreamTrack.unmuteEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.MediaStreamTrack);
const contentHint = Symbol("MediaStreamTrack.contentHint");
const enabled = Symbol("MediaStreamTrack.enabled");
const id$3 = Symbol("MediaStreamTrack.id");
const kind = Symbol("MediaStreamTrack.kind");
const label$ = Symbol("MediaStreamTrack.label");
const muted$ = Symbol("MediaStreamTrack.muted");
const readyState$0 = Symbol("MediaStreamTrack.readyState");
dart.setMethodSignature(html$.MediaStreamTrack, () => ({
  __proto__: dart.getMethods(html$.MediaStreamTrack.__proto__),
  [$applyConstraints]: dart.fnType(async.Future, [], [core.Map]),
  [$clone]: dart.fnType(html$.MediaStreamTrack, []),
  [$getCapabilities]: dart.fnType(core.Map, []),
  [_getCapabilities_1]: dart.fnType(dart.dynamic, []),
  [$getConstraints]: dart.fnType(core.Map, []),
  [_getConstraints_1]: dart.fnType(dart.dynamic, []),
  [$getSettings]: dart.fnType(core.Map, []),
  [_getSettings_1]: dart.fnType(dart.dynamic, []),
  [$stop]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.MediaStreamTrack, () => ({
  __proto__: dart.getGetters(html$.MediaStreamTrack.__proto__),
  [$onEnded]: async.Stream$(html$.Event),
  [$onMute]: async.Stream$(html$.Event),
  [$onUnmute]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.MediaStreamTrack, () => ({
  __proto__: dart.getFields(html$.MediaStreamTrack.__proto__),
  [$contentHint]: dart.fieldType(core.String),
  [$enabled]: dart.fieldType(core.bool),
  [$id]: dart.finalFieldType(core.String),
  [$kind]: dart.finalFieldType(core.String),
  [$label]: dart.finalFieldType(core.String),
  [$muted]: dart.finalFieldType(core.bool),
  [$readyState]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.MediaStreamTrack, {
  /*html$.MediaStreamTrack.endedEvent*/get endedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("ended"));
  },
  /*html$.MediaStreamTrack.muteEvent*/get muteEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("mute"));
  },
  /*html$.MediaStreamTrack.unmuteEvent*/get unmuteEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("unmute"));
  }
});
dart.registerExtension("MediaStreamTrack", html$.MediaStreamTrack);
html$.CanvasCaptureMediaStreamTrack = class CanvasCaptureMediaStreamTrack extends html$.MediaStreamTrack {
  get [$canvas]() {
    return this.canvas;
  }
  [$requestFrame](...args) {
    return this.requestFrame.apply(this, args);
  }
};
dart.addTypeTests(html$.CanvasCaptureMediaStreamTrack);
const canvas = Symbol("CanvasCaptureMediaStreamTrack.canvas");
dart.setMethodSignature(html$.CanvasCaptureMediaStreamTrack, () => ({
  __proto__: dart.getMethods(html$.CanvasCaptureMediaStreamTrack.__proto__),
  [$requestFrame]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(html$.CanvasCaptureMediaStreamTrack, () => ({
  __proto__: dart.getFields(html$.CanvasCaptureMediaStreamTrack.__proto__),
  [$canvas]: dart.finalFieldType(html$.CanvasElement)
}));
dart.registerExtension("CanvasCaptureMediaStreamTrack", html$.CanvasCaptureMediaStreamTrack);
const _getContext_1 = Symbol('_getContext_1');
const _getContext_2 = Symbol('_getContext_2');
const _toDataUrl = Symbol('_toDataUrl');
const _toBlob = Symbol('_toBlob');
html$.CanvasElement = class CanvasElement extends html$.HtmlElement {
  static new(opts) {
    let width = opts && 'width' in opts ? opts.width : null;
    let height = opts && 'height' in opts ? opts.height : null;
    let e = html$.document.createElement("canvas");
    if (width != null) e.width = width;
    if (height != null) e.height = height;
    return e;
  }
  get [$height]() {
    return this.height;
  }
  set [$height](value) {
    this.height = value;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
  [$captureStream](...args) {
    return this.captureStream.apply(this, args);
  }
  [$getContext](contextId, attributes) {
    if (attributes === void 0) attributes = null;
    if (attributes != null) {
      let attributes_1 = html_common.convertDartToNative_Dictionary(attributes);
      return this[_getContext_1](contextId, attributes_1);
    }
    return this[_getContext_2](contextId);
  }
  [_getContext_1](...args) {
    return this.getContext.apply(this, args);
  }
  [_getContext_2](...args) {
    return this.getContext.apply(this, args);
  }
  [_toDataUrl](...args) {
    return this.toDataURL.apply(this, args);
  }
  [$transferControlToOffscreen](...args) {
    return this.transferControlToOffscreen.apply(this, args);
  }
  get [$onWebGlContextLost]() {
    return html$.CanvasElement.webGlContextLostEvent.forElement(this);
  }
  get [$onWebGlContextRestored]() {
    return html$.CanvasElement.webGlContextRestoredEvent.forElement(this);
  }
  get [$context2D]() {
    return this.getContext("2d");
  }
  [$getContext3d](opts) {
    let alpha = opts && 'alpha' in opts ? opts.alpha : true;
    let depth = opts && 'depth' in opts ? opts.depth : true;
    let stencil = opts && 'stencil' in opts ? opts.stencil : false;
    let antialias = opts && 'antialias' in opts ? opts.antialias : true;
    let premultipliedAlpha = opts && 'premultipliedAlpha' in opts ? opts.premultipliedAlpha : true;
    let preserveDrawingBuffer = opts && 'preserveDrawingBuffer' in opts ? opts.preserveDrawingBuffer : false;
    let options = new (IdentityMapOfString$dynamic()).from(["alpha", alpha, "depth", depth, "stencil", stencil, "antialias", antialias, "premultipliedAlpha", premultipliedAlpha, "preserveDrawingBuffer", preserveDrawingBuffer]);
    let context = this[$getContext]("webgl", options);
    if (context == null) {
      context = this[$getContext]("experimental-webgl", options);
    }
    return web_gl.RenderingContext._check(context);
  }
  [$toDataUrl](type, quality) {
    if (type === void 0) type = "image/png";
    if (quality === void 0) quality = null;
    return this[_toDataUrl](type, quality);
  }
  [_toBlob](...args) {
    return this.toBlob.apply(this, args);
  }
  [$toBlob](type, arguments$0) {
    if (arguments$0 === void 0) arguments$0 = null;
    let completer = CompleterOfBlob().new();
    this[_toBlob](dart.fn(value => {
      completer.complete(value);
    }, BlobToNull()), type, arguments$0);
    return completer.future;
  }
};
(html$.CanvasElement.created = function() {
  this[height] = null;
  this[width] = null;
  html$.CanvasElement.__proto__.created.call(this);
}).prototype = html$.CanvasElement.prototype;
dart.addTypeTests(html$.CanvasElement);
const height = Symbol("CanvasElement.height");
const width = Symbol("CanvasElement.width");
html$.CanvasElement[dart.implements] = () => [html$.CanvasImageSource];
dart.setMethodSignature(html$.CanvasElement, () => ({
  __proto__: dart.getMethods(html$.CanvasElement.__proto__),
  [$captureStream]: dart.fnType(html$.MediaStream, [], [core.num]),
  [$getContext]: dart.fnType(core.Object, [core.String], [core.Map]),
  [_getContext_1]: dart.fnType(core.Object, [dart.dynamic, dart.dynamic]),
  [_getContext_2]: dart.fnType(core.Object, [dart.dynamic]),
  [_toDataUrl]: dart.fnType(core.String, [core.String], [dart.dynamic]),
  [$transferControlToOffscreen]: dart.fnType(html$.OffscreenCanvas, []),
  [$getContext3d]: dart.fnType(web_gl.RenderingContext, [], {alpha: dart.dynamic, depth: dart.dynamic, stencil: dart.dynamic, antialias: dart.dynamic, premultipliedAlpha: dart.dynamic, preserveDrawingBuffer: dart.dynamic}),
  [$toDataUrl]: dart.fnType(core.String, [], [core.String, core.num]),
  [_toBlob]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Blob]), core.String], [core.Object]),
  [$toBlob]: dart.fnType(async.Future$(html$.Blob), [core.String], [core.Object])
}));
dart.setGetterSignature(html$.CanvasElement, () => ({
  __proto__: dart.getGetters(html$.CanvasElement.__proto__),
  [$onWebGlContextLost]: html$.ElementStream$(web_gl.ContextEvent),
  [$onWebGlContextRestored]: html$.ElementStream$(web_gl.ContextEvent),
  [$context2D]: html$.CanvasRenderingContext2D
}));
dart.setFieldSignature(html$.CanvasElement, () => ({
  __proto__: dart.getFields(html$.CanvasElement.__proto__),
  [$height]: dart.fieldType(core.int),
  [$width]: dart.fieldType(core.int)
}));
dart.defineLazy(html$.CanvasElement, {
  /*html$.CanvasElement.webGlContextLostEvent*/get webGlContextLostEvent() {
    return dart.const(new (EventStreamProviderOfContextEvent()).new("webglcontextlost"));
  },
  /*html$.CanvasElement.webGlContextRestoredEvent*/get webGlContextRestoredEvent() {
    return dart.const(new (EventStreamProviderOfContextEvent()).new("webglcontextrestored"));
  }
});
dart.registerExtension("HTMLCanvasElement", html$.CanvasElement);
html$.CanvasGradient = class CanvasGradient extends _interceptors.Interceptor {
  [$addColorStop](...args) {
    return this.addColorStop.apply(this, args);
  }
};
dart.addTypeTests(html$.CanvasGradient);
dart.setMethodSignature(html$.CanvasGradient, () => ({
  __proto__: dart.getMethods(html$.CanvasGradient.__proto__),
  [$addColorStop]: dart.fnType(dart.void, [core.num, core.String])
}));
dart.registerExtension("CanvasGradient", html$.CanvasGradient);
html$.CanvasPattern = class CanvasPattern extends _interceptors.Interceptor {
  [$setTransform](...args) {
    return this.setTransform.apply(this, args);
  }
};
dart.addTypeTests(html$.CanvasPattern);
dart.setMethodSignature(html$.CanvasPattern, () => ({
  __proto__: dart.getMethods(html$.CanvasPattern.__proto__),
  [$setTransform]: dart.fnType(dart.void, [svg$.Matrix])
}));
dart.registerExtension("CanvasPattern", html$.CanvasPattern);
html$.CanvasRenderingContext = class CanvasRenderingContext extends core.Object {};
(html$.CanvasRenderingContext.new = function() {
}).prototype = html$.CanvasRenderingContext.prototype;
dart.addTypeTests(html$.CanvasRenderingContext);
const _addHitRegion_1 = Symbol('_addHitRegion_1');
const _addHitRegion_2 = Symbol('_addHitRegion_2');
const _createImageData_1 = Symbol('_createImageData_1');
const _createImageData_2 = Symbol('_createImageData_2');
const _createImageData_3 = Symbol('_createImageData_3');
const _createImageData_4 = Symbol('_createImageData_4');
const _createImageData_5 = Symbol('_createImageData_5');
const _getContextAttributes_1 = Symbol('_getContextAttributes_1');
const _getImageData_1 = Symbol('_getImageData_1');
const _getLineDash = Symbol('_getLineDash');
const _putImageData_1 = Symbol('_putImageData_1');
const _putImageData_2 = Symbol('_putImageData_2');
const _arc = Symbol('_arc');
html$.CanvasRenderingContext2D = class CanvasRenderingContext2D extends _interceptors.Interceptor {
  get [$canvas]() {
    return this.canvas;
  }
  get [$currentTransform]() {
    return this.currentTransform;
  }
  set [$currentTransform](value) {
    this.currentTransform = value;
  }
  get [$direction]() {
    return this.direction;
  }
  set [$direction](value) {
    this.direction = value;
  }
  get [$fillStyle]() {
    return this.fillStyle;
  }
  set [$fillStyle](value) {
    this.fillStyle = value;
  }
  get [$filter]() {
    return this.filter;
  }
  set [$filter](value) {
    this.filter = value;
  }
  get [$font]() {
    return this.font;
  }
  set [$font](value) {
    this.font = value;
  }
  get [$globalAlpha]() {
    return this.globalAlpha;
  }
  set [$globalAlpha](value) {
    this.globalAlpha = value;
  }
  get [$globalCompositeOperation]() {
    return this.globalCompositeOperation;
  }
  set [$globalCompositeOperation](value) {
    this.globalCompositeOperation = value;
  }
  get [$imageSmoothingEnabled]() {
    return this.imageSmoothingEnabled;
  }
  set [$imageSmoothingEnabled](value) {
    this.imageSmoothingEnabled = value;
  }
  get [$imageSmoothingQuality]() {
    return this.imageSmoothingQuality;
  }
  set [$imageSmoothingQuality](value) {
    this.imageSmoothingQuality = value;
  }
  get [$lineCap]() {
    return this.lineCap;
  }
  set [$lineCap](value) {
    this.lineCap = value;
  }
  get [$lineJoin]() {
    return this.lineJoin;
  }
  set [$lineJoin](value) {
    this.lineJoin = value;
  }
  get [$lineWidth]() {
    return this.lineWidth;
  }
  set [$lineWidth](value) {
    this.lineWidth = value;
  }
  get [$miterLimit]() {
    return this.miterLimit;
  }
  set [$miterLimit](value) {
    this.miterLimit = value;
  }
  get [$shadowBlur]() {
    return this.shadowBlur;
  }
  set [$shadowBlur](value) {
    this.shadowBlur = value;
  }
  get [$shadowColor]() {
    return this.shadowColor;
  }
  set [$shadowColor](value) {
    this.shadowColor = value;
  }
  get [$shadowOffsetX]() {
    return this.shadowOffsetX;
  }
  set [$shadowOffsetX](value) {
    this.shadowOffsetX = value;
  }
  get [$shadowOffsetY]() {
    return this.shadowOffsetY;
  }
  set [$shadowOffsetY](value) {
    this.shadowOffsetY = value;
  }
  get [$strokeStyle]() {
    return this.strokeStyle;
  }
  set [$strokeStyle](value) {
    this.strokeStyle = value;
  }
  get [$textAlign]() {
    return this.textAlign;
  }
  set [$textAlign](value) {
    this.textAlign = value;
  }
  get [$textBaseline]() {
    return this.textBaseline;
  }
  set [$textBaseline](value) {
    this.textBaseline = value;
  }
  [$addHitRegion](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[_addHitRegion_1](options_1);
      return;
    }
    this[_addHitRegion_2]();
    return;
  }
  [_addHitRegion_1](...args) {
    return this.addHitRegion.apply(this, args);
  }
  [_addHitRegion_2](...args) {
    return this.addHitRegion.apply(this, args);
  }
  [$beginPath](...args) {
    return this.beginPath.apply(this, args);
  }
  [$clearHitRegions](...args) {
    return this.clearHitRegions.apply(this, args);
  }
  [$clearRect](...args) {
    return this.clearRect.apply(this, args);
  }
  [$clip](...args) {
    return this.clip.apply(this, args);
  }
  [$createImageData](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_OR_sh, imageDataColorSettings) {
    if (sh_OR_sw === void 0) sh_OR_sw = null;
    if (imageDataColorSettings_OR_sh === void 0) imageDataColorSettings_OR_sh = null;
    if (imageDataColorSettings === void 0) imageDataColorSettings = null;
    if (html$.ImageData.is(data_OR_imagedata_OR_sw) && sh_OR_sw == null && imageDataColorSettings_OR_sh == null && imageDataColorSettings == null) {
      let imagedata_1 = html_common.convertDartToNative_ImageData(data_OR_imagedata_OR_sw);
      return html_common.convertNativeToDart_ImageData(this[_createImageData_1](imagedata_1));
    }
    if (sh_OR_sw != null && core.int.is(data_OR_imagedata_OR_sw) && imageDataColorSettings_OR_sh == null && imageDataColorSettings == null) {
      return html_common.convertNativeToDart_ImageData(this[_createImageData_2](data_OR_imagedata_OR_sw, sh_OR_sw));
    }
    if (core.Map.is(imageDataColorSettings_OR_sh) && sh_OR_sw != null && core.int.is(data_OR_imagedata_OR_sw) && imageDataColorSettings == null) {
      let imageDataColorSettings_1 = html_common.convertDartToNative_Dictionary(imageDataColorSettings_OR_sh);
      return html_common.convertNativeToDart_ImageData(this[_createImageData_3](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_1));
    }
    if (core.int.is(imageDataColorSettings_OR_sh) && sh_OR_sw != null && data_OR_imagedata_OR_sw != null && imageDataColorSettings == null) {
      return html_common.convertNativeToDart_ImageData(this[_createImageData_4](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_OR_sh));
    }
    if (imageDataColorSettings != null && core.int.is(imageDataColorSettings_OR_sh) && sh_OR_sw != null && data_OR_imagedata_OR_sw != null) {
      let imageDataColorSettings_1 = html_common.convertDartToNative_Dictionary(imageDataColorSettings);
      return html_common.convertNativeToDart_ImageData(this[_createImageData_5](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_OR_sh, imageDataColorSettings_1));
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_createImageData_1](...args) {
    return this.createImageData.apply(this, args);
  }
  [_createImageData_2](...args) {
    return this.createImageData.apply(this, args);
  }
  [_createImageData_3](...args) {
    return this.createImageData.apply(this, args);
  }
  [_createImageData_4](...args) {
    return this.createImageData.apply(this, args);
  }
  [_createImageData_5](...args) {
    return this.createImageData.apply(this, args);
  }
  [$createLinearGradient](...args) {
    return this.createLinearGradient.apply(this, args);
  }
  [$createPattern](...args) {
    return this.createPattern.apply(this, args);
  }
  [$createRadialGradient](...args) {
    return this.createRadialGradient.apply(this, args);
  }
  [$drawFocusIfNeeded](...args) {
    return this.drawFocusIfNeeded.apply(this, args);
  }
  [$fill](...args) {
    return this.fill.apply(this, args);
  }
  [$fillRect](...args) {
    return this.fillRect.apply(this, args);
  }
  [$getContextAttributes]() {
    return html_common.convertNativeToDart_Dictionary(this[_getContextAttributes_1]());
  }
  [_getContextAttributes_1](...args) {
    return this.getContextAttributes.apply(this, args);
  }
  [$getImageData](sx, sy, sw, sh) {
    return html_common.convertNativeToDart_ImageData(this[_getImageData_1](sx, sy, sw, sh));
  }
  [_getImageData_1](...args) {
    return this.getImageData.apply(this, args);
  }
  [_getLineDash](...args) {
    return this.getLineDash.apply(this, args);
  }
  [$isContextLost](...args) {
    return this.isContextLost.apply(this, args);
  }
  [$isPointInPath](...args) {
    return this.isPointInPath.apply(this, args);
  }
  [$isPointInStroke](...args) {
    return this.isPointInStroke.apply(this, args);
  }
  [$measureText](...args) {
    return this.measureText.apply(this, args);
  }
  [$putImageData](imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {
    if (dirtyX === void 0) dirtyX = null;
    if (dirtyY === void 0) dirtyY = null;
    if (dirtyWidth === void 0) dirtyWidth = null;
    if (dirtyHeight === void 0) dirtyHeight = null;
    if (dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) {
      let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata);
      this[_putImageData_1](imagedata_1, dx, dy);
      return;
    }
    if (dirtyHeight != null && dirtyWidth != null && dirtyY != null && dirtyX != null) {
      let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata);
      this[_putImageData_2](imagedata_1, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_putImageData_1](...args) {
    return this.putImageData.apply(this, args);
  }
  [_putImageData_2](...args) {
    return this.putImageData.apply(this, args);
  }
  [$removeHitRegion](...args) {
    return this.removeHitRegion.apply(this, args);
  }
  [$resetTransform](...args) {
    return this.resetTransform.apply(this, args);
  }
  [$restore](...args) {
    return this.restore.apply(this, args);
  }
  [$rotate](...args) {
    return this.rotate.apply(this, args);
  }
  [$save](...args) {
    return this.save.apply(this, args);
  }
  [$scale](...args) {
    return this.scale.apply(this, args);
  }
  [$scrollPathIntoView](...args) {
    return this.scrollPathIntoView.apply(this, args);
  }
  [$setTransform](...args) {
    return this.setTransform.apply(this, args);
  }
  [$stroke](...args) {
    return this.stroke.apply(this, args);
  }
  [$strokeRect](...args) {
    return this.strokeRect.apply(this, args);
  }
  [$strokeText](...args) {
    return this.strokeText.apply(this, args);
  }
  [$transform](...args) {
    return this.transform.apply(this, args);
  }
  [$translate](...args) {
    return this.translate.apply(this, args);
  }
  [_arc](...args) {
    return this.arc.apply(this, args);
  }
  [$arcTo](...args) {
    return this.arcTo.apply(this, args);
  }
  [$bezierCurveTo](...args) {
    return this.bezierCurveTo.apply(this, args);
  }
  [$closePath](...args) {
    return this.closePath.apply(this, args);
  }
  [$ellipse](...args) {
    return this.ellipse.apply(this, args);
  }
  [$lineTo](...args) {
    return this.lineTo.apply(this, args);
  }
  [$moveTo](...args) {
    return this.moveTo.apply(this, args);
  }
  [$quadraticCurveTo](...args) {
    return this.quadraticCurveTo.apply(this, args);
  }
  [$rect](...args) {
    return this.rect.apply(this, args);
  }
  [$createImageDataFromImageData](imagedata) {
    return this.createImageData(imagedata);
  }
  [$setFillColorRgb](r, g, b, a) {
    if (a === void 0) a = 1;
    this.fillStyle = "rgba(" + dart.str(r) + ", " + dart.str(g) + ", " + dart.str(b) + ", " + dart.str(a) + ")";
  }
  [$setFillColorHsl](h, s, l, a) {
    if (a === void 0) a = 1;
    this.fillStyle = "hsla(" + dart.str(h) + ", " + dart.str(s) + "%, " + dart.str(l) + "%, " + dart.str(a) + ")";
  }
  [$setStrokeColorRgb](r, g, b, a) {
    if (a === void 0) a = 1;
    this.strokeStyle = "rgba(" + dart.str(r) + ", " + dart.str(g) + ", " + dart.str(b) + ", " + dart.str(a) + ")";
  }
  [$setStrokeColorHsl](h, s, l, a) {
    if (a === void 0) a = 1;
    this.strokeStyle = "hsla(" + dart.str(h) + ", " + dart.str(s) + "%, " + dart.str(l) + "%, " + dart.str(a) + ")";
  }
  [$arc](x, y, radius, startAngle, endAngle, anticlockwise) {
    if (anticlockwise === void 0) anticlockwise = false;
    this.arc(x, y, radius, startAngle, endAngle, anticlockwise);
  }
  [$createPatternFromImage](image, repetitionType) {
    return this.createPattern(image, repetitionType);
  }
  [$drawImageToRect](source, destRect, opts) {
    let sourceRect = opts && 'sourceRect' in opts ? opts.sourceRect : null;
    if (sourceRect == null) {
      this[$drawImageScaled](source, destRect[$left], destRect[$top], destRect[$width], destRect[$height]);
    } else {
      this[$drawImageScaledFromSource](source, sourceRect[$left], sourceRect[$top], sourceRect[$width], sourceRect[$height], destRect[$left], destRect[$top], destRect[$width], destRect[$height]);
    }
  }
  [$drawImage](...args) {
    return this.drawImage.apply(this, args);
  }
  [$drawImageScaled](...args) {
    return this.drawImage.apply(this, args);
  }
  [$drawImageScaledFromSource](...args) {
    return this.drawImage.apply(this, args);
  }
  get [$lineDashOffset]() {
    return this.lineDashOffset || this.webkitLineDashOffset;
  }
  set [$lineDashOffset](value) {
    typeof this.lineDashOffset != "undefined" ? this.lineDashOffset = value : this.webkitLineDashOffset = value;
  }
  [$getLineDash]() {
    if (!!this.getLineDash) {
      return this.getLineDash();
    } else if (!!this.webkitLineDash) {
      return this.webkitLineDash;
    }
  }
  [$setLineDash](dash) {
    if (!!this.setLineDash) {
      this.setLineDash(dash);
    } else if (!!this.webkitLineDash) {
      this.webkitLineDash = dash;
    }
  }
  [$fillText](text, x, y, maxWidth) {
    if (maxWidth === void 0) maxWidth = null;
    if (maxWidth != null) {
      this.fillText(text, x, y, maxWidth);
    } else {
      this.fillText(text, x, y);
    }
  }
  get [$backingStorePixelRatio]() {
    return 1.0;
  }
};
dart.addTypeTests(html$.CanvasRenderingContext2D);
const canvas$ = Symbol("CanvasRenderingContext2D.canvas");
const currentTransform = Symbol("CanvasRenderingContext2D.currentTransform");
const direction$0 = Symbol("CanvasRenderingContext2D.direction");
const fillStyle = Symbol("CanvasRenderingContext2D.fillStyle");
const filter = Symbol("CanvasRenderingContext2D.filter");
const font = Symbol("CanvasRenderingContext2D.font");
const globalAlpha = Symbol("CanvasRenderingContext2D.globalAlpha");
const globalCompositeOperation = Symbol("CanvasRenderingContext2D.globalCompositeOperation");
const imageSmoothingEnabled = Symbol("CanvasRenderingContext2D.imageSmoothingEnabled");
const imageSmoothingQuality = Symbol("CanvasRenderingContext2D.imageSmoothingQuality");
const lineCap = Symbol("CanvasRenderingContext2D.lineCap");
const lineJoin = Symbol("CanvasRenderingContext2D.lineJoin");
const lineWidth = Symbol("CanvasRenderingContext2D.lineWidth");
const miterLimit = Symbol("CanvasRenderingContext2D.miterLimit");
const shadowBlur = Symbol("CanvasRenderingContext2D.shadowBlur");
const shadowColor = Symbol("CanvasRenderingContext2D.shadowColor");
const shadowOffsetX = Symbol("CanvasRenderingContext2D.shadowOffsetX");
const shadowOffsetY = Symbol("CanvasRenderingContext2D.shadowOffsetY");
const strokeStyle = Symbol("CanvasRenderingContext2D.strokeStyle");
const textAlign = Symbol("CanvasRenderingContext2D.textAlign");
const textBaseline = Symbol("CanvasRenderingContext2D.textBaseline");
html$.CanvasRenderingContext2D[dart.implements] = () => [html$.CanvasRenderingContext];
dart.setMethodSignature(html$.CanvasRenderingContext2D, () => ({
  __proto__: dart.getMethods(html$.CanvasRenderingContext2D.__proto__),
  [$addHitRegion]: dart.fnType(dart.void, [], [core.Map]),
  [_addHitRegion_1]: dart.fnType(dart.void, [dart.dynamic]),
  [_addHitRegion_2]: dart.fnType(dart.void, []),
  [$beginPath]: dart.fnType(dart.void, []),
  [$clearHitRegions]: dart.fnType(dart.void, []),
  [$clearRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$clip]: dart.fnType(dart.void, [], [dart.dynamic, core.String]),
  [$createImageData]: dart.fnType(html$.ImageData, [dart.dynamic], [core.int, dart.dynamic, core.Map]),
  [_createImageData_1]: dart.fnType(dart.dynamic, [dart.dynamic]),
  [_createImageData_2]: dart.fnType(dart.dynamic, [core.int, dart.dynamic]),
  [_createImageData_3]: dart.fnType(dart.dynamic, [core.int, dart.dynamic, dart.dynamic]),
  [_createImageData_4]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic, core.int]),
  [_createImageData_5]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic, core.int, dart.dynamic]),
  [$createLinearGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num]),
  [$createPattern]: dart.fnType(html$.CanvasPattern, [core.Object, core.String]),
  [$createRadialGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$drawFocusIfNeeded]: dart.fnType(dart.void, [dart.dynamic], [html$.Element]),
  [$fill]: dart.fnType(dart.void, [], [dart.dynamic, core.String]),
  [$fillRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$getContextAttributes]: dart.fnType(core.Map, []),
  [_getContextAttributes_1]: dart.fnType(dart.dynamic, []),
  [$getImageData]: dart.fnType(html$.ImageData, [core.int, core.int, core.int, core.int]),
  [_getImageData_1]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_getLineDash]: dart.fnType(core.List$(core.num), []),
  [$isContextLost]: dart.fnType(core.bool, []),
  [$isPointInPath]: dart.fnType(core.bool, [dart.dynamic, core.num], [dart.dynamic, core.String]),
  [$isPointInStroke]: dart.fnType(core.bool, [dart.dynamic, core.num], [core.num]),
  [$measureText]: dart.fnType(html$.TextMetrics, [core.String]),
  [$putImageData]: dart.fnType(dart.void, [html$.ImageData, core.int, core.int], [core.int, core.int, core.int, core.int]),
  [_putImageData_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
  [_putImageData_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [$removeHitRegion]: dart.fnType(dart.void, [core.String]),
  [$resetTransform]: dart.fnType(dart.void, []),
  [$restore]: dart.fnType(dart.void, []),
  [$rotate]: dart.fnType(dart.void, [core.num]),
  [$save]: dart.fnType(dart.void, []),
  [$scale]: dart.fnType(dart.void, [core.num, core.num]),
  [$scrollPathIntoView]: dart.fnType(dart.void, [], [html$.Path2D]),
  [$setTransform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$stroke]: dart.fnType(dart.void, [], [html$.Path2D]),
  [$strokeRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$strokeText]: dart.fnType(dart.void, [core.String, core.num, core.num], [core.num]),
  [$transform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$translate]: dart.fnType(dart.void, [core.num, core.num]),
  [_arc]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.bool]),
  [$arcTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num]),
  [$bezierCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$closePath]: dart.fnType(dart.void, []),
  [$ellipse]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.bool]),
  [$lineTo]: dart.fnType(dart.void, [core.num, core.num]),
  [$moveTo]: dart.fnType(dart.void, [core.num, core.num]),
  [$quadraticCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$rect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$createImageDataFromImageData]: dart.fnType(html$.ImageData, [html$.ImageData]),
  [$setFillColorRgb]: dart.fnType(dart.void, [core.int, core.int, core.int], [core.num]),
  [$setFillColorHsl]: dart.fnType(dart.void, [core.int, core.num, core.num], [core.num]),
  [$setStrokeColorRgb]: dart.fnType(dart.void, [core.int, core.int, core.int], [core.num]),
  [$setStrokeColorHsl]: dart.fnType(dart.void, [core.int, core.num, core.num], [core.num]),
  [$arc]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num], [core.bool]),
  [$createPatternFromImage]: dart.fnType(html$.CanvasPattern, [html$.ImageElement, core.String]),
  [$drawImageToRect]: dart.fnType(dart.void, [html$.CanvasImageSource, math.Rectangle$(core.num)], {sourceRect: math.Rectangle$(core.num)}),
  [$drawImage]: dart.fnType(dart.void, [html$.CanvasImageSource, core.num, core.num]),
  [$drawImageScaled]: dart.fnType(dart.void, [html$.CanvasImageSource, core.num, core.num, core.num, core.num]),
  [$drawImageScaledFromSource]: dart.fnType(dart.void, [html$.CanvasImageSource, core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.num]),
  [$getLineDash]: dart.fnType(core.List$(core.num), []),
  [$setLineDash]: dart.fnType(dart.void, [core.List$(core.num)]),
  [$fillText]: dart.fnType(dart.void, [core.String, core.num, core.num], [core.num])
}));
dart.setGetterSignature(html$.CanvasRenderingContext2D, () => ({
  __proto__: dart.getGetters(html$.CanvasRenderingContext2D.__proto__),
  [$lineDashOffset]: core.num,
  [$backingStorePixelRatio]: core.double
}));
dart.setSetterSignature(html$.CanvasRenderingContext2D, () => ({
  __proto__: dart.getSetters(html$.CanvasRenderingContext2D.__proto__),
  [$lineDashOffset]: core.num
}));
dart.setFieldSignature(html$.CanvasRenderingContext2D, () => ({
  __proto__: dart.getFields(html$.CanvasRenderingContext2D.__proto__),
  [$canvas]: dart.finalFieldType(html$.CanvasElement),
  [$currentTransform]: dart.fieldType(svg$.Matrix),
  [$direction]: dart.fieldType(core.String),
  [$fillStyle]: dart.fieldType(core.Object),
  [$filter]: dart.fieldType(core.String),
  [$font]: dart.fieldType(core.String),
  [$globalAlpha]: dart.fieldType(core.num),
  [$globalCompositeOperation]: dart.fieldType(core.String),
  [$imageSmoothingEnabled]: dart.fieldType(core.bool),
  [$imageSmoothingQuality]: dart.fieldType(core.String),
  [$lineCap]: dart.fieldType(core.String),
  [$lineJoin]: dart.fieldType(core.String),
  [$lineWidth]: dart.fieldType(core.num),
  [$miterLimit]: dart.fieldType(core.num),
  [$shadowBlur]: dart.fieldType(core.num),
  [$shadowColor]: dart.fieldType(core.String),
  [$shadowOffsetX]: dart.fieldType(core.num),
  [$shadowOffsetY]: dart.fieldType(core.num),
  [$strokeStyle]: dart.fieldType(core.Object),
  [$textAlign]: dart.fieldType(core.String),
  [$textBaseline]: dart.fieldType(core.String)
}));
dart.registerExtension("CanvasRenderingContext2D", html$.CanvasRenderingContext2D);
html$.ChildNode = class ChildNode extends _interceptors.Interceptor {};
dart.addTypeTests(html$.ChildNode);
html$.Client = class Client extends _interceptors.Interceptor {
  get [$frameType]() {
    return this.frameType;
  }
  get [$id]() {
    return this.id;
  }
  get [$type]() {
    return this.type;
  }
  get [$url]() {
    return this.url;
  }
  [$postMessage](...args) {
    return this.postMessage.apply(this, args);
  }
};
dart.addTypeTests(html$.Client);
const frameType = Symbol("Client.frameType");
const id$4 = Symbol("Client.id");
const type$6 = Symbol("Client.type");
const url$ = Symbol("Client.url");
dart.setMethodSignature(html$.Client, () => ({
  __proto__: dart.getMethods(html$.Client.__proto__),
  [$postMessage]: dart.fnType(dart.void, [core.Object], [core.List$(core.Object)])
}));
dart.setFieldSignature(html$.Client, () => ({
  __proto__: dart.getFields(html$.Client.__proto__),
  [$frameType]: dart.finalFieldType(core.String),
  [$id]: dart.finalFieldType(core.String),
  [$type]: dart.finalFieldType(core.String),
  [$url]: dart.finalFieldType(core.String)
}));
dart.registerExtension("Client", html$.Client);
html$.Clients = class Clients extends _interceptors.Interceptor {
  [$claim]() {
    return html$.promiseToFuture(dart.dynamic, this.claim());
  }
  [$get](id) {
    return html$.promiseToFuture(dart.dynamic, this.get(id));
  }
  [$matchAll](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(ListOfClient(), this.matchAll(options_dict));
  }
  [$openWindow](url) {
    return html$.promiseToFuture(html$.WindowClient, this.openWindow(url));
  }
};
dart.addTypeTests(html$.Clients);
dart.setMethodSignature(html$.Clients, () => ({
  __proto__: dart.getMethods(html$.Clients.__proto__),
  [$claim]: dart.fnType(async.Future, []),
  [$get]: dart.fnType(async.Future, [core.String]),
  [$matchAll]: dart.fnType(async.Future$(core.List$(html$.Client)), [], [core.Map]),
  [$openWindow]: dart.fnType(async.Future$(html$.WindowClient), [core.String])
}));
dart.registerExtension("Clients", html$.Clients);
html$.ClipboardEvent = class ClipboardEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.ClipboardEvent._create_1(type, eventInitDict_1);
    }
    return html$.ClipboardEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ClipboardEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ClipboardEvent(type);
  }
  get [$clipboardData]() {
    return this.clipboardData;
  }
};
dart.addTypeTests(html$.ClipboardEvent);
const clipboardData = Symbol("ClipboardEvent.clipboardData");
dart.setFieldSignature(html$.ClipboardEvent, () => ({
  __proto__: dart.getFields(html$.ClipboardEvent.__proto__),
  [$clipboardData]: dart.finalFieldType(html$.DataTransfer)
}));
dart.registerExtension("ClipboardEvent", html$.ClipboardEvent);
html$.CloseEvent = class CloseEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.CloseEvent._create_1(type, eventInitDict_1);
    }
    return html$.CloseEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new CloseEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new CloseEvent(type);
  }
  get [$code]() {
    return this.code;
  }
  get [$reason]() {
    return this.reason;
  }
  get [$wasClean]() {
    return this.wasClean;
  }
};
dart.addTypeTests(html$.CloseEvent);
const code = Symbol("CloseEvent.code");
const reason$ = Symbol("CloseEvent.reason");
const wasClean = Symbol("CloseEvent.wasClean");
dart.setFieldSignature(html$.CloseEvent, () => ({
  __proto__: dart.getFields(html$.CloseEvent.__proto__),
  [$code]: dart.finalFieldType(core.int),
  [$reason]: dart.finalFieldType(core.String),
  [$wasClean]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("CloseEvent", html$.CloseEvent);
html$.Comment = class Comment extends html$.CharacterData {
  static new(data) {
    if (data === void 0) data = null;
    return html$.document.createComment(data == null ? "" : data);
  }
};
dart.addTypeTests(html$.Comment);
dart.registerExtension("Comment", html$.Comment);
const _initCompositionEvent = Symbol('_initCompositionEvent');
const _initUIEvent = Symbol('_initUIEvent');
const _get_view = Symbol('_get_view');
const _which = Symbol('_which');
html$.UIEvent = class UIEvent$ extends html$.Event {
  static new(type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let detail = opts && 'detail' in opts ? opts.detail : 0;
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    if (view == null) {
      view = html$.window;
    }
    let e = html$.UIEvent._check(html$.document[_createEvent]("UIEvent"));
    e[_initUIEvent](type, canBubble, cancelable, view, detail);
    return e;
  }
  static __(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.UIEvent._create_1(type, eventInitDict_1);
    }
    return html$.UIEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new UIEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new UIEvent(type);
  }
  get [$detail]() {
    return this.detail;
  }
  get [$sourceCapabilities]() {
    return this.sourceCapabilities;
  }
  get [$view]() {
    return html$._convertNativeToDart_Window(this[_get_view]);
  }
  get [_get_view]() {
    return this.view;
  }
  get [_which]() {
    return this.which;
  }
  [_initUIEvent](...args) {
    return this.initUIEvent.apply(this, args);
  }
};
dart.addTypeTests(html$.UIEvent);
const detail = Symbol("UIEvent.detail");
const sourceCapabilities = Symbol("UIEvent.sourceCapabilities");
dart.setMethodSignature(html$.UIEvent, () => ({
  __proto__: dart.getMethods(html$.UIEvent.__proto__),
  [_initUIEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.int])
}));
dart.setGetterSignature(html$.UIEvent, () => ({
  __proto__: dart.getGetters(html$.UIEvent.__proto__),
  [$view]: html$.WindowBase
}));
dart.setFieldSignature(html$.UIEvent, () => ({
  __proto__: dart.getFields(html$.UIEvent.__proto__),
  [$detail]: dart.finalFieldType(core.int),
  [$sourceCapabilities]: dart.finalFieldType(html$.InputDeviceCapabilities),
  [_get_view]: dart.finalFieldType(dart.dynamic),
  [_which]: dart.finalFieldType(core.int)
}));
dart.registerExtension("UIEvent", html$.UIEvent);
html$.CompositionEvent = class CompositionEvent$ extends html$.UIEvent {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
    let view = opts && 'view' in opts ? opts.view : null;
    let data = opts && 'data' in opts ? opts.data : null;
    let locale = opts && 'locale' in opts ? opts.locale : null;
    if (view == null) {
      view = html$.window;
    }
    let e = html$.CompositionEvent._check(html$.document[_createEvent]("CompositionEvent"));
    if (dart.test(html_common.Device.isFirefox)) {
      e.initCompositionEvent(type, canBubble, cancelable, view, data, locale);
    } else {
      e[_initCompositionEvent](type, canBubble, cancelable, view, data);
    }
    return e;
  }
  static __(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.CompositionEvent._create_1(type, eventInitDict_1);
    }
    return html$.CompositionEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new CompositionEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new CompositionEvent(type);
  }
  get [$data]() {
    return this.data;
  }
  [_initCompositionEvent](...args) {
    return this.initCompositionEvent.apply(this, args);
  }
};
dart.addTypeTests(html$.CompositionEvent);
const data$1 = Symbol("CompositionEvent.data");
dart.setMethodSignature(html$.CompositionEvent, () => ({
  __proto__: dart.getMethods(html$.CompositionEvent.__proto__),
  [_initCompositionEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.String])
}));
dart.setFieldSignature(html$.CompositionEvent, () => ({
  __proto__: dart.getFields(html$.CompositionEvent.__proto__),
  [$data]: dart.finalFieldType(core.String)
}));
dart.registerExtension("CompositionEvent", html$.CompositionEvent);
html$.ContentElement = class ContentElement extends html$.HtmlElement {
  static new() {
    return html$.ContentElement._check(html$.document[$createElement]("content"));
  }
  static get supported() {
    return html$.Element.isTagSupported("content");
  }
  get [$select]() {
    return this.select;
  }
  set [$select](value) {
    this.select = value;
  }
  [$getDistributedNodes](...args) {
    return this.getDistributedNodes.apply(this, args);
  }
};
(html$.ContentElement.created = function() {
  this[select] = null;
  html$.ContentElement.__proto__.created.call(this);
}).prototype = html$.ContentElement.prototype;
dart.addTypeTests(html$.ContentElement);
const select = Symbol("ContentElement.select");
dart.setMethodSignature(html$.ContentElement, () => ({
  __proto__: dart.getMethods(html$.ContentElement.__proto__),
  [$getDistributedNodes]: dart.fnType(core.List$(html$.Node), [])
}));
dart.setFieldSignature(html$.ContentElement, () => ({
  __proto__: dart.getFields(html$.ContentElement.__proto__),
  [$select]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLContentElement", html$.ContentElement);
html$.CookieStore = class CookieStore extends _interceptors.Interceptor {
  [$getAll](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.getAll(options_dict));
  }
  [$set](name, value, options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.set(name, value, options_dict));
  }
};
dart.addTypeTests(html$.CookieStore);
dart.setMethodSignature(html$.CookieStore, () => ({
  __proto__: dart.getMethods(html$.CookieStore.__proto__),
  [$getAll]: dart.fnType(async.Future, [], [core.Map]),
  [$set]: dart.fnType(async.Future, [core.String, core.String], [core.Map])
}));
dart.registerExtension("CookieStore", html$.CookieStore);
html$.Coordinates = class Coordinates extends _interceptors.Interceptor {
  get [$accuracy]() {
    return this.accuracy;
  }
  get [$altitude]() {
    return this.altitude;
  }
  get [$altitudeAccuracy]() {
    return this.altitudeAccuracy;
  }
  get [$heading]() {
    return this.heading;
  }
  get [$latitude]() {
    return this.latitude;
  }
  get [$longitude]() {
    return this.longitude;
  }
  get [$speed]() {
    return this.speed;
  }
};
dart.addTypeTests(html$.Coordinates);
const accuracy = Symbol("Coordinates.accuracy");
const altitude = Symbol("Coordinates.altitude");
const altitudeAccuracy = Symbol("Coordinates.altitudeAccuracy");
const heading = Symbol("Coordinates.heading");
const latitude = Symbol("Coordinates.latitude");
const longitude = Symbol("Coordinates.longitude");
const speed = Symbol("Coordinates.speed");
dart.setFieldSignature(html$.Coordinates, () => ({
  __proto__: dart.getFields(html$.Coordinates.__proto__),
  [$accuracy]: dart.finalFieldType(core.num),
  [$altitude]: dart.finalFieldType(core.num),
  [$altitudeAccuracy]: dart.finalFieldType(core.num),
  [$heading]: dart.finalFieldType(core.num),
  [$latitude]: dart.finalFieldType(core.num),
  [$longitude]: dart.finalFieldType(core.num),
  [$speed]: dart.finalFieldType(core.num)
}));
dart.registerExtension("Coordinates", html$.Coordinates);
html$.Credential = class Credential extends _interceptors.Interceptor {
  get [$id]() {
    return this.id;
  }
  get [$type]() {
    return this.type;
  }
};
dart.addTypeTests(html$.Credential);
const id$5 = Symbol("Credential.id");
const type$7 = Symbol("Credential.type");
dart.setFieldSignature(html$.Credential, () => ({
  __proto__: dart.getFields(html$.Credential.__proto__),
  [$id]: dart.finalFieldType(core.String),
  [$type]: dart.finalFieldType(core.String)
}));
dart.registerExtension("Credential", html$.Credential);
html$.CredentialUserData = class CredentialUserData extends _interceptors.Interceptor {
  get [$iconUrl]() {
    return this.iconURL;
  }
  get [$name]() {
    return this.name;
  }
};
dart.addTypeTests(html$.CredentialUserData);
const iconUrl = Symbol("CredentialUserData.iconUrl");
const name$8 = Symbol("CredentialUserData.name");
dart.setFieldSignature(html$.CredentialUserData, () => ({
  __proto__: dart.getFields(html$.CredentialUserData.__proto__),
  [$iconUrl]: dart.finalFieldType(core.String),
  [$name]: dart.finalFieldType(core.String)
}));
dart.registerExtension("CredentialUserData", html$.CredentialUserData);
html$.CredentialsContainer = class CredentialsContainer extends _interceptors.Interceptor {
  [$create](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.create(options_dict));
  }
  [$get](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.get(options_dict));
  }
  [$preventSilentAccess]() {
    return html$.promiseToFuture(dart.dynamic, this.preventSilentAccess());
  }
  [$requireUserMediation]() {
    return html$.promiseToFuture(dart.dynamic, this.requireUserMediation());
  }
  [$store](credential) {
    return html$.promiseToFuture(dart.dynamic, this.store(credential));
  }
};
dart.addTypeTests(html$.CredentialsContainer);
dart.setMethodSignature(html$.CredentialsContainer, () => ({
  __proto__: dart.getMethods(html$.CredentialsContainer.__proto__),
  [$create]: dart.fnType(async.Future, [], [core.Map]),
  [$get]: dart.fnType(async.Future, [], [core.Map]),
  [$preventSilentAccess]: dart.fnType(async.Future, []),
  [$requireUserMediation]: dart.fnType(async.Future, []),
  [$store]: dart.fnType(async.Future, [html$.Credential])
}));
dart.registerExtension("CredentialsContainer", html$.CredentialsContainer);
const _getRandomValues = Symbol('_getRandomValues');
html$.Crypto = class Crypto extends _interceptors.Interceptor {
  [$getRandomValues](array) {
    return this[_getRandomValues](array);
  }
  static get supported() {
    return !!(window.crypto && window.crypto.getRandomValues);
  }
  get [$subtle]() {
    return this.subtle;
  }
  [_getRandomValues](...args) {
    return this.getRandomValues.apply(this, args);
  }
};
dart.addTypeTests(html$.Crypto);
const subtle = Symbol("Crypto.subtle");
dart.setMethodSignature(html$.Crypto, () => ({
  __proto__: dart.getMethods(html$.Crypto.__proto__),
  [$getRandomValues]: dart.fnType(typed_data.TypedData, [typed_data.TypedData]),
  [_getRandomValues]: dart.fnType(typed_data.TypedData, [typed_data.TypedData])
}));
dart.setFieldSignature(html$.Crypto, () => ({
  __proto__: dart.getFields(html$.Crypto.__proto__),
  [$subtle]: dart.finalFieldType(html$._SubtleCrypto)
}));
dart.registerExtension("Crypto", html$.Crypto);
html$.CryptoKey = class CryptoKey extends _interceptors.Interceptor {
  get [$algorithm]() {
    return this.algorithm;
  }
  get [$extractable]() {
    return this.extractable;
  }
  get [$type]() {
    return this.type;
  }
  get [$usages]() {
    return this.usages;
  }
};
dart.addTypeTests(html$.CryptoKey);
const algorithm = Symbol("CryptoKey.algorithm");
const extractable = Symbol("CryptoKey.extractable");
const type$8 = Symbol("CryptoKey.type");
const usages = Symbol("CryptoKey.usages");
dart.setFieldSignature(html$.CryptoKey, () => ({
  __proto__: dart.getFields(html$.CryptoKey.__proto__),
  [$algorithm]: dart.finalFieldType(core.Object),
  [$extractable]: dart.finalFieldType(core.bool),
  [$type]: dart.finalFieldType(core.String),
  [$usages]: dart.finalFieldType(core.Object)
}));
dart.registerExtension("CryptoKey", html$.CryptoKey);
html$.Css = class Css extends _interceptors.Interceptor {
  static registerProperty(descriptor) {
    let descriptor_1 = html_common.convertDartToNative_Dictionary(descriptor);
    dart.global.CSS.registerProperty(descriptor_1);
    return;
  }
};
dart.addTypeTests(html$.Css);
dart.defineLazy(html$.Css, {
  /*html$.Css.paintWorklet*/get paintWorklet() {
    return null;
  }
});
dart.registerExtension("CSS", html$.Css);
html$.CssRule = class CssRule extends _interceptors.Interceptor {
  get [$cssText]() {
    return this.cssText;
  }
  set [$cssText](value) {
    this.cssText = value;
  }
  get [$parentRule]() {
    return this.parentRule;
  }
  get [$parentStyleSheet]() {
    return this.parentStyleSheet;
  }
  get [$type]() {
    return this.type;
  }
};
dart.addTypeTests(html$.CssRule);
const cssText = Symbol("CssRule.cssText");
const parentRule = Symbol("CssRule.parentRule");
const parentStyleSheet = Symbol("CssRule.parentStyleSheet");
const type$9 = Symbol("CssRule.type");
dart.setFieldSignature(html$.CssRule, () => ({
  __proto__: dart.getFields(html$.CssRule.__proto__),
  [$cssText]: dart.fieldType(core.String),
  [$parentRule]: dart.finalFieldType(html$.CssRule),
  [$parentStyleSheet]: dart.finalFieldType(html$.CssStyleSheet),
  [$type]: dart.finalFieldType(core.int)
}));
dart.defineLazy(html$.CssRule, {
  /*html$.CssRule.CHARSET_RULE*/get CHARSET_RULE() {
    return 2;
  },
  /*html$.CssRule.FONT_FACE_RULE*/get FONT_FACE_RULE() {
    return 5;
  },
  /*html$.CssRule.IMPORT_RULE*/get IMPORT_RULE() {
    return 3;
  },
  /*html$.CssRule.KEYFRAMES_RULE*/get KEYFRAMES_RULE() {
    return 7;
  },
  /*html$.CssRule.KEYFRAME_RULE*/get KEYFRAME_RULE() {
    return 8;
  },
  /*html$.CssRule.MEDIA_RULE*/get MEDIA_RULE() {
    return 4;
  },
  /*html$.CssRule.NAMESPACE_RULE*/get NAMESPACE_RULE() {
    return 10;
  },
  /*html$.CssRule.PAGE_RULE*/get PAGE_RULE() {
    return 6;
  },
  /*html$.CssRule.STYLE_RULE*/get STYLE_RULE() {
    return 1;
  },
  /*html$.CssRule.SUPPORTS_RULE*/get SUPPORTS_RULE() {
    return 12;
  },
  /*html$.CssRule.VIEWPORT_RULE*/get VIEWPORT_RULE() {
    return 15;
  }
});
dart.registerExtension("CSSRule", html$.CssRule);
html$.CssCharsetRule = class CssCharsetRule extends html$.CssRule {
  get [$encoding]() {
    return this.encoding;
  }
  set [$encoding](value) {
    this.encoding = value;
  }
};
dart.addTypeTests(html$.CssCharsetRule);
const encoding$ = Symbol("CssCharsetRule.encoding");
dart.setFieldSignature(html$.CssCharsetRule, () => ({
  __proto__: dart.getFields(html$.CssCharsetRule.__proto__),
  [$encoding]: dart.fieldType(core.String)
}));
dart.registerExtension("CSSCharsetRule", html$.CssCharsetRule);
html$.CssGroupingRule = class CssGroupingRule extends html$.CssRule {
  get [$cssRules]() {
    return this.cssRules;
  }
  [$deleteRule](...args) {
    return this.deleteRule.apply(this, args);
  }
  [$insertRule](...args) {
    return this.insertRule.apply(this, args);
  }
};
dart.addTypeTests(html$.CssGroupingRule);
const cssRules = Symbol("CssGroupingRule.cssRules");
dart.setMethodSignature(html$.CssGroupingRule, () => ({
  __proto__: dart.getMethods(html$.CssGroupingRule.__proto__),
  [$deleteRule]: dart.fnType(dart.void, [core.int]),
  [$insertRule]: dart.fnType(core.int, [core.String, core.int])
}));
dart.setFieldSignature(html$.CssGroupingRule, () => ({
  __proto__: dart.getFields(html$.CssGroupingRule.__proto__),
  [$cssRules]: dart.finalFieldType(ListOfCssRule())
}));
dart.registerExtension("CSSGroupingRule", html$.CssGroupingRule);
html$.CssConditionRule = class CssConditionRule extends html$.CssGroupingRule {
  get [$conditionText]() {
    return this.conditionText;
  }
};
dart.addTypeTests(html$.CssConditionRule);
const conditionText = Symbol("CssConditionRule.conditionText");
dart.setFieldSignature(html$.CssConditionRule, () => ({
  __proto__: dart.getFields(html$.CssConditionRule.__proto__),
  [$conditionText]: dart.finalFieldType(core.String)
}));
dart.registerExtension("CSSConditionRule", html$.CssConditionRule);
html$.CssFontFaceRule = class CssFontFaceRule extends html$.CssRule {
  get [$style]() {
    return this.style;
  }
};
dart.addTypeTests(html$.CssFontFaceRule);
const style$ = Symbol("CssFontFaceRule.style");
dart.setFieldSignature(html$.CssFontFaceRule, () => ({
  __proto__: dart.getFields(html$.CssFontFaceRule.__proto__),
  [$style]: dart.finalFieldType(html$.CssStyleDeclaration)
}));
dart.registerExtension("CSSFontFaceRule", html$.CssFontFaceRule);
html$.CssStyleValue = class CssStyleValue extends _interceptors.Interceptor {};
dart.addTypeTests(html$.CssStyleValue);
dart.registerExtension("CSSStyleValue", html$.CssStyleValue);
html$.CssResourceValue = class CssResourceValue extends html$.CssStyleValue {
  get [$state]() {
    return this.state;
  }
};
dart.addTypeTests(html$.CssResourceValue);
const state$ = Symbol("CssResourceValue.state");
dart.setFieldSignature(html$.CssResourceValue, () => ({
  __proto__: dart.getFields(html$.CssResourceValue.__proto__),
  [$state]: dart.finalFieldType(core.String)
}));
dart.registerExtension("CSSResourceValue", html$.CssResourceValue);
html$.CssImageValue = class CssImageValue extends html$.CssResourceValue {
  get [$intrinsicHeight]() {
    return this.intrinsicHeight;
  }
  get [$intrinsicRatio]() {
    return this.intrinsicRatio;
  }
  get [$intrinsicWidth]() {
    return this.intrinsicWidth;
  }
};
dart.addTypeTests(html$.CssImageValue);
const intrinsicHeight = Symbol("CssImageValue.intrinsicHeight");
const intrinsicRatio = Symbol("CssImageValue.intrinsicRatio");
const intrinsicWidth = Symbol("CssImageValue.intrinsicWidth");
dart.setFieldSignature(html$.CssImageValue, () => ({
  __proto__: dart.getFields(html$.CssImageValue.__proto__),
  [$intrinsicHeight]: dart.finalFieldType(core.num),
  [$intrinsicRatio]: dart.finalFieldType(core.num),
  [$intrinsicWidth]: dart.finalFieldType(core.num)
}));
dart.registerExtension("CSSImageValue", html$.CssImageValue);
html$.CssImportRule = class CssImportRule extends html$.CssRule {
  get [$href]() {
    return this.href;
  }
  get [$media]() {
    return this.media;
  }
  get [$styleSheet]() {
    return this.styleSheet;
  }
};
dart.addTypeTests(html$.CssImportRule);
const href$1 = Symbol("CssImportRule.href");
const media = Symbol("CssImportRule.media");
const styleSheet = Symbol("CssImportRule.styleSheet");
dart.setFieldSignature(html$.CssImportRule, () => ({
  __proto__: dart.getFields(html$.CssImportRule.__proto__),
  [$href]: dart.finalFieldType(core.String),
  [$media]: dart.finalFieldType(html$.MediaList),
  [$styleSheet]: dart.finalFieldType(html$.CssStyleSheet)
}));
dart.registerExtension("CSSImportRule", html$.CssImportRule);
html$.CssKeyframeRule = class CssKeyframeRule extends html$.CssRule {
  get [$keyText]() {
    return this.keyText;
  }
  set [$keyText](value) {
    this.keyText = value;
  }
  get [$style]() {
    return this.style;
  }
};
dart.addTypeTests(html$.CssKeyframeRule);
const keyText = Symbol("CssKeyframeRule.keyText");
const style$0 = Symbol("CssKeyframeRule.style");
dart.setFieldSignature(html$.CssKeyframeRule, () => ({
  __proto__: dart.getFields(html$.CssKeyframeRule.__proto__),
  [$keyText]: dart.fieldType(core.String),
  [$style]: dart.finalFieldType(html$.CssStyleDeclaration)
}));
dart.registerExtension("CSSKeyframeRule", html$.CssKeyframeRule);
dart.registerExtension("MozCSSKeyframeRule", html$.CssKeyframeRule);
dart.registerExtension("WebKitCSSKeyframeRule", html$.CssKeyframeRule);
const __getter__ = Symbol('__getter__');
html$.CssKeyframesRule = class CssKeyframesRule extends html$.CssRule {
  get [$cssRules]() {
    return this.cssRules;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [$appendRule](...args) {
    return this.appendRule.apply(this, args);
  }
  [$deleteRule](...args) {
    return this.deleteRule.apply(this, args);
  }
  [$findRule](...args) {
    return this.findRule.apply(this, args);
  }
};
dart.addTypeTests(html$.CssKeyframesRule);
const cssRules$ = Symbol("CssKeyframesRule.cssRules");
const name$9 = Symbol("CssKeyframesRule.name");
dart.setMethodSignature(html$.CssKeyframesRule, () => ({
  __proto__: dart.getMethods(html$.CssKeyframesRule.__proto__),
  [__getter__]: dart.fnType(html$.CssKeyframeRule, [core.int]),
  [$appendRule]: dart.fnType(dart.void, [core.String]),
  [$deleteRule]: dart.fnType(dart.void, [core.String]),
  [$findRule]: dart.fnType(html$.CssKeyframeRule, [core.String])
}));
dart.setFieldSignature(html$.CssKeyframesRule, () => ({
  __proto__: dart.getFields(html$.CssKeyframesRule.__proto__),
  [$cssRules]: dart.finalFieldType(ListOfCssRule()),
  [$name]: dart.fieldType(core.String)
}));
dart.registerExtension("CSSKeyframesRule", html$.CssKeyframesRule);
dart.registerExtension("MozCSSKeyframesRule", html$.CssKeyframesRule);
dart.registerExtension("WebKitCSSKeyframesRule", html$.CssKeyframesRule);
html$.CssKeywordValue = class CssKeywordValue extends html$.CssStyleValue {
  static new(keyword) {
    return html$.CssKeywordValue._create_1(keyword);
  }
  static _create_1(keyword) {
    return new CSSKeywordValue(keyword);
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
};
dart.addTypeTests(html$.CssKeywordValue);
const value$2 = Symbol("CssKeywordValue.value");
dart.setFieldSignature(html$.CssKeywordValue, () => ({
  __proto__: dart.getFields(html$.CssKeywordValue.__proto__),
  [$value]: dart.fieldType(core.String)
}));
dart.registerExtension("CSSKeywordValue", html$.CssKeywordValue);
html$.CssTransformComponent = class CssTransformComponent extends _interceptors.Interceptor {
  get [$is2D]() {
    return this.is2D;
  }
  set [$is2D](value) {
    this.is2D = value;
  }
};
dart.addTypeTests(html$.CssTransformComponent);
const is2D = Symbol("CssTransformComponent.is2D");
dart.setFieldSignature(html$.CssTransformComponent, () => ({
  __proto__: dart.getFields(html$.CssTransformComponent.__proto__),
  [$is2D]: dart.fieldType(core.bool)
}));
dart.registerExtension("CSSTransformComponent", html$.CssTransformComponent);
html$.CssMatrixComponent = class CssMatrixComponent extends html$.CssTransformComponent {
  static new(matrix, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return html$.CssMatrixComponent._create_1(matrix, options_1);
    }
    return html$.CssMatrixComponent._create_2(matrix);
  }
  static _create_1(matrix, options) {
    return new CSSMatrixComponent(matrix, options);
  }
  static _create_2(matrix) {
    return new CSSMatrixComponent(matrix);
  }
  get [$matrix]() {
    return this.matrix;
  }
  set [$matrix](value) {
    this.matrix = value;
  }
};
dart.addTypeTests(html$.CssMatrixComponent);
const matrix = Symbol("CssMatrixComponent.matrix");
dart.setFieldSignature(html$.CssMatrixComponent, () => ({
  __proto__: dart.getFields(html$.CssMatrixComponent.__proto__),
  [$matrix]: dart.fieldType(html$.DomMatrix)
}));
dart.registerExtension("CSSMatrixComponent", html$.CssMatrixComponent);
html$.CssMediaRule = class CssMediaRule extends html$.CssConditionRule {
  get [$media]() {
    return this.media;
  }
};
dart.addTypeTests(html$.CssMediaRule);
const media$ = Symbol("CssMediaRule.media");
dart.setFieldSignature(html$.CssMediaRule, () => ({
  __proto__: dart.getFields(html$.CssMediaRule.__proto__),
  [$media]: dart.finalFieldType(html$.MediaList)
}));
dart.registerExtension("CSSMediaRule", html$.CssMediaRule);
html$.CssNamespaceRule = class CssNamespaceRule extends html$.CssRule {
  get [$namespaceUri]() {
    return this.namespaceURI;
  }
  get [$prefix]() {
    return this.prefix;
  }
};
dart.addTypeTests(html$.CssNamespaceRule);
const namespaceUri = Symbol("CssNamespaceRule.namespaceUri");
const prefix = Symbol("CssNamespaceRule.prefix");
dart.setFieldSignature(html$.CssNamespaceRule, () => ({
  __proto__: dart.getFields(html$.CssNamespaceRule.__proto__),
  [$namespaceUri]: dart.finalFieldType(core.String),
  [$prefix]: dart.finalFieldType(core.String)
}));
dart.registerExtension("CSSNamespaceRule", html$.CssNamespaceRule);
html$.CssNumericValue = class CssNumericValue extends html$.CssStyleValue {
  [$add](...args) {
    return this.add.apply(this, args);
  }
  [$div](...args) {
    return this.div.apply(this, args);
  }
  [$mul](...args) {
    return this.mul.apply(this, args);
  }
  [$sub](...args) {
    return this.sub.apply(this, args);
  }
  [$to](...args) {
    return this.to.apply(this, args);
  }
};
dart.addTypeTests(html$.CssNumericValue);
dart.setMethodSignature(html$.CssNumericValue, () => ({
  __proto__: dart.getMethods(html$.CssNumericValue.__proto__),
  [$add]: dart.fnType(html$.CssNumericValue, [html$.CssNumericValue]),
  [$div]: dart.fnType(html$.CssNumericValue, [core.num]),
  [$mul]: dart.fnType(html$.CssNumericValue, [core.num]),
  [$sub]: dart.fnType(html$.CssNumericValue, [html$.CssNumericValue]),
  [$to]: dart.fnType(html$.CssNumericValue, [core.String])
}));
dart.registerExtension("CSSNumericValue", html$.CssNumericValue);
html$.CssPageRule = class CssPageRule extends html$.CssRule {
  get [$selectorText]() {
    return this.selectorText;
  }
  set [$selectorText](value) {
    this.selectorText = value;
  }
  get [$style]() {
    return this.style;
  }
};
dart.addTypeTests(html$.CssPageRule);
const selectorText = Symbol("CssPageRule.selectorText");
const style$1 = Symbol("CssPageRule.style");
dart.setFieldSignature(html$.CssPageRule, () => ({
  __proto__: dart.getFields(html$.CssPageRule.__proto__),
  [$selectorText]: dart.fieldType(core.String),
  [$style]: dart.finalFieldType(html$.CssStyleDeclaration)
}));
dart.registerExtension("CSSPageRule", html$.CssPageRule);
html$.CssPerspective = class CssPerspective extends html$.CssTransformComponent {
  static new(length) {
    return html$.CssPerspective._create_1(length);
  }
  static _create_1(length) {
    return new CSSPerspective(length);
  }
  get [$length]() {
    return this.length;
  }
  set [$length](value) {
    this.length = value;
  }
};
dart.addTypeTests(html$.CssPerspective);
const length$1 = Symbol("CssPerspective.length");
dart.setFieldSignature(html$.CssPerspective, () => ({
  __proto__: dart.getFields(html$.CssPerspective.__proto__),
  [$length]: dart.fieldType(html$.CssNumericValue)
}));
dart.registerExtension("CSSPerspective", html$.CssPerspective);
html$.CssPositionValue = class CssPositionValue extends html$.CssStyleValue {
  static new(x, y) {
    return html$.CssPositionValue._create_1(x, y);
  }
  static _create_1(x, y) {
    return new CSSPositionValue(x, y);
  }
  get [$x]() {
    return this.x;
  }
  set [$x](value) {
    this.x = value;
  }
  get [$y]() {
    return this.y;
  }
  set [$y](value) {
    this.y = value;
  }
};
dart.addTypeTests(html$.CssPositionValue);
const x$ = Symbol("CssPositionValue.x");
const y$ = Symbol("CssPositionValue.y");
dart.setFieldSignature(html$.CssPositionValue, () => ({
  __proto__: dart.getFields(html$.CssPositionValue.__proto__),
  [$x]: dart.fieldType(html$.CssNumericValue),
  [$y]: dart.fieldType(html$.CssNumericValue)
}));
dart.registerExtension("CSSPositionValue", html$.CssPositionValue);
html$.CssRotation = class CssRotation extends html$.CssTransformComponent {
  static new(angleValue_OR_x, y, z, angle) {
    if (y === void 0) y = null;
    if (z === void 0) z = null;
    if (angle === void 0) angle = null;
    if (html$.CssNumericValue.is(angleValue_OR_x) && y == null && z == null && angle == null) {
      return html$.CssRotation._create_1(angleValue_OR_x);
    }
    if (html$.CssNumericValue.is(angle) && typeof z == 'number' && typeof y == 'number' && typeof angleValue_OR_x == 'number') {
      return html$.CssRotation._create_2(angleValue_OR_x, y, z, angle);
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  static _create_1(angleValue_OR_x) {
    return new CSSRotation(angleValue_OR_x);
  }
  static _create_2(angleValue_OR_x, y, z, angle) {
    return new CSSRotation(angleValue_OR_x, y, z, angle);
  }
  get [$angle]() {
    return this.angle;
  }
  set [$angle](value) {
    this.angle = value;
  }
  get [$x]() {
    return this.x;
  }
  set [$x](value) {
    this.x = value;
  }
  get [$y]() {
    return this.y;
  }
  set [$y](value) {
    this.y = value;
  }
  get [$z]() {
    return this.z;
  }
  set [$z](value) {
    this.z = value;
  }
};
dart.addTypeTests(html$.CssRotation);
const angle = Symbol("CssRotation.angle");
const x$0 = Symbol("CssRotation.x");
const y$0 = Symbol("CssRotation.y");
const z$ = Symbol("CssRotation.z");
dart.setFieldSignature(html$.CssRotation, () => ({
  __proto__: dart.getFields(html$.CssRotation.__proto__),
  [$angle]: dart.fieldType(html$.CssNumericValue),
  [$x]: dart.fieldType(core.num),
  [$y]: dart.fieldType(core.num),
  [$z]: dart.fieldType(core.num)
}));
dart.registerExtension("CSSRotation", html$.CssRotation);
html$.CssScale = class CssScale extends html$.CssTransformComponent {
  static new(x, y, z) {
    if (z === void 0) z = null;
    if (typeof y == 'number' && typeof x == 'number' && z == null) {
      return html$.CssScale._create_1(x, y);
    }
    if (typeof z == 'number' && typeof y == 'number' && typeof x == 'number') {
      return html$.CssScale._create_2(x, y, z);
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  static _create_1(x, y) {
    return new CSSScale(x, y);
  }
  static _create_2(x, y, z) {
    return new CSSScale(x, y, z);
  }
  get [$x]() {
    return this.x;
  }
  set [$x](value) {
    this.x = value;
  }
  get [$y]() {
    return this.y;
  }
  set [$y](value) {
    this.y = value;
  }
  get [$z]() {
    return this.z;
  }
  set [$z](value) {
    this.z = value;
  }
};
dart.addTypeTests(html$.CssScale);
const x$1 = Symbol("CssScale.x");
const y$1 = Symbol("CssScale.y");
const z$0 = Symbol("CssScale.z");
dart.setFieldSignature(html$.CssScale, () => ({
  __proto__: dart.getFields(html$.CssScale.__proto__),
  [$x]: dart.fieldType(core.num),
  [$y]: dart.fieldType(core.num),
  [$z]: dart.fieldType(core.num)
}));
dart.registerExtension("CSSScale", html$.CssScale);
html$.CssSkew = class CssSkew extends html$.CssTransformComponent {
  static new(ax, ay) {
    return html$.CssSkew._create_1(ax, ay);
  }
  static _create_1(ax, ay) {
    return new CSSSkew(ax, ay);
  }
  get [$ax]() {
    return this.ax;
  }
  set [$ax](value) {
    this.ax = value;
  }
  get [$ay]() {
    return this.ay;
  }
  set [$ay](value) {
    this.ay = value;
  }
};
dart.addTypeTests(html$.CssSkew);
const ax = Symbol("CssSkew.ax");
const ay = Symbol("CssSkew.ay");
dart.setFieldSignature(html$.CssSkew, () => ({
  __proto__: dart.getFields(html$.CssSkew.__proto__),
  [$ax]: dart.fieldType(html$.CssNumericValue),
  [$ay]: dart.fieldType(html$.CssNumericValue)
}));
dart.registerExtension("CSSSkew", html$.CssSkew);
const _getPropertyValueHelper = Symbol('_getPropertyValueHelper');
const _browserPropertyName = Symbol('_browserPropertyName');
const _getPropertyValue = Symbol('_getPropertyValue');
const _supportsProperty = Symbol('_supportsProperty');
const _setPropertyHelper = Symbol('_setPropertyHelper');
const _supportedBrowserPropertyName = Symbol('_supportedBrowserPropertyName');
const _background = Symbol('_background');
const _backgroundAttachment = Symbol('_backgroundAttachment');
const _backgroundColor = Symbol('_backgroundColor');
const _backgroundImage = Symbol('_backgroundImage');
const _backgroundPosition = Symbol('_backgroundPosition');
const _backgroundRepeat = Symbol('_backgroundRepeat');
const _border = Symbol('_border');
const _borderBottom = Symbol('_borderBottom');
const _borderBottomColor = Symbol('_borderBottomColor');
const _borderBottomStyle = Symbol('_borderBottomStyle');
const _borderBottomWidth = Symbol('_borderBottomWidth');
const _borderCollapse = Symbol('_borderCollapse');
const _borderColor = Symbol('_borderColor');
const _borderLeft = Symbol('_borderLeft');
const _borderLeftColor = Symbol('_borderLeftColor');
const _borderLeftStyle = Symbol('_borderLeftStyle');
const _borderLeftWidth = Symbol('_borderLeftWidth');
const _borderRight = Symbol('_borderRight');
const _borderRightColor = Symbol('_borderRightColor');
const _borderRightStyle = Symbol('_borderRightStyle');
const _borderRightWidth = Symbol('_borderRightWidth');
const _borderSpacing = Symbol('_borderSpacing');
const _borderStyle = Symbol('_borderStyle');
const _borderTop = Symbol('_borderTop');
const _borderTopColor = Symbol('_borderTopColor');
const _borderTopStyle = Symbol('_borderTopStyle');
const _borderTopWidth = Symbol('_borderTopWidth');
const _borderWidth = Symbol('_borderWidth');
const _bottom = Symbol('_bottom');
const _captionSide = Symbol('_captionSide');
const _clear$0 = Symbol('_clear');
const _clip = Symbol('_clip');
const _color = Symbol('_color');
const _content = Symbol('_content');
const _cursor = Symbol('_cursor');
const _direction = Symbol('_direction');
const _display = Symbol('_display');
const _emptyCells = Symbol('_emptyCells');
const _font = Symbol('_font');
const _fontFamily = Symbol('_fontFamily');
const _fontSize = Symbol('_fontSize');
const _fontStyle = Symbol('_fontStyle');
const _fontVariant = Symbol('_fontVariant');
const _fontWeight = Symbol('_fontWeight');
const _height$ = Symbol('_height');
const _left = Symbol('_left');
const _letterSpacing = Symbol('_letterSpacing');
const _lineHeight = Symbol('_lineHeight');
const _listStyle = Symbol('_listStyle');
const _listStyleImage = Symbol('_listStyleImage');
const _listStylePosition = Symbol('_listStylePosition');
const _listStyleType = Symbol('_listStyleType');
const _margin = Symbol('_margin');
const _marginBottom = Symbol('_marginBottom');
const _marginLeft = Symbol('_marginLeft');
const _marginRight = Symbol('_marginRight');
const _marginTop = Symbol('_marginTop');
const _maxHeight = Symbol('_maxHeight');
const _maxWidth = Symbol('_maxWidth');
const _minHeight = Symbol('_minHeight');
const _minWidth = Symbol('_minWidth');
const _outline = Symbol('_outline');
const _outlineColor = Symbol('_outlineColor');
const _outlineStyle = Symbol('_outlineStyle');
const _outlineWidth = Symbol('_outlineWidth');
const _overflow = Symbol('_overflow');
const _padding = Symbol('_padding');
const _paddingBottom = Symbol('_paddingBottom');
const _paddingLeft = Symbol('_paddingLeft');
const _paddingRight = Symbol('_paddingRight');
const _paddingTop = Symbol('_paddingTop');
const _pageBreakAfter = Symbol('_pageBreakAfter');
const _pageBreakBefore = Symbol('_pageBreakBefore');
const _pageBreakInside = Symbol('_pageBreakInside');
const _position$1 = Symbol('_position');
const _quotes = Symbol('_quotes');
const _right = Symbol('_right');
const _tableLayout = Symbol('_tableLayout');
const _textAlign = Symbol('_textAlign');
const _textDecoration = Symbol('_textDecoration');
const _textIndent = Symbol('_textIndent');
const _textTransform = Symbol('_textTransform');
const _top = Symbol('_top');
const _unicodeBidi = Symbol('_unicodeBidi');
const _verticalAlign = Symbol('_verticalAlign');
const _visibility = Symbol('_visibility');
const _whiteSpace = Symbol('_whiteSpace');
const _width$ = Symbol('_width');
const _wordSpacing = Symbol('_wordSpacing');
const _zIndex = Symbol('_zIndex');
html$.CssStyleDeclarationBase = class CssStyleDeclarationBase extends core.Object {
  get alignContent() {
    return this[$getPropertyValue]("align-content");
  }
  set alignContent(value) {
    this[$setProperty]("align-content", value, "");
  }
  get alignItems() {
    return this[$getPropertyValue]("align-items");
  }
  set alignItems(value) {
    this[$setProperty]("align-items", value, "");
  }
  get alignSelf() {
    return this[$getPropertyValue]("align-self");
  }
  set alignSelf(value) {
    this[$setProperty]("align-self", value, "");
  }
  get animation() {
    return this[$getPropertyValue]("animation");
  }
  set animation(value) {
    this[$setProperty]("animation", value, "");
  }
  get animationDelay() {
    return this[$getPropertyValue]("animation-delay");
  }
  set animationDelay(value) {
    this[$setProperty]("animation-delay", value, "");
  }
  get animationDirection() {
    return this[$getPropertyValue]("animation-direction");
  }
  set animationDirection(value) {
    this[$setProperty]("animation-direction", value, "");
  }
  get animationDuration() {
    return this[$getPropertyValue]("animation-duration");
  }
  set animationDuration(value) {
    this[$setProperty]("animation-duration", value, "");
  }
  get animationFillMode() {
    return this[$getPropertyValue]("animation-fill-mode");
  }
  set animationFillMode(value) {
    this[$setProperty]("animation-fill-mode", value, "");
  }
  get animationIterationCount() {
    return this[$getPropertyValue]("animation-iteration-count");
  }
  set animationIterationCount(value) {
    this[$setProperty]("animation-iteration-count", value, "");
  }
  get animationName() {
    return this[$getPropertyValue]("animation-name");
  }
  set animationName(value) {
    this[$setProperty]("animation-name", value, "");
  }
  get animationPlayState() {
    return this[$getPropertyValue]("animation-play-state");
  }
  set animationPlayState(value) {
    this[$setProperty]("animation-play-state", value, "");
  }
  get animationTimingFunction() {
    return this[$getPropertyValue]("animation-timing-function");
  }
  set animationTimingFunction(value) {
    this[$setProperty]("animation-timing-function", value, "");
  }
  get appRegion() {
    return this[$getPropertyValue]("app-region");
  }
  set appRegion(value) {
    this[$setProperty]("app-region", value, "");
  }
  get appearance() {
    return this[$getPropertyValue]("appearance");
  }
  set appearance(value) {
    this[$setProperty]("appearance", value, "");
  }
  get aspectRatio() {
    return this[$getPropertyValue]("aspect-ratio");
  }
  set aspectRatio(value) {
    this[$setProperty]("aspect-ratio", value, "");
  }
  get backfaceVisibility() {
    return this[$getPropertyValue]("backface-visibility");
  }
  set backfaceVisibility(value) {
    this[$setProperty]("backface-visibility", value, "");
  }
  get background() {
    return this[$getPropertyValue]("background");
  }
  set background(value) {
    this[$setProperty]("background", value, "");
  }
  get backgroundAttachment() {
    return this[$getPropertyValue]("background-attachment");
  }
  set backgroundAttachment(value) {
    this[$setProperty]("background-attachment", value, "");
  }
  get backgroundBlendMode() {
    return this[$getPropertyValue]("background-blend-mode");
  }
  set backgroundBlendMode(value) {
    this[$setProperty]("background-blend-mode", value, "");
  }
  get backgroundClip() {
    return this[$getPropertyValue]("background-clip");
  }
  set backgroundClip(value) {
    this[$setProperty]("background-clip", value, "");
  }
  get backgroundColor() {
    return this[$getPropertyValue]("background-color");
  }
  set backgroundColor(value) {
    this[$setProperty]("background-color", value, "");
  }
  get backgroundComposite() {
    return this[$getPropertyValue]("background-composite");
  }
  set backgroundComposite(value) {
    this[$setProperty]("background-composite", value, "");
  }
  get backgroundImage() {
    return this[$getPropertyValue]("background-image");
  }
  set backgroundImage(value) {
    this[$setProperty]("background-image", value, "");
  }
  get backgroundOrigin() {
    return this[$getPropertyValue]("background-origin");
  }
  set backgroundOrigin(value) {
    this[$setProperty]("background-origin", value, "");
  }
  get backgroundPosition() {
    return this[$getPropertyValue]("background-position");
  }
  set backgroundPosition(value) {
    this[$setProperty]("background-position", value, "");
  }
  get backgroundPositionX() {
    return this[$getPropertyValue]("background-position-x");
  }
  set backgroundPositionX(value) {
    this[$setProperty]("background-position-x", value, "");
  }
  get backgroundPositionY() {
    return this[$getPropertyValue]("background-position-y");
  }
  set backgroundPositionY(value) {
    this[$setProperty]("background-position-y", value, "");
  }
  get backgroundRepeat() {
    return this[$getPropertyValue]("background-repeat");
  }
  set backgroundRepeat(value) {
    this[$setProperty]("background-repeat", value, "");
  }
  get backgroundRepeatX() {
    return this[$getPropertyValue]("background-repeat-x");
  }
  set backgroundRepeatX(value) {
    this[$setProperty]("background-repeat-x", value, "");
  }
  get backgroundRepeatY() {
    return this[$getPropertyValue]("background-repeat-y");
  }
  set backgroundRepeatY(value) {
    this[$setProperty]("background-repeat-y", value, "");
  }
  get backgroundSize() {
    return this[$getPropertyValue]("background-size");
  }
  set backgroundSize(value) {
    this[$setProperty]("background-size", value, "");
  }
  get border() {
    return this[$getPropertyValue]("border");
  }
  set border(value) {
    this[$setProperty]("border", value, "");
  }
  get borderAfter() {
    return this[$getPropertyValue]("border-after");
  }
  set borderAfter(value) {
    this[$setProperty]("border-after", value, "");
  }
  get borderAfterColor() {
    return this[$getPropertyValue]("border-after-color");
  }
  set borderAfterColor(value) {
    this[$setProperty]("border-after-color", value, "");
  }
  get borderAfterStyle() {
    return this[$getPropertyValue]("border-after-style");
  }
  set borderAfterStyle(value) {
    this[$setProperty]("border-after-style", value, "");
  }
  get borderAfterWidth() {
    return this[$getPropertyValue]("border-after-width");
  }
  set borderAfterWidth(value) {
    this[$setProperty]("border-after-width", value, "");
  }
  get borderBefore() {
    return this[$getPropertyValue]("border-before");
  }
  set borderBefore(value) {
    this[$setProperty]("border-before", value, "");
  }
  get borderBeforeColor() {
    return this[$getPropertyValue]("border-before-color");
  }
  set borderBeforeColor(value) {
    this[$setProperty]("border-before-color", value, "");
  }
  get borderBeforeStyle() {
    return this[$getPropertyValue]("border-before-style");
  }
  set borderBeforeStyle(value) {
    this[$setProperty]("border-before-style", value, "");
  }
  get borderBeforeWidth() {
    return this[$getPropertyValue]("border-before-width");
  }
  set borderBeforeWidth(value) {
    this[$setProperty]("border-before-width", value, "");
  }
  get borderBottom() {
    return this[$getPropertyValue]("border-bottom");
  }
  set borderBottom(value) {
    this[$setProperty]("border-bottom", value, "");
  }
  get borderBottomColor() {
    return this[$getPropertyValue]("border-bottom-color");
  }
  set borderBottomColor(value) {
    this[$setProperty]("border-bottom-color", value, "");
  }
  get borderBottomLeftRadius() {
    return this[$getPropertyValue]("border-bottom-left-radius");
  }
  set borderBottomLeftRadius(value) {
    this[$setProperty]("border-bottom-left-radius", value, "");
  }
  get borderBottomRightRadius() {
    return this[$getPropertyValue]("border-bottom-right-radius");
  }
  set borderBottomRightRadius(value) {
    this[$setProperty]("border-bottom-right-radius", value, "");
  }
  get borderBottomStyle() {
    return this[$getPropertyValue]("border-bottom-style");
  }
  set borderBottomStyle(value) {
    this[$setProperty]("border-bottom-style", value, "");
  }
  get borderBottomWidth() {
    return this[$getPropertyValue]("border-bottom-width");
  }
  set borderBottomWidth(value) {
    this[$setProperty]("border-bottom-width", value, "");
  }
  get borderCollapse() {
    return this[$getPropertyValue]("border-collapse");
  }
  set borderCollapse(value) {
    this[$setProperty]("border-collapse", value, "");
  }
  get borderColor() {
    return this[$getPropertyValue]("border-color");
  }
  set borderColor(value) {
    this[$setProperty]("border-color", value, "");
  }
  get borderEnd() {
    return this[$getPropertyValue]("border-end");
  }
  set borderEnd(value) {
    this[$setProperty]("border-end", value, "");
  }
  get borderEndColor() {
    return this[$getPropertyValue]("border-end-color");
  }
  set borderEndColor(value) {
    this[$setProperty]("border-end-color", value, "");
  }
  get borderEndStyle() {
    return this[$getPropertyValue]("border-end-style");
  }
  set borderEndStyle(value) {
    this[$setProperty]("border-end-style", value, "");
  }
  get borderEndWidth() {
    return this[$getPropertyValue]("border-end-width");
  }
  set borderEndWidth(value) {
    this[$setProperty]("border-end-width", value, "");
  }
  get borderFit() {
    return this[$getPropertyValue]("border-fit");
  }
  set borderFit(value) {
    this[$setProperty]("border-fit", value, "");
  }
  get borderHorizontalSpacing() {
    return this[$getPropertyValue]("border-horizontal-spacing");
  }
  set borderHorizontalSpacing(value) {
    this[$setProperty]("border-horizontal-spacing", value, "");
  }
  get borderImage() {
    return this[$getPropertyValue]("border-image");
  }
  set borderImage(value) {
    this[$setProperty]("border-image", value, "");
  }
  get borderImageOutset() {
    return this[$getPropertyValue]("border-image-outset");
  }
  set borderImageOutset(value) {
    this[$setProperty]("border-image-outset", value, "");
  }
  get borderImageRepeat() {
    return this[$getPropertyValue]("border-image-repeat");
  }
  set borderImageRepeat(value) {
    this[$setProperty]("border-image-repeat", value, "");
  }
  get borderImageSlice() {
    return this[$getPropertyValue]("border-image-slice");
  }
  set borderImageSlice(value) {
    this[$setProperty]("border-image-slice", value, "");
  }
  get borderImageSource() {
    return this[$getPropertyValue]("border-image-source");
  }
  set borderImageSource(value) {
    this[$setProperty]("border-image-source", value, "");
  }
  get borderImageWidth() {
    return this[$getPropertyValue]("border-image-width");
  }
  set borderImageWidth(value) {
    this[$setProperty]("border-image-width", value, "");
  }
  get borderLeft() {
    return this[$getPropertyValue]("border-left");
  }
  set borderLeft(value) {
    this[$setProperty]("border-left", value, "");
  }
  get borderLeftColor() {
    return this[$getPropertyValue]("border-left-color");
  }
  set borderLeftColor(value) {
    this[$setProperty]("border-left-color", value, "");
  }
  get borderLeftStyle() {
    return this[$getPropertyValue]("border-left-style");
  }
  set borderLeftStyle(value) {
    this[$setProperty]("border-left-style", value, "");
  }
  get borderLeftWidth() {
    return this[$getPropertyValue]("border-left-width");
  }
  set borderLeftWidth(value) {
    this[$setProperty]("border-left-width", value, "");
  }
  get borderRadius() {
    return this[$getPropertyValue]("border-radius");
  }
  set borderRadius(value) {
    this[$setProperty]("border-radius", value, "");
  }
  get borderRight() {
    return this[$getPropertyValue]("border-right");
  }
  set borderRight(value) {
    this[$setProperty]("border-right", value, "");
  }
  get borderRightColor() {
    return this[$getPropertyValue]("border-right-color");
  }
  set borderRightColor(value) {
    this[$setProperty]("border-right-color", value, "");
  }
  get borderRightStyle() {
    return this[$getPropertyValue]("border-right-style");
  }
  set borderRightStyle(value) {
    this[$setProperty]("border-right-style", value, "");
  }
  get borderRightWidth() {
    return this[$getPropertyValue]("border-right-width");
  }
  set borderRightWidth(value) {
    this[$setProperty]("border-right-width", value, "");
  }
  get borderSpacing() {
    return this[$getPropertyValue]("border-spacing");
  }
  set borderSpacing(value) {
    this[$setProperty]("border-spacing", value, "");
  }
  get borderStart() {
    return this[$getPropertyValue]("border-start");
  }
  set borderStart(value) {
    this[$setProperty]("border-start", value, "");
  }
  get borderStartColor() {
    return this[$getPropertyValue]("border-start-color");
  }
  set borderStartColor(value) {
    this[$setProperty]("border-start-color", value, "");
  }
  get borderStartStyle() {
    return this[$getPropertyValue]("border-start-style");
  }
  set borderStartStyle(value) {
    this[$setProperty]("border-start-style", value, "");
  }
  get borderStartWidth() {
    return this[$getPropertyValue]("border-start-width");
  }
  set borderStartWidth(value) {
    this[$setProperty]("border-start-width", value, "");
  }
  get borderStyle() {
    return this[$getPropertyValue]("border-style");
  }
  set borderStyle(value) {
    this[$setProperty]("border-style", value, "");
  }
  get borderTop() {
    return this[$getPropertyValue]("border-top");
  }
  set borderTop(value) {
    this[$setProperty]("border-top", value, "");
  }
  get borderTopColor() {
    return this[$getPropertyValue]("border-top-color");
  }
  set borderTopColor(value) {
    this[$setProperty]("border-top-color", value, "");
  }
  get borderTopLeftRadius() {
    return this[$getPropertyValue]("border-top-left-radius");
  }
  set borderTopLeftRadius(value) {
    this[$setProperty]("border-top-left-radius", value, "");
  }
  get borderTopRightRadius() {
    return this[$getPropertyValue]("border-top-right-radius");
  }
  set borderTopRightRadius(value) {
    this[$setProperty]("border-top-right-radius", value, "");
  }
  get borderTopStyle() {
    return this[$getPropertyValue]("border-top-style");
  }
  set borderTopStyle(value) {
    this[$setProperty]("border-top-style", value, "");
  }
  get borderTopWidth() {
    return this[$getPropertyValue]("border-top-width");
  }
  set borderTopWidth(value) {
    this[$setProperty]("border-top-width", value, "");
  }
  get borderVerticalSpacing() {
    return this[$getPropertyValue]("border-vertical-spacing");
  }
  set borderVerticalSpacing(value) {
    this[$setProperty]("border-vertical-spacing", value, "");
  }
  get borderWidth() {
    return this[$getPropertyValue]("border-width");
  }
  set borderWidth(value) {
    this[$setProperty]("border-width", value, "");
  }
  get bottom() {
    return this[$getPropertyValue]("bottom");
  }
  set bottom(value) {
    this[$setProperty]("bottom", value, "");
  }
  get boxAlign() {
    return this[$getPropertyValue]("box-align");
  }
  set boxAlign(value) {
    this[$setProperty]("box-align", value, "");
  }
  get boxDecorationBreak() {
    return this[$getPropertyValue]("box-decoration-break");
  }
  set boxDecorationBreak(value) {
    this[$setProperty]("box-decoration-break", value, "");
  }
  get boxDirection() {
    return this[$getPropertyValue]("box-direction");
  }
  set boxDirection(value) {
    this[$setProperty]("box-direction", value, "");
  }
  get boxFlex() {
    return this[$getPropertyValue]("box-flex");
  }
  set boxFlex(value) {
    this[$setProperty]("box-flex", value, "");
  }
  get boxFlexGroup() {
    return this[$getPropertyValue]("box-flex-group");
  }
  set boxFlexGroup(value) {
    this[$setProperty]("box-flex-group", value, "");
  }
  get boxLines() {
    return this[$getPropertyValue]("box-lines");
  }
  set boxLines(value) {
    this[$setProperty]("box-lines", value, "");
  }
  get boxOrdinalGroup() {
    return this[$getPropertyValue]("box-ordinal-group");
  }
  set boxOrdinalGroup(value) {
    this[$setProperty]("box-ordinal-group", value, "");
  }
  get boxOrient() {
    return this[$getPropertyValue]("box-orient");
  }
  set boxOrient(value) {
    this[$setProperty]("box-orient", value, "");
  }
  get boxPack() {
    return this[$getPropertyValue]("box-pack");
  }
  set boxPack(value) {
    this[$setProperty]("box-pack", value, "");
  }
  get boxReflect() {
    return this[$getPropertyValue]("box-reflect");
  }
  set boxReflect(value) {
    this[$setProperty]("box-reflect", value, "");
  }
  get boxShadow() {
    return this[$getPropertyValue]("box-shadow");
  }
  set boxShadow(value) {
    this[$setProperty]("box-shadow", value, "");
  }
  get boxSizing() {
    return this[$getPropertyValue]("box-sizing");
  }
  set boxSizing(value) {
    this[$setProperty]("box-sizing", value, "");
  }
  get captionSide() {
    return this[$getPropertyValue]("caption-side");
  }
  set captionSide(value) {
    this[$setProperty]("caption-side", value, "");
  }
  get clear() {
    return this[$getPropertyValue]("clear");
  }
  set clear(value) {
    this[$setProperty]("clear", value, "");
  }
  get clip() {
    return this[$getPropertyValue]("clip");
  }
  set clip(value) {
    this[$setProperty]("clip", value, "");
  }
  get clipPath() {
    return this[$getPropertyValue]("clip-path");
  }
  set clipPath(value) {
    this[$setProperty]("clip-path", value, "");
  }
  get color() {
    return this[$getPropertyValue]("color");
  }
  set color(value) {
    this[$setProperty]("color", value, "");
  }
  get columnBreakAfter() {
    return this[$getPropertyValue]("column-break-after");
  }
  set columnBreakAfter(value) {
    this[$setProperty]("column-break-after", value, "");
  }
  get columnBreakBefore() {
    return this[$getPropertyValue]("column-break-before");
  }
  set columnBreakBefore(value) {
    this[$setProperty]("column-break-before", value, "");
  }
  get columnBreakInside() {
    return this[$getPropertyValue]("column-break-inside");
  }
  set columnBreakInside(value) {
    this[$setProperty]("column-break-inside", value, "");
  }
  get columnCount() {
    return this[$getPropertyValue]("column-count");
  }
  set columnCount(value) {
    this[$setProperty]("column-count", value, "");
  }
  get columnFill() {
    return this[$getPropertyValue]("column-fill");
  }
  set columnFill(value) {
    this[$setProperty]("column-fill", value, "");
  }
  get columnGap() {
    return this[$getPropertyValue]("column-gap");
  }
  set columnGap(value) {
    this[$setProperty]("column-gap", value, "");
  }
  get columnRule() {
    return this[$getPropertyValue]("column-rule");
  }
  set columnRule(value) {
    this[$setProperty]("column-rule", value, "");
  }
  get columnRuleColor() {
    return this[$getPropertyValue]("column-rule-color");
  }
  set columnRuleColor(value) {
    this[$setProperty]("column-rule-color", value, "");
  }
  get columnRuleStyle() {
    return this[$getPropertyValue]("column-rule-style");
  }
  set columnRuleStyle(value) {
    this[$setProperty]("column-rule-style", value, "");
  }
  get columnRuleWidth() {
    return this[$getPropertyValue]("column-rule-width");
  }
  set columnRuleWidth(value) {
    this[$setProperty]("column-rule-width", value, "");
  }
  get columnSpan() {
    return this[$getPropertyValue]("column-span");
  }
  set columnSpan(value) {
    this[$setProperty]("column-span", value, "");
  }
  get columnWidth() {
    return this[$getPropertyValue]("column-width");
  }
  set columnWidth(value) {
    this[$setProperty]("column-width", value, "");
  }
  get columns() {
    return this[$getPropertyValue]("columns");
  }
  set columns(value) {
    this[$setProperty]("columns", value, "");
  }
  get content() {
    return this[$getPropertyValue]("content");
  }
  set content(value) {
    this[$setProperty]("content", value, "");
  }
  get counterIncrement() {
    return this[$getPropertyValue]("counter-increment");
  }
  set counterIncrement(value) {
    this[$setProperty]("counter-increment", value, "");
  }
  get counterReset() {
    return this[$getPropertyValue]("counter-reset");
  }
  set counterReset(value) {
    this[$setProperty]("counter-reset", value, "");
  }
  get cursor() {
    return this[$getPropertyValue]("cursor");
  }
  set cursor(value) {
    this[$setProperty]("cursor", value, "");
  }
  get direction() {
    return this[$getPropertyValue]("direction");
  }
  set direction(value) {
    this[$setProperty]("direction", value, "");
  }
  get display() {
    return this[$getPropertyValue]("display");
  }
  set display(value) {
    this[$setProperty]("display", value, "");
  }
  get emptyCells() {
    return this[$getPropertyValue]("empty-cells");
  }
  set emptyCells(value) {
    this[$setProperty]("empty-cells", value, "");
  }
  get filter() {
    return this[$getPropertyValue]("filter");
  }
  set filter(value) {
    this[$setProperty]("filter", value, "");
  }
  get flex() {
    return this[$getPropertyValue]("flex");
  }
  set flex(value) {
    this[$setProperty]("flex", value, "");
  }
  get flexBasis() {
    return this[$getPropertyValue]("flex-basis");
  }
  set flexBasis(value) {
    this[$setProperty]("flex-basis", value, "");
  }
  get flexDirection() {
    return this[$getPropertyValue]("flex-direction");
  }
  set flexDirection(value) {
    this[$setProperty]("flex-direction", value, "");
  }
  get flexFlow() {
    return this[$getPropertyValue]("flex-flow");
  }
  set flexFlow(value) {
    this[$setProperty]("flex-flow", value, "");
  }
  get flexGrow() {
    return this[$getPropertyValue]("flex-grow");
  }
  set flexGrow(value) {
    this[$setProperty]("flex-grow", value, "");
  }
  get flexShrink() {
    return this[$getPropertyValue]("flex-shrink");
  }
  set flexShrink(value) {
    this[$setProperty]("flex-shrink", value, "");
  }
  get flexWrap() {
    return this[$getPropertyValue]("flex-wrap");
  }
  set flexWrap(value) {
    this[$setProperty]("flex-wrap", value, "");
  }
  get float() {
    return this[$getPropertyValue]("float");
  }
  set float(value) {
    this[$setProperty]("float", value, "");
  }
  get font() {
    return this[$getPropertyValue]("font");
  }
  set font(value) {
    this[$setProperty]("font", value, "");
  }
  get fontFamily() {
    return this[$getPropertyValue]("font-family");
  }
  set fontFamily(value) {
    this[$setProperty]("font-family", value, "");
  }
  get fontFeatureSettings() {
    return this[$getPropertyValue]("font-feature-settings");
  }
  set fontFeatureSettings(value) {
    this[$setProperty]("font-feature-settings", value, "");
  }
  get fontKerning() {
    return this[$getPropertyValue]("font-kerning");
  }
  set fontKerning(value) {
    this[$setProperty]("font-kerning", value, "");
  }
  get fontSize() {
    return this[$getPropertyValue]("font-size");
  }
  set fontSize(value) {
    this[$setProperty]("font-size", value, "");
  }
  get fontSizeDelta() {
    return this[$getPropertyValue]("font-size-delta");
  }
  set fontSizeDelta(value) {
    this[$setProperty]("font-size-delta", value, "");
  }
  get fontSmoothing() {
    return this[$getPropertyValue]("font-smoothing");
  }
  set fontSmoothing(value) {
    this[$setProperty]("font-smoothing", value, "");
  }
  get fontStretch() {
    return this[$getPropertyValue]("font-stretch");
  }
  set fontStretch(value) {
    this[$setProperty]("font-stretch", value, "");
  }
  get fontStyle() {
    return this[$getPropertyValue]("font-style");
  }
  set fontStyle(value) {
    this[$setProperty]("font-style", value, "");
  }
  get fontVariant() {
    return this[$getPropertyValue]("font-variant");
  }
  set fontVariant(value) {
    this[$setProperty]("font-variant", value, "");
  }
  get fontVariantLigatures() {
    return this[$getPropertyValue]("font-variant-ligatures");
  }
  set fontVariantLigatures(value) {
    this[$setProperty]("font-variant-ligatures", value, "");
  }
  get fontWeight() {
    return this[$getPropertyValue]("font-weight");
  }
  set fontWeight(value) {
    this[$setProperty]("font-weight", value, "");
  }
  get grid() {
    return this[$getPropertyValue]("grid");
  }
  set grid(value) {
    this[$setProperty]("grid", value, "");
  }
  get gridArea() {
    return this[$getPropertyValue]("grid-area");
  }
  set gridArea(value) {
    this[$setProperty]("grid-area", value, "");
  }
  get gridAutoColumns() {
    return this[$getPropertyValue]("grid-auto-columns");
  }
  set gridAutoColumns(value) {
    this[$setProperty]("grid-auto-columns", value, "");
  }
  get gridAutoFlow() {
    return this[$getPropertyValue]("grid-auto-flow");
  }
  set gridAutoFlow(value) {
    this[$setProperty]("grid-auto-flow", value, "");
  }
  get gridAutoRows() {
    return this[$getPropertyValue]("grid-auto-rows");
  }
  set gridAutoRows(value) {
    this[$setProperty]("grid-auto-rows", value, "");
  }
  get gridColumn() {
    return this[$getPropertyValue]("grid-column");
  }
  set gridColumn(value) {
    this[$setProperty]("grid-column", value, "");
  }
  get gridColumnEnd() {
    return this[$getPropertyValue]("grid-column-end");
  }
  set gridColumnEnd(value) {
    this[$setProperty]("grid-column-end", value, "");
  }
  get gridColumnStart() {
    return this[$getPropertyValue]("grid-column-start");
  }
  set gridColumnStart(value) {
    this[$setProperty]("grid-column-start", value, "");
  }
  get gridRow() {
    return this[$getPropertyValue]("grid-row");
  }
  set gridRow(value) {
    this[$setProperty]("grid-row", value, "");
  }
  get gridRowEnd() {
    return this[$getPropertyValue]("grid-row-end");
  }
  set gridRowEnd(value) {
    this[$setProperty]("grid-row-end", value, "");
  }
  get gridRowStart() {
    return this[$getPropertyValue]("grid-row-start");
  }
  set gridRowStart(value) {
    this[$setProperty]("grid-row-start", value, "");
  }
  get gridTemplate() {
    return this[$getPropertyValue]("grid-template");
  }
  set gridTemplate(value) {
    this[$setProperty]("grid-template", value, "");
  }
  get gridTemplateAreas() {
    return this[$getPropertyValue]("grid-template-areas");
  }
  set gridTemplateAreas(value) {
    this[$setProperty]("grid-template-areas", value, "");
  }
  get gridTemplateColumns() {
    return this[$getPropertyValue]("grid-template-columns");
  }
  set gridTemplateColumns(value) {
    this[$setProperty]("grid-template-columns", value, "");
  }
  get gridTemplateRows() {
    return this[$getPropertyValue]("grid-template-rows");
  }
  set gridTemplateRows(value) {
    this[$setProperty]("grid-template-rows", value, "");
  }
  get height() {
    return this[$getPropertyValue]("height");
  }
  set height(value) {
    this[$setProperty]("height", value, "");
  }
  get highlight() {
    return this[$getPropertyValue]("highlight");
  }
  set highlight(value) {
    this[$setProperty]("highlight", value, "");
  }
  get hyphenateCharacter() {
    return this[$getPropertyValue]("hyphenate-character");
  }
  set hyphenateCharacter(value) {
    this[$setProperty]("hyphenate-character", value, "");
  }
  get imageRendering() {
    return this[$getPropertyValue]("image-rendering");
  }
  set imageRendering(value) {
    this[$setProperty]("image-rendering", value, "");
  }
  get isolation() {
    return this[$getPropertyValue]("isolation");
  }
  set isolation(value) {
    this[$setProperty]("isolation", value, "");
  }
  get justifyContent() {
    return this[$getPropertyValue]("justify-content");
  }
  set justifyContent(value) {
    this[$setProperty]("justify-content", value, "");
  }
  get justifySelf() {
    return this[$getPropertyValue]("justify-self");
  }
  set justifySelf(value) {
    this[$setProperty]("justify-self", value, "");
  }
  get left() {
    return this[$getPropertyValue]("left");
  }
  set left(value) {
    this[$setProperty]("left", value, "");
  }
  get letterSpacing() {
    return this[$getPropertyValue]("letter-spacing");
  }
  set letterSpacing(value) {
    this[$setProperty]("letter-spacing", value, "");
  }
  get lineBoxContain() {
    return this[$getPropertyValue]("line-box-contain");
  }
  set lineBoxContain(value) {
    this[$setProperty]("line-box-contain", value, "");
  }
  get lineBreak() {
    return this[$getPropertyValue]("line-break");
  }
  set lineBreak(value) {
    this[$setProperty]("line-break", value, "");
  }
  get lineClamp() {
    return this[$getPropertyValue]("line-clamp");
  }
  set lineClamp(value) {
    this[$setProperty]("line-clamp", value, "");
  }
  get lineHeight() {
    return this[$getPropertyValue]("line-height");
  }
  set lineHeight(value) {
    this[$setProperty]("line-height", value, "");
  }
  get listStyle() {
    return this[$getPropertyValue]("list-style");
  }
  set listStyle(value) {
    this[$setProperty]("list-style", value, "");
  }
  get listStyleImage() {
    return this[$getPropertyValue]("list-style-image");
  }
  set listStyleImage(value) {
    this[$setProperty]("list-style-image", value, "");
  }
  get listStylePosition() {
    return this[$getPropertyValue]("list-style-position");
  }
  set listStylePosition(value) {
    this[$setProperty]("list-style-position", value, "");
  }
  get listStyleType() {
    return this[$getPropertyValue]("list-style-type");
  }
  set listStyleType(value) {
    this[$setProperty]("list-style-type", value, "");
  }
  get locale() {
    return this[$getPropertyValue]("locale");
  }
  set locale(value) {
    this[$setProperty]("locale", value, "");
  }
  get logicalHeight() {
    return this[$getPropertyValue]("logical-height");
  }
  set logicalHeight(value) {
    this[$setProperty]("logical-height", value, "");
  }
  get logicalWidth() {
    return this[$getPropertyValue]("logical-width");
  }
  set logicalWidth(value) {
    this[$setProperty]("logical-width", value, "");
  }
  get margin() {
    return this[$getPropertyValue]("margin");
  }
  set margin(value) {
    this[$setProperty]("margin", value, "");
  }
  get marginAfter() {
    return this[$getPropertyValue]("margin-after");
  }
  set marginAfter(value) {
    this[$setProperty]("margin-after", value, "");
  }
  get marginAfterCollapse() {
    return this[$getPropertyValue]("margin-after-collapse");
  }
  set marginAfterCollapse(value) {
    this[$setProperty]("margin-after-collapse", value, "");
  }
  get marginBefore() {
    return this[$getPropertyValue]("margin-before");
  }
  set marginBefore(value) {
    this[$setProperty]("margin-before", value, "");
  }
  get marginBeforeCollapse() {
    return this[$getPropertyValue]("margin-before-collapse");
  }
  set marginBeforeCollapse(value) {
    this[$setProperty]("margin-before-collapse", value, "");
  }
  get marginBottom() {
    return this[$getPropertyValue]("margin-bottom");
  }
  set marginBottom(value) {
    this[$setProperty]("margin-bottom", value, "");
  }
  get marginBottomCollapse() {
    return this[$getPropertyValue]("margin-bottom-collapse");
  }
  set marginBottomCollapse(value) {
    this[$setProperty]("margin-bottom-collapse", value, "");
  }
  get marginCollapse() {
    return this[$getPropertyValue]("margin-collapse");
  }
  set marginCollapse(value) {
    this[$setProperty]("margin-collapse", value, "");
  }
  get marginEnd() {
    return this[$getPropertyValue]("margin-end");
  }
  set marginEnd(value) {
    this[$setProperty]("margin-end", value, "");
  }
  get marginLeft() {
    return this[$getPropertyValue]("margin-left");
  }
  set marginLeft(value) {
    this[$setProperty]("margin-left", value, "");
  }
  get marginRight() {
    return this[$getPropertyValue]("margin-right");
  }
  set marginRight(value) {
    this[$setProperty]("margin-right", value, "");
  }
  get marginStart() {
    return this[$getPropertyValue]("margin-start");
  }
  set marginStart(value) {
    this[$setProperty]("margin-start", value, "");
  }
  get marginTop() {
    return this[$getPropertyValue]("margin-top");
  }
  set marginTop(value) {
    this[$setProperty]("margin-top", value, "");
  }
  get marginTopCollapse() {
    return this[$getPropertyValue]("margin-top-collapse");
  }
  set marginTopCollapse(value) {
    this[$setProperty]("margin-top-collapse", value, "");
  }
  get mask() {
    return this[$getPropertyValue]("mask");
  }
  set mask(value) {
    this[$setProperty]("mask", value, "");
  }
  get maskBoxImage() {
    return this[$getPropertyValue]("mask-box-image");
  }
  set maskBoxImage(value) {
    this[$setProperty]("mask-box-image", value, "");
  }
  get maskBoxImageOutset() {
    return this[$getPropertyValue]("mask-box-image-outset");
  }
  set maskBoxImageOutset(value) {
    this[$setProperty]("mask-box-image-outset", value, "");
  }
  get maskBoxImageRepeat() {
    return this[$getPropertyValue]("mask-box-image-repeat");
  }
  set maskBoxImageRepeat(value) {
    this[$setProperty]("mask-box-image-repeat", value, "");
  }
  get maskBoxImageSlice() {
    return this[$getPropertyValue]("mask-box-image-slice");
  }
  set maskBoxImageSlice(value) {
    this[$setProperty]("mask-box-image-slice", value, "");
  }
  get maskBoxImageSource() {
    return this[$getPropertyValue]("mask-box-image-source");
  }
  set maskBoxImageSource(value) {
    this[$setProperty]("mask-box-image-source", value, "");
  }
  get maskBoxImageWidth() {
    return this[$getPropertyValue]("mask-box-image-width");
  }
  set maskBoxImageWidth(value) {
    this[$setProperty]("mask-box-image-width", value, "");
  }
  get maskClip() {
    return this[$getPropertyValue]("mask-clip");
  }
  set maskClip(value) {
    this[$setProperty]("mask-clip", value, "");
  }
  get maskComposite() {
    return this[$getPropertyValue]("mask-composite");
  }
  set maskComposite(value) {
    this[$setProperty]("mask-composite", value, "");
  }
  get maskImage() {
    return this[$getPropertyValue]("mask-image");
  }
  set maskImage(value) {
    this[$setProperty]("mask-image", value, "");
  }
  get maskOrigin() {
    return this[$getPropertyValue]("mask-origin");
  }
  set maskOrigin(value) {
    this[$setProperty]("mask-origin", value, "");
  }
  get maskPosition() {
    return this[$getPropertyValue]("mask-position");
  }
  set maskPosition(value) {
    this[$setProperty]("mask-position", value, "");
  }
  get maskPositionX() {
    return this[$getPropertyValue]("mask-position-x");
  }
  set maskPositionX(value) {
    this[$setProperty]("mask-position-x", value, "");
  }
  get maskPositionY() {
    return this[$getPropertyValue]("mask-position-y");
  }
  set maskPositionY(value) {
    this[$setProperty]("mask-position-y", value, "");
  }
  get maskRepeat() {
    return this[$getPropertyValue]("mask-repeat");
  }
  set maskRepeat(value) {
    this[$setProperty]("mask-repeat", value, "");
  }
  get maskRepeatX() {
    return this[$getPropertyValue]("mask-repeat-x");
  }
  set maskRepeatX(value) {
    this[$setProperty]("mask-repeat-x", value, "");
  }
  get maskRepeatY() {
    return this[$getPropertyValue]("mask-repeat-y");
  }
  set maskRepeatY(value) {
    this[$setProperty]("mask-repeat-y", value, "");
  }
  get maskSize() {
    return this[$getPropertyValue]("mask-size");
  }
  set maskSize(value) {
    this[$setProperty]("mask-size", value, "");
  }
  get maskSourceType() {
    return this[$getPropertyValue]("mask-source-type");
  }
  set maskSourceType(value) {
    this[$setProperty]("mask-source-type", value, "");
  }
  get maxHeight() {
    return this[$getPropertyValue]("max-height");
  }
  set maxHeight(value) {
    this[$setProperty]("max-height", value, "");
  }
  get maxLogicalHeight() {
    return this[$getPropertyValue]("max-logical-height");
  }
  set maxLogicalHeight(value) {
    this[$setProperty]("max-logical-height", value, "");
  }
  get maxLogicalWidth() {
    return this[$getPropertyValue]("max-logical-width");
  }
  set maxLogicalWidth(value) {
    this[$setProperty]("max-logical-width", value, "");
  }
  get maxWidth() {
    return this[$getPropertyValue]("max-width");
  }
  set maxWidth(value) {
    this[$setProperty]("max-width", value, "");
  }
  get maxZoom() {
    return this[$getPropertyValue]("max-zoom");
  }
  set maxZoom(value) {
    this[$setProperty]("max-zoom", value, "");
  }
  get minHeight() {
    return this[$getPropertyValue]("min-height");
  }
  set minHeight(value) {
    this[$setProperty]("min-height", value, "");
  }
  get minLogicalHeight() {
    return this[$getPropertyValue]("min-logical-height");
  }
  set minLogicalHeight(value) {
    this[$setProperty]("min-logical-height", value, "");
  }
  get minLogicalWidth() {
    return this[$getPropertyValue]("min-logical-width");
  }
  set minLogicalWidth(value) {
    this[$setProperty]("min-logical-width", value, "");
  }
  get minWidth() {
    return this[$getPropertyValue]("min-width");
  }
  set minWidth(value) {
    this[$setProperty]("min-width", value, "");
  }
  get minZoom() {
    return this[$getPropertyValue]("min-zoom");
  }
  set minZoom(value) {
    this[$setProperty]("min-zoom", value, "");
  }
  get mixBlendMode() {
    return this[$getPropertyValue]("mix-blend-mode");
  }
  set mixBlendMode(value) {
    this[$setProperty]("mix-blend-mode", value, "");
  }
  get objectFit() {
    return this[$getPropertyValue]("object-fit");
  }
  set objectFit(value) {
    this[$setProperty]("object-fit", value, "");
  }
  get objectPosition() {
    return this[$getPropertyValue]("object-position");
  }
  set objectPosition(value) {
    this[$setProperty]("object-position", value, "");
  }
  get opacity() {
    return this[$getPropertyValue]("opacity");
  }
  set opacity(value) {
    this[$setProperty]("opacity", value, "");
  }
  get order() {
    return this[$getPropertyValue]("order");
  }
  set order(value) {
    this[$setProperty]("order", value, "");
  }
  get orientation() {
    return this[$getPropertyValue]("orientation");
  }
  set orientation(value) {
    this[$setProperty]("orientation", value, "");
  }
  get orphans() {
    return this[$getPropertyValue]("orphans");
  }
  set orphans(value) {
    this[$setProperty]("orphans", value, "");
  }
  get outline() {
    return this[$getPropertyValue]("outline");
  }
  set outline(value) {
    this[$setProperty]("outline", value, "");
  }
  get outlineColor() {
    return this[$getPropertyValue]("outline-color");
  }
  set outlineColor(value) {
    this[$setProperty]("outline-color", value, "");
  }
  get outlineOffset() {
    return this[$getPropertyValue]("outline-offset");
  }
  set outlineOffset(value) {
    this[$setProperty]("outline-offset", value, "");
  }
  get outlineStyle() {
    return this[$getPropertyValue]("outline-style");
  }
  set outlineStyle(value) {
    this[$setProperty]("outline-style", value, "");
  }
  get outlineWidth() {
    return this[$getPropertyValue]("outline-width");
  }
  set outlineWidth(value) {
    this[$setProperty]("outline-width", value, "");
  }
  get overflow() {
    return this[$getPropertyValue]("overflow");
  }
  set overflow(value) {
    this[$setProperty]("overflow", value, "");
  }
  get overflowWrap() {
    return this[$getPropertyValue]("overflow-wrap");
  }
  set overflowWrap(value) {
    this[$setProperty]("overflow-wrap", value, "");
  }
  get overflowX() {
    return this[$getPropertyValue]("overflow-x");
  }
  set overflowX(value) {
    this[$setProperty]("overflow-x", value, "");
  }
  get overflowY() {
    return this[$getPropertyValue]("overflow-y");
  }
  set overflowY(value) {
    this[$setProperty]("overflow-y", value, "");
  }
  get padding() {
    return this[$getPropertyValue]("padding");
  }
  set padding(value) {
    this[$setProperty]("padding", value, "");
  }
  get paddingAfter() {
    return this[$getPropertyValue]("padding-after");
  }
  set paddingAfter(value) {
    this[$setProperty]("padding-after", value, "");
  }
  get paddingBefore() {
    return this[$getPropertyValue]("padding-before");
  }
  set paddingBefore(value) {
    this[$setProperty]("padding-before", value, "");
  }
  get paddingBottom() {
    return this[$getPropertyValue]("padding-bottom");
  }
  set paddingBottom(value) {
    this[$setProperty]("padding-bottom", value, "");
  }
  get paddingEnd() {
    return this[$getPropertyValue]("padding-end");
  }
  set paddingEnd(value) {
    this[$setProperty]("padding-end", value, "");
  }
  get paddingLeft() {
    return this[$getPropertyValue]("padding-left");
  }
  set paddingLeft(value) {
    this[$setProperty]("padding-left", value, "");
  }
  get paddingRight() {
    return this[$getPropertyValue]("padding-right");
  }
  set paddingRight(value) {
    this[$setProperty]("padding-right", value, "");
  }
  get paddingStart() {
    return this[$getPropertyValue]("padding-start");
  }
  set paddingStart(value) {
    this[$setProperty]("padding-start", value, "");
  }
  get paddingTop() {
    return this[$getPropertyValue]("padding-top");
  }
  set paddingTop(value) {
    this[$setProperty]("padding-top", value, "");
  }
  get page() {
    return this[$getPropertyValue]("page");
  }
  set page(value) {
    this[$setProperty]("page", value, "");
  }
  get pageBreakAfter() {
    return this[$getPropertyValue]("page-break-after");
  }
  set pageBreakAfter(value) {
    this[$setProperty]("page-break-after", value, "");
  }
  get pageBreakBefore() {
    return this[$getPropertyValue]("page-break-before");
  }
  set pageBreakBefore(value) {
    this[$setProperty]("page-break-before", value, "");
  }
  get pageBreakInside() {
    return this[$getPropertyValue]("page-break-inside");
  }
  set pageBreakInside(value) {
    this[$setProperty]("page-break-inside", value, "");
  }
  get perspective() {
    return this[$getPropertyValue]("perspective");
  }
  set perspective(value) {
    this[$setProperty]("perspective", value, "");
  }
  get perspectiveOrigin() {
    return this[$getPropertyValue]("perspective-origin");
  }
  set perspectiveOrigin(value) {
    this[$setProperty]("perspective-origin", value, "");
  }
  get perspectiveOriginX() {
    return this[$getPropertyValue]("perspective-origin-x");
  }
  set perspectiveOriginX(value) {
    this[$setProperty]("perspective-origin-x", value, "");
  }
  get perspectiveOriginY() {
    return this[$getPropertyValue]("perspective-origin-y");
  }
  set perspectiveOriginY(value) {
    this[$setProperty]("perspective-origin-y", value, "");
  }
  get pointerEvents() {
    return this[$getPropertyValue]("pointer-events");
  }
  set pointerEvents(value) {
    this[$setProperty]("pointer-events", value, "");
  }
  get position() {
    return this[$getPropertyValue]("position");
  }
  set position(value) {
    this[$setProperty]("position", value, "");
  }
  get printColorAdjust() {
    return this[$getPropertyValue]("print-color-adjust");
  }
  set printColorAdjust(value) {
    this[$setProperty]("print-color-adjust", value, "");
  }
  get quotes() {
    return this[$getPropertyValue]("quotes");
  }
  set quotes(value) {
    this[$setProperty]("quotes", value, "");
  }
  get resize() {
    return this[$getPropertyValue]("resize");
  }
  set resize(value) {
    this[$setProperty]("resize", value, "");
  }
  get right() {
    return this[$getPropertyValue]("right");
  }
  set right(value) {
    this[$setProperty]("right", value, "");
  }
  get rtlOrdering() {
    return this[$getPropertyValue]("rtl-ordering");
  }
  set rtlOrdering(value) {
    this[$setProperty]("rtl-ordering", value, "");
  }
  get rubyPosition() {
    return this[$getPropertyValue]("ruby-position");
  }
  set rubyPosition(value) {
    this[$setProperty]("ruby-position", value, "");
  }
  get scrollBehavior() {
    return this[$getPropertyValue]("scroll-behavior");
  }
  set scrollBehavior(value) {
    this[$setProperty]("scroll-behavior", value, "");
  }
  get shapeImageThreshold() {
    return this[$getPropertyValue]("shape-image-threshold");
  }
  set shapeImageThreshold(value) {
    this[$setProperty]("shape-image-threshold", value, "");
  }
  get shapeMargin() {
    return this[$getPropertyValue]("shape-margin");
  }
  set shapeMargin(value) {
    this[$setProperty]("shape-margin", value, "");
  }
  get shapeOutside() {
    return this[$getPropertyValue]("shape-outside");
  }
  set shapeOutside(value) {
    this[$setProperty]("shape-outside", value, "");
  }
  get size() {
    return this[$getPropertyValue]("size");
  }
  set size(value) {
    this[$setProperty]("size", value, "");
  }
  get speak() {
    return this[$getPropertyValue]("speak");
  }
  set speak(value) {
    this[$setProperty]("speak", value, "");
  }
  get src() {
    return this[$getPropertyValue]("src");
  }
  set src(value) {
    this[$setProperty]("src", value, "");
  }
  get tabSize() {
    return this[$getPropertyValue]("tab-size");
  }
  set tabSize(value) {
    this[$setProperty]("tab-size", value, "");
  }
  get tableLayout() {
    return this[$getPropertyValue]("table-layout");
  }
  set tableLayout(value) {
    this[$setProperty]("table-layout", value, "");
  }
  get tapHighlightColor() {
    return this[$getPropertyValue]("tap-highlight-color");
  }
  set tapHighlightColor(value) {
    this[$setProperty]("tap-highlight-color", value, "");
  }
  get textAlign() {
    return this[$getPropertyValue]("text-align");
  }
  set textAlign(value) {
    this[$setProperty]("text-align", value, "");
  }
  get textAlignLast() {
    return this[$getPropertyValue]("text-align-last");
  }
  set textAlignLast(value) {
    this[$setProperty]("text-align-last", value, "");
  }
  get textCombine() {
    return this[$getPropertyValue]("text-combine");
  }
  set textCombine(value) {
    this[$setProperty]("text-combine", value, "");
  }
  get textDecoration() {
    return this[$getPropertyValue]("text-decoration");
  }
  set textDecoration(value) {
    this[$setProperty]("text-decoration", value, "");
  }
  get textDecorationColor() {
    return this[$getPropertyValue]("text-decoration-color");
  }
  set textDecorationColor(value) {
    this[$setProperty]("text-decoration-color", value, "");
  }
  get textDecorationLine() {
    return this[$getPropertyValue]("text-decoration-line");
  }
  set textDecorationLine(value) {
    this[$setProperty]("text-decoration-line", value, "");
  }
  get textDecorationStyle() {
    return this[$getPropertyValue]("text-decoration-style");
  }
  set textDecorationStyle(value) {
    this[$setProperty]("text-decoration-style", value, "");
  }
  get textDecorationsInEffect() {
    return this[$getPropertyValue]("text-decorations-in-effect");
  }
  set textDecorationsInEffect(value) {
    this[$setProperty]("text-decorations-in-effect", value, "");
  }
  get textEmphasis() {
    return this[$getPropertyValue]("text-emphasis");
  }
  set textEmphasis(value) {
    this[$setProperty]("text-emphasis", value, "");
  }
  get textEmphasisColor() {
    return this[$getPropertyValue]("text-emphasis-color");
  }
  set textEmphasisColor(value) {
    this[$setProperty]("text-emphasis-color", value, "");
  }
  get textEmphasisPosition() {
    return this[$getPropertyValue]("text-emphasis-position");
  }
  set textEmphasisPosition(value) {
    this[$setProperty]("text-emphasis-position", value, "");
  }
  get textEmphasisStyle() {
    return this[$getPropertyValue]("text-emphasis-style");
  }
  set textEmphasisStyle(value) {
    this[$setProperty]("text-emphasis-style", value, "");
  }
  get textFillColor() {
    return this[$getPropertyValue]("text-fill-color");
  }
  set textFillColor(value) {
    this[$setProperty]("text-fill-color", value, "");
  }
  get textIndent() {
    return this[$getPropertyValue]("text-indent");
  }
  set textIndent(value) {
    this[$setProperty]("text-indent", value, "");
  }
  get textJustify() {
    return this[$getPropertyValue]("text-justify");
  }
  set textJustify(value) {
    this[$setProperty]("text-justify", value, "");
  }
  get textLineThroughColor() {
    return this[$getPropertyValue]("text-line-through-color");
  }
  set textLineThroughColor(value) {
    this[$setProperty]("text-line-through-color", value, "");
  }
  get textLineThroughMode() {
    return this[$getPropertyValue]("text-line-through-mode");
  }
  set textLineThroughMode(value) {
    this[$setProperty]("text-line-through-mode", value, "");
  }
  get textLineThroughStyle() {
    return this[$getPropertyValue]("text-line-through-style");
  }
  set textLineThroughStyle(value) {
    this[$setProperty]("text-line-through-style", value, "");
  }
  get textLineThroughWidth() {
    return this[$getPropertyValue]("text-line-through-width");
  }
  set textLineThroughWidth(value) {
    this[$setProperty]("text-line-through-width", value, "");
  }
  get textOrientation() {
    return this[$getPropertyValue]("text-orientation");
  }
  set textOrientation(value) {
    this[$setProperty]("text-orientation", value, "");
  }
  get textOverflow() {
    return this[$getPropertyValue]("text-overflow");
  }
  set textOverflow(value) {
    this[$setProperty]("text-overflow", value, "");
  }
  get textOverlineColor() {
    return this[$getPropertyValue]("text-overline-color");
  }
  set textOverlineColor(value) {
    this[$setProperty]("text-overline-color", value, "");
  }
  get textOverlineMode() {
    return this[$getPropertyValue]("text-overline-mode");
  }
  set textOverlineMode(value) {
    this[$setProperty]("text-overline-mode", value, "");
  }
  get textOverlineStyle() {
    return this[$getPropertyValue]("text-overline-style");
  }
  set textOverlineStyle(value) {
    this[$setProperty]("text-overline-style", value, "");
  }
  get textOverlineWidth() {
    return this[$getPropertyValue]("text-overline-width");
  }
  set textOverlineWidth(value) {
    this[$setProperty]("text-overline-width", value, "");
  }
  get textRendering() {
    return this[$getPropertyValue]("text-rendering");
  }
  set textRendering(value) {
    this[$setProperty]("text-rendering", value, "");
  }
  get textSecurity() {
    return this[$getPropertyValue]("text-security");
  }
  set textSecurity(value) {
    this[$setProperty]("text-security", value, "");
  }
  get textShadow() {
    return this[$getPropertyValue]("text-shadow");
  }
  set textShadow(value) {
    this[$setProperty]("text-shadow", value, "");
  }
  get textStroke() {
    return this[$getPropertyValue]("text-stroke");
  }
  set textStroke(value) {
    this[$setProperty]("text-stroke", value, "");
  }
  get textStrokeColor() {
    return this[$getPropertyValue]("text-stroke-color");
  }
  set textStrokeColor(value) {
    this[$setProperty]("text-stroke-color", value, "");
  }
  get textStrokeWidth() {
    return this[$getPropertyValue]("text-stroke-width");
  }
  set textStrokeWidth(value) {
    this[$setProperty]("text-stroke-width", value, "");
  }
  get textTransform() {
    return this[$getPropertyValue]("text-transform");
  }
  set textTransform(value) {
    this[$setProperty]("text-transform", value, "");
  }
  get textUnderlineColor() {
    return this[$getPropertyValue]("text-underline-color");
  }
  set textUnderlineColor(value) {
    this[$setProperty]("text-underline-color", value, "");
  }
  get textUnderlineMode() {
    return this[$getPropertyValue]("text-underline-mode");
  }
  set textUnderlineMode(value) {
    this[$setProperty]("text-underline-mode", value, "");
  }
  get textUnderlinePosition() {
    return this[$getPropertyValue]("text-underline-position");
  }
  set textUnderlinePosition(value) {
    this[$setProperty]("text-underline-position", value, "");
  }
  get textUnderlineStyle() {
    return this[$getPropertyValue]("text-underline-style");
  }
  set textUnderlineStyle(value) {
    this[$setProperty]("text-underline-style", value, "");
  }
  get textUnderlineWidth() {
    return this[$getPropertyValue]("text-underline-width");
  }
  set textUnderlineWidth(value) {
    this[$setProperty]("text-underline-width", value, "");
  }
  get top() {
    return this[$getPropertyValue]("top");
  }
  set top(value) {
    this[$setProperty]("top", value, "");
  }
  get touchAction() {
    return this[$getPropertyValue]("touch-action");
  }
  set touchAction(value) {
    this[$setProperty]("touch-action", value, "");
  }
  get touchActionDelay() {
    return this[$getPropertyValue]("touch-action-delay");
  }
  set touchActionDelay(value) {
    this[$setProperty]("touch-action-delay", value, "");
  }
  get transform() {
    return this[$getPropertyValue]("transform");
  }
  set transform(value) {
    this[$setProperty]("transform", value, "");
  }
  get transformOrigin() {
    return this[$getPropertyValue]("transform-origin");
  }
  set transformOrigin(value) {
    this[$setProperty]("transform-origin", value, "");
  }
  get transformOriginX() {
    return this[$getPropertyValue]("transform-origin-x");
  }
  set transformOriginX(value) {
    this[$setProperty]("transform-origin-x", value, "");
  }
  get transformOriginY() {
    return this[$getPropertyValue]("transform-origin-y");
  }
  set transformOriginY(value) {
    this[$setProperty]("transform-origin-y", value, "");
  }
  get transformOriginZ() {
    return this[$getPropertyValue]("transform-origin-z");
  }
  set transformOriginZ(value) {
    this[$setProperty]("transform-origin-z", value, "");
  }
  get transformStyle() {
    return this[$getPropertyValue]("transform-style");
  }
  set transformStyle(value) {
    this[$setProperty]("transform-style", value, "");
  }
  get transition() {
    return this[$getPropertyValue]("transition");
  }
  set transition(value) {
    this[$setProperty]("transition", value, "");
  }
  get transitionDelay() {
    return this[$getPropertyValue]("transition-delay");
  }
  set transitionDelay(value) {
    this[$setProperty]("transition-delay", value, "");
  }
  get transitionDuration() {
    return this[$getPropertyValue]("transition-duration");
  }
  set transitionDuration(value) {
    this[$setProperty]("transition-duration", value, "");
  }
  get transitionProperty() {
    return this[$getPropertyValue]("transition-property");
  }
  set transitionProperty(value) {
    this[$setProperty]("transition-property", value, "");
  }
  get transitionTimingFunction() {
    return this[$getPropertyValue]("transition-timing-function");
  }
  set transitionTimingFunction(value) {
    this[$setProperty]("transition-timing-function", value, "");
  }
  get unicodeBidi() {
    return this[$getPropertyValue]("unicode-bidi");
  }
  set unicodeBidi(value) {
    this[$setProperty]("unicode-bidi", value, "");
  }
  get unicodeRange() {
    return this[$getPropertyValue]("unicode-range");
  }
  set unicodeRange(value) {
    this[$setProperty]("unicode-range", value, "");
  }
  get userDrag() {
    return this[$getPropertyValue]("user-drag");
  }
  set userDrag(value) {
    this[$setProperty]("user-drag", value, "");
  }
  get userModify() {
    return this[$getPropertyValue]("user-modify");
  }
  set userModify(value) {
    this[$setProperty]("user-modify", value, "");
  }
  get userSelect() {
    return this[$getPropertyValue]("user-select");
  }
  set userSelect(value) {
    this[$setProperty]("user-select", value, "");
  }
  get userZoom() {
    return this[$getPropertyValue]("user-zoom");
  }
  set userZoom(value) {
    this[$setProperty]("user-zoom", value, "");
  }
  get verticalAlign() {
    return this[$getPropertyValue]("vertical-align");
  }
  set verticalAlign(value) {
    this[$setProperty]("vertical-align", value, "");
  }
  get visibility() {
    return this[$getPropertyValue]("visibility");
  }
  set visibility(value) {
    this[$setProperty]("visibility", value, "");
  }
  get whiteSpace() {
    return this[$getPropertyValue]("white-space");
  }
  set whiteSpace(value) {
    this[$setProperty]("white-space", value, "");
  }
  get widows() {
    return this[$getPropertyValue]("widows");
  }
  set widows(value) {
    this[$setProperty]("widows", value, "");
  }
  get width() {
    return this[$getPropertyValue]("width");
  }
  set width(value) {
    this[$setProperty]("width", value, "");
  }
  get willChange() {
    return this[$getPropertyValue]("will-change");
  }
  set willChange(value) {
    this[$setProperty]("will-change", value, "");
  }
  get wordBreak() {
    return this[$getPropertyValue]("word-break");
  }
  set wordBreak(value) {
    this[$setProperty]("word-break", value, "");
  }
  get wordSpacing() {
    return this[$getPropertyValue]("word-spacing");
  }
  set wordSpacing(value) {
    this[$setProperty]("word-spacing", value, "");
  }
  get wordWrap() {
    return this[$getPropertyValue]("word-wrap");
  }
  set wordWrap(value) {
    this[$setProperty]("word-wrap", value, "");
  }
  get wrapFlow() {
    return this[$getPropertyValue]("wrap-flow");
  }
  set wrapFlow(value) {
    this[$setProperty]("wrap-flow", value, "");
  }
  get wrapThrough() {
    return this[$getPropertyValue]("wrap-through");
  }
  set wrapThrough(value) {
    this[$setProperty]("wrap-through", value, "");
  }
  get writingMode() {
    return this[$getPropertyValue]("writing-mode");
  }
  set writingMode(value) {
    this[$setProperty]("writing-mode", value, "");
  }
  get zIndex() {
    return this[$getPropertyValue]("z-index");
  }
  set zIndex(value) {
    this[$setProperty]("z-index", value, "");
  }
  get zoom() {
    return this[$getPropertyValue]("zoom");
  }
  set zoom(value) {
    this[$setProperty]("zoom", value, "");
  }
};
(html$.CssStyleDeclarationBase.new = function() {
}).prototype = html$.CssStyleDeclarationBase.prototype;
dart.addTypeTests(html$.CssStyleDeclarationBase);
dart.setGetterSignature(html$.CssStyleDeclarationBase, () => ({
  __proto__: dart.getGetters(html$.CssStyleDeclarationBase.__proto__),
  alignContent: core.String,
  [$alignContent]: core.String,
  alignItems: core.String,
  [$alignItems]: core.String,
  alignSelf: core.String,
  [$alignSelf]: core.String,
  animation: core.String,
  [$animation]: core.String,
  animationDelay: core.String,
  [$animationDelay]: core.String,
  animationDirection: core.String,
  [$animationDirection]: core.String,
  animationDuration: core.String,
  [$animationDuration]: core.String,
  animationFillMode: core.String,
  [$animationFillMode]: core.String,
  animationIterationCount: core.String,
  [$animationIterationCount]: core.String,
  animationName: core.String,
  [$animationName]: core.String,
  animationPlayState: core.String,
  [$animationPlayState]: core.String,
  animationTimingFunction: core.String,
  [$animationTimingFunction]: core.String,
  appRegion: core.String,
  [$appRegion]: core.String,
  appearance: core.String,
  [$appearance]: core.String,
  aspectRatio: core.String,
  [$aspectRatio]: core.String,
  backfaceVisibility: core.String,
  [$backfaceVisibility]: core.String,
  background: core.String,
  [$background]: core.String,
  backgroundAttachment: core.String,
  [$backgroundAttachment]: core.String,
  backgroundBlendMode: core.String,
  [$backgroundBlendMode]: core.String,
  backgroundClip: core.String,
  [$backgroundClip]: core.String,
  backgroundColor: core.String,
  [$backgroundColor]: core.String,
  backgroundComposite: core.String,
  [$backgroundComposite]: core.String,
  backgroundImage: core.String,
  [$backgroundImage]: core.String,
  backgroundOrigin: core.String,
  [$backgroundOrigin]: core.String,
  backgroundPosition: core.String,
  [$backgroundPosition]: core.String,
  backgroundPositionX: core.String,
  [$backgroundPositionX]: core.String,
  backgroundPositionY: core.String,
  [$backgroundPositionY]: core.String,
  backgroundRepeat: core.String,
  [$backgroundRepeat]: core.String,
  backgroundRepeatX: core.String,
  [$backgroundRepeatX]: core.String,
  backgroundRepeatY: core.String,
  [$backgroundRepeatY]: core.String,
  backgroundSize: core.String,
  [$backgroundSize]: core.String,
  border: core.String,
  [$border]: core.String,
  borderAfter: core.String,
  [$borderAfter]: core.String,
  borderAfterColor: core.String,
  [$borderAfterColor]: core.String,
  borderAfterStyle: core.String,
  [$borderAfterStyle]: core.String,
  borderAfterWidth: core.String,
  [$borderAfterWidth]: core.String,
  borderBefore: core.String,
  [$borderBefore]: core.String,
  borderBeforeColor: core.String,
  [$borderBeforeColor]: core.String,
  borderBeforeStyle: core.String,
  [$borderBeforeStyle]: core.String,
  borderBeforeWidth: core.String,
  [$borderBeforeWidth]: core.String,
  borderBottom: core.String,
  [$borderBottom]: core.String,
  borderBottomColor: core.String,
  [$borderBottomColor]: core.String,
  borderBottomLeftRadius: core.String,
  [$borderBottomLeftRadius]: core.String,
  borderBottomRightRadius: core.String,
  [$borderBottomRightRadius]: core.String,
  borderBottomStyle: core.String,
  [$borderBottomStyle]: core.String,
  borderBottomWidth: core.String,
  [$borderBottomWidth]: core.String,
  borderCollapse: core.String,
  [$borderCollapse]: core.String,
  borderColor: core.String,
  [$borderColor]: core.String,
  borderEnd: core.String,
  [$borderEnd]: core.String,
  borderEndColor: core.String,
  [$borderEndColor]: core.String,
  borderEndStyle: core.String,
  [$borderEndStyle]: core.String,
  borderEndWidth: core.String,
  [$borderEndWidth]: core.String,
  borderFit: core.String,
  [$borderFit]: core.String,
  borderHorizontalSpacing: core.String,
  [$borderHorizontalSpacing]: core.String,
  borderImage: core.String,
  [$borderImage]: core.String,
  borderImageOutset: core.String,
  [$borderImageOutset]: core.String,
  borderImageRepeat: core.String,
  [$borderImageRepeat]: core.String,
  borderImageSlice: core.String,
  [$borderImageSlice]: core.String,
  borderImageSource: core.String,
  [$borderImageSource]: core.String,
  borderImageWidth: core.String,
  [$borderImageWidth]: core.String,
  borderLeft: core.String,
  [$borderLeft]: core.String,
  borderLeftColor: core.String,
  [$borderLeftColor]: core.String,
  borderLeftStyle: core.String,
  [$borderLeftStyle]: core.String,
  borderLeftWidth: core.String,
  [$borderLeftWidth]: core.String,
  borderRadius: core.String,
  [$borderRadius]: core.String,
  borderRight: core.String,
  [$borderRight]: core.String,
  borderRightColor: core.String,
  [$borderRightColor]: core.String,
  borderRightStyle: core.String,
  [$borderRightStyle]: core.String,
  borderRightWidth: core.String,
  [$borderRightWidth]: core.String,
  borderSpacing: core.String,
  [$borderSpacing]: core.String,
  borderStart: core.String,
  [$borderStart]: core.String,
  borderStartColor: core.String,
  [$borderStartColor]: core.String,
  borderStartStyle: core.String,
  [$borderStartStyle]: core.String,
  borderStartWidth: core.String,
  [$borderStartWidth]: core.String,
  borderStyle: core.String,
  [$borderStyle]: core.String,
  borderTop: core.String,
  [$borderTop]: core.String,
  borderTopColor: core.String,
  [$borderTopColor]: core.String,
  borderTopLeftRadius: core.String,
  [$borderTopLeftRadius]: core.String,
  borderTopRightRadius: core.String,
  [$borderTopRightRadius]: core.String,
  borderTopStyle: core.String,
  [$borderTopStyle]: core.String,
  borderTopWidth: core.String,
  [$borderTopWidth]: core.String,
  borderVerticalSpacing: core.String,
  [$borderVerticalSpacing]: core.String,
  borderWidth: core.String,
  [$borderWidth]: core.String,
  bottom: core.String,
  [$bottom]: core.String,
  boxAlign: core.String,
  [$boxAlign]: core.String,
  boxDecorationBreak: core.String,
  [$boxDecorationBreak]: core.String,
  boxDirection: core.String,
  [$boxDirection]: core.String,
  boxFlex: core.String,
  [$boxFlex]: core.String,
  boxFlexGroup: core.String,
  [$boxFlexGroup]: core.String,
  boxLines: core.String,
  [$boxLines]: core.String,
  boxOrdinalGroup: core.String,
  [$boxOrdinalGroup]: core.String,
  boxOrient: core.String,
  [$boxOrient]: core.String,
  boxPack: core.String,
  [$boxPack]: core.String,
  boxReflect: core.String,
  [$boxReflect]: core.String,
  boxShadow: core.String,
  [$boxShadow]: core.String,
  boxSizing: core.String,
  [$boxSizing]: core.String,
  captionSide: core.String,
  [$captionSide]: core.String,
  clear: core.String,
  [$clear]: core.String,
  clip: core.String,
  [$clip]: core.String,
  clipPath: core.String,
  [$clipPath]: core.String,
  color: core.String,
  [$color]: core.String,
  columnBreakAfter: core.String,
  [$columnBreakAfter]: core.String,
  columnBreakBefore: core.String,
  [$columnBreakBefore]: core.String,
  columnBreakInside: core.String,
  [$columnBreakInside]: core.String,
  columnCount: core.String,
  [$columnCount]: core.String,
  columnFill: core.String,
  [$columnFill]: core.String,
  columnGap: core.String,
  [$columnGap]: core.String,
  columnRule: core.String,
  [$columnRule]: core.String,
  columnRuleColor: core.String,
  [$columnRuleColor]: core.String,
  columnRuleStyle: core.String,
  [$columnRuleStyle]: core.String,
  columnRuleWidth: core.String,
  [$columnRuleWidth]: core.String,
  columnSpan: core.String,
  [$columnSpan]: core.String,
  columnWidth: core.String,
  [$columnWidth]: core.String,
  columns: core.String,
  [$columns]: core.String,
  content: core.String,
  [$content]: core.String,
  counterIncrement: core.String,
  [$counterIncrement]: core.String,
  counterReset: core.String,
  [$counterReset]: core.String,
  cursor: core.String,
  [$cursor]: core.String,
  direction: core.String,
  [$direction]: core.String,
  display: core.String,
  [$display]: core.String,
  emptyCells: core.String,
  [$emptyCells]: core.String,
  filter: core.String,
  [$filter]: core.String,
  flex: core.String,
  [$flex]: core.String,
  flexBasis: core.String,
  [$flexBasis]: core.String,
  flexDirection: core.String,
  [$flexDirection]: core.String,
  flexFlow: core.String,
  [$flexFlow]: core.String,
  flexGrow: core.String,
  [$flexGrow]: core.String,
  flexShrink: core.String,
  [$flexShrink]: core.String,
  flexWrap: core.String,
  [$flexWrap]: core.String,
  float: core.String,
  [$float]: core.String,
  font: core.String,
  [$font]: core.String,
  fontFamily: core.String,
  [$fontFamily]: core.String,
  fontFeatureSettings: core.String,
  [$fontFeatureSettings]: core.String,
  fontKerning: core.String,
  [$fontKerning]: core.String,
  fontSize: core.String,
  [$fontSize]: core.String,
  fontSizeDelta: core.String,
  [$fontSizeDelta]: core.String,
  fontSmoothing: core.String,
  [$fontSmoothing]: core.String,
  fontStretch: core.String,
  [$fontStretch]: core.String,
  fontStyle: core.String,
  [$fontStyle]: core.String,
  fontVariant: core.String,
  [$fontVariant]: core.String,
  fontVariantLigatures: core.String,
  [$fontVariantLigatures]: core.String,
  fontWeight: core.String,
  [$fontWeight]: core.String,
  grid: core.String,
  [$grid]: core.String,
  gridArea: core.String,
  [$gridArea]: core.String,
  gridAutoColumns: core.String,
  [$gridAutoColumns]: core.String,
  gridAutoFlow: core.String,
  [$gridAutoFlow]: core.String,
  gridAutoRows: core.String,
  [$gridAutoRows]: core.String,
  gridColumn: core.String,
  [$gridColumn]: core.String,
  gridColumnEnd: core.String,
  [$gridColumnEnd]: core.String,
  gridColumnStart: core.String,
  [$gridColumnStart]: core.String,
  gridRow: core.String,
  [$gridRow]: core.String,
  gridRowEnd: core.String,
  [$gridRowEnd]: core.String,
  gridRowStart: core.String,
  [$gridRowStart]: core.String,
  gridTemplate: core.String,
  [$gridTemplate]: core.String,
  gridTemplateAreas: core.String,
  [$gridTemplateAreas]: core.String,
  gridTemplateColumns: core.String,
  [$gridTemplateColumns]: core.String,
  gridTemplateRows: core.String,
  [$gridTemplateRows]: core.String,
  height: core.String,
  [$height]: core.String,
  highlight: core.String,
  [$highlight]: core.String,
  hyphenateCharacter: core.String,
  [$hyphenateCharacter]: core.String,
  imageRendering: core.String,
  [$imageRendering]: core.String,
  isolation: core.String,
  [$isolation]: core.String,
  justifyContent: core.String,
  [$justifyContent]: core.String,
  justifySelf: core.String,
  [$justifySelf]: core.String,
  left: core.String,
  [$left]: core.String,
  letterSpacing: core.String,
  [$letterSpacing]: core.String,
  lineBoxContain: core.String,
  [$lineBoxContain]: core.String,
  lineBreak: core.String,
  [$lineBreak]: core.String,
  lineClamp: core.String,
  [$lineClamp]: core.String,
  lineHeight: core.String,
  [$lineHeight]: core.String,
  listStyle: core.String,
  [$listStyle]: core.String,
  listStyleImage: core.String,
  [$listStyleImage]: core.String,
  listStylePosition: core.String,
  [$listStylePosition]: core.String,
  listStyleType: core.String,
  [$listStyleType]: core.String,
  locale: core.String,
  [$locale]: core.String,
  logicalHeight: core.String,
  [$logicalHeight]: core.String,
  logicalWidth: core.String,
  [$logicalWidth]: core.String,
  margin: core.String,
  [$margin]: core.String,
  marginAfter: core.String,
  [$marginAfter]: core.String,
  marginAfterCollapse: core.String,
  [$marginAfterCollapse]: core.String,
  marginBefore: core.String,
  [$marginBefore]: core.String,
  marginBeforeCollapse: core.String,
  [$marginBeforeCollapse]: core.String,
  marginBottom: core.String,
  [$marginBottom]: core.String,
  marginBottomCollapse: core.String,
  [$marginBottomCollapse]: core.String,
  marginCollapse: core.String,
  [$marginCollapse]: core.String,
  marginEnd: core.String,
  [$marginEnd]: core.String,
  marginLeft: core.String,
  [$marginLeft]: core.String,
  marginRight: core.String,
  [$marginRight]: core.String,
  marginStart: core.String,
  [$marginStart]: core.String,
  marginTop: core.String,
  [$marginTop]: core.String,
  marginTopCollapse: core.String,
  [$marginTopCollapse]: core.String,
  mask: core.String,
  [$mask]: core.String,
  maskBoxImage: core.String,
  [$maskBoxImage]: core.String,
  maskBoxImageOutset: core.String,
  [$maskBoxImageOutset]: core.String,
  maskBoxImageRepeat: core.String,
  [$maskBoxImageRepeat]: core.String,
  maskBoxImageSlice: core.String,
  [$maskBoxImageSlice]: core.String,
  maskBoxImageSource: core.String,
  [$maskBoxImageSource]: core.String,
  maskBoxImageWidth: core.String,
  [$maskBoxImageWidth]: core.String,
  maskClip: core.String,
  [$maskClip]: core.String,
  maskComposite: core.String,
  [$maskComposite]: core.String,
  maskImage: core.String,
  [$maskImage]: core.String,
  maskOrigin: core.String,
  [$maskOrigin]: core.String,
  maskPosition: core.String,
  [$maskPosition]: core.String,
  maskPositionX: core.String,
  [$maskPositionX]: core.String,
  maskPositionY: core.String,
  [$maskPositionY]: core.String,
  maskRepeat: core.String,
  [$maskRepeat]: core.String,
  maskRepeatX: core.String,
  [$maskRepeatX]: core.String,
  maskRepeatY: core.String,
  [$maskRepeatY]: core.String,
  maskSize: core.String,
  [$maskSize]: core.String,
  maskSourceType: core.String,
  [$maskSourceType]: core.String,
  maxHeight: core.String,
  [$maxHeight]: core.String,
  maxLogicalHeight: core.String,
  [$maxLogicalHeight]: core.String,
  maxLogicalWidth: core.String,
  [$maxLogicalWidth]: core.String,
  maxWidth: core.String,
  [$maxWidth]: core.String,
  maxZoom: core.String,
  [$maxZoom]: core.String,
  minHeight: core.String,
  [$minHeight]: core.String,
  minLogicalHeight: core.String,
  [$minLogicalHeight]: core.String,
  minLogicalWidth: core.String,
  [$minLogicalWidth]: core.String,
  minWidth: core.String,
  [$minWidth]: core.String,
  minZoom: core.String,
  [$minZoom]: core.String,
  mixBlendMode: core.String,
  [$mixBlendMode]: core.String,
  objectFit: core.String,
  [$objectFit]: core.String,
  objectPosition: core.String,
  [$objectPosition]: core.String,
  opacity: core.String,
  [$opacity]: core.String,
  order: core.String,
  [$order]: core.String,
  orientation: core.String,
  [$orientation]: core.String,
  orphans: core.String,
  [$orphans]: core.String,
  outline: core.String,
  [$outline]: core.String,
  outlineColor: core.String,
  [$outlineColor]: core.String,
  outlineOffset: core.String,
  [$outlineOffset]: core.String,
  outlineStyle: core.String,
  [$outlineStyle]: core.String,
  outlineWidth: core.String,
  [$outlineWidth]: core.String,
  overflow: core.String,
  [$overflow]: core.String,
  overflowWrap: core.String,
  [$overflowWrap]: core.String,
  overflowX: core.String,
  [$overflowX]: core.String,
  overflowY: core.String,
  [$overflowY]: core.String,
  padding: core.String,
  [$padding]: core.String,
  paddingAfter: core.String,
  [$paddingAfter]: core.String,
  paddingBefore: core.String,
  [$paddingBefore]: core.String,
  paddingBottom: core.String,
  [$paddingBottom]: core.String,
  paddingEnd: core.String,
  [$paddingEnd]: core.String,
  paddingLeft: core.String,
  [$paddingLeft]: core.String,
  paddingRight: core.String,
  [$paddingRight]: core.String,
  paddingStart: core.String,
  [$paddingStart]: core.String,
  paddingTop: core.String,
  [$paddingTop]: core.String,
  page: core.String,
  [$page]: core.String,
  pageBreakAfter: core.String,
  [$pageBreakAfter]: core.String,
  pageBreakBefore: core.String,
  [$pageBreakBefore]: core.String,
  pageBreakInside: core.String,
  [$pageBreakInside]: core.String,
  perspective: core.String,
  [$perspective]: core.String,
  perspectiveOrigin: core.String,
  [$perspectiveOrigin]: core.String,
  perspectiveOriginX: core.String,
  [$perspectiveOriginX]: core.String,
  perspectiveOriginY: core.String,
  [$perspectiveOriginY]: core.String,
  pointerEvents: core.String,
  [$pointerEvents]: core.String,
  position: core.String,
  [$position]: core.String,
  printColorAdjust: core.String,
  [$printColorAdjust]: core.String,
  quotes: core.String,
  [$quotes]: core.String,
  resize: core.String,
  [$resize]: core.String,
  right: core.String,
  [$right]: core.String,
  rtlOrdering: core.String,
  [$rtlOrdering]: core.String,
  rubyPosition: core.String,
  [$rubyPosition]: core.String,
  scrollBehavior: core.String,
  [$scrollBehavior]: core.String,
  shapeImageThreshold: core.String,
  [$shapeImageThreshold]: core.String,
  shapeMargin: core.String,
  [$shapeMargin]: core.String,
  shapeOutside: core.String,
  [$shapeOutside]: core.String,
  size: core.String,
  [$size]: core.String,
  speak: core.String,
  [$speak]: core.String,
  src: core.String,
  [$src]: core.String,
  tabSize: core.String,
  [$tabSize]: core.String,
  tableLayout: core.String,
  [$tableLayout]: core.String,
  tapHighlightColor: core.String,
  [$tapHighlightColor]: core.String,
  textAlign: core.String,
  [$textAlign]: core.String,
  textAlignLast: core.String,
  [$textAlignLast]: core.String,
  textCombine: core.String,
  [$textCombine]: core.String,
  textDecoration: core.String,
  [$textDecoration]: core.String,
  textDecorationColor: core.String,
  [$textDecorationColor]: core.String,
  textDecorationLine: core.String,
  [$textDecorationLine]: core.String,
  textDecorationStyle: core.String,
  [$textDecorationStyle]: core.String,
  textDecorationsInEffect: core.String,
  [$textDecorationsInEffect]: core.String,
  textEmphasis: core.String,
  [$textEmphasis]: core.String,
  textEmphasisColor: core.String,
  [$textEmphasisColor]: core.String,
  textEmphasisPosition: core.String,
  [$textEmphasisPosition]: core.String,
  textEmphasisStyle: core.String,
  [$textEmphasisStyle]: core.String,
  textFillColor: core.String,
  [$textFillColor]: core.String,
  textIndent: core.String,
  [$textIndent]: core.String,
  textJustify: core.String,
  [$textJustify]: core.String,
  textLineThroughColor: core.String,
  [$textLineThroughColor]: core.String,
  textLineThroughMode: core.String,
  [$textLineThroughMode]: core.String,
  textLineThroughStyle: core.String,
  [$textLineThroughStyle]: core.String,
  textLineThroughWidth: core.String,
  [$textLineThroughWidth]: core.String,
  textOrientation: core.String,
  [$textOrientation]: core.String,
  textOverflow: core.String,
  [$textOverflow]: core.String,
  textOverlineColor: core.String,
  [$textOverlineColor]: core.String,
  textOverlineMode: core.String,
  [$textOverlineMode]: core.String,
  textOverlineStyle: core.String,
  [$textOverlineStyle]: core.String,
  textOverlineWidth: core.String,
  [$textOverlineWidth]: core.String,
  textRendering: core.String,
  [$textRendering]: core.String,
  textSecurity: core.String,
  [$textSecurity]: core.String,
  textShadow: core.String,
  [$textShadow]: core.String,
  textStroke: core.String,
  [$textStroke]: core.String,
  textStrokeColor: core.String,
  [$textStrokeColor]: core.String,
  textStrokeWidth: core.String,
  [$textStrokeWidth]: core.String,
  textTransform: core.String,
  [$textTransform]: core.String,
  textUnderlineColor: core.String,
  [$textUnderlineColor]: core.String,
  textUnderlineMode: core.String,
  [$textUnderlineMode]: core.String,
  textUnderlinePosition: core.String,
  [$textUnderlinePosition]: core.String,
  textUnderlineStyle: core.String,
  [$textUnderlineStyle]: core.String,
  textUnderlineWidth: core.String,
  [$textUnderlineWidth]: core.String,
  top: core.String,
  [$top]: core.String,
  touchAction: core.String,
  [$touchAction]: core.String,
  touchActionDelay: core.String,
  [$touchActionDelay]: core.String,
  transform: core.String,
  [$transform]: core.String,
  transformOrigin: core.String,
  [$transformOrigin]: core.String,
  transformOriginX: core.String,
  [$transformOriginX]: core.String,
  transformOriginY: core.String,
  [$transformOriginY]: core.String,
  transformOriginZ: core.String,
  [$transformOriginZ]: core.String,
  transformStyle: core.String,
  [$transformStyle]: core.String,
  transition: core.String,
  [$transition]: core.String,
  transitionDelay: core.String,
  [$transitionDelay]: core.String,
  transitionDuration: core.String,
  [$transitionDuration]: core.String,
  transitionProperty: core.String,
  [$transitionProperty]: core.String,
  transitionTimingFunction: core.String,
  [$transitionTimingFunction]: core.String,
  unicodeBidi: core.String,
  [$unicodeBidi]: core.String,
  unicodeRange: core.String,
  [$unicodeRange]: core.String,
  userDrag: core.String,
  [$userDrag]: core.String,
  userModify: core.String,
  [$userModify]: core.String,
  userSelect: core.String,
  [$userSelect]: core.String,
  userZoom: core.String,
  [$userZoom]: core.String,
  verticalAlign: core.String,
  [$verticalAlign]: core.String,
  visibility: core.String,
  [$visibility]: core.String,
  whiteSpace: core.String,
  [$whiteSpace]: core.String,
  widows: core.String,
  [$widows]: core.String,
  width: core.String,
  [$width]: core.String,
  willChange: core.String,
  [$willChange]: core.String,
  wordBreak: core.String,
  [$wordBreak]: core.String,
  wordSpacing: core.String,
  [$wordSpacing]: core.String,
  wordWrap: core.String,
  [$wordWrap]: core.String,
  wrapFlow: core.String,
  [$wrapFlow]: core.String,
  wrapThrough: core.String,
  [$wrapThrough]: core.String,
  writingMode: core.String,
  [$writingMode]: core.String,
  zIndex: core.String,
  [$zIndex]: core.String,
  zoom: core.String,
  [$zoom]: core.String
}));
dart.setSetterSignature(html$.CssStyleDeclarationBase, () => ({
  __proto__: dart.getSetters(html$.CssStyleDeclarationBase.__proto__),
  alignContent: core.String,
  [$alignContent]: core.String,
  alignItems: core.String,
  [$alignItems]: core.String,
  alignSelf: core.String,
  [$alignSelf]: core.String,
  animation: core.String,
  [$animation]: core.String,
  animationDelay: core.String,
  [$animationDelay]: core.String,
  animationDirection: core.String,
  [$animationDirection]: core.String,
  animationDuration: core.String,
  [$animationDuration]: core.String,
  animationFillMode: core.String,
  [$animationFillMode]: core.String,
  animationIterationCount: core.String,
  [$animationIterationCount]: core.String,
  animationName: core.String,
  [$animationName]: core.String,
  animationPlayState: core.String,
  [$animationPlayState]: core.String,
  animationTimingFunction: core.String,
  [$animationTimingFunction]: core.String,
  appRegion: core.String,
  [$appRegion]: core.String,
  appearance: core.String,
  [$appearance]: core.String,
  aspectRatio: core.String,
  [$aspectRatio]: core.String,
  backfaceVisibility: core.String,
  [$backfaceVisibility]: core.String,
  background: core.String,
  [$background]: core.String,
  backgroundAttachment: core.String,
  [$backgroundAttachment]: core.String,
  backgroundBlendMode: core.String,
  [$backgroundBlendMode]: core.String,
  backgroundClip: core.String,
  [$backgroundClip]: core.String,
  backgroundColor: core.String,
  [$backgroundColor]: core.String,
  backgroundComposite: core.String,
  [$backgroundComposite]: core.String,
  backgroundImage: core.String,
  [$backgroundImage]: core.String,
  backgroundOrigin: core.String,
  [$backgroundOrigin]: core.String,
  backgroundPosition: core.String,
  [$backgroundPosition]: core.String,
  backgroundPositionX: core.String,
  [$backgroundPositionX]: core.String,
  backgroundPositionY: core.String,
  [$backgroundPositionY]: core.String,
  backgroundRepeat: core.String,
  [$backgroundRepeat]: core.String,
  backgroundRepeatX: core.String,
  [$backgroundRepeatX]: core.String,
  backgroundRepeatY: core.String,
  [$backgroundRepeatY]: core.String,
  backgroundSize: core.String,
  [$backgroundSize]: core.String,
  border: core.String,
  [$border]: core.String,
  borderAfter: core.String,
  [$borderAfter]: core.String,
  borderAfterColor: core.String,
  [$borderAfterColor]: core.String,
  borderAfterStyle: core.String,
  [$borderAfterStyle]: core.String,
  borderAfterWidth: core.String,
  [$borderAfterWidth]: core.String,
  borderBefore: core.String,
  [$borderBefore]: core.String,
  borderBeforeColor: core.String,
  [$borderBeforeColor]: core.String,
  borderBeforeStyle: core.String,
  [$borderBeforeStyle]: core.String,
  borderBeforeWidth: core.String,
  [$borderBeforeWidth]: core.String,
  borderBottom: core.String,
  [$borderBottom]: core.String,
  borderBottomColor: core.String,
  [$borderBottomColor]: core.String,
  borderBottomLeftRadius: core.String,
  [$borderBottomLeftRadius]: core.String,
  borderBottomRightRadius: core.String,
  [$borderBottomRightRadius]: core.String,
  borderBottomStyle: core.String,
  [$borderBottomStyle]: core.String,
  borderBottomWidth: core.String,
  [$borderBottomWidth]: core.String,
  borderCollapse: core.String,
  [$borderCollapse]: core.String,
  borderColor: core.String,
  [$borderColor]: core.String,
  borderEnd: core.String,
  [$borderEnd]: core.String,
  borderEndColor: core.String,
  [$borderEndColor]: core.String,
  borderEndStyle: core.String,
  [$borderEndStyle]: core.String,
  borderEndWidth: core.String,
  [$borderEndWidth]: core.String,
  borderFit: core.String,
  [$borderFit]: core.String,
  borderHorizontalSpacing: core.String,
  [$borderHorizontalSpacing]: core.String,
  borderImage: core.String,
  [$borderImage]: core.String,
  borderImageOutset: core.String,
  [$borderImageOutset]: core.String,
  borderImageRepeat: core.String,
  [$borderImageRepeat]: core.String,
  borderImageSlice: core.String,
  [$borderImageSlice]: core.String,
  borderImageSource: core.String,
  [$borderImageSource]: core.String,
  borderImageWidth: core.String,
  [$borderImageWidth]: core.String,
  borderLeft: core.String,
  [$borderLeft]: core.String,
  borderLeftColor: core.String,
  [$borderLeftColor]: core.String,
  borderLeftStyle: core.String,
  [$borderLeftStyle]: core.String,
  borderLeftWidth: core.String,
  [$borderLeftWidth]: core.String,
  borderRadius: core.String,
  [$borderRadius]: core.String,
  borderRight: core.String,
  [$borderRight]: core.String,
  borderRightColor: core.String,
  [$borderRightColor]: core.String,
  borderRightStyle: core.String,
  [$borderRightStyle]: core.String,
  borderRightWidth: core.String,
  [$borderRightWidth]: core.String,
  borderSpacing: core.String,
  [$borderSpacing]: core.String,
  borderStart: core.String,
  [$borderStart]: core.String,
  borderStartColor: core.String,
  [$borderStartColor]: core.String,
  borderStartStyle: core.String,
  [$borderStartStyle]: core.String,
  borderStartWidth: core.String,
  [$borderStartWidth]: core.String,
  borderStyle: core.String,
  [$borderStyle]: core.String,
  borderTop: core.String,
  [$borderTop]: core.String,
  borderTopColor: core.String,
  [$borderTopColor]: core.String,
  borderTopLeftRadius: core.String,
  [$borderTopLeftRadius]: core.String,
  borderTopRightRadius: core.String,
  [$borderTopRightRadius]: core.String,
  borderTopStyle: core.String,
  [$borderTopStyle]: core.String,
  borderTopWidth: core.String,
  [$borderTopWidth]: core.String,
  borderVerticalSpacing: core.String,
  [$borderVerticalSpacing]: core.String,
  borderWidth: core.String,
  [$borderWidth]: core.String,
  bottom: core.String,
  [$bottom]: core.String,
  boxAlign: core.String,
  [$boxAlign]: core.String,
  boxDecorationBreak: core.String,
  [$boxDecorationBreak]: core.String,
  boxDirection: core.String,
  [$boxDirection]: core.String,
  boxFlex: core.String,
  [$boxFlex]: core.String,
  boxFlexGroup: core.String,
  [$boxFlexGroup]: core.String,
  boxLines: core.String,
  [$boxLines]: core.String,
  boxOrdinalGroup: core.String,
  [$boxOrdinalGroup]: core.String,
  boxOrient: core.String,
  [$boxOrient]: core.String,
  boxPack: core.String,
  [$boxPack]: core.String,
  boxReflect: core.String,
  [$boxReflect]: core.String,
  boxShadow: core.String,
  [$boxShadow]: core.String,
  boxSizing: core.String,
  [$boxSizing]: core.String,
  captionSide: core.String,
  [$captionSide]: core.String,
  clear: core.String,
  [$clear]: core.String,
  clip: core.String,
  [$clip]: core.String,
  clipPath: core.String,
  [$clipPath]: core.String,
  color: core.String,
  [$color]: core.String,
  columnBreakAfter: core.String,
  [$columnBreakAfter]: core.String,
  columnBreakBefore: core.String,
  [$columnBreakBefore]: core.String,
  columnBreakInside: core.String,
  [$columnBreakInside]: core.String,
  columnCount: core.String,
  [$columnCount]: core.String,
  columnFill: core.String,
  [$columnFill]: core.String,
  columnGap: core.String,
  [$columnGap]: core.String,
  columnRule: core.String,
  [$columnRule]: core.String,
  columnRuleColor: core.String,
  [$columnRuleColor]: core.String,
  columnRuleStyle: core.String,
  [$columnRuleStyle]: core.String,
  columnRuleWidth: core.String,
  [$columnRuleWidth]: core.String,
  columnSpan: core.String,
  [$columnSpan]: core.String,
  columnWidth: core.String,
  [$columnWidth]: core.String,
  columns: core.String,
  [$columns]: core.String,
  content: core.String,
  [$content]: core.String,
  counterIncrement: core.String,
  [$counterIncrement]: core.String,
  counterReset: core.String,
  [$counterReset]: core.String,
  cursor: core.String,
  [$cursor]: core.String,
  direction: core.String,
  [$direction]: core.String,
  display: core.String,
  [$display]: core.String,
  emptyCells: core.String,
  [$emptyCells]: core.String,
  filter: core.String,
  [$filter]: core.String,
  flex: core.String,
  [$flex]: core.String,
  flexBasis: core.String,
  [$flexBasis]: core.String,
  flexDirection: core.String,
  [$flexDirection]: core.String,
  flexFlow: core.String,
  [$flexFlow]: core.String,
  flexGrow: core.String,
  [$flexGrow]: core.String,
  flexShrink: core.String,
  [$flexShrink]: core.String,
  flexWrap: core.String,
  [$flexWrap]: core.String,
  float: core.String,
  [$float]: core.String,
  font: core.String,
  [$font]: core.String,
  fontFamily: core.String,
  [$fontFamily]: core.String,
  fontFeatureSettings: core.String,
  [$fontFeatureSettings]: core.String,
  fontKerning: core.String,
  [$fontKerning]: core.String,
  fontSize: core.String,
  [$fontSize]: core.String,
  fontSizeDelta: core.String,
  [$fontSizeDelta]: core.String,
  fontSmoothing: core.String,
  [$fontSmoothing]: core.String,
  fontStretch: core.String,
  [$fontStretch]: core.String,
  fontStyle: core.String,
  [$fontStyle]: core.String,
  fontVariant: core.String,
  [$fontVariant]: core.String,
  fontVariantLigatures: core.String,
  [$fontVariantLigatures]: core.String,
  fontWeight: core.String,
  [$fontWeight]: core.String,
  grid: core.String,
  [$grid]: core.String,
  gridArea: core.String,
  [$gridArea]: core.String,
  gridAutoColumns: core.String,
  [$gridAutoColumns]: core.String,
  gridAutoFlow: core.String,
  [$gridAutoFlow]: core.String,
  gridAutoRows: core.String,
  [$gridAutoRows]: core.String,
  gridColumn: core.String,
  [$gridColumn]: core.String,
  gridColumnEnd: core.String,
  [$gridColumnEnd]: core.String,
  gridColumnStart: core.String,
  [$gridColumnStart]: core.String,
  gridRow: core.String,
  [$gridRow]: core.String,
  gridRowEnd: core.String,
  [$gridRowEnd]: core.String,
  gridRowStart: core.String,
  [$gridRowStart]: core.String,
  gridTemplate: core.String,
  [$gridTemplate]: core.String,
  gridTemplateAreas: core.String,
  [$gridTemplateAreas]: core.String,
  gridTemplateColumns: core.String,
  [$gridTemplateColumns]: core.String,
  gridTemplateRows: core.String,
  [$gridTemplateRows]: core.String,
  height: core.String,
  [$height]: core.String,
  highlight: core.String,
  [$highlight]: core.String,
  hyphenateCharacter: core.String,
  [$hyphenateCharacter]: core.String,
  imageRendering: core.String,
  [$imageRendering]: core.String,
  isolation: core.String,
  [$isolation]: core.String,
  justifyContent: core.String,
  [$justifyContent]: core.String,
  justifySelf: core.String,
  [$justifySelf]: core.String,
  left: core.String,
  [$left]: core.String,
  letterSpacing: core.String,
  [$letterSpacing]: core.String,
  lineBoxContain: core.String,
  [$lineBoxContain]: core.String,
  lineBreak: core.String,
  [$lineBreak]: core.String,
  lineClamp: core.String,
  [$lineClamp]: core.String,
  lineHeight: core.String,
  [$lineHeight]: core.String,
  listStyle: core.String,
  [$listStyle]: core.String,
  listStyleImage: core.String,
  [$listStyleImage]: core.String,
  listStylePosition: core.String,
  [$listStylePosition]: core.String,
  listStyleType: core.String,
  [$listStyleType]: core.String,
  locale: core.String,
  [$locale]: core.String,
  logicalHeight: core.String,
  [$logicalHeight]: core.String,
  logicalWidth: core.String,
  [$logicalWidth]: core.String,
  margin: core.String,
  [$margin]: core.String,
  marginAfter: core.String,
  [$marginAfter]: core.String,
  marginAfterCollapse: core.String,
  [$marginAfterCollapse]: core.String,
  marginBefore: core.String,
  [$marginBefore]: core.String,
  marginBeforeCollapse: core.String,
  [$marginBeforeCollapse]: core.String,
  marginBottom: core.String,
  [$marginBottom]: core.String,
  marginBottomCollapse: core.String,
  [$marginBottomCollapse]: core.String,
  marginCollapse: core.String,
  [$marginCollapse]: core.String,
  marginEnd: core.String,
  [$marginEnd]: core.String,
  marginLeft: core.String,
  [$marginLeft]: core.String,
  marginRight: core.String,
  [$marginRight]: core.String,
  marginStart: core.String,
  [$marginStart]: core.String,
  marginTop: core.String,
  [$marginTop]: core.String,
  marginTopCollapse: core.String,
  [$marginTopCollapse]: core.String,
  mask: core.String,
  [$mask]: core.String,
  maskBoxImage: core.String,
  [$maskBoxImage]: core.String,
  maskBoxImageOutset: core.String,
  [$maskBoxImageOutset]: core.String,
  maskBoxImageRepeat: core.String,
  [$maskBoxImageRepeat]: core.String,
  maskBoxImageSlice: core.String,
  [$maskBoxImageSlice]: core.String,
  maskBoxImageSource: core.String,
  [$maskBoxImageSource]: core.String,
  maskBoxImageWidth: core.String,
  [$maskBoxImageWidth]: core.String,
  maskClip: core.String,
  [$maskClip]: core.String,
  maskComposite: core.String,
  [$maskComposite]: core.String,
  maskImage: core.String,
  [$maskImage]: core.String,
  maskOrigin: core.String,
  [$maskOrigin]: core.String,
  maskPosition: core.String,
  [$maskPosition]: core.String,
  maskPositionX: core.String,
  [$maskPositionX]: core.String,
  maskPositionY: core.String,
  [$maskPositionY]: core.String,
  maskRepeat: core.String,
  [$maskRepeat]: core.String,
  maskRepeatX: core.String,
  [$maskRepeatX]: core.String,
  maskRepeatY: core.String,
  [$maskRepeatY]: core.String,
  maskSize: core.String,
  [$maskSize]: core.String,
  maskSourceType: core.String,
  [$maskSourceType]: core.String,
  maxHeight: core.String,
  [$maxHeight]: core.String,
  maxLogicalHeight: core.String,
  [$maxLogicalHeight]: core.String,
  maxLogicalWidth: core.String,
  [$maxLogicalWidth]: core.String,
  maxWidth: core.String,
  [$maxWidth]: core.String,
  maxZoom: core.String,
  [$maxZoom]: core.String,
  minHeight: core.String,
  [$minHeight]: core.String,
  minLogicalHeight: core.String,
  [$minLogicalHeight]: core.String,
  minLogicalWidth: core.String,
  [$minLogicalWidth]: core.String,
  minWidth: core.String,
  [$minWidth]: core.String,
  minZoom: core.String,
  [$minZoom]: core.String,
  mixBlendMode: core.String,
  [$mixBlendMode]: core.String,
  objectFit: core.String,
  [$objectFit]: core.String,
  objectPosition: core.String,
  [$objectPosition]: core.String,
  opacity: core.String,
  [$opacity]: core.String,
  order: core.String,
  [$order]: core.String,
  orientation: core.String,
  [$orientation]: core.String,
  orphans: core.String,
  [$orphans]: core.String,
  outline: core.String,
  [$outline]: core.String,
  outlineColor: core.String,
  [$outlineColor]: core.String,
  outlineOffset: core.String,
  [$outlineOffset]: core.String,
  outlineStyle: core.String,
  [$outlineStyle]: core.String,
  outlineWidth: core.String,
  [$outlineWidth]: core.String,
  overflow: core.String,
  [$overflow]: core.String,
  overflowWrap: core.String,
  [$overflowWrap]: core.String,
  overflowX: core.String,
  [$overflowX]: core.String,
  overflowY: core.String,
  [$overflowY]: core.String,
  padding: core.String,
  [$padding]: core.String,
  paddingAfter: core.String,
  [$paddingAfter]: core.String,
  paddingBefore: core.String,
  [$paddingBefore]: core.String,
  paddingBottom: core.String,
  [$paddingBottom]: core.String,
  paddingEnd: core.String,
  [$paddingEnd]: core.String,
  paddingLeft: core.String,
  [$paddingLeft]: core.String,
  paddingRight: core.String,
  [$paddingRight]: core.String,
  paddingStart: core.String,
  [$paddingStart]: core.String,
  paddingTop: core.String,
  [$paddingTop]: core.String,
  page: core.String,
  [$page]: core.String,
  pageBreakAfter: core.String,
  [$pageBreakAfter]: core.String,
  pageBreakBefore: core.String,
  [$pageBreakBefore]: core.String,
  pageBreakInside: core.String,
  [$pageBreakInside]: core.String,
  perspective: core.String,
  [$perspective]: core.String,
  perspectiveOrigin: core.String,
  [$perspectiveOrigin]: core.String,
  perspectiveOriginX: core.String,
  [$perspectiveOriginX]: core.String,
  perspectiveOriginY: core.String,
  [$perspectiveOriginY]: core.String,
  pointerEvents: core.String,
  [$pointerEvents]: core.String,
  position: core.String,
  [$position]: core.String,
  printColorAdjust: core.String,
  [$printColorAdjust]: core.String,
  quotes: core.String,
  [$quotes]: core.String,
  resize: core.String,
  [$resize]: core.String,
  right: core.String,
  [$right]: core.String,
  rtlOrdering: core.String,
  [$rtlOrdering]: core.String,
  rubyPosition: core.String,
  [$rubyPosition]: core.String,
  scrollBehavior: core.String,
  [$scrollBehavior]: core.String,
  shapeImageThreshold: core.String,
  [$shapeImageThreshold]: core.String,
  shapeMargin: core.String,
  [$shapeMargin]: core.String,
  shapeOutside: core.String,
  [$shapeOutside]: core.String,
  size: core.String,
  [$size]: core.String,
  speak: core.String,
  [$speak]: core.String,
  src: core.String,
  [$src]: core.String,
  tabSize: core.String,
  [$tabSize]: core.String,
  tableLayout: core.String,
  [$tableLayout]: core.String,
  tapHighlightColor: core.String,
  [$tapHighlightColor]: core.String,
  textAlign: core.String,
  [$textAlign]: core.String,
  textAlignLast: core.String,
  [$textAlignLast]: core.String,
  textCombine: core.String,
  [$textCombine]: core.String,
  textDecoration: core.String,
  [$textDecoration]: core.String,
  textDecorationColor: core.String,
  [$textDecorationColor]: core.String,
  textDecorationLine: core.String,
  [$textDecorationLine]: core.String,
  textDecorationStyle: core.String,
  [$textDecorationStyle]: core.String,
  textDecorationsInEffect: core.String,
  [$textDecorationsInEffect]: core.String,
  textEmphasis: core.String,
  [$textEmphasis]: core.String,
  textEmphasisColor: core.String,
  [$textEmphasisColor]: core.String,
  textEmphasisPosition: core.String,
  [$textEmphasisPosition]: core.String,
  textEmphasisStyle: core.String,
  [$textEmphasisStyle]: core.String,
  textFillColor: core.String,
  [$textFillColor]: core.String,
  textIndent: core.String,
  [$textIndent]: core.String,
  textJustify: core.String,
  [$textJustify]: core.String,
  textLineThroughColor: core.String,
  [$textLineThroughColor]: core.String,
  textLineThroughMode: core.String,
  [$textLineThroughMode]: core.String,
  textLineThroughStyle: core.String,
  [$textLineThroughStyle]: core.String,
  textLineThroughWidth: core.String,
  [$textLineThroughWidth]: core.String,
  textOrientation: core.String,
  [$textOrientation]: core.String,
  textOverflow: core.String,
  [$textOverflow]: core.String,
  textOverlineColor: core.String,
  [$textOverlineColor]: core.String,
  textOverlineMode: core.String,
  [$textOverlineMode]: core.String,
  textOverlineStyle: core.String,
  [$textOverlineStyle]: core.String,
  textOverlineWidth: core.String,
  [$textOverlineWidth]: core.String,
  textRendering: core.String,
  [$textRendering]: core.String,
  textSecurity: core.String,
  [$textSecurity]: core.String,
  textShadow: core.String,
  [$textShadow]: core.String,
  textStroke: core.String,
  [$textStroke]: core.String,
  textStrokeColor: core.String,
  [$textStrokeColor]: core.String,
  textStrokeWidth: core.String,
  [$textStrokeWidth]: core.String,
  textTransform: core.String,
  [$textTransform]: core.String,
  textUnderlineColor: core.String,
  [$textUnderlineColor]: core.String,
  textUnderlineMode: core.String,
  [$textUnderlineMode]: core.String,
  textUnderlinePosition: core.String,
  [$textUnderlinePosition]: core.String,
  textUnderlineStyle: core.String,
  [$textUnderlineStyle]: core.String,
  textUnderlineWidth: core.String,
  [$textUnderlineWidth]: core.String,
  top: core.String,
  [$top]: core.String,
  touchAction: core.String,
  [$touchAction]: core.String,
  touchActionDelay: core.String,
  [$touchActionDelay]: core.String,
  transform: core.String,
  [$transform]: core.String,
  transformOrigin: core.String,
  [$transformOrigin]: core.String,
  transformOriginX: core.String,
  [$transformOriginX]: core.String,
  transformOriginY: core.String,
  [$transformOriginY]: core.String,
  transformOriginZ: core.String,
  [$transformOriginZ]: core.String,
  transformStyle: core.String,
  [$transformStyle]: core.String,
  transition: core.String,
  [$transition]: core.String,
  transitionDelay: core.String,
  [$transitionDelay]: core.String,
  transitionDuration: core.String,
  [$transitionDuration]: core.String,
  transitionProperty: core.String,
  [$transitionProperty]: core.String,
  transitionTimingFunction: core.String,
  [$transitionTimingFunction]: core.String,
  unicodeBidi: core.String,
  [$unicodeBidi]: core.String,
  unicodeRange: core.String,
  [$unicodeRange]: core.String,
  userDrag: core.String,
  [$userDrag]: core.String,
  userModify: core.String,
  [$userModify]: core.String,
  userSelect: core.String,
  [$userSelect]: core.String,
  userZoom: core.String,
  [$userZoom]: core.String,
  verticalAlign: core.String,
  [$verticalAlign]: core.String,
  visibility: core.String,
  [$visibility]: core.String,
  whiteSpace: core.String,
  [$whiteSpace]: core.String,
  widows: core.String,
  [$widows]: core.String,
  width: core.String,
  [$width]: core.String,
  willChange: core.String,
  [$willChange]: core.String,
  wordBreak: core.String,
  [$wordBreak]: core.String,
  wordSpacing: core.String,
  [$wordSpacing]: core.String,
  wordWrap: core.String,
  [$wordWrap]: core.String,
  wrapFlow: core.String,
  [$wrapFlow]: core.String,
  wrapThrough: core.String,
  [$wrapThrough]: core.String,
  writingMode: core.String,
  [$writingMode]: core.String,
  zIndex: core.String,
  [$zIndex]: core.String,
  zoom: core.String,
  [$zoom]: core.String
}));
dart.defineExtensionAccessors(html$.CssStyleDeclarationBase, [
  'alignContent',
  'alignItems',
  'alignSelf',
  'animation',
  'animationDelay',
  'animationDirection',
  'animationDuration',
  'animationFillMode',
  'animationIterationCount',
  'animationName',
  'animationPlayState',
  'animationTimingFunction',
  'appRegion',
  'appearance',
  'aspectRatio',
  'backfaceVisibility',
  'background',
  'backgroundAttachment',
  'backgroundBlendMode',
  'backgroundClip',
  'backgroundColor',
  'backgroundComposite',
  'backgroundImage',
  'backgroundOrigin',
  'backgroundPosition',
  'backgroundPositionX',
  'backgroundPositionY',
  'backgroundRepeat',
  'backgroundRepeatX',
  'backgroundRepeatY',
  'backgroundSize',
  'border',
  'borderAfter',
  'borderAfterColor',
  'borderAfterStyle',
  'borderAfterWidth',
  'borderBefore',
  'borderBeforeColor',
  'borderBeforeStyle',
  'borderBeforeWidth',
  'borderBottom',
  'borderBottomColor',
  'borderBottomLeftRadius',
  'borderBottomRightRadius',
  'borderBottomStyle',
  'borderBottomWidth',
  'borderCollapse',
  'borderColor',
  'borderEnd',
  'borderEndColor',
  'borderEndStyle',
  'borderEndWidth',
  'borderFit',
  'borderHorizontalSpacing',
  'borderImage',
  'borderImageOutset',
  'borderImageRepeat',
  'borderImageSlice',
  'borderImageSource',
  'borderImageWidth',
  'borderLeft',
  'borderLeftColor',
  'borderLeftStyle',
  'borderLeftWidth',
  'borderRadius',
  'borderRight',
  'borderRightColor',
  'borderRightStyle',
  'borderRightWidth',
  'borderSpacing',
  'borderStart',
  'borderStartColor',
  'borderStartStyle',
  'borderStartWidth',
  'borderStyle',
  'borderTop',
  'borderTopColor',
  'borderTopLeftRadius',
  'borderTopRightRadius',
  'borderTopStyle',
  'borderTopWidth',
  'borderVerticalSpacing',
  'borderWidth',
  'bottom',
  'boxAlign',
  'boxDecorationBreak',
  'boxDirection',
  'boxFlex',
  'boxFlexGroup',
  'boxLines',
  'boxOrdinalGroup',
  'boxOrient',
  'boxPack',
  'boxReflect',
  'boxShadow',
  'boxSizing',
  'captionSide',
  'clear',
  'clip',
  'clipPath',
  'color',
  'columnBreakAfter',
  'columnBreakBefore',
  'columnBreakInside',
  'columnCount',
  'columnFill',
  'columnGap',
  'columnRule',
  'columnRuleColor',
  'columnRuleStyle',
  'columnRuleWidth',
  'columnSpan',
  'columnWidth',
  'columns',
  'content',
  'counterIncrement',
  'counterReset',
  'cursor',
  'direction',
  'display',
  'emptyCells',
  'filter',
  'flex',
  'flexBasis',
  'flexDirection',
  'flexFlow',
  'flexGrow',
  'flexShrink',
  'flexWrap',
  'float',
  'font',
  'fontFamily',
  'fontFeatureSettings',
  'fontKerning',
  'fontSize',
  'fontSizeDelta',
  'fontSmoothing',
  'fontStretch',
  'fontStyle',
  'fontVariant',
  'fontVariantLigatures',
  'fontWeight',
  'grid',
  'gridArea',
  'gridAutoColumns',
  'gridAutoFlow',
  'gridAutoRows',
  'gridColumn',
  'gridColumnEnd',
  'gridColumnStart',
  'gridRow',
  'gridRowEnd',
  'gridRowStart',
  'gridTemplate',
  'gridTemplateAreas',
  'gridTemplateColumns',
  'gridTemplateRows',
  'height',
  'highlight',
  'hyphenateCharacter',
  'imageRendering',
  'isolation',
  'justifyContent',
  'justifySelf',
  'left',
  'letterSpacing',
  'lineBoxContain',
  'lineBreak',
  'lineClamp',
  'lineHeight',
  'listStyle',
  'listStyleImage',
  'listStylePosition',
  'listStyleType',
  'locale',
  'logicalHeight',
  'logicalWidth',
  'margin',
  'marginAfter',
  'marginAfterCollapse',
  'marginBefore',
  'marginBeforeCollapse',
  'marginBottom',
  'marginBottomCollapse',
  'marginCollapse',
  'marginEnd',
  'marginLeft',
  'marginRight',
  'marginStart',
  'marginTop',
  'marginTopCollapse',
  'mask',
  'maskBoxImage',
  'maskBoxImageOutset',
  'maskBoxImageRepeat',
  'maskBoxImageSlice',
  'maskBoxImageSource',
  'maskBoxImageWidth',
  'maskClip',
  'maskComposite',
  'maskImage',
  'maskOrigin',
  'maskPosition',
  'maskPositionX',
  'maskPositionY',
  'maskRepeat',
  'maskRepeatX',
  'maskRepeatY',
  'maskSize',
  'maskSourceType',
  'maxHeight',
  'maxLogicalHeight',
  'maxLogicalWidth',
  'maxWidth',
  'maxZoom',
  'minHeight',
  'minLogicalHeight',
  'minLogicalWidth',
  'minWidth',
  'minZoom',
  'mixBlendMode',
  'objectFit',
  'objectPosition',
  'opacity',
  'order',
  'orientation',
  'orphans',
  'outline',
  'outlineColor',
  'outlineOffset',
  'outlineStyle',
  'outlineWidth',
  'overflow',
  'overflowWrap',
  'overflowX',
  'overflowY',
  'padding',
  'paddingAfter',
  'paddingBefore',
  'paddingBottom',
  'paddingEnd',
  'paddingLeft',
  'paddingRight',
  'paddingStart',
  'paddingTop',
  'page',
  'pageBreakAfter',
  'pageBreakBefore',
  'pageBreakInside',
  'perspective',
  'perspectiveOrigin',
  'perspectiveOriginX',
  'perspectiveOriginY',
  'pointerEvents',
  'position',
  'printColorAdjust',
  'quotes',
  'resize',
  'right',
  'rtlOrdering',
  'rubyPosition',
  'scrollBehavior',
  'shapeImageThreshold',
  'shapeMargin',
  'shapeOutside',
  'size',
  'speak',
  'src',
  'tabSize',
  'tableLayout',
  'tapHighlightColor',
  'textAlign',
  'textAlignLast',
  'textCombine',
  'textDecoration',
  'textDecorationColor',
  'textDecorationLine',
  'textDecorationStyle',
  'textDecorationsInEffect',
  'textEmphasis',
  'textEmphasisColor',
  'textEmphasisPosition',
  'textEmphasisStyle',
  'textFillColor',
  'textIndent',
  'textJustify',
  'textLineThroughColor',
  'textLineThroughMode',
  'textLineThroughStyle',
  'textLineThroughWidth',
  'textOrientation',
  'textOverflow',
  'textOverlineColor',
  'textOverlineMode',
  'textOverlineStyle',
  'textOverlineWidth',
  'textRendering',
  'textSecurity',
  'textShadow',
  'textStroke',
  'textStrokeColor',
  'textStrokeWidth',
  'textTransform',
  'textUnderlineColor',
  'textUnderlineMode',
  'textUnderlinePosition',
  'textUnderlineStyle',
  'textUnderlineWidth',
  'top',
  'touchAction',
  'touchActionDelay',
  'transform',
  'transformOrigin',
  'transformOriginX',
  'transformOriginY',
  'transformOriginZ',
  'transformStyle',
  'transition',
  'transitionDelay',
  'transitionDuration',
  'transitionProperty',
  'transitionTimingFunction',
  'unicodeBidi',
  'unicodeRange',
  'userDrag',
  'userModify',
  'userSelect',
  'userZoom',
  'verticalAlign',
  'visibility',
  'whiteSpace',
  'widows',
  'width',
  'willChange',
  'wordBreak',
  'wordSpacing',
  'wordWrap',
  'wrapFlow',
  'wrapThrough',
  'writingMode',
  'zIndex',
  'zoom'
]);
const Interceptor_CssStyleDeclarationBase$ = class Interceptor_CssStyleDeclarationBase extends _interceptors.Interceptor {};
(Interceptor_CssStyleDeclarationBase$.new = function() {
  Interceptor_CssStyleDeclarationBase$.__proto__.new.call(this);
}).prototype = Interceptor_CssStyleDeclarationBase$.prototype;
dart.applyMixin(Interceptor_CssStyleDeclarationBase$, html$.CssStyleDeclarationBase);
html$.CssStyleDeclaration = class CssStyleDeclaration extends Interceptor_CssStyleDeclarationBase$ {
  static new() {
    return html$.CssStyleDeclaration.css("");
  }
  static css(css) {
    let style = html$.DivElement.new().style;
    style.cssText = css;
    return style;
  }
  [$getPropertyValue](propertyName) {
    let propValue = this[_getPropertyValueHelper](propertyName);
    return propValue != null ? propValue : "";
  }
  [_getPropertyValueHelper](propertyName) {
    return this[_getPropertyValue](this[_browserPropertyName](propertyName));
  }
  [$supportsProperty](propertyName) {
    return dart.test(this[_supportsProperty](propertyName)) || dart.test(this[_supportsProperty](html$.CssStyleDeclaration._camelCase(dart.str(html_common.Device.cssPrefix) + dart.str(propertyName))));
  }
  [_supportsProperty](propertyName) {
    return propertyName in this;
  }
  [$setProperty](propertyName, value, priority) {
    if (priority === void 0) priority = null;
    return this[_setPropertyHelper](this[_browserPropertyName](propertyName), value, priority);
  }
  [_browserPropertyName](propertyName) {
    let name = html$.CssStyleDeclaration._readCache(propertyName);
    if (typeof name == 'string') return name;
    name = this[_supportedBrowserPropertyName](propertyName);
    html$.CssStyleDeclaration._writeCache(propertyName, name);
    return name;
  }
  [_supportedBrowserPropertyName](propertyName) {
    if (dart.test(this[_supportsProperty](html$.CssStyleDeclaration._camelCase(propertyName)))) {
      return propertyName;
    }
    let prefixed = dart.str(html_common.Device.cssPrefix) + dart.str(propertyName);
    if (dart.test(this[_supportsProperty](prefixed))) {
      return prefixed;
    }
    return propertyName;
  }
  static _readCache(key) {
    return html$.CssStyleDeclaration._propertyCache[key];
  }
  static _writeCache(key, value) {
    html$.CssStyleDeclaration._propertyCache[key] = value;
  }
  static _camelCase(hyphenated) {
    let replacedMs = hyphenated.replace(/^-ms-/, "ms-");
    return replacedMs.replace(/-([\da-z])/ig, function(_, letter) {
      return letter.toUpperCase();
    });
  }
  [_setPropertyHelper](propertyName, value, priority) {
    if (priority === void 0) priority = null;
    if (value == null) value = "";
    if (priority == null) priority = "";
    this.setProperty(propertyName, value, priority);
  }
  static get supportsTransitions() {
    return html$.document.body.style[$supportsProperty]("transition");
  }
  get [$cssFloat]() {
    return this.cssFloat;
  }
  set [$cssFloat](value) {
    this.cssFloat = value;
  }
  get [$cssText]() {
    return this.cssText;
  }
  set [$cssText](value) {
    this.cssText = value;
  }
  get [$length]() {
    return this.length;
  }
  get [$parentRule]() {
    return this.parentRule;
  }
  [$getPropertyPriority](...args) {
    return this.getPropertyPriority.apply(this, args);
  }
  [_getPropertyValue](...args) {
    return this.getPropertyValue.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$removeProperty](...args) {
    return this.removeProperty.apply(this, args);
  }
  get [$background]() {
    return this[_background];
  }
  set [$background](value) {
    this[_background] = value == null ? "" : value;
  }
  get [_background]() {
    return this.background;
  }
  set [_background](value) {
    this.background = value;
  }
  get [$backgroundAttachment]() {
    return this[_backgroundAttachment];
  }
  set [$backgroundAttachment](value) {
    this[_backgroundAttachment] = value == null ? "" : value;
  }
  get [_backgroundAttachment]() {
    return this.backgroundAttachment;
  }
  set [_backgroundAttachment](value) {
    this.backgroundAttachment = value;
  }
  get [$backgroundColor]() {
    return this[_backgroundColor];
  }
  set [$backgroundColor](value) {
    this[_backgroundColor] = value == null ? "" : value;
  }
  get [_backgroundColor]() {
    return this.backgroundColor;
  }
  set [_backgroundColor](value) {
    this.backgroundColor = value;
  }
  get [$backgroundImage]() {
    return this[_backgroundImage];
  }
  set [$backgroundImage](value) {
    this[_backgroundImage] = value == null ? "" : value;
  }
  get [_backgroundImage]() {
    return this.backgroundImage;
  }
  set [_backgroundImage](value) {
    this.backgroundImage = value;
  }
  get [$backgroundPosition]() {
    return this[_backgroundPosition];
  }
  set [$backgroundPosition](value) {
    this[_backgroundPosition] = value == null ? "" : value;
  }
  get [_backgroundPosition]() {
    return this.backgroundPosition;
  }
  set [_backgroundPosition](value) {
    this.backgroundPosition = value;
  }
  get [$backgroundRepeat]() {
    return this[_backgroundRepeat];
  }
  set [$backgroundRepeat](value) {
    this[_backgroundRepeat] = value == null ? "" : value;
  }
  get [_backgroundRepeat]() {
    return this.backgroundRepeat;
  }
  set [_backgroundRepeat](value) {
    this.backgroundRepeat = value;
  }
  get [$border]() {
    return this[_border];
  }
  set [$border](value) {
    this[_border] = value == null ? "" : value;
  }
  get [_border]() {
    return this.border;
  }
  set [_border](value) {
    this.border = value;
  }
  get [$borderBottom]() {
    return this[_borderBottom];
  }
  set [$borderBottom](value) {
    this[_borderBottom] = value == null ? "" : value;
  }
  get [_borderBottom]() {
    return this.borderBottom;
  }
  set [_borderBottom](value) {
    this.borderBottom = value;
  }
  get [$borderBottomColor]() {
    return this[_borderBottomColor];
  }
  set [$borderBottomColor](value) {
    this[_borderBottomColor] = value == null ? "" : value;
  }
  get [_borderBottomColor]() {
    return this.borderBottomColor;
  }
  set [_borderBottomColor](value) {
    this.borderBottomColor = value;
  }
  get [$borderBottomStyle]() {
    return this[_borderBottomStyle];
  }
  set [$borderBottomStyle](value) {
    this[_borderBottomStyle] = value == null ? "" : value;
  }
  get [_borderBottomStyle]() {
    return this.borderBottomStyle;
  }
  set [_borderBottomStyle](value) {
    this.borderBottomStyle = value;
  }
  get [$borderBottomWidth]() {
    return this[_borderBottomWidth];
  }
  set [$borderBottomWidth](value) {
    this[_borderBottomWidth] = value == null ? "" : value;
  }
  get [_borderBottomWidth]() {
    return this.borderBottomWidth;
  }
  set [_borderBottomWidth](value) {
    this.borderBottomWidth = value;
  }
  get [$borderCollapse]() {
    return this[_borderCollapse];
  }
  set [$borderCollapse](value) {
    this[_borderCollapse] = value == null ? "" : value;
  }
  get [_borderCollapse]() {
    return this.borderCollapse;
  }
  set [_borderCollapse](value) {
    this.borderCollapse = value;
  }
  get [$borderColor]() {
    return this[_borderColor];
  }
  set [$borderColor](value) {
    this[_borderColor] = value == null ? "" : value;
  }
  get [_borderColor]() {
    return this.borderColor;
  }
  set [_borderColor](value) {
    this.borderColor = value;
  }
  get [$borderLeft]() {
    return this[_borderLeft];
  }
  set [$borderLeft](value) {
    this[_borderLeft] = value == null ? "" : value;
  }
  get [_borderLeft]() {
    return this.borderLeft;
  }
  set [_borderLeft](value) {
    this.borderLeft = value;
  }
  get [$borderLeftColor]() {
    return this[_borderLeftColor];
  }
  set [$borderLeftColor](value) {
    this[_borderLeftColor] = value == null ? "" : value;
  }
  get [_borderLeftColor]() {
    return this.borderLeftColor;
  }
  set [_borderLeftColor](value) {
    this.borderLeftColor = value;
  }
  get [$borderLeftStyle]() {
    return this[_borderLeftStyle];
  }
  set [$borderLeftStyle](value) {
    this[_borderLeftStyle] = value == null ? "" : value;
  }
  get [_borderLeftStyle]() {
    return this.borderLeftStyle;
  }
  set [_borderLeftStyle](value) {
    this.borderLeftStyle = value;
  }
  get [$borderLeftWidth]() {
    return this[_borderLeftWidth];
  }
  set [$borderLeftWidth](value) {
    this[_borderLeftWidth] = value == null ? "" : value;
  }
  get [_borderLeftWidth]() {
    return this.borderLeftWidth;
  }
  set [_borderLeftWidth](value) {
    this.borderLeftWidth = value;
  }
  get [$borderRight]() {
    return this[_borderRight];
  }
  set [$borderRight](value) {
    this[_borderRight] = value == null ? "" : value;
  }
  get [_borderRight]() {
    return this.borderRight;
  }
  set [_borderRight](value) {
    this.borderRight = value;
  }
  get [$borderRightColor]() {
    return this[_borderRightColor];
  }
  set [$borderRightColor](value) {
    this[_borderRightColor] = value == null ? "" : value;
  }
  get [_borderRightColor]() {
    return this.borderRightColor;
  }
  set [_borderRightColor](value) {
    this.borderRightColor = value;
  }
  get [$borderRightStyle]() {
    return this[_borderRightStyle];
  }
  set [$borderRightStyle](value) {
    this[_borderRightStyle] = value == null ? "" : value;
  }
  get [_borderRightStyle]() {
    return this.borderRightStyle;
  }
  set [_borderRightStyle](value) {
    this.borderRightStyle = value;
  }
  get [$borderRightWidth]() {
    return this[_borderRightWidth];
  }
  set [$borderRightWidth](value) {
    this[_borderRightWidth] = value == null ? "" : value;
  }
  get [_borderRightWidth]() {
    return this.borderRightWidth;
  }
  set [_borderRightWidth](value) {
    this.borderRightWidth = value;
  }
  get [$borderSpacing]() {
    return this[_borderSpacing];
  }
  set [$borderSpacing](value) {
    this[_borderSpacing] = value == null ? "" : value;
  }
  get [_borderSpacing]() {
    return this.borderSpacing;
  }
  set [_borderSpacing](value) {
    this.borderSpacing = value;
  }
  get [$borderStyle]() {
    return this[_borderStyle];
  }
  set [$borderStyle](value) {
    this[_borderStyle] = value == null ? "" : value;
  }
  get [_borderStyle]() {
    return this.borderStyle;
  }
  set [_borderStyle](value) {
    this.borderStyle = value;
  }
  get [$borderTop]() {
    return this[_borderTop];
  }
  set [$borderTop](value) {
    this[_borderTop] = value == null ? "" : value;
  }
  get [_borderTop]() {
    return this.borderTop;
  }
  set [_borderTop](value) {
    this.borderTop = value;
  }
  get [$borderTopColor]() {
    return this[_borderTopColor];
  }
  set [$borderTopColor](value) {
    this[_borderTopColor] = value == null ? "" : value;
  }
  get [_borderTopColor]() {
    return this.borderTopColor;
  }
  set [_borderTopColor](value) {
    this.borderTopColor = value;
  }
  get [$borderTopStyle]() {
    return this[_borderTopStyle];
  }
  set [$borderTopStyle](value) {
    this[_borderTopStyle] = value == null ? "" : value;
  }
  get [_borderTopStyle]() {
    return this.borderTopStyle;
  }
  set [_borderTopStyle](value) {
    this.borderTopStyle = value;
  }
  get [$borderTopWidth]() {
    return this[_borderTopWidth];
  }
  set [$borderTopWidth](value) {
    this[_borderTopWidth] = value == null ? "" : value;
  }
  get [_borderTopWidth]() {
    return this.borderTopWidth;
  }
  set [_borderTopWidth](value) {
    this.borderTopWidth = value;
  }
  get [$borderWidth]() {
    return this[_borderWidth];
  }
  set [$borderWidth](value) {
    this[_borderWidth] = value == null ? "" : value;
  }
  get [_borderWidth]() {
    return this.borderWidth;
  }
  set [_borderWidth](value) {
    this.borderWidth = value;
  }
  get [$bottom]() {
    return this[_bottom];
  }
  set [$bottom](value) {
    this[_bottom] = value == null ? "" : value;
  }
  get [_bottom]() {
    return this.bottom;
  }
  set [_bottom](value) {
    this.bottom = value;
  }
  get [$captionSide]() {
    return this[_captionSide];
  }
  set [$captionSide](value) {
    this[_captionSide] = value == null ? "" : value;
  }
  get [_captionSide]() {
    return this.captionSide;
  }
  set [_captionSide](value) {
    this.captionSide = value;
  }
  get [$clear]() {
    return this[_clear$0];
  }
  set [$clear](value) {
    this[_clear$0] = value == null ? "" : value;
  }
  get [_clear$0]() {
    return this.clear;
  }
  set [_clear$0](value) {
    this.clear = value;
  }
  get [$clip]() {
    return this[_clip];
  }
  set [$clip](value) {
    this[_clip] = value == null ? "" : value;
  }
  get [_clip]() {
    return this.clip;
  }
  set [_clip](value) {
    this.clip = value;
  }
  get [$color]() {
    return this[_color];
  }
  set [$color](value) {
    this[_color] = value == null ? "" : value;
  }
  get [_color]() {
    return this.color;
  }
  set [_color](value) {
    this.color = value;
  }
  get [$content]() {
    return this[_content];
  }
  set [$content](value) {
    this[_content] = value == null ? "" : value;
  }
  get [_content]() {
    return this.content;
  }
  set [_content](value) {
    this.content = value;
  }
  get [$cursor]() {
    return this[_cursor];
  }
  set [$cursor](value) {
    this[_cursor] = value == null ? "" : value;
  }
  get [_cursor]() {
    return this.cursor;
  }
  set [_cursor](value) {
    this.cursor = value;
  }
  get [$direction]() {
    return this[_direction];
  }
  set [$direction](value) {
    this[_direction] = value == null ? "" : value;
  }
  get [_direction]() {
    return this.direction;
  }
  set [_direction](value) {
    this.direction = value;
  }
  get [$display]() {
    return this[_display];
  }
  set [$display](value) {
    this[_display] = value == null ? "" : value;
  }
  get [_display]() {
    return this.display;
  }
  set [_display](value) {
    this.display = value;
  }
  get [$emptyCells]() {
    return this[_emptyCells];
  }
  set [$emptyCells](value) {
    this[_emptyCells] = value == null ? "" : value;
  }
  get [_emptyCells]() {
    return this.emptyCells;
  }
  set [_emptyCells](value) {
    this.emptyCells = value;
  }
  get [$font]() {
    return this[_font];
  }
  set [$font](value) {
    this[_font] = value == null ? "" : value;
  }
  get [_font]() {
    return this.font;
  }
  set [_font](value) {
    this.font = value;
  }
  get [$fontFamily]() {
    return this[_fontFamily];
  }
  set [$fontFamily](value) {
    this[_fontFamily] = value == null ? "" : value;
  }
  get [_fontFamily]() {
    return this.fontFamily;
  }
  set [_fontFamily](value) {
    this.fontFamily = value;
  }
  get [$fontSize]() {
    return this[_fontSize];
  }
  set [$fontSize](value) {
    this[_fontSize] = value == null ? "" : value;
  }
  get [_fontSize]() {
    return this.fontSize;
  }
  set [_fontSize](value) {
    this.fontSize = value;
  }
  get [$fontStyle]() {
    return this[_fontStyle];
  }
  set [$fontStyle](value) {
    this[_fontStyle] = value == null ? "" : value;
  }
  get [_fontStyle]() {
    return this.fontStyle;
  }
  set [_fontStyle](value) {
    this.fontStyle = value;
  }
  get [$fontVariant]() {
    return this[_fontVariant];
  }
  set [$fontVariant](value) {
    this[_fontVariant] = value == null ? "" : value;
  }
  get [_fontVariant]() {
    return this.fontVariant;
  }
  set [_fontVariant](value) {
    this.fontVariant = value;
  }
  get [$fontWeight]() {
    return this[_fontWeight];
  }
  set [$fontWeight](value) {
    this[_fontWeight] = value == null ? "" : value;
  }
  get [_fontWeight]() {
    return this.fontWeight;
  }
  set [_fontWeight](value) {
    this.fontWeight = value;
  }
  get [$height]() {
    return this[_height$];
  }
  set [$height](value) {
    this[_height$] = value == null ? "" : value;
  }
  get [_height$]() {
    return this.height;
  }
  set [_height$](value) {
    this.height = value;
  }
  get [$left]() {
    return this[_left];
  }
  set [$left](value) {
    this[_left] = value == null ? "" : value;
  }
  get [_left]() {
    return this.left;
  }
  set [_left](value) {
    this.left = value;
  }
  get [$letterSpacing]() {
    return this[_letterSpacing];
  }
  set [$letterSpacing](value) {
    this[_letterSpacing] = value == null ? "" : value;
  }
  get [_letterSpacing]() {
    return this.letterSpacing;
  }
  set [_letterSpacing](value) {
    this.letterSpacing = value;
  }
  get [$lineHeight]() {
    return this[_lineHeight];
  }
  set [$lineHeight](value) {
    this[_lineHeight] = value == null ? "" : value;
  }
  get [_lineHeight]() {
    return this.lineHeight;
  }
  set [_lineHeight](value) {
    this.lineHeight = value;
  }
  get [$listStyle]() {
    return this[_listStyle];
  }
  set [$listStyle](value) {
    this[_listStyle] = value == null ? "" : value;
  }
  get [_listStyle]() {
    return this.listStyle;
  }
  set [_listStyle](value) {
    this.listStyle = value;
  }
  get [$listStyleImage]() {
    return this[_listStyleImage];
  }
  set [$listStyleImage](value) {
    this[_listStyleImage] = value == null ? "" : value;
  }
  get [_listStyleImage]() {
    return this.listStyleImage;
  }
  set [_listStyleImage](value) {
    this.listStyleImage = value;
  }
  get [$listStylePosition]() {
    return this[_listStylePosition];
  }
  set [$listStylePosition](value) {
    this[_listStylePosition] = value == null ? "" : value;
  }
  get [_listStylePosition]() {
    return this.listStylePosition;
  }
  set [_listStylePosition](value) {
    this.listStylePosition = value;
  }
  get [$listStyleType]() {
    return this[_listStyleType];
  }
  set [$listStyleType](value) {
    this[_listStyleType] = value == null ? "" : value;
  }
  get [_listStyleType]() {
    return this.listStyleType;
  }
  set [_listStyleType](value) {
    this.listStyleType = value;
  }
  get [$margin]() {
    return this[_margin];
  }
  set [$margin](value) {
    this[_margin] = value == null ? "" : value;
  }
  get [_margin]() {
    return this.margin;
  }
  set [_margin](value) {
    this.margin = value;
  }
  get [$marginBottom]() {
    return this[_marginBottom];
  }
  set [$marginBottom](value) {
    this[_marginBottom] = value == null ? "" : value;
  }
  get [_marginBottom]() {
    return this.marginBottom;
  }
  set [_marginBottom](value) {
    this.marginBottom = value;
  }
  get [$marginLeft]() {
    return this[_marginLeft];
  }
  set [$marginLeft](value) {
    this[_marginLeft] = value == null ? "" : value;
  }
  get [_marginLeft]() {
    return this.marginLeft;
  }
  set [_marginLeft](value) {
    this.marginLeft = value;
  }
  get [$marginRight]() {
    return this[_marginRight];
  }
  set [$marginRight](value) {
    this[_marginRight] = value == null ? "" : value;
  }
  get [_marginRight]() {
    return this.marginRight;
  }
  set [_marginRight](value) {
    this.marginRight = value;
  }
  get [$marginTop]() {
    return this[_marginTop];
  }
  set [$marginTop](value) {
    this[_marginTop] = value == null ? "" : value;
  }
  get [_marginTop]() {
    return this.marginTop;
  }
  set [_marginTop](value) {
    this.marginTop = value;
  }
  get [$maxHeight]() {
    return this[_maxHeight];
  }
  set [$maxHeight](value) {
    this[_maxHeight] = value == null ? "" : value;
  }
  get [_maxHeight]() {
    return this.maxHeight;
  }
  set [_maxHeight](value) {
    this.maxHeight = value;
  }
  get [$maxWidth]() {
    return this[_maxWidth];
  }
  set [$maxWidth](value) {
    this[_maxWidth] = value == null ? "" : value;
  }
  get [_maxWidth]() {
    return this.maxWidth;
  }
  set [_maxWidth](value) {
    this.maxWidth = value;
  }
  get [$minHeight]() {
    return this[_minHeight];
  }
  set [$minHeight](value) {
    this[_minHeight] = value == null ? "" : value;
  }
  get [_minHeight]() {
    return this.minHeight;
  }
  set [_minHeight](value) {
    this.minHeight = value;
  }
  get [$minWidth]() {
    return this[_minWidth];
  }
  set [$minWidth](value) {
    this[_minWidth] = value == null ? "" : value;
  }
  get [_minWidth]() {
    return this.minWidth;
  }
  set [_minWidth](value) {
    this.minWidth = value;
  }
  get [$outline]() {
    return this[_outline];
  }
  set [$outline](value) {
    this[_outline] = value == null ? "" : value;
  }
  get [_outline]() {
    return this.outline;
  }
  set [_outline](value) {
    this.outline = value;
  }
  get [$outlineColor]() {
    return this[_outlineColor];
  }
  set [$outlineColor](value) {
    this[_outlineColor] = value == null ? "" : value;
  }
  get [_outlineColor]() {
    return this.outlineColor;
  }
  set [_outlineColor](value) {
    this.outlineColor = value;
  }
  get [$outlineStyle]() {
    return this[_outlineStyle];
  }
  set [$outlineStyle](value) {
    this[_outlineStyle] = value == null ? "" : value;
  }
  get [_outlineStyle]() {
    return this.outlineStyle;
  }
  set [_outlineStyle](value) {
    this.outlineStyle = value;
  }
  get [$outlineWidth]() {
    return this[_outlineWidth];
  }
  set [$outlineWidth](value) {
    this[_outlineWidth] = value == null ? "" : value;
  }
  get [_outlineWidth]() {
    return this.outlineWidth;
  }
  set [_outlineWidth](value) {
    this.outlineWidth = value;
  }
  get [$overflow]() {
    return this[_overflow];
  }
  set [$overflow](value) {
    this[_overflow] = value == null ? "" : value;
  }
  get [_overflow]() {
    return this.overflow;
  }
  set [_overflow](value) {
    this.overflow = value;
  }
  get [$padding]() {
    return this[_padding];
  }
  set [$padding](value) {
    this[_padding] = value == null ? "" : value;
  }
  get [_padding]() {
    return this.padding;
  }
  set [_padding](value) {
    this.padding = value;
  }
  get [$paddingBottom]() {
    return this[_paddingBottom];
  }
  set [$paddingBottom](value) {
    this[_paddingBottom] = value == null ? "" : value;
  }
  get [_paddingBottom]() {
    return this.paddingBottom;
  }
  set [_paddingBottom](value) {
    this.paddingBottom = value;
  }
  get [$paddingLeft]() {
    return this[_paddingLeft];
  }
  set [$paddingLeft](value) {
    this[_paddingLeft] = value == null ? "" : value;
  }
  get [_paddingLeft]() {
    return this.paddingLeft;
  }
  set [_paddingLeft](value) {
    this.paddingLeft = value;
  }
  get [$paddingRight]() {
    return this[_paddingRight];
  }
  set [$paddingRight](value) {
    this[_paddingRight] = value == null ? "" : value;
  }
  get [_paddingRight]() {
    return this.paddingRight;
  }
  set [_paddingRight](value) {
    this.paddingRight = value;
  }
  get [$paddingTop]() {
    return this[_paddingTop];
  }
  set [$paddingTop](value) {
    this[_paddingTop] = value == null ? "" : value;
  }
  get [_paddingTop]() {
    return this.paddingTop;
  }
  set [_paddingTop](value) {
    this.paddingTop = value;
  }
  get [$pageBreakAfter]() {
    return this[_pageBreakAfter];
  }
  set [$pageBreakAfter](value) {
    this[_pageBreakAfter] = value == null ? "" : value;
  }
  get [_pageBreakAfter]() {
    return this.pageBreakAfter;
  }
  set [_pageBreakAfter](value) {
    this.pageBreakAfter = value;
  }
  get [$pageBreakBefore]() {
    return this[_pageBreakBefore];
  }
  set [$pageBreakBefore](value) {
    this[_pageBreakBefore] = value == null ? "" : value;
  }
  get [_pageBreakBefore]() {
    return this.pageBreakBefore;
  }
  set [_pageBreakBefore](value) {
    this.pageBreakBefore = value;
  }
  get [$pageBreakInside]() {
    return this[_pageBreakInside];
  }
  set [$pageBreakInside](value) {
    this[_pageBreakInside] = value == null ? "" : value;
  }
  get [_pageBreakInside]() {
    return this.pageBreakInside;
  }
  set [_pageBreakInside](value) {
    this.pageBreakInside = value;
  }
  get [$position]() {
    return this[_position$1];
  }
  set [$position](value) {
    this[_position$1] = value == null ? "" : value;
  }
  get [_position$1]() {
    return this.position;
  }
  set [_position$1](value) {
    this.position = value;
  }
  get [$quotes]() {
    return this[_quotes];
  }
  set [$quotes](value) {
    this[_quotes] = value == null ? "" : value;
  }
  get [_quotes]() {
    return this.quotes;
  }
  set [_quotes](value) {
    this.quotes = value;
  }
  get [$right]() {
    return this[_right];
  }
  set [$right](value) {
    this[_right] = value == null ? "" : value;
  }
  get [_right]() {
    return this.right;
  }
  set [_right](value) {
    this.right = value;
  }
  get [$tableLayout]() {
    return this[_tableLayout];
  }
  set [$tableLayout](value) {
    this[_tableLayout] = value == null ? "" : value;
  }
  get [_tableLayout]() {
    return this.tableLayout;
  }
  set [_tableLayout](value) {
    this.tableLayout = value;
  }
  get [$textAlign]() {
    return this[_textAlign];
  }
  set [$textAlign](value) {
    this[_textAlign] = value == null ? "" : value;
  }
  get [_textAlign]() {
    return this.textAlign;
  }
  set [_textAlign](value) {
    this.textAlign = value;
  }
  get [$textDecoration]() {
    return this[_textDecoration];
  }
  set [$textDecoration](value) {
    this[_textDecoration] = value == null ? "" : value;
  }
  get [_textDecoration]() {
    return this.textDecoration;
  }
  set [_textDecoration](value) {
    this.textDecoration = value;
  }
  get [$textIndent]() {
    return this[_textIndent];
  }
  set [$textIndent](value) {
    this[_textIndent] = value == null ? "" : value;
  }
  get [_textIndent]() {
    return this.textIndent;
  }
  set [_textIndent](value) {
    this.textIndent = value;
  }
  get [$textTransform]() {
    return this[_textTransform];
  }
  set [$textTransform](value) {
    this[_textTransform] = value == null ? "" : value;
  }
  get [_textTransform]() {
    return this.textTransform;
  }
  set [_textTransform](value) {
    this.textTransform = value;
  }
  get [$top]() {
    return this[_top];
  }
  set [$top](value) {
    this[_top] = value == null ? "" : value;
  }
  get [_top]() {
    return this.top;
  }
  set [_top](value) {
    this.top = value;
  }
  get [$unicodeBidi]() {
    return this[_unicodeBidi];
  }
  set [$unicodeBidi](value) {
    this[_unicodeBidi] = value == null ? "" : value;
  }
  get [_unicodeBidi]() {
    return this.unicodeBidi;
  }
  set [_unicodeBidi](value) {
    this.unicodeBidi = value;
  }
  get [$verticalAlign]() {
    return this[_verticalAlign];
  }
  set [$verticalAlign](value) {
    this[_verticalAlign] = value == null ? "" : value;
  }
  get [_verticalAlign]() {
    return this.verticalAlign;
  }
  set [_verticalAlign](value) {
    this.verticalAlign = value;
  }
  get [$visibility]() {
    return this[_visibility];
  }
  set [$visibility](value) {
    this[_visibility] = value == null ? "" : value;
  }
  get [_visibility]() {
    return this.visibility;
  }
  set [_visibility](value) {
    this.visibility = value;
  }
  get [$whiteSpace]() {
    return this[_whiteSpace];
  }
  set [$whiteSpace](value) {
    this[_whiteSpace] = value == null ? "" : value;
  }
  get [_whiteSpace]() {
    return this.whiteSpace;
  }
  set [_whiteSpace](value) {
    this.whiteSpace = value;
  }
  get [$width]() {
    return this[_width$];
  }
  set [$width](value) {
    this[_width$] = value == null ? "" : value;
  }
  get [_width$]() {
    return this.width;
  }
  set [_width$](value) {
    this.width = value;
  }
  get [$wordSpacing]() {
    return this[_wordSpacing];
  }
  set [$wordSpacing](value) {
    this[_wordSpacing] = value == null ? "" : value;
  }
  get [_wordSpacing]() {
    return this.wordSpacing;
  }
  set [_wordSpacing](value) {
    this.wordSpacing = value;
  }
  get [$zIndex]() {
    return this[_zIndex];
  }
  set [$zIndex](value) {
    this[_zIndex] = value == null ? "" : value;
  }
  get [_zIndex]() {
    return this.zIndex;
  }
  set [_zIndex](value) {
    this.zIndex = value;
  }
};
dart.addTypeTests(html$.CssStyleDeclaration);
const cssFloat = Symbol("CssStyleDeclaration.cssFloat");
const cssText$ = Symbol("CssStyleDeclaration.cssText");
const length$2 = Symbol("CssStyleDeclaration.length");
const parentRule$ = Symbol("CssStyleDeclaration.parentRule");
dart.setMethodSignature(html$.CssStyleDeclaration, () => ({
  __proto__: dart.getMethods(html$.CssStyleDeclaration.__proto__),
  [$getPropertyValue]: dart.fnType(core.String, [core.String]),
  [_getPropertyValueHelper]: dart.fnType(core.String, [core.String]),
  [$supportsProperty]: dart.fnType(core.bool, [core.String]),
  [_supportsProperty]: dart.fnType(core.bool, [core.String]),
  [$setProperty]: dart.fnType(dart.void, [core.String, core.String], [core.String]),
  [_browserPropertyName]: dart.fnType(core.String, [core.String]),
  [_supportedBrowserPropertyName]: dart.fnType(core.String, [core.String]),
  [_setPropertyHelper]: dart.fnType(dart.void, [core.String, core.String], [core.String]),
  [$getPropertyPriority]: dart.fnType(core.String, [core.String]),
  [_getPropertyValue]: dart.fnType(core.String, [core.String]),
  [$item]: dart.fnType(core.String, [core.int]),
  [$removeProperty]: dart.fnType(core.String, [core.String])
}));
dart.setFieldSignature(html$.CssStyleDeclaration, () => ({
  __proto__: dart.getFields(html$.CssStyleDeclaration.__proto__),
  [$cssFloat]: dart.fieldType(core.String),
  [$cssText]: dart.fieldType(core.String),
  [$length]: dart.finalFieldType(core.int),
  [$parentRule]: dart.finalFieldType(html$.CssRule),
  [_background]: dart.fieldType(core.String),
  [_backgroundAttachment]: dart.fieldType(core.String),
  [_backgroundColor]: dart.fieldType(core.String),
  [_backgroundImage]: dart.fieldType(core.String),
  [_backgroundPosition]: dart.fieldType(core.String),
  [_backgroundRepeat]: dart.fieldType(core.String),
  [_border]: dart.fieldType(core.String),
  [_borderBottom]: dart.fieldType(core.String),
  [_borderBottomColor]: dart.fieldType(core.String),
  [_borderBottomStyle]: dart.fieldType(core.String),
  [_borderBottomWidth]: dart.fieldType(core.String),
  [_borderCollapse]: dart.fieldType(core.String),
  [_borderColor]: dart.fieldType(core.String),
  [_borderLeft]: dart.fieldType(core.String),
  [_borderLeftColor]: dart.fieldType(core.String),
  [_borderLeftStyle]: dart.fieldType(core.String),
  [_borderLeftWidth]: dart.fieldType(core.String),
  [_borderRight]: dart.fieldType(core.String),
  [_borderRightColor]: dart.fieldType(core.String),
  [_borderRightStyle]: dart.fieldType(core.String),
  [_borderRightWidth]: dart.fieldType(core.String),
  [_borderSpacing]: dart.fieldType(core.String),
  [_borderStyle]: dart.fieldType(core.String),
  [_borderTop]: dart.fieldType(core.String),
  [_borderTopColor]: dart.fieldType(core.String),
  [_borderTopStyle]: dart.fieldType(core.String),
  [_borderTopWidth]: dart.fieldType(core.String),
  [_borderWidth]: dart.fieldType(core.String),
  [_bottom]: dart.fieldType(core.String),
  [_captionSide]: dart.fieldType(core.String),
  [_clear$0]: dart.fieldType(core.String),
  [_clip]: dart.fieldType(core.String),
  [_color]: dart.fieldType(core.String),
  [_content]: dart.fieldType(core.String),
  [_cursor]: dart.fieldType(core.String),
  [_direction]: dart.fieldType(core.String),
  [_display]: dart.fieldType(core.String),
  [_emptyCells]: dart.fieldType(core.String),
  [_font]: dart.fieldType(core.String),
  [_fontFamily]: dart.fieldType(core.String),
  [_fontSize]: dart.fieldType(core.String),
  [_fontStyle]: dart.fieldType(core.String),
  [_fontVariant]: dart.fieldType(core.String),
  [_fontWeight]: dart.fieldType(core.String),
  [_height$]: dart.fieldType(core.String),
  [_left]: dart.fieldType(core.String),
  [_letterSpacing]: dart.fieldType(core.String),
  [_lineHeight]: dart.fieldType(core.String),
  [_listStyle]: dart.fieldType(core.String),
  [_listStyleImage]: dart.fieldType(core.String),
  [_listStylePosition]: dart.fieldType(core.String),
  [_listStyleType]: dart.fieldType(core.String),
  [_margin]: dart.fieldType(core.String),
  [_marginBottom]: dart.fieldType(core.String),
  [_marginLeft]: dart.fieldType(core.String),
  [_marginRight]: dart.fieldType(core.String),
  [_marginTop]: dart.fieldType(core.String),
  [_maxHeight]: dart.fieldType(core.String),
  [_maxWidth]: dart.fieldType(core.String),
  [_minHeight]: dart.fieldType(core.String),
  [_minWidth]: dart.fieldType(core.String),
  [_outline]: dart.fieldType(core.String),
  [_outlineColor]: dart.fieldType(core.String),
  [_outlineStyle]: dart.fieldType(core.String),
  [_outlineWidth]: dart.fieldType(core.String),
  [_overflow]: dart.fieldType(core.String),
  [_padding]: dart.fieldType(core.String),
  [_paddingBottom]: dart.fieldType(core.String),
  [_paddingLeft]: dart.fieldType(core.String),
  [_paddingRight]: dart.fieldType(core.String),
  [_paddingTop]: dart.fieldType(core.String),
  [_pageBreakAfter]: dart.fieldType(core.String),
  [_pageBreakBefore]: dart.fieldType(core.String),
  [_pageBreakInside]: dart.fieldType(core.String),
  [_position$1]: dart.fieldType(core.String),
  [_quotes]: dart.fieldType(core.String),
  [_right]: dart.fieldType(core.String),
  [_tableLayout]: dart.fieldType(core.String),
  [_textAlign]: dart.fieldType(core.String),
  [_textDecoration]: dart.fieldType(core.String),
  [_textIndent]: dart.fieldType(core.String),
  [_textTransform]: dart.fieldType(core.String),
  [_top]: dart.fieldType(core.String),
  [_unicodeBidi]: dart.fieldType(core.String),
  [_verticalAlign]: dart.fieldType(core.String),
  [_visibility]: dart.fieldType(core.String),
  [_whiteSpace]: dart.fieldType(core.String),
  [_width$]: dart.fieldType(core.String),
  [_wordSpacing]: dart.fieldType(core.String),
  [_zIndex]: dart.fieldType(core.String)
}));
dart.defineLazy(html$.CssStyleDeclaration, {
  /*html$.CssStyleDeclaration._propertyCache*/get _propertyCache() {
    return {};
  }
});
dart.registerExtension("CSSStyleDeclaration", html$.CssStyleDeclaration);
dart.registerExtension("MSStyleCSSProperties", html$.CssStyleDeclaration);
dart.registerExtension("CSS2Properties", html$.CssStyleDeclaration);
const _elementIterable = Symbol('_elementIterable');
const _elementCssStyleDeclarationSetIterable = Symbol('_elementCssStyleDeclarationSetIterable');
const _setAll = Symbol('_setAll');
const Object_CssStyleDeclarationBase$ = class Object_CssStyleDeclarationBase extends core.Object {};
(Object_CssStyleDeclarationBase$.new = function() {
}).prototype = Object_CssStyleDeclarationBase$.prototype;
dart.applyMixin(Object_CssStyleDeclarationBase$, html$.CssStyleDeclarationBase);
html$._CssStyleDeclarationSet = class _CssStyleDeclarationSet extends Object_CssStyleDeclarationBase$ {
  getPropertyValue(propertyName) {
    return this[_elementCssStyleDeclarationSetIterable][$first][$getPropertyValue](propertyName);
  }
  setProperty(propertyName, value, priority) {
    if (priority === void 0) priority = null;
    this[_elementCssStyleDeclarationSetIterable][$forEach](dart.fn(e => e[$setProperty](propertyName, value, priority), CssStyleDeclarationTovoid()));
  }
  [_setAll](propertyName, value) {
    value = value == null ? "" : value;
    for (let element of this[_elementIterable]) {
      element.style[propertyName] = value;
    }
  }
  set background(value) {
    this[_setAll]("background", value);
  }
  get background() {
    return super.background;
  }
  set backgroundAttachment(value) {
    this[_setAll]("backgroundAttachment", value);
  }
  get backgroundAttachment() {
    return super.backgroundAttachment;
  }
  set backgroundColor(value) {
    this[_setAll]("backgroundColor", value);
  }
  get backgroundColor() {
    return super.backgroundColor;
  }
  set backgroundImage(value) {
    this[_setAll]("backgroundImage", value);
  }
  get backgroundImage() {
    return super.backgroundImage;
  }
  set backgroundPosition(value) {
    this[_setAll]("backgroundPosition", value);
  }
  get backgroundPosition() {
    return super.backgroundPosition;
  }
  set backgroundRepeat(value) {
    this[_setAll]("backgroundRepeat", value);
  }
  get backgroundRepeat() {
    return super.backgroundRepeat;
  }
  set border(value) {
    this[_setAll]("border", value);
  }
  get border() {
    return super.border;
  }
  set borderBottom(value) {
    this[_setAll]("borderBottom", value);
  }
  get borderBottom() {
    return super.borderBottom;
  }
  set borderBottomColor(value) {
    this[_setAll]("borderBottomColor", value);
  }
  get borderBottomColor() {
    return super.borderBottomColor;
  }
  set borderBottomStyle(value) {
    this[_setAll]("borderBottomStyle", value);
  }
  get borderBottomStyle() {
    return super.borderBottomStyle;
  }
  set borderBottomWidth(value) {
    this[_setAll]("borderBottomWidth", value);
  }
  get borderBottomWidth() {
    return super.borderBottomWidth;
  }
  set borderCollapse(value) {
    this[_setAll]("borderCollapse", value);
  }
  get borderCollapse() {
    return super.borderCollapse;
  }
  set borderColor(value) {
    this[_setAll]("borderColor", value);
  }
  get borderColor() {
    return super.borderColor;
  }
  set borderLeft(value) {
    this[_setAll]("borderLeft", value);
  }
  get borderLeft() {
    return super.borderLeft;
  }
  set borderLeftColor(value) {
    this[_setAll]("borderLeftColor", value);
  }
  get borderLeftColor() {
    return super.borderLeftColor;
  }
  set borderLeftStyle(value) {
    this[_setAll]("borderLeftStyle", value);
  }
  get borderLeftStyle() {
    return super.borderLeftStyle;
  }
  set borderLeftWidth(value) {
    this[_setAll]("borderLeftWidth", value);
  }
  get borderLeftWidth() {
    return super.borderLeftWidth;
  }
  set borderRight(value) {
    this[_setAll]("borderRight", value);
  }
  get borderRight() {
    return super.borderRight;
  }
  set borderRightColor(value) {
    this[_setAll]("borderRightColor", value);
  }
  get borderRightColor() {
    return super.borderRightColor;
  }
  set borderRightStyle(value) {
    this[_setAll]("borderRightStyle", value);
  }
  get borderRightStyle() {
    return super.borderRightStyle;
  }
  set borderRightWidth(value) {
    this[_setAll]("borderRightWidth", value);
  }
  get borderRightWidth() {
    return super.borderRightWidth;
  }
  set borderSpacing(value) {
    this[_setAll]("borderSpacing", value);
  }
  get borderSpacing() {
    return super.borderSpacing;
  }
  set borderStyle(value) {
    this[_setAll]("borderStyle", value);
  }
  get borderStyle() {
    return super.borderStyle;
  }
  set borderTop(value) {
    this[_setAll]("borderTop", value);
  }
  get borderTop() {
    return super.borderTop;
  }
  set borderTopColor(value) {
    this[_setAll]("borderTopColor", value);
  }
  get borderTopColor() {
    return super.borderTopColor;
  }
  set borderTopStyle(value) {
    this[_setAll]("borderTopStyle", value);
  }
  get borderTopStyle() {
    return super.borderTopStyle;
  }
  set borderTopWidth(value) {
    this[_setAll]("borderTopWidth", value);
  }
  get borderTopWidth() {
    return super.borderTopWidth;
  }
  set borderWidth(value) {
    this[_setAll]("borderWidth", value);
  }
  get borderWidth() {
    return super.borderWidth;
  }
  set bottom(value) {
    this[_setAll]("bottom", value);
  }
  get bottom() {
    return super.bottom;
  }
  set captionSide(value) {
    this[_setAll]("captionSide", value);
  }
  get captionSide() {
    return super.captionSide;
  }
  set clear(value) {
    this[_setAll]("clear", value);
  }
  get clear() {
    return super.clear;
  }
  set clip(value) {
    this[_setAll]("clip", value);
  }
  get clip() {
    return super.clip;
  }
  set color(value) {
    this[_setAll]("color", value);
  }
  get color() {
    return super.color;
  }
  set content(value) {
    this[_setAll]("content", value);
  }
  get content() {
    return super.content;
  }
  set cursor(value) {
    this[_setAll]("cursor", value);
  }
  get cursor() {
    return super.cursor;
  }
  set direction(value) {
    this[_setAll]("direction", value);
  }
  get direction() {
    return super.direction;
  }
  set display(value) {
    this[_setAll]("display", value);
  }
  get display() {
    return super.display;
  }
  set emptyCells(value) {
    this[_setAll]("emptyCells", value);
  }
  get emptyCells() {
    return super.emptyCells;
  }
  set font(value) {
    this[_setAll]("font", value);
  }
  get font() {
    return super.font;
  }
  set fontFamily(value) {
    this[_setAll]("fontFamily", value);
  }
  get fontFamily() {
    return super.fontFamily;
  }
  set fontSize(value) {
    this[_setAll]("fontSize", value);
  }
  get fontSize() {
    return super.fontSize;
  }
  set fontStyle(value) {
    this[_setAll]("fontStyle", value);
  }
  get fontStyle() {
    return super.fontStyle;
  }
  set fontVariant(value) {
    this[_setAll]("fontVariant", value);
  }
  get fontVariant() {
    return super.fontVariant;
  }
  set fontWeight(value) {
    this[_setAll]("fontWeight", value);
  }
  get fontWeight() {
    return super.fontWeight;
  }
  set height(value) {
    this[_setAll]("height", value);
  }
  get height() {
    return super.height;
  }
  set left(value) {
    this[_setAll]("left", value);
  }
  get left() {
    return super.left;
  }
  set letterSpacing(value) {
    this[_setAll]("letterSpacing", value);
  }
  get letterSpacing() {
    return super.letterSpacing;
  }
  set lineHeight(value) {
    this[_setAll]("lineHeight", value);
  }
  get lineHeight() {
    return super.lineHeight;
  }
  set listStyle(value) {
    this[_setAll]("listStyle", value);
  }
  get listStyle() {
    return super.listStyle;
  }
  set listStyleImage(value) {
    this[_setAll]("listStyleImage", value);
  }
  get listStyleImage() {
    return super.listStyleImage;
  }
  set listStylePosition(value) {
    this[_setAll]("listStylePosition", value);
  }
  get listStylePosition() {
    return super.listStylePosition;
  }
  set listStyleType(value) {
    this[_setAll]("listStyleType", value);
  }
  get listStyleType() {
    return super.listStyleType;
  }
  set margin(value) {
    this[_setAll]("margin", value);
  }
  get margin() {
    return super.margin;
  }
  set marginBottom(value) {
    this[_setAll]("marginBottom", value);
  }
  get marginBottom() {
    return super.marginBottom;
  }
  set marginLeft(value) {
    this[_setAll]("marginLeft", value);
  }
  get marginLeft() {
    return super.marginLeft;
  }
  set marginRight(value) {
    this[_setAll]("marginRight", value);
  }
  get marginRight() {
    return super.marginRight;
  }
  set marginTop(value) {
    this[_setAll]("marginTop", value);
  }
  get marginTop() {
    return super.marginTop;
  }
  set maxHeight(value) {
    this[_setAll]("maxHeight", value);
  }
  get maxHeight() {
    return super.maxHeight;
  }
  set maxWidth(value) {
    this[_setAll]("maxWidth", value);
  }
  get maxWidth() {
    return super.maxWidth;
  }
  set minHeight(value) {
    this[_setAll]("minHeight", value);
  }
  get minHeight() {
    return super.minHeight;
  }
  set minWidth(value) {
    this[_setAll]("minWidth", value);
  }
  get minWidth() {
    return super.minWidth;
  }
  set outline(value) {
    this[_setAll]("outline", value);
  }
  get outline() {
    return super.outline;
  }
  set outlineColor(value) {
    this[_setAll]("outlineColor", value);
  }
  get outlineColor() {
    return super.outlineColor;
  }
  set outlineStyle(value) {
    this[_setAll]("outlineStyle", value);
  }
  get outlineStyle() {
    return super.outlineStyle;
  }
  set outlineWidth(value) {
    this[_setAll]("outlineWidth", value);
  }
  get outlineWidth() {
    return super.outlineWidth;
  }
  set overflow(value) {
    this[_setAll]("overflow", value);
  }
  get overflow() {
    return super.overflow;
  }
  set padding(value) {
    this[_setAll]("padding", value);
  }
  get padding() {
    return super.padding;
  }
  set paddingBottom(value) {
    this[_setAll]("paddingBottom", value);
  }
  get paddingBottom() {
    return super.paddingBottom;
  }
  set paddingLeft(value) {
    this[_setAll]("paddingLeft", value);
  }
  get paddingLeft() {
    return super.paddingLeft;
  }
  set paddingRight(value) {
    this[_setAll]("paddingRight", value);
  }
  get paddingRight() {
    return super.paddingRight;
  }
  set paddingTop(value) {
    this[_setAll]("paddingTop", value);
  }
  get paddingTop() {
    return super.paddingTop;
  }
  set pageBreakAfter(value) {
    this[_setAll]("pageBreakAfter", value);
  }
  get pageBreakAfter() {
    return super.pageBreakAfter;
  }
  set pageBreakBefore(value) {
    this[_setAll]("pageBreakBefore", value);
  }
  get pageBreakBefore() {
    return super.pageBreakBefore;
  }
  set pageBreakInside(value) {
    this[_setAll]("pageBreakInside", value);
  }
  get pageBreakInside() {
    return super.pageBreakInside;
  }
  set position(value) {
    this[_setAll]("position", value);
  }
  get position() {
    return super.position;
  }
  set quotes(value) {
    this[_setAll]("quotes", value);
  }
  get quotes() {
    return super.quotes;
  }
  set right(value) {
    this[_setAll]("right", value);
  }
  get right() {
    return super.right;
  }
  set tableLayout(value) {
    this[_setAll]("tableLayout", value);
  }
  get tableLayout() {
    return super.tableLayout;
  }
  set textAlign(value) {
    this[_setAll]("textAlign", value);
  }
  get textAlign() {
    return super.textAlign;
  }
  set textDecoration(value) {
    this[_setAll]("textDecoration", value);
  }
  get textDecoration() {
    return super.textDecoration;
  }
  set textIndent(value) {
    this[_setAll]("textIndent", value);
  }
  get textIndent() {
    return super.textIndent;
  }
  set textTransform(value) {
    this[_setAll]("textTransform", value);
  }
  get textTransform() {
    return super.textTransform;
  }
  set top(value) {
    this[_setAll]("top", value);
  }
  get top() {
    return super.top;
  }
  set unicodeBidi(value) {
    this[_setAll]("unicodeBidi", value);
  }
  get unicodeBidi() {
    return super.unicodeBidi;
  }
  set verticalAlign(value) {
    this[_setAll]("verticalAlign", value);
  }
  get verticalAlign() {
    return super.verticalAlign;
  }
  set visibility(value) {
    this[_setAll]("visibility", value);
  }
  get visibility() {
    return super.visibility;
  }
  set whiteSpace(value) {
    this[_setAll]("whiteSpace", value);
  }
  get whiteSpace() {
    return super.whiteSpace;
  }
  set width(value) {
    this[_setAll]("width", value);
  }
  get width() {
    return super.width;
  }
  set wordSpacing(value) {
    this[_setAll]("wordSpacing", value);
  }
  get wordSpacing() {
    return super.wordSpacing;
  }
  set zIndex(value) {
    this[_setAll]("zIndex", value);
  }
  get zIndex() {
    return super.zIndex;
  }
};
(html$._CssStyleDeclarationSet.new = function(elementIterable) {
  this[_elementCssStyleDeclarationSetIterable] = null;
  this[_elementIterable] = elementIterable;
  this[_elementCssStyleDeclarationSetIterable] = IterableOfCssStyleDeclaration()._check(core.List.from(this[_elementIterable])[$map](html$.CssStyleDeclaration, dart.fn(e => html$.CssStyleDeclaration._check(dart.dload(e, 'style')), dynamicToCssStyleDeclaration())));
}).prototype = html$._CssStyleDeclarationSet.prototype;
dart.addTypeTests(html$._CssStyleDeclarationSet);
dart.setMethodSignature(html$._CssStyleDeclarationSet, () => ({
  __proto__: dart.getMethods(html$._CssStyleDeclarationSet.__proto__),
  getPropertyValue: dart.fnType(core.String, [core.String]),
  [$getPropertyValue]: dart.fnType(core.String, [core.String]),
  setProperty: dart.fnType(dart.void, [core.String, core.String], [core.String]),
  [$setProperty]: dart.fnType(dart.void, [core.String, core.String], [core.String]),
  [_setAll]: dart.fnType(dart.void, [core.String, core.String])
}));
dart.setFieldSignature(html$._CssStyleDeclarationSet, () => ({
  __proto__: dart.getFields(html$._CssStyleDeclarationSet.__proto__),
  [_elementIterable]: dart.finalFieldType(IterableOfElement()),
  [_elementCssStyleDeclarationSetIterable]: dart.fieldType(IterableOfCssStyleDeclaration())
}));
dart.defineExtensionMethods(html$._CssStyleDeclarationSet, ['getPropertyValue', 'setProperty']);
dart.defineExtensionAccessors(html$._CssStyleDeclarationSet, [
  'background',
  'backgroundAttachment',
  'backgroundColor',
  'backgroundImage',
  'backgroundPosition',
  'backgroundRepeat',
  'border',
  'borderBottom',
  'borderBottomColor',
  'borderBottomStyle',
  'borderBottomWidth',
  'borderCollapse',
  'borderColor',
  'borderLeft',
  'borderLeftColor',
  'borderLeftStyle',
  'borderLeftWidth',
  'borderRight',
  'borderRightColor',
  'borderRightStyle',
  'borderRightWidth',
  'borderSpacing',
  'borderStyle',
  'borderTop',
  'borderTopColor',
  'borderTopStyle',
  'borderTopWidth',
  'borderWidth',
  'bottom',
  'captionSide',
  'clear',
  'clip',
  'color',
  'content',
  'cursor',
  'direction',
  'display',
  'emptyCells',
  'font',
  'fontFamily',
  'fontSize',
  'fontStyle',
  'fontVariant',
  'fontWeight',
  'height',
  'left',
  'letterSpacing',
  'lineHeight',
  'listStyle',
  'listStyleImage',
  'listStylePosition',
  'listStyleType',
  'margin',
  'marginBottom',
  'marginLeft',
  'marginRight',
  'marginTop',
  'maxHeight',
  'maxWidth',
  'minHeight',
  'minWidth',
  'outline',
  'outlineColor',
  'outlineStyle',
  'outlineWidth',
  'overflow',
  'padding',
  'paddingBottom',
  'paddingLeft',
  'paddingRight',
  'paddingTop',
  'pageBreakAfter',
  'pageBreakBefore',
  'pageBreakInside',
  'position',
  'quotes',
  'right',
  'tableLayout',
  'textAlign',
  'textDecoration',
  'textIndent',
  'textTransform',
  'top',
  'unicodeBidi',
  'verticalAlign',
  'visibility',
  'whiteSpace',
  'width',
  'wordSpacing',
  'zIndex'
]);
html$.CssStyleRule = class CssStyleRule extends html$.CssRule {
  get [$selectorText]() {
    return this.selectorText;
  }
  set [$selectorText](value) {
    this.selectorText = value;
  }
  get [$style]() {
    return this.style;
  }
};
dart.addTypeTests(html$.CssStyleRule);
const selectorText$ = Symbol("CssStyleRule.selectorText");
const style$2 = Symbol("CssStyleRule.style");
dart.setFieldSignature(html$.CssStyleRule, () => ({
  __proto__: dart.getFields(html$.CssStyleRule.__proto__),
  [$selectorText]: dart.fieldType(core.String),
  [$style]: dart.finalFieldType(html$.CssStyleDeclaration)
}));
dart.registerExtension("CSSStyleRule", html$.CssStyleRule);
html$.StyleSheet = class StyleSheet extends _interceptors.Interceptor {
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$href]() {
    return this.href;
  }
  get [$media]() {
    return this.media;
  }
  get [$ownerNode]() {
    return this.ownerNode;
  }
  get [$parentStyleSheet]() {
    return this.parentStyleSheet;
  }
  get [$title]() {
    return this.title;
  }
  get [$type]() {
    return this.type;
  }
};
dart.addTypeTests(html$.StyleSheet);
const disabled$0 = Symbol("StyleSheet.disabled");
const href$2 = Symbol("StyleSheet.href");
const media$0 = Symbol("StyleSheet.media");
const ownerNode = Symbol("StyleSheet.ownerNode");
const parentStyleSheet$ = Symbol("StyleSheet.parentStyleSheet");
const title$0 = Symbol("StyleSheet.title");
const type$10 = Symbol("StyleSheet.type");
dart.setFieldSignature(html$.StyleSheet, () => ({
  __proto__: dart.getFields(html$.StyleSheet.__proto__),
  [$disabled]: dart.fieldType(core.bool),
  [$href]: dart.finalFieldType(core.String),
  [$media]: dart.finalFieldType(html$.MediaList),
  [$ownerNode]: dart.finalFieldType(html$.Node),
  [$parentStyleSheet]: dart.finalFieldType(html$.StyleSheet),
  [$title]: dart.finalFieldType(core.String),
  [$type]: dart.finalFieldType(core.String)
}));
dart.registerExtension("StyleSheet", html$.StyleSheet);
html$.CssStyleSheet = class CssStyleSheet extends html$.StyleSheet {
  get [$cssRules]() {
    return this.cssRules;
  }
  get [$ownerRule]() {
    return this.ownerRule;
  }
  get [$rules]() {
    return this.rules;
  }
  [$addRule](...args) {
    return this.addRule.apply(this, args);
  }
  [$deleteRule](...args) {
    return this.deleteRule.apply(this, args);
  }
  [$insertRule](...args) {
    return this.insertRule.apply(this, args);
  }
  [$removeRule](...args) {
    return this.removeRule.apply(this, args);
  }
};
dart.addTypeTests(html$.CssStyleSheet);
const cssRules$0 = Symbol("CssStyleSheet.cssRules");
const ownerRule = Symbol("CssStyleSheet.ownerRule");
const rules = Symbol("CssStyleSheet.rules");
dart.setMethodSignature(html$.CssStyleSheet, () => ({
  __proto__: dart.getMethods(html$.CssStyleSheet.__proto__),
  [$addRule]: dart.fnType(core.int, [core.String, core.String], [core.int]),
  [$deleteRule]: dart.fnType(dart.void, [core.int]),
  [$insertRule]: dart.fnType(core.int, [core.String], [core.int]),
  [$removeRule]: dart.fnType(dart.void, [core.int])
}));
dart.setFieldSignature(html$.CssStyleSheet, () => ({
  __proto__: dart.getFields(html$.CssStyleSheet.__proto__),
  [$cssRules]: dart.finalFieldType(ListOfCssRule()),
  [$ownerRule]: dart.finalFieldType(html$.CssRule),
  [$rules]: dart.finalFieldType(ListOfCssRule())
}));
dart.registerExtension("CSSStyleSheet", html$.CssStyleSheet);
html$.CssSupportsRule = class CssSupportsRule extends html$.CssConditionRule {};
dart.addTypeTests(html$.CssSupportsRule);
dart.registerExtension("CSSSupportsRule", html$.CssSupportsRule);
html$.CssTransformValue = class CssTransformValue extends html$.CssStyleValue {
  static new(transformComponents) {
    if (transformComponents === void 0) transformComponents = null;
    if (transformComponents == null) {
      return html$.CssTransformValue._create_1();
    }
    if (ListOfCssTransformComponent().is(transformComponents)) {
      return html$.CssTransformValue._create_2(transformComponents);
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  static _create_1() {
    return new CSSTransformValue();
  }
  static _create_2(transformComponents) {
    return new CSSTransformValue(transformComponents);
  }
  get [$is2D]() {
    return this.is2D;
  }
  get [$length]() {
    return this.length;
  }
  [$componentAtIndex](...args) {
    return this.componentAtIndex.apply(this, args);
  }
  [$toMatrix](...args) {
    return this.toMatrix.apply(this, args);
  }
};
dart.addTypeTests(html$.CssTransformValue);
const is2D$ = Symbol("CssTransformValue.is2D");
const length$3 = Symbol("CssTransformValue.length");
dart.setMethodSignature(html$.CssTransformValue, () => ({
  __proto__: dart.getMethods(html$.CssTransformValue.__proto__),
  [$componentAtIndex]: dart.fnType(html$.CssTransformComponent, [core.int]),
  [$toMatrix]: dart.fnType(html$.DomMatrix, [])
}));
dart.setFieldSignature(html$.CssTransformValue, () => ({
  __proto__: dart.getFields(html$.CssTransformValue.__proto__),
  [$is2D]: dart.finalFieldType(core.bool),
  [$length]: dart.finalFieldType(core.int)
}));
dart.registerExtension("CSSTransformValue", html$.CssTransformValue);
html$.CssTranslation = class CssTranslation extends html$.CssTransformComponent {
  static new(x, y, z) {
    if (z === void 0) z = null;
    if (html$.CssNumericValue.is(y) && html$.CssNumericValue.is(x) && z == null) {
      return html$.CssTranslation._create_1(x, y);
    }
    if (html$.CssNumericValue.is(z) && html$.CssNumericValue.is(y) && html$.CssNumericValue.is(x)) {
      return html$.CssTranslation._create_2(x, y, z);
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  static _create_1(x, y) {
    return new CSSTranslation(x, y);
  }
  static _create_2(x, y, z) {
    return new CSSTranslation(x, y, z);
  }
  get [$x]() {
    return this.x;
  }
  set [$x](value) {
    this.x = value;
  }
  get [$y]() {
    return this.y;
  }
  set [$y](value) {
    this.y = value;
  }
  get [$z]() {
    return this.z;
  }
  set [$z](value) {
    this.z = value;
  }
};
dart.addTypeTests(html$.CssTranslation);
const x$2 = Symbol("CssTranslation.x");
const y$2 = Symbol("CssTranslation.y");
const z$1 = Symbol("CssTranslation.z");
dart.setFieldSignature(html$.CssTranslation, () => ({
  __proto__: dart.getFields(html$.CssTranslation.__proto__),
  [$x]: dart.fieldType(html$.CssNumericValue),
  [$y]: dart.fieldType(html$.CssNumericValue),
  [$z]: dart.fieldType(html$.CssNumericValue)
}));
dart.registerExtension("CSSTranslation", html$.CssTranslation);
html$.CssUnitValue = class CssUnitValue extends html$.CssNumericValue {
  static new(value, unit) {
    return html$.CssUnitValue._create_1(value, unit);
  }
  static _create_1(value, unit) {
    return new CSSUnitValue(value, unit);
  }
  get [$type]() {
    return this.type;
  }
  get [$unit]() {
    return this.unit;
  }
  set [$unit](value) {
    this.unit = value;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
};
dart.addTypeTests(html$.CssUnitValue);
const type$11 = Symbol("CssUnitValue.type");
const unit = Symbol("CssUnitValue.unit");
const value$3 = Symbol("CssUnitValue.value");
dart.setFieldSignature(html$.CssUnitValue, () => ({
  __proto__: dart.getFields(html$.CssUnitValue.__proto__),
  [$type]: dart.finalFieldType(core.String),
  [$unit]: dart.fieldType(core.String),
  [$value]: dart.fieldType(core.num)
}));
dart.registerExtension("CSSUnitValue", html$.CssUnitValue);
html$.CssUnparsedValue = class CssUnparsedValue extends html$.CssStyleValue {
  get [$length]() {
    return this.length;
  }
  [$fragmentAtIndex](...args) {
    return this.fragmentAtIndex.apply(this, args);
  }
};
dart.addTypeTests(html$.CssUnparsedValue);
const length$4 = Symbol("CssUnparsedValue.length");
dart.setMethodSignature(html$.CssUnparsedValue, () => ({
  __proto__: dart.getMethods(html$.CssUnparsedValue.__proto__),
  [$fragmentAtIndex]: dart.fnType(core.Object, [core.int])
}));
dart.setFieldSignature(html$.CssUnparsedValue, () => ({
  __proto__: dart.getFields(html$.CssUnparsedValue.__proto__),
  [$length]: dart.finalFieldType(core.int)
}));
dart.registerExtension("CSSUnparsedValue", html$.CssUnparsedValue);
html$.CssVariableReferenceValue = class CssVariableReferenceValue extends _interceptors.Interceptor {
  get [$fallback]() {
    return this.fallback;
  }
  get [$variable]() {
    return this.variable;
  }
};
dart.addTypeTests(html$.CssVariableReferenceValue);
const fallback = Symbol("CssVariableReferenceValue.fallback");
const variable = Symbol("CssVariableReferenceValue.variable");
dart.setFieldSignature(html$.CssVariableReferenceValue, () => ({
  __proto__: dart.getFields(html$.CssVariableReferenceValue.__proto__),
  [$fallback]: dart.finalFieldType(html$.CssUnparsedValue),
  [$variable]: dart.finalFieldType(core.String)
}));
dart.registerExtension("CSSVariableReferenceValue", html$.CssVariableReferenceValue);
html$.CssViewportRule = class CssViewportRule extends html$.CssRule {
  get [$style]() {
    return this.style;
  }
};
dart.addTypeTests(html$.CssViewportRule);
const style$3 = Symbol("CssViewportRule.style");
dart.setFieldSignature(html$.CssViewportRule, () => ({
  __proto__: dart.getFields(html$.CssViewportRule.__proto__),
  [$style]: dart.finalFieldType(html$.CssStyleDeclaration)
}));
dart.registerExtension("CSSViewportRule", html$.CssViewportRule);
html$.CssurlImageValue = class CssurlImageValue extends html$.CssImageValue {
  static new(url) {
    return html$.CssurlImageValue._create_1(url);
  }
  static _create_1(url) {
    return new CSSURLImageValue(url);
  }
  get [$url]() {
    return this.url;
  }
};
dart.addTypeTests(html$.CssurlImageValue);
const url$0 = Symbol("CssurlImageValue.url");
dart.setFieldSignature(html$.CssurlImageValue, () => ({
  __proto__: dart.getFields(html$.CssurlImageValue.__proto__),
  [$url]: dart.finalFieldType(core.String)
}));
dart.registerExtension("CSSURLImageValue", html$.CssurlImageValue);
const _define_1 = Symbol('_define_1');
const _define_2 = Symbol('_define_2');
html$.CustomElementRegistry = class CustomElementRegistry extends _interceptors.Interceptor {
  [$define](name, constructor, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[_define_1](name, constructor, options_1);
      return;
    }
    this[_define_2](name, constructor);
    return;
  }
  [_define_1](...args) {
    return this.define.apply(this, args);
  }
  [_define_2](...args) {
    return this.define.apply(this, args);
  }
  [$get](...args) {
    return this.get.apply(this, args);
  }
  [$whenDefined](name) {
    return html$.promiseToFuture(dart.dynamic, this.whenDefined(name));
  }
};
dart.addTypeTests(html$.CustomElementRegistry);
dart.setMethodSignature(html$.CustomElementRegistry, () => ({
  __proto__: dart.getMethods(html$.CustomElementRegistry.__proto__),
  [$define]: dart.fnType(dart.void, [core.String, core.Object], [core.Map]),
  [_define_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
  [_define_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
  [$get]: dart.fnType(core.Object, [core.String]),
  [$whenDefined]: dart.fnType(async.Future, [core.String])
}));
dart.registerExtension("CustomElementRegistry", html$.CustomElementRegistry);
const _dartDetail = Symbol('_dartDetail');
const _initCustomEvent = Symbol('_initCustomEvent');
const _detail = Symbol('_detail');
const _get__detail = Symbol('_get__detail');
html$.CustomEvent = class CustomEvent$ extends html$.Event {
  get [_dartDetail]() {
    return this._dartDetail;
  }
  set [_dartDetail](value) {
    this._dartDetail = value;
  }
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let detail = opts && 'detail' in opts ? opts.detail : null;
    let e = html$.CustomEvent._check(html$.document[_createEvent]("CustomEvent"));
    e[_dartDetail] = detail;
    if (core.List.is(detail) || core.Map.is(detail) || typeof detail == 'string' || typeof detail == 'number') {
      try {
        detail = html_common.convertDartToNative_SerializedScriptValue(detail);
        e[_initCustomEvent](type, canBubble, cancelable, detail);
      } catch (e$) {
        let _ = dart.getThrown(e$);
        e[_initCustomEvent](type, canBubble, cancelable, null);
      }
    } else {
      e[_initCustomEvent](type, canBubble, cancelable, null);
    }
    return e;
  }
  get [$detail]() {
    if (this[_dartDetail] != null) {
      return this[_dartDetail];
    }
    return this[_detail];
  }
  static __(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.CustomEvent._create_1(type, eventInitDict_1);
    }
    return html$.CustomEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new CustomEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new CustomEvent(type);
  }
  get [_detail]() {
    return html_common.convertNativeToDart_SerializedScriptValue(this[_get__detail]);
  }
  get [_get__detail]() {
    return this.detail;
  }
  [_initCustomEvent](...args) {
    return this.initCustomEvent.apply(this, args);
  }
};
dart.addTypeTests(html$.CustomEvent);
dart.setMethodSignature(html$.CustomEvent, () => ({
  __proto__: dart.getMethods(html$.CustomEvent.__proto__),
  [_initCustomEvent]: dart.fnType(dart.void, [core.String], [core.bool, core.bool, core.Object])
}));
dart.setGetterSignature(html$.CustomEvent, () => ({
  __proto__: dart.getGetters(html$.CustomEvent.__proto__),
  [$detail]: dart.dynamic,
  [_detail]: dart.dynamic
}));
dart.setFieldSignature(html$.CustomEvent, () => ({
  __proto__: dart.getFields(html$.CustomEvent.__proto__),
  [_dartDetail]: dart.fieldType(dart.dynamic),
  [_get__detail]: dart.finalFieldType(dart.dynamic)
}));
dart.registerExtension("CustomEvent", html$.CustomEvent);
html$.DListElement = class DListElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("dl");
  }
};
(html$.DListElement.created = function() {
  html$.DListElement.__proto__.created.call(this);
}).prototype = html$.DListElement.prototype;
dart.addTypeTests(html$.DListElement);
dart.registerExtension("HTMLDListElement", html$.DListElement);
html$.DataElement = class DataElement extends html$.HtmlElement {
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
};
(html$.DataElement.created = function() {
  this[value$4] = null;
  html$.DataElement.__proto__.created.call(this);
}).prototype = html$.DataElement.prototype;
dart.addTypeTests(html$.DataElement);
const value$4 = Symbol("DataElement.value");
dart.setFieldSignature(html$.DataElement, () => ({
  __proto__: dart.getFields(html$.DataElement.__proto__),
  [$value]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLDataElement", html$.DataElement);
html$.DataListElement = class DataListElement extends html$.HtmlElement {
  static new() {
    return html$.DataListElement._check(html$.document[$createElement]("datalist"));
  }
  static get supported() {
    return html$.Element.isTagSupported("datalist");
  }
  get [$options]() {
    return this.options;
  }
};
(html$.DataListElement.created = function() {
  this[options] = null;
  html$.DataListElement.__proto__.created.call(this);
}).prototype = html$.DataListElement.prototype;
dart.addTypeTests(html$.DataListElement);
const options = Symbol("DataListElement.options");
dart.setFieldSignature(html$.DataListElement, () => ({
  __proto__: dart.getFields(html$.DataListElement.__proto__),
  [$options]: dart.finalFieldType(ListOfNode())
}));
dart.registerExtension("HTMLDataListElement", html$.DataListElement);
html$.DataTransfer = class DataTransfer$ extends _interceptors.Interceptor {
  static new() {
    return html$.DataTransfer._create_1();
  }
  static _create_1() {
    return new DataTransfer();
  }
  get [$dropEffect]() {
    return this.dropEffect;
  }
  set [$dropEffect](value) {
    this.dropEffect = value;
  }
  get [$effectAllowed]() {
    return this.effectAllowed;
  }
  set [$effectAllowed](value) {
    this.effectAllowed = value;
  }
  get [$files]() {
    return this.files;
  }
  get [$items]() {
    return this.items;
  }
  get [$types]() {
    return this.types;
  }
  [$clearData](...args) {
    return this.clearData.apply(this, args);
  }
  [$getData](...args) {
    return this.getData.apply(this, args);
  }
  [$setData](...args) {
    return this.setData.apply(this, args);
  }
  [$setDragImage](...args) {
    return this.setDragImage.apply(this, args);
  }
};
dart.addTypeTests(html$.DataTransfer);
const dropEffect = Symbol("DataTransfer.dropEffect");
const effectAllowed = Symbol("DataTransfer.effectAllowed");
const files = Symbol("DataTransfer.files");
const items = Symbol("DataTransfer.items");
const types = Symbol("DataTransfer.types");
dart.setMethodSignature(html$.DataTransfer, () => ({
  __proto__: dart.getMethods(html$.DataTransfer.__proto__),
  [$clearData]: dart.fnType(dart.void, [], [core.String]),
  [$getData]: dart.fnType(core.String, [core.String]),
  [$setData]: dart.fnType(dart.void, [core.String, core.String]),
  [$setDragImage]: dart.fnType(dart.void, [html$.Element, core.int, core.int])
}));
dart.setFieldSignature(html$.DataTransfer, () => ({
  __proto__: dart.getFields(html$.DataTransfer.__proto__),
  [$dropEffect]: dart.fieldType(core.String),
  [$effectAllowed]: dart.fieldType(core.String),
  [$files]: dart.finalFieldType(ListOfFile()),
  [$items]: dart.finalFieldType(html$.DataTransferItemList),
  [$types]: dart.finalFieldType(ListOfString())
}));
dart.registerExtension("DataTransfer", html$.DataTransfer);
const _webkitGetAsEntry = Symbol('_webkitGetAsEntry');
html$.DataTransferItem = class DataTransferItem extends _interceptors.Interceptor {
  [$getAsEntry]() {
    let entry = this[_webkitGetAsEntry]();
    if (dart.test(entry.isFile))
      _js_helper.applyExtension("FileEntry", entry);
    else if (dart.test(entry.isDirectory))
      _js_helper.applyExtension("DirectoryEntry", entry);
    else
      _js_helper.applyExtension("Entry", entry);
    return entry;
  }
  get [$kind]() {
    return this.kind;
  }
  get [$type]() {
    return this.type;
  }
  [$getAsFile](...args) {
    return this.getAsFile.apply(this, args);
  }
  [_webkitGetAsEntry](...args) {
    return this.webkitGetAsEntry.apply(this, args);
  }
};
dart.addTypeTests(html$.DataTransferItem);
const kind$ = Symbol("DataTransferItem.kind");
const type$12 = Symbol("DataTransferItem.type");
dart.setMethodSignature(html$.DataTransferItem, () => ({
  __proto__: dart.getMethods(html$.DataTransferItem.__proto__),
  [$getAsEntry]: dart.fnType(html$.Entry, []),
  [$getAsFile]: dart.fnType(html$.File, []),
  [_webkitGetAsEntry]: dart.fnType(html$.Entry, [])
}));
dart.setFieldSignature(html$.DataTransferItem, () => ({
  __proto__: dart.getFields(html$.DataTransferItem.__proto__),
  [$kind]: dart.finalFieldType(core.String),
  [$type]: dart.finalFieldType(core.String)
}));
dart.registerExtension("DataTransferItem", html$.DataTransferItem);
html$.DataTransferItemList = class DataTransferItemList extends _interceptors.Interceptor {
  get [$length]() {
    return this.length;
  }
  [$add](...args) {
    return this.add.apply(this, args);
  }
  [$addData](...args) {
    return this.add.apply(this, args);
  }
  [$addFile](...args) {
    return this.add.apply(this, args);
  }
  [$clear](...args) {
    return this.clear.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$remove](...args) {
    return this.remove.apply(this, args);
  }
  [$_get](index) {
    return this[index];
  }
};
dart.addTypeTests(html$.DataTransferItemList);
const length$5 = Symbol("DataTransferItemList.length");
dart.setMethodSignature(html$.DataTransferItemList, () => ({
  __proto__: dart.getMethods(html$.DataTransferItemList.__proto__),
  [$add]: dart.fnType(html$.DataTransferItem, [dart.dynamic], [core.String]),
  [$addData]: dart.fnType(html$.DataTransferItem, [core.String, core.String]),
  [$addFile]: dart.fnType(html$.DataTransferItem, [html$.File]),
  [$clear]: dart.fnType(dart.void, []),
  [$item]: dart.fnType(html$.DataTransferItem, [core.int]),
  [$remove]: dart.fnType(dart.void, [core.int]),
  [$_get]: dart.fnType(html$.DataTransferItem, [core.int])
}));
dart.setFieldSignature(html$.DataTransferItemList, () => ({
  __proto__: dart.getFields(html$.DataTransferItemList.__proto__),
  [$length]: dart.finalFieldType(core.int)
}));
dart.registerExtension("DataTransferItemList", html$.DataTransferItemList);
const _postMessage_1 = Symbol('_postMessage_1');
const _postMessage_2 = Symbol('_postMessage_2');
const _webkitRequestFileSystem = Symbol('_webkitRequestFileSystem');
const _webkitResolveLocalFileSystemUrl = Symbol('_webkitResolveLocalFileSystemUrl');
const _setInterval_String = Symbol('_setInterval_String');
const _setTimeout_String = Symbol('_setTimeout_String');
const _clearInterval = Symbol('_clearInterval');
const _clearTimeout = Symbol('_clearTimeout');
const _setInterval = Symbol('_setInterval');
const _setTimeout = Symbol('_setTimeout');
html$.WorkerGlobalScope = class WorkerGlobalScope extends html$.EventTarget {
  get [$addressSpace]() {
    return this.addressSpace;
  }
  get [$caches]() {
    return this.caches;
  }
  get [$crypto]() {
    return this.crypto;
  }
  get [$indexedDB]() {
    return this.indexedDB;
  }
  get [$isSecureContext]() {
    return this.isSecureContext;
  }
  get [$location]() {
    return this.location;
  }
  get [$navigator]() {
    return this.navigator;
  }
  get [$origin]() {
    return this.origin;
  }
  get [$performance]() {
    return this.performance;
  }
  get [$self]() {
    return this.self;
  }
  [$fetch](input, init) {
    if (init === void 0) init = null;
    let init_dict = null;
    if (init != null) {
      init_dict = html_common.convertDartToNative_Dictionary(init);
    }
    return html$.promiseToFuture(dart.dynamic, this.fetch(input, init_dict));
  }
  [$importScripts](...args) {
    return this.importScripts.apply(this, args);
  }
  [$atob](...args) {
    return this.atob.apply(this, args);
  }
  [$btoa](...args) {
    return this.btoa.apply(this, args);
  }
  [_setInterval_String](...args) {
    return this.setInterval.apply(this, args);
  }
  [_setTimeout_String](...args) {
    return this.setTimeout.apply(this, args);
  }
  [_clearInterval](...args) {
    return this.clearInterval.apply(this, args);
  }
  [_clearTimeout](...args) {
    return this.clearTimeout.apply(this, args);
  }
  [_setInterval](...args) {
    return this.setInterval.apply(this, args);
  }
  [_setTimeout](...args) {
    return this.setTimeout.apply(this, args);
  }
  get [$onError]() {
    return html$.WorkerGlobalScope.errorEvent.forTarget(this);
  }
  static get instance() {
    return html$._workerSelf;
  }
};
dart.addTypeTests(html$.WorkerGlobalScope);
const addressSpace = Symbol("WorkerGlobalScope.addressSpace");
const caches = Symbol("WorkerGlobalScope.caches");
const crypto$ = Symbol("WorkerGlobalScope.crypto");
const indexedDB = Symbol("WorkerGlobalScope.indexedDB");
const isSecureContext = Symbol("WorkerGlobalScope.isSecureContext");
const location = Symbol("WorkerGlobalScope.location");
const navigator = Symbol("WorkerGlobalScope.navigator");
const origin$0 = Symbol("WorkerGlobalScope.origin");
const performance = Symbol("WorkerGlobalScope.performance");
const self$ = Symbol("WorkerGlobalScope.self");
html$.WorkerGlobalScope[dart.implements] = () => [html$._WindowTimers, html$.WindowBase64];
dart.setMethodSignature(html$.WorkerGlobalScope, () => ({
  __proto__: dart.getMethods(html$.WorkerGlobalScope.__proto__),
  [$fetch]: dart.fnType(async.Future, [dart.dynamic], [core.Map]),
  [$importScripts]: dart.fnType(dart.void, [core.String]),
  [$atob]: dart.fnType(core.String, [core.String]),
  [$btoa]: dart.fnType(core.String, [core.String]),
  [_setInterval_String]: dart.fnType(core.int, [core.String], [core.int, core.Object]),
  [_setTimeout_String]: dart.fnType(core.int, [core.String], [core.int, core.Object]),
  [_clearInterval]: dart.fnType(dart.void, [], [core.int]),
  [_clearTimeout]: dart.fnType(dart.void, [], [core.int]),
  [_setInterval]: dart.fnType(core.int, [core.Object], [core.int]),
  [_setTimeout]: dart.fnType(core.int, [core.Object], [core.int])
}));
dart.setGetterSignature(html$.WorkerGlobalScope, () => ({
  __proto__: dart.getGetters(html$.WorkerGlobalScope.__proto__),
  [$onError]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.WorkerGlobalScope, () => ({
  __proto__: dart.getFields(html$.WorkerGlobalScope.__proto__),
  [$addressSpace]: dart.finalFieldType(core.String),
  [$caches]: dart.finalFieldType(html$.CacheStorage),
  [$crypto]: dart.finalFieldType(html$.Crypto),
  [$indexedDB]: dart.finalFieldType(indexed_db.IdbFactory),
  [$isSecureContext]: dart.finalFieldType(core.bool),
  [$location]: dart.finalFieldType(html$._WorkerLocation),
  [$navigator]: dart.finalFieldType(html$._WorkerNavigator),
  [$origin]: dart.finalFieldType(core.String),
  [$performance]: dart.finalFieldType(html$.WorkerPerformance),
  [$self]: dart.finalFieldType(html$.WorkerGlobalScope)
}));
dart.defineLazy(html$.WorkerGlobalScope, {
  /*html$.WorkerGlobalScope.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  }
});
dart.registerExtension("WorkerGlobalScope", html$.WorkerGlobalScope);
html$.DedicatedWorkerGlobalScope = class DedicatedWorkerGlobalScope extends html$.WorkerGlobalScope {
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [$postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  [_webkitRequestFileSystem](...args) {
    return this.webkitRequestFileSystem.apply(this, args);
  }
  [$requestFileSystemSync](...args) {
    return this.webkitRequestFileSystemSync.apply(this, args);
  }
  [$resolveLocalFileSystemSyncUrl](...args) {
    return this.webkitResolveLocalFileSystemSyncURL.apply(this, args);
  }
  [_webkitResolveLocalFileSystemUrl](...args) {
    return this.webkitResolveLocalFileSystemURL.apply(this, args);
  }
  get [$onMessage]() {
    return html$.DedicatedWorkerGlobalScope.messageEvent.forTarget(this);
  }
  static get instance() {
    return html$.DedicatedWorkerGlobalScope.as(html$._workerSelf);
  }
};
dart.addTypeTests(html$.DedicatedWorkerGlobalScope);
dart.setMethodSignature(html$.DedicatedWorkerGlobalScope, () => ({
  __proto__: dart.getMethods(html$.DedicatedWorkerGlobalScope.__proto__),
  [$close]: dart.fnType(dart.void, []),
  [$postMessage]: dart.fnType(dart.void, [dart.dynamic], [core.List$(core.Object)]),
  [_postMessage_1]: dart.fnType(dart.void, [dart.dynamic, core.List$(core.Object)]),
  [_postMessage_2]: dart.fnType(dart.void, [dart.dynamic]),
  [_webkitRequestFileSystem]: dart.fnType(dart.void, [core.int, core.int], [dart.fnType(dart.void, [html$.FileSystem]), dart.fnType(dart.void, [html$.DomException])]),
  [$requestFileSystemSync]: dart.fnType(html$._DOMFileSystemSync, [core.int, core.int]),
  [$resolveLocalFileSystemSyncUrl]: dart.fnType(html$._EntrySync, [core.String]),
  [_webkitResolveLocalFileSystemUrl]: dart.fnType(dart.void, [core.String, dart.fnType(dart.void, [html$.Entry])], [dart.fnType(dart.void, [html$.DomException])])
}));
dart.setGetterSignature(html$.DedicatedWorkerGlobalScope, () => ({
  __proto__: dart.getGetters(html$.DedicatedWorkerGlobalScope.__proto__),
  [$onMessage]: async.Stream$(html$.MessageEvent)
}));
dart.defineLazy(html$.DedicatedWorkerGlobalScope, {
  /*html$.DedicatedWorkerGlobalScope.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  },
  /*html$.DedicatedWorkerGlobalScope.PERSISTENT*/get PERSISTENT() {
    return 1;
  },
  /*html$.DedicatedWorkerGlobalScope.TEMPORARY*/get TEMPORARY() {
    return 0;
  }
});
dart.registerExtension("DedicatedWorkerGlobalScope", html$.DedicatedWorkerGlobalScope);
html$.DeprecatedStorageInfo = class DeprecatedStorageInfo extends _interceptors.Interceptor {
  [$queryUsageAndQuota](...args) {
    return this.queryUsageAndQuota.apply(this, args);
  }
  [$requestQuota](...args) {
    return this.requestQuota.apply(this, args);
  }
};
dart.addTypeTests(html$.DeprecatedStorageInfo);
dart.setMethodSignature(html$.DeprecatedStorageInfo, () => ({
  __proto__: dart.getMethods(html$.DeprecatedStorageInfo.__proto__),
  [$queryUsageAndQuota]: dart.fnType(dart.void, [core.int], [dart.fnType(dart.void, [core.int, core.int]), dart.fnType(dart.void, [html$.DomError])]),
  [$requestQuota]: dart.fnType(dart.void, [core.int, core.int], [dart.fnType(dart.void, [core.int]), dart.fnType(dart.void, [html$.DomError])])
}));
dart.defineLazy(html$.DeprecatedStorageInfo, {
  /*html$.DeprecatedStorageInfo.PERSISTENT*/get PERSISTENT() {
    return 1;
  },
  /*html$.DeprecatedStorageInfo.TEMPORARY*/get TEMPORARY() {
    return 0;
  }
});
dart.registerExtension("DeprecatedStorageInfo", html$.DeprecatedStorageInfo);
html$.DeprecatedStorageQuota = class DeprecatedStorageQuota extends _interceptors.Interceptor {
  [$queryUsageAndQuota](...args) {
    return this.queryUsageAndQuota.apply(this, args);
  }
  [$requestQuota](...args) {
    return this.requestQuota.apply(this, args);
  }
};
dart.addTypeTests(html$.DeprecatedStorageQuota);
dart.setMethodSignature(html$.DeprecatedStorageQuota, () => ({
  __proto__: dart.getMethods(html$.DeprecatedStorageQuota.__proto__),
  [$queryUsageAndQuota]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.int, core.int])], [dart.fnType(dart.void, [html$.DomError])]),
  [$requestQuota]: dart.fnType(dart.void, [core.int], [dart.fnType(dart.void, [core.int]), dart.fnType(dart.void, [html$.DomError])])
}));
dart.registerExtension("DeprecatedStorageQuota", html$.DeprecatedStorageQuota);
html$.ReportBody = class ReportBody extends _interceptors.Interceptor {};
dart.addTypeTests(html$.ReportBody);
dart.registerExtension("ReportBody", html$.ReportBody);
html$.DeprecationReport = class DeprecationReport extends html$.ReportBody {
  get [$lineNumber]() {
    return this.lineNumber;
  }
  get [$message]() {
    return this.message;
  }
  get [$sourceFile]() {
    return this.sourceFile;
  }
};
dart.addTypeTests(html$.DeprecationReport);
const lineNumber = Symbol("DeprecationReport.lineNumber");
const message$16 = Symbol("DeprecationReport.message");
const sourceFile = Symbol("DeprecationReport.sourceFile");
dart.setFieldSignature(html$.DeprecationReport, () => ({
  __proto__: dart.getFields(html$.DeprecationReport.__proto__),
  [$lineNumber]: dart.finalFieldType(core.int),
  [$message]: dart.finalFieldType(core.String),
  [$sourceFile]: dart.finalFieldType(core.String)
}));
dart.registerExtension("DeprecationReport", html$.DeprecationReport);
html$.DetailsElement = class DetailsElement extends html$.HtmlElement {
  static new() {
    return html$.DetailsElement._check(html$.document[$createElement]("details"));
  }
  static get supported() {
    return html$.Element.isTagSupported("details");
  }
  get [$open]() {
    return this.open;
  }
  set [$open](value) {
    this.open = value;
  }
};
(html$.DetailsElement.created = function() {
  this[open] = null;
  html$.DetailsElement.__proto__.created.call(this);
}).prototype = html$.DetailsElement.prototype;
dart.addTypeTests(html$.DetailsElement);
const open = Symbol("DetailsElement.open");
dart.setFieldSignature(html$.DetailsElement, () => ({
  __proto__: dart.getFields(html$.DetailsElement.__proto__),
  [$open]: dart.fieldType(core.bool)
}));
dart.registerExtension("HTMLDetailsElement", html$.DetailsElement);
html$.DetectedBarcode = class DetectedBarcode$ extends _interceptors.Interceptor {
  static new() {
    return html$.DetectedBarcode._create_1();
  }
  static _create_1() {
    return new DetectedBarcode();
  }
  get [$boundingBox]() {
    return this.boundingBox;
  }
  get [$cornerPoints]() {
    return this.cornerPoints;
  }
  get [$rawValue]() {
    return this.rawValue;
  }
};
dart.addTypeTests(html$.DetectedBarcode);
const boundingBox = Symbol("DetectedBarcode.boundingBox");
const cornerPoints = Symbol("DetectedBarcode.cornerPoints");
const rawValue = Symbol("DetectedBarcode.rawValue");
dart.setFieldSignature(html$.DetectedBarcode, () => ({
  __proto__: dart.getFields(html$.DetectedBarcode.__proto__),
  [$boundingBox]: dart.finalFieldType(RectangleOfnum()),
  [$cornerPoints]: dart.finalFieldType(core.List),
  [$rawValue]: dart.finalFieldType(core.String)
}));
dart.registerExtension("DetectedBarcode", html$.DetectedBarcode);
html$.DetectedFace = class DetectedFace$ extends _interceptors.Interceptor {
  static new() {
    return html$.DetectedFace._create_1();
  }
  static _create_1() {
    return new DetectedFace();
  }
  get [$boundingBox]() {
    return this.boundingBox;
  }
  get [$landmarks]() {
    return this.landmarks;
  }
};
dart.addTypeTests(html$.DetectedFace);
const boundingBox$ = Symbol("DetectedFace.boundingBox");
const landmarks = Symbol("DetectedFace.landmarks");
dart.setFieldSignature(html$.DetectedFace, () => ({
  __proto__: dart.getFields(html$.DetectedFace.__proto__),
  [$boundingBox]: dart.finalFieldType(RectangleOfnum()),
  [$landmarks]: dart.finalFieldType(core.List)
}));
dart.registerExtension("DetectedFace", html$.DetectedFace);
html$.DetectedText = class DetectedText$ extends _interceptors.Interceptor {
  static new() {
    return html$.DetectedText._create_1();
  }
  static _create_1() {
    return new DetectedText();
  }
  get [$boundingBox]() {
    return this.boundingBox;
  }
  get [$cornerPoints]() {
    return this.cornerPoints;
  }
  get [$rawValue]() {
    return this.rawValue;
  }
};
dart.addTypeTests(html$.DetectedText);
const boundingBox$0 = Symbol("DetectedText.boundingBox");
const cornerPoints$ = Symbol("DetectedText.cornerPoints");
const rawValue$ = Symbol("DetectedText.rawValue");
dart.setFieldSignature(html$.DetectedText, () => ({
  __proto__: dart.getFields(html$.DetectedText.__proto__),
  [$boundingBox]: dart.finalFieldType(RectangleOfnum()),
  [$cornerPoints]: dart.finalFieldType(core.List),
  [$rawValue]: dart.finalFieldType(core.String)
}));
dart.registerExtension("DetectedText", html$.DetectedText);
html$.DeviceAcceleration = class DeviceAcceleration extends _interceptors.Interceptor {
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$z]() {
    return this.z;
  }
};
dart.addTypeTests(html$.DeviceAcceleration);
const x$3 = Symbol("DeviceAcceleration.x");
const y$3 = Symbol("DeviceAcceleration.y");
const z$2 = Symbol("DeviceAcceleration.z");
dart.setFieldSignature(html$.DeviceAcceleration, () => ({
  __proto__: dart.getFields(html$.DeviceAcceleration.__proto__),
  [$x]: dart.finalFieldType(core.num),
  [$y]: dart.finalFieldType(core.num),
  [$z]: dart.finalFieldType(core.num)
}));
dart.registerExtension("DeviceAcceleration", html$.DeviceAcceleration);
html$.DeviceMotionEvent = class DeviceMotionEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.DeviceMotionEvent._create_1(type, eventInitDict_1);
    }
    return html$.DeviceMotionEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new DeviceMotionEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new DeviceMotionEvent(type);
  }
  get [$acceleration]() {
    return this.acceleration;
  }
  get [$accelerationIncludingGravity]() {
    return this.accelerationIncludingGravity;
  }
  get [$interval]() {
    return this.interval;
  }
  get [$rotationRate]() {
    return this.rotationRate;
  }
};
dart.addTypeTests(html$.DeviceMotionEvent);
const acceleration = Symbol("DeviceMotionEvent.acceleration");
const accelerationIncludingGravity = Symbol("DeviceMotionEvent.accelerationIncludingGravity");
const interval = Symbol("DeviceMotionEvent.interval");
const rotationRate = Symbol("DeviceMotionEvent.rotationRate");
dart.setFieldSignature(html$.DeviceMotionEvent, () => ({
  __proto__: dart.getFields(html$.DeviceMotionEvent.__proto__),
  [$acceleration]: dart.finalFieldType(html$.DeviceAcceleration),
  [$accelerationIncludingGravity]: dart.finalFieldType(html$.DeviceAcceleration),
  [$interval]: dart.finalFieldType(core.num),
  [$rotationRate]: dart.finalFieldType(html$.DeviceRotationRate)
}));
dart.registerExtension("DeviceMotionEvent", html$.DeviceMotionEvent);
html$.DeviceOrientationEvent = class DeviceOrientationEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.DeviceOrientationEvent._create_1(type, eventInitDict_1);
    }
    return html$.DeviceOrientationEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new DeviceOrientationEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new DeviceOrientationEvent(type);
  }
  get [$absolute]() {
    return this.absolute;
  }
  get [$alpha]() {
    return this.alpha;
  }
  get [$beta]() {
    return this.beta;
  }
  get [$gamma]() {
    return this.gamma;
  }
};
dart.addTypeTests(html$.DeviceOrientationEvent);
const absolute = Symbol("DeviceOrientationEvent.absolute");
const alpha = Symbol("DeviceOrientationEvent.alpha");
const beta = Symbol("DeviceOrientationEvent.beta");
const gamma = Symbol("DeviceOrientationEvent.gamma");
dart.setFieldSignature(html$.DeviceOrientationEvent, () => ({
  __proto__: dart.getFields(html$.DeviceOrientationEvent.__proto__),
  [$absolute]: dart.finalFieldType(core.bool),
  [$alpha]: dart.finalFieldType(core.num),
  [$beta]: dart.finalFieldType(core.num),
  [$gamma]: dart.finalFieldType(core.num)
}));
dart.registerExtension("DeviceOrientationEvent", html$.DeviceOrientationEvent);
html$.DeviceRotationRate = class DeviceRotationRate extends _interceptors.Interceptor {
  get [$alpha]() {
    return this.alpha;
  }
  get [$beta]() {
    return this.beta;
  }
  get [$gamma]() {
    return this.gamma;
  }
};
dart.addTypeTests(html$.DeviceRotationRate);
const alpha$ = Symbol("DeviceRotationRate.alpha");
const beta$ = Symbol("DeviceRotationRate.beta");
const gamma$ = Symbol("DeviceRotationRate.gamma");
dart.setFieldSignature(html$.DeviceRotationRate, () => ({
  __proto__: dart.getFields(html$.DeviceRotationRate.__proto__),
  [$alpha]: dart.finalFieldType(core.num),
  [$beta]: dart.finalFieldType(core.num),
  [$gamma]: dart.finalFieldType(core.num)
}));
dart.registerExtension("DeviceRotationRate", html$.DeviceRotationRate);
html$.DialogElement = class DialogElement extends html$.HtmlElement {
  get [$open]() {
    return this.open;
  }
  set [$open](value) {
    this.open = value;
  }
  get [$returnValue]() {
    return this.returnValue;
  }
  set [$returnValue](value) {
    this.returnValue = value;
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [$show](...args) {
    return this.show.apply(this, args);
  }
  [$showModal](...args) {
    return this.showModal.apply(this, args);
  }
};
(html$.DialogElement.created = function() {
  this[open$] = null;
  this[returnValue] = null;
  html$.DialogElement.__proto__.created.call(this);
}).prototype = html$.DialogElement.prototype;
dart.addTypeTests(html$.DialogElement);
const open$ = Symbol("DialogElement.open");
const returnValue = Symbol("DialogElement.returnValue");
dart.setMethodSignature(html$.DialogElement, () => ({
  __proto__: dart.getMethods(html$.DialogElement.__proto__),
  [$close]: dart.fnType(dart.void, [], [core.String]),
  [$show]: dart.fnType(dart.void, []),
  [$showModal]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(html$.DialogElement, () => ({
  __proto__: dart.getFields(html$.DialogElement.__proto__),
  [$open]: dart.fieldType(core.bool),
  [$returnValue]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLDialogElement", html$.DialogElement);
const _getDirectory = Symbol('_getDirectory');
const _createReader = Symbol('_createReader');
const _getFile = Symbol('_getFile');
const __getDirectory_1 = Symbol('__getDirectory_1');
const __getDirectory_2 = Symbol('__getDirectory_2');
const __getDirectory_3 = Symbol('__getDirectory_3');
const __getDirectory_4 = Symbol('__getDirectory_4');
const __getDirectory = Symbol('__getDirectory');
const __getFile_1 = Symbol('__getFile_1');
const __getFile_2 = Symbol('__getFile_2');
const __getFile_3 = Symbol('__getFile_3');
const __getFile_4 = Symbol('__getFile_4');
const __getFile = Symbol('__getFile');
const _removeRecursively = Symbol('_removeRecursively');
const _copyTo = Symbol('_copyTo');
const _getMetadata = Symbol('_getMetadata');
const _getParent = Symbol('_getParent');
const _moveTo = Symbol('_moveTo');
const _remove$ = Symbol('_remove');
html$.Entry = class Entry extends _interceptors.Interceptor {
  get [$filesystem]() {
    return this.filesystem;
  }
  get [$fullPath]() {
    return this.fullPath;
  }
  get [$isDirectory]() {
    return this.isDirectory;
  }
  get [$isFile]() {
    return this.isFile;
  }
  get [$name]() {
    return this.name;
  }
  [_copyTo](...args) {
    return this.copyTo.apply(this, args);
  }
  [$copyTo](parent, opts) {
    let name = opts && 'name' in opts ? opts.name : null;
    let completer = CompleterOfEntry().new();
    this[_copyTo](parent, name, dart.fn(value => {
      completer.complete(value);
    }, EntryToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
  [_getMetadata](...args) {
    return this.getMetadata.apply(this, args);
  }
  [$getMetadata]() {
    let completer = CompleterOfMetadata().new();
    this[_getMetadata](dart.fn(value => {
      _js_helper.applyExtension("Metadata", value);
      completer.complete(value);
    }, MetadataToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
  [_getParent](...args) {
    return this.getParent.apply(this, args);
  }
  [$getParent]() {
    let completer = CompleterOfEntry().new();
    this[_getParent](dart.fn(value => {
      _js_helper.applyExtension("Entry", value);
      completer.complete(value);
    }, EntryToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
  [_moveTo](...args) {
    return this.moveTo.apply(this, args);
  }
  [$moveTo](parent, opts) {
    let name = opts && 'name' in opts ? opts.name : null;
    let completer = CompleterOfEntry().new();
    this[_moveTo](parent, name, dart.fn(value => {
      completer.complete(value);
    }, EntryToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
  [_remove$](...args) {
    return this.remove.apply(this, args);
  }
  [$remove]() {
    let completer = async.Completer.new();
    this[_remove$](dart.fn(() => {
      completer.complete();
    }, VoidToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
  [$toUrl](...args) {
    return this.toURL.apply(this, args);
  }
};
dart.addTypeTests(html$.Entry);
const filesystem = Symbol("Entry.filesystem");
const fullPath = Symbol("Entry.fullPath");
const isDirectory = Symbol("Entry.isDirectory");
const isFile = Symbol("Entry.isFile");
const name$10 = Symbol("Entry.name");
dart.setMethodSignature(html$.Entry, () => ({
  __proto__: dart.getMethods(html$.Entry.__proto__),
  [_copyTo]: dart.fnType(dart.void, [html$.DirectoryEntry], [core.String, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
  [$copyTo]: dart.fnType(async.Future$(html$.Entry), [html$.DirectoryEntry], {name: core.String}),
  [_getMetadata]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Metadata])], [dart.fnType(dart.void, [html$.DomException])]),
  [$getMetadata]: dart.fnType(async.Future$(html$.Metadata), []),
  [_getParent]: dart.fnType(dart.void, [], [dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
  [$getParent]: dart.fnType(async.Future$(html$.Entry), []),
  [_moveTo]: dart.fnType(dart.void, [html$.DirectoryEntry], [core.String, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
  [$moveTo]: dart.fnType(async.Future$(html$.Entry), [html$.DirectoryEntry], {name: core.String}),
  [_remove$]: dart.fnType(dart.void, [dart.fnType(dart.void, [])], [dart.fnType(dart.void, [html$.DomException])]),
  [$remove]: dart.fnType(async.Future, []),
  [$toUrl]: dart.fnType(core.String, [])
}));
dart.setFieldSignature(html$.Entry, () => ({
  __proto__: dart.getFields(html$.Entry.__proto__),
  [$filesystem]: dart.finalFieldType(html$.FileSystem),
  [$fullPath]: dart.finalFieldType(core.String),
  [$isDirectory]: dart.finalFieldType(core.bool),
  [$isFile]: dart.finalFieldType(core.bool),
  [$name]: dart.finalFieldType(core.String)
}));
dart.registerExtension("Entry", html$.Entry);
html$.DirectoryEntry = class DirectoryEntry extends html$.Entry {
  [$createDirectory](path, opts) {
    let exclusive = opts && 'exclusive' in opts ? opts.exclusive : false;
    return this[_getDirectory](path, {options: new _js_helper.LinkedMap.from(["create", true, "exclusive", exclusive])});
  }
  [$createReader]() {
    let reader = this[_createReader]();
    _js_helper.applyExtension("DirectoryReader", reader);
    return reader;
  }
  [$getDirectory](path) {
    return this[_getDirectory](path);
  }
  [$createFile](path, opts) {
    let exclusive = opts && 'exclusive' in opts ? opts.exclusive : false;
    return this[_getFile](path, {options: new _js_helper.LinkedMap.from(["create", true, "exclusive", exclusive])});
  }
  [$getFile](path) {
    return this[_getFile](path);
  }
  [_createReader](...args) {
    return this.createReader.apply(this, args);
  }
  [__getDirectory](path, options, successCallback, errorCallback) {
    if (options === void 0) options = null;
    if (successCallback === void 0) successCallback = null;
    if (errorCallback === void 0) errorCallback = null;
    if (errorCallback != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getDirectory_1](path, options_1, successCallback, errorCallback);
      return;
    }
    if (successCallback != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getDirectory_2](path, options_1, successCallback);
      return;
    }
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getDirectory_3](path, options_1);
      return;
    }
    this[__getDirectory_4](path);
    return;
  }
  [__getDirectory_1](...args) {
    return this.getDirectory.apply(this, args);
  }
  [__getDirectory_2](...args) {
    return this.getDirectory.apply(this, args);
  }
  [__getDirectory_3](...args) {
    return this.getDirectory.apply(this, args);
  }
  [__getDirectory_4](...args) {
    return this.getDirectory.apply(this, args);
  }
  [_getDirectory](path, opts) {
    let options = opts && 'options' in opts ? opts.options : null;
    let completer = CompleterOfEntry().new();
    this[__getDirectory](path, options, dart.fn(value => {
      completer.complete(value);
    }, EntryToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
  [__getFile](path, options, successCallback, errorCallback) {
    if (options === void 0) options = null;
    if (successCallback === void 0) successCallback = null;
    if (errorCallback === void 0) errorCallback = null;
    if (errorCallback != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getFile_1](path, options_1, successCallback, errorCallback);
      return;
    }
    if (successCallback != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getFile_2](path, options_1, successCallback);
      return;
    }
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[__getFile_3](path, options_1);
      return;
    }
    this[__getFile_4](path);
    return;
  }
  [__getFile_1](...args) {
    return this.getFile.apply(this, args);
  }
  [__getFile_2](...args) {
    return this.getFile.apply(this, args);
  }
  [__getFile_3](...args) {
    return this.getFile.apply(this, args);
  }
  [__getFile_4](...args) {
    return this.getFile.apply(this, args);
  }
  [_getFile](path, opts) {
    let options = opts && 'options' in opts ? opts.options : null;
    let completer = CompleterOfEntry().new();
    this[__getFile](path, options, dart.fn(value => {
      _js_helper.applyExtension("FileEntry", value);
      completer.complete(value);
    }, EntryToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
  [_removeRecursively](...args) {
    return this.removeRecursively.apply(this, args);
  }
  [$removeRecursively]() {
    let completer = async.Completer.new();
    this[_removeRecursively](dart.fn(() => {
      completer.complete();
    }, VoidToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
};
dart.addTypeTests(html$.DirectoryEntry);
dart.setMethodSignature(html$.DirectoryEntry, () => ({
  __proto__: dart.getMethods(html$.DirectoryEntry.__proto__),
  [$createDirectory]: dart.fnType(async.Future$(html$.Entry), [core.String], {exclusive: core.bool}),
  [$createReader]: dart.fnType(html$.DirectoryReader, []),
  [$getDirectory]: dart.fnType(async.Future$(html$.Entry), [core.String]),
  [$createFile]: dart.fnType(async.Future$(html$.Entry), [core.String], {exclusive: core.bool}),
  [$getFile]: dart.fnType(async.Future$(html$.Entry), [core.String]),
  [_createReader]: dart.fnType(html$.DirectoryReader, []),
  [__getDirectory]: dart.fnType(dart.void, [core.String], [core.Map, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
  [__getDirectory_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
  [__getDirectory_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.fnType(dart.void, [html$.Entry])]),
  [__getDirectory_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
  [__getDirectory_4]: dart.fnType(dart.void, [dart.dynamic]),
  [_getDirectory]: dart.fnType(async.Future$(html$.Entry), [core.String], {options: core.Map}),
  [__getFile]: dart.fnType(dart.void, [core.String], [core.Map, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
  [__getFile_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.fnType(dart.void, [html$.Entry]), dart.fnType(dart.void, [html$.DomException])]),
  [__getFile_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.fnType(dart.void, [html$.Entry])]),
  [__getFile_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
  [__getFile_4]: dart.fnType(dart.void, [dart.dynamic]),
  [_getFile]: dart.fnType(async.Future$(html$.Entry), [core.String], {options: core.Map}),
  [_removeRecursively]: dart.fnType(dart.void, [dart.fnType(dart.void, [])], [dart.fnType(dart.void, [html$.DomException])]),
  [$removeRecursively]: dart.fnType(async.Future, [])
}));
dart.registerExtension("DirectoryEntry", html$.DirectoryEntry);
const _readEntries = Symbol('_readEntries');
html$.DirectoryReader = class DirectoryReader extends _interceptors.Interceptor {
  [_readEntries](...args) {
    return this.readEntries.apply(this, args);
  }
  [$readEntries]() {
    let completer = CompleterOfListOfEntry().new();
    this[_readEntries](dart.fn(values => {
      values[$forEach](dart.fn(value => {
        _js_helper.applyExtension("Entry", value);
        let entry = html$.Entry.as(value);
        if (dart.test(entry.isFile))
          _js_helper.applyExtension("FileEntry", entry);
        else if (dart.test(entry.isDirectory)) _js_helper.applyExtension("DirectoryEntry", entry);
      }, dynamicToNull()));
      completer.complete(ListOfEntry().from(values));
    }, ListToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
};
dart.addTypeTests(html$.DirectoryReader);
dart.setMethodSignature(html$.DirectoryReader, () => ({
  __proto__: dart.getMethods(html$.DirectoryReader.__proto__),
  [_readEntries]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.List])], [dart.fnType(dart.void, [html$.DomException])]),
  [$readEntries]: dart.fnType(async.Future$(core.List$(html$.Entry)), [])
}));
dart.registerExtension("DirectoryReader", html$.DirectoryReader);
html$.DivElement = class DivElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("div");
  }
};
(html$.DivElement.created = function() {
  html$.DivElement.__proto__.created.call(this);
}).prototype = html$.DivElement.prototype;
dart.addTypeTests(html$.DivElement);
dart.registerExtension("HTMLDivElement", html$.DivElement);
const _body = Symbol('_body');
const _get_window = Symbol('_get_window');
const _head$ = Symbol('_head');
const _lastModified = Symbol('_lastModified');
const _preferredStylesheetSet = Symbol('_preferredStylesheetSet');
const _referrer = Symbol('_referrer');
const _selectedStylesheetSet = Symbol('_selectedStylesheetSet');
const _title = Symbol('_title');
const _visibilityState = Symbol('_visibilityState');
const _webkitFullscreenElement = Symbol('_webkitFullscreenElement');
const _webkitFullscreenEnabled = Symbol('_webkitFullscreenEnabled');
const _webkitHidden = Symbol('_webkitHidden');
const _webkitVisibilityState = Symbol('_webkitVisibilityState');
const _caretRangeFromPoint = Symbol('_caretRangeFromPoint');
const _createElement = Symbol('_createElement');
const _createElementNS = Symbol('_createElementNS');
const _createTextNode = Symbol('_createTextNode');
const _createTouch_1 = Symbol('_createTouch_1');
const _createTouch_2 = Symbol('_createTouch_2');
const _createTouch_3 = Symbol('_createTouch_3');
const _createTouch_4 = Symbol('_createTouch_4');
const _createTouch_5 = Symbol('_createTouch_5');
const _createTouch = Symbol('_createTouch');
const _createTouchList = Symbol('_createTouchList');
const _registerElement2_1 = Symbol('_registerElement2_1');
const _registerElement2_2 = Symbol('_registerElement2_2');
const _webkitExitFullscreen = Symbol('_webkitExitFullscreen');
const _styleSheets = Symbol('_styleSheets');
const _elementFromPoint = Symbol('_elementFromPoint');
const _createElement_2 = Symbol('_createElement_2');
const _createElementNS_2 = Symbol('_createElementNS_2');
const _createNodeIterator = Symbol('_createNodeIterator');
const _createTreeWalker = Symbol('_createTreeWalker');
html$.Document = class Document$ extends html$.Node {
  static new() {
    return html$.Document._create_1();
  }
  static _create_1() {
    return new Document();
  }
  get [$addressSpace]() {
    return this.addressSpace;
  }
  get [_body]() {
    return this.body;
  }
  set [_body](value) {
    this.body = value;
  }
  get [$contentType]() {
    return this.contentType;
  }
  get [$cookie]() {
    return this.cookie;
  }
  set [$cookie](value) {
    this.cookie = value;
  }
  get [$currentScript]() {
    return this.currentScript;
  }
  get [$window]() {
    return html$._convertNativeToDart_Window(this[_get_window]);
  }
  get [_get_window]() {
    return this.defaultView;
  }
  get [$documentElement]() {
    return this.documentElement;
  }
  get [$domain]() {
    return this.domain;
  }
  get [$fullscreenEnabled]() {
    return this.fullscreenEnabled;
  }
  get [_head$]() {
    return this.head;
  }
  get [$hidden]() {
    return this.hidden;
  }
  get [$implementation]() {
    return this.implementation;
  }
  get [_lastModified]() {
    return this.lastModified;
  }
  get [$origin]() {
    return this.origin;
  }
  get [_preferredStylesheetSet]() {
    return this.preferredStylesheetSet;
  }
  get [$readyState]() {
    return this.readyState;
  }
  get [_referrer]() {
    return this.referrer;
  }
  get [$rootElement]() {
    return this.rootElement;
  }
  get [$rootScroller]() {
    return this.rootScroller;
  }
  set [$rootScroller](value) {
    this.rootScroller = value;
  }
  get [$scrollingElement]() {
    return this.scrollingElement;
  }
  get [_selectedStylesheetSet]() {
    return this.selectedStylesheetSet;
  }
  set [_selectedStylesheetSet](value) {
    this.selectedStylesheetSet = value;
  }
  get [$suborigin]() {
    return this.suborigin;
  }
  get [$timeline]() {
    return this.timeline;
  }
  get [_title]() {
    return this.title;
  }
  set [_title](value) {
    this.title = value;
  }
  get [_visibilityState]() {
    return this.visibilityState;
  }
  get [_webkitFullscreenElement]() {
    return this.webkitFullscreenElement;
  }
  get [_webkitFullscreenEnabled]() {
    return this.webkitFullscreenEnabled;
  }
  get [_webkitHidden]() {
    return this.webkitHidden;
  }
  get [_webkitVisibilityState]() {
    return this.webkitVisibilityState;
  }
  [$adoptNode](...args) {
    return this.adoptNode.apply(this, args);
  }
  [_caretRangeFromPoint](...args) {
    return this.caretRangeFromPoint.apply(this, args);
  }
  [$createDocumentFragment](...args) {
    return this.createDocumentFragment.apply(this, args);
  }
  [_createElement](...args) {
    return this.createElement.apply(this, args);
  }
  [_createElementNS](...args) {
    return this.createElementNS.apply(this, args);
  }
  [_createEvent](...args) {
    return this.createEvent.apply(this, args);
  }
  [$createRange](...args) {
    return this.createRange.apply(this, args);
  }
  [_createTextNode](...args) {
    return this.createTextNode.apply(this, args);
  }
  [_createTouch](view, target, identifier, pageX, pageY, screenX, screenY, radiusX, radiusY, rotationAngle, force) {
    if (radiusX === void 0) radiusX = null;
    if (radiusY === void 0) radiusY = null;
    if (rotationAngle === void 0) rotationAngle = null;
    if (force === void 0) force = null;
    if (force != null) {
      let target_1 = html$._convertDartToNative_EventTarget(target);
      return this[_createTouch_1](view, target_1, identifier, pageX, pageY, screenX, screenY, radiusX, radiusY, rotationAngle, force);
    }
    if (rotationAngle != null) {
      let target_1 = html$._convertDartToNative_EventTarget(target);
      return this[_createTouch_2](view, target_1, identifier, pageX, pageY, screenX, screenY, radiusX, radiusY, rotationAngle);
    }
    if (radiusY != null) {
      let target_1 = html$._convertDartToNative_EventTarget(target);
      return this[_createTouch_3](view, target_1, identifier, pageX, pageY, screenX, screenY, radiusX, radiusY);
    }
    if (radiusX != null) {
      let target_1 = html$._convertDartToNative_EventTarget(target);
      return this[_createTouch_4](view, target_1, identifier, pageX, pageY, screenX, screenY, radiusX);
    }
    let target_1 = html$._convertDartToNative_EventTarget(target);
    return this[_createTouch_5](view, target_1, identifier, pageX, pageY, screenX, screenY);
  }
  [_createTouch_1](...args) {
    return this.createTouch.apply(this, args);
  }
  [_createTouch_2](...args) {
    return this.createTouch.apply(this, args);
  }
  [_createTouch_3](...args) {
    return this.createTouch.apply(this, args);
  }
  [_createTouch_4](...args) {
    return this.createTouch.apply(this, args);
  }
  [_createTouch_5](...args) {
    return this.createTouch.apply(this, args);
  }
  [_createTouchList](...args) {
    return this.createTouchList.apply(this, args);
  }
  [$execCommand](...args) {
    return this.execCommand.apply(this, args);
  }
  [$exitFullscreen](...args) {
    return this.exitFullscreen.apply(this, args);
  }
  [$exitPointerLock](...args) {
    return this.exitPointerLock.apply(this, args);
  }
  [$getAnimations](...args) {
    return this.getAnimations.apply(this, args);
  }
  [$getElementsByClassName](...args) {
    return this.getElementsByClassName.apply(this, args);
  }
  [$getElementsByName](...args) {
    return this.getElementsByName.apply(this, args);
  }
  [$getElementsByTagName](...args) {
    return this.getElementsByTagName.apply(this, args);
  }
  [$importNode](...args) {
    return this.importNode.apply(this, args);
  }
  [$queryCommandEnabled](...args) {
    return this.queryCommandEnabled.apply(this, args);
  }
  [$queryCommandIndeterm](...args) {
    return this.queryCommandIndeterm.apply(this, args);
  }
  [$queryCommandState](...args) {
    return this.queryCommandState.apply(this, args);
  }
  [$queryCommandSupported](...args) {
    return this.queryCommandSupported.apply(this, args);
  }
  [$queryCommandValue](...args) {
    return this.queryCommandValue.apply(this, args);
  }
  [$registerElement2](type, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_registerElement2_1](type, options_1);
    }
    return this[_registerElement2_2](type);
  }
  [_registerElement2_1](...args) {
    return this.registerElement.apply(this, args);
  }
  [_registerElement2_2](...args) {
    return this.registerElement.apply(this, args);
  }
  [_webkitExitFullscreen](...args) {
    return this.webkitExitFullscreen.apply(this, args);
  }
  [$getElementById](...args) {
    return this.getElementById.apply(this, args);
  }
  get [$activeElement]() {
    return this.activeElement;
  }
  get [$fullscreenElement]() {
    return this.fullscreenElement;
  }
  get [$pointerLockElement]() {
    return this.pointerLockElement;
  }
  get [_styleSheets]() {
    return this.styleSheets;
  }
  [_elementFromPoint](...args) {
    return this.elementFromPoint.apply(this, args);
  }
  [$elementsFromPoint](...args) {
    return this.elementsFromPoint.apply(this, args);
  }
  get [$fonts]() {
    return this.fonts;
  }
  get [_childElementCount]() {
    return this.childElementCount;
  }
  get [_children]() {
    return this.children;
  }
  get [_firstElementChild]() {
    return this.firstElementChild;
  }
  get [_lastElementChild]() {
    return this.lastElementChild;
  }
  [$querySelector](...args) {
    return this.querySelector.apply(this, args);
  }
  [_querySelectorAll](...args) {
    return this.querySelectorAll.apply(this, args);
  }
  get [$onAbort]() {
    return html$.Element.abortEvent.forTarget(this);
  }
  get [$onBeforeCopy]() {
    return html$.Element.beforeCopyEvent.forTarget(this);
  }
  get [$onBeforeCut]() {
    return html$.Element.beforeCutEvent.forTarget(this);
  }
  get [$onBeforePaste]() {
    return html$.Element.beforePasteEvent.forTarget(this);
  }
  get [$onBlur]() {
    return html$.Element.blurEvent.forTarget(this);
  }
  get [$onCanPlay]() {
    return html$.Element.canPlayEvent.forTarget(this);
  }
  get [$onCanPlayThrough]() {
    return html$.Element.canPlayThroughEvent.forTarget(this);
  }
  get [$onChange]() {
    return html$.Element.changeEvent.forTarget(this);
  }
  get [$onClick]() {
    return html$.Element.clickEvent.forTarget(this);
  }
  get [$onContextMenu]() {
    return html$.Element.contextMenuEvent.forTarget(this);
  }
  get [$onCopy]() {
    return html$.Element.copyEvent.forTarget(this);
  }
  get [$onCut]() {
    return html$.Element.cutEvent.forTarget(this);
  }
  get [$onDoubleClick]() {
    return html$.Element.doubleClickEvent.forTarget(this);
  }
  get [$onDrag]() {
    return html$.Element.dragEvent.forTarget(this);
  }
  get [$onDragEnd]() {
    return html$.Element.dragEndEvent.forTarget(this);
  }
  get [$onDragEnter]() {
    return html$.Element.dragEnterEvent.forTarget(this);
  }
  get [$onDragLeave]() {
    return html$.Element.dragLeaveEvent.forTarget(this);
  }
  get [$onDragOver]() {
    return html$.Element.dragOverEvent.forTarget(this);
  }
  get [$onDragStart]() {
    return html$.Element.dragStartEvent.forTarget(this);
  }
  get [$onDrop]() {
    return html$.Element.dropEvent.forTarget(this);
  }
  get [$onDurationChange]() {
    return html$.Element.durationChangeEvent.forTarget(this);
  }
  get [$onEmptied]() {
    return html$.Element.emptiedEvent.forTarget(this);
  }
  get [$onEnded]() {
    return html$.Element.endedEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.Element.errorEvent.forTarget(this);
  }
  get [$onFocus]() {
    return html$.Element.focusEvent.forTarget(this);
  }
  get [$onInput]() {
    return html$.Element.inputEvent.forTarget(this);
  }
  get [$onInvalid]() {
    return html$.Element.invalidEvent.forTarget(this);
  }
  get [$onKeyDown]() {
    return html$.Element.keyDownEvent.forTarget(this);
  }
  get [$onKeyPress]() {
    return html$.Element.keyPressEvent.forTarget(this);
  }
  get [$onKeyUp]() {
    return html$.Element.keyUpEvent.forTarget(this);
  }
  get [$onLoad]() {
    return html$.Element.loadEvent.forTarget(this);
  }
  get [$onLoadedData]() {
    return html$.Element.loadedDataEvent.forTarget(this);
  }
  get [$onLoadedMetadata]() {
    return html$.Element.loadedMetadataEvent.forTarget(this);
  }
  get [$onMouseDown]() {
    return html$.Element.mouseDownEvent.forTarget(this);
  }
  get [$onMouseEnter]() {
    return html$.Element.mouseEnterEvent.forTarget(this);
  }
  get [$onMouseLeave]() {
    return html$.Element.mouseLeaveEvent.forTarget(this);
  }
  get [$onMouseMove]() {
    return html$.Element.mouseMoveEvent.forTarget(this);
  }
  get [$onMouseOut]() {
    return html$.Element.mouseOutEvent.forTarget(this);
  }
  get [$onMouseOver]() {
    return html$.Element.mouseOverEvent.forTarget(this);
  }
  get [$onMouseUp]() {
    return html$.Element.mouseUpEvent.forTarget(this);
  }
  get [$onMouseWheel]() {
    return html$.Element.mouseWheelEvent.forTarget(this);
  }
  get [$onPaste]() {
    return html$.Element.pasteEvent.forTarget(this);
  }
  get [$onPause]() {
    return html$.Element.pauseEvent.forTarget(this);
  }
  get [$onPlay]() {
    return html$.Element.playEvent.forTarget(this);
  }
  get [$onPlaying]() {
    return html$.Element.playingEvent.forTarget(this);
  }
  get [$onPointerLockChange]() {
    return html$.Document.pointerLockChangeEvent.forTarget(this);
  }
  get [$onPointerLockError]() {
    return html$.Document.pointerLockErrorEvent.forTarget(this);
  }
  get [$onRateChange]() {
    return html$.Element.rateChangeEvent.forTarget(this);
  }
  get [$onReadyStateChange]() {
    return html$.Document.readyStateChangeEvent.forTarget(this);
  }
  get [$onReset]() {
    return html$.Element.resetEvent.forTarget(this);
  }
  get [$onResize]() {
    return html$.Element.resizeEvent.forTarget(this);
  }
  get [$onScroll]() {
    return html$.Element.scrollEvent.forTarget(this);
  }
  get [$onSearch]() {
    return html$.Element.searchEvent.forTarget(this);
  }
  get [$onSecurityPolicyViolation]() {
    return html$.Document.securityPolicyViolationEvent.forTarget(this);
  }
  get [$onSeeked]() {
    return html$.Element.seekedEvent.forTarget(this);
  }
  get [$onSeeking]() {
    return html$.Element.seekingEvent.forTarget(this);
  }
  get [$onSelect]() {
    return html$.Element.selectEvent.forTarget(this);
  }
  get [$onSelectionChange]() {
    return html$.Document.selectionChangeEvent.forTarget(this);
  }
  get [$onSelectStart]() {
    return html$.Element.selectStartEvent.forTarget(this);
  }
  get [$onStalled]() {
    return html$.Element.stalledEvent.forTarget(this);
  }
  get [$onSubmit]() {
    return html$.Element.submitEvent.forTarget(this);
  }
  get [$onSuspend]() {
    return html$.Element.suspendEvent.forTarget(this);
  }
  get [$onTimeUpdate]() {
    return html$.Element.timeUpdateEvent.forTarget(this);
  }
  get [$onTouchCancel]() {
    return html$.Element.touchCancelEvent.forTarget(this);
  }
  get [$onTouchEnd]() {
    return html$.Element.touchEndEvent.forTarget(this);
  }
  get [$onTouchMove]() {
    return html$.Element.touchMoveEvent.forTarget(this);
  }
  get [$onTouchStart]() {
    return html$.Element.touchStartEvent.forTarget(this);
  }
  get [$onVolumeChange]() {
    return html$.Element.volumeChangeEvent.forTarget(this);
  }
  get [$onWaiting]() {
    return html$.Element.waitingEvent.forTarget(this);
  }
  get [$onFullscreenChange]() {
    return html$.Element.fullscreenChangeEvent.forTarget(this);
  }
  get [$onFullscreenError]() {
    return html$.Element.fullscreenErrorEvent.forTarget(this);
  }
  [$querySelectorAll](T, selectors) {
    return new (html$._FrozenElementList$(T))._wrap(this[_querySelectorAll](selectors));
  }
  get [$supportsRegisterElement]() {
    return "registerElement" in this;
  }
  get [$supportsRegister]() {
    return this[$supportsRegisterElement];
  }
  [$registerElement](tag, customElementClass, opts) {
    let extendsTag = opts && 'extendsTag' in opts ? opts.extendsTag : null;
    this[$registerElement2](tag, new _js_helper.LinkedMap.from(["prototype", customElementClass, "extends", extendsTag]));
  }
  [$createElement](tagName, typeExtension) {
    if (typeExtension === void 0) typeExtension = null;
    return html$.Element._check(typeExtension == null ? this[_createElement_2](tagName) : this[_createElement](tagName, typeExtension));
  }
  [_createElement_2](tagName) {
    return this.createElement(tagName);
  }
  [_createElementNS_2](namespaceURI, qualifiedName) {
    return this.createElementNS(namespaceURI, qualifiedName);
  }
  [$createElementNS](namespaceURI, qualifiedName, typeExtension) {
    if (typeExtension === void 0) typeExtension = null;
    return html$.Element._check(typeExtension == null ? this[_createElementNS_2](namespaceURI, qualifiedName) : this[_createElementNS](namespaceURI, qualifiedName, typeExtension));
  }
  [_createNodeIterator](root, whatToShow, filter) {
    if (whatToShow === void 0) whatToShow = null;
    if (filter === void 0) filter = null;
    return this.createNodeIterator(root, whatToShow, filter, false);
  }
  [_createTreeWalker](root, whatToShow, filter) {
    if (whatToShow === void 0) whatToShow = null;
    if (filter === void 0) filter = null;
    return this.createTreeWalker(root, whatToShow, filter, false);
  }
  get [$visibilityState]() {
    return this.visibilityState || this.mozVisibilityState || this.msVisibilityState || this.webkitVisibilityState;
  }
};
dart.addTypeTests(html$.Document);
const addressSpace$ = Symbol("Document.addressSpace");
const contentType = Symbol("Document.contentType");
const cookie = Symbol("Document.cookie");
const currentScript = Symbol("Document.currentScript");
const documentElement = Symbol("Document.documentElement");
const domain = Symbol("Document.domain");
const fullscreenEnabled = Symbol("Document.fullscreenEnabled");
const hidden$0 = Symbol("Document.hidden");
const implementation = Symbol("Document.implementation");
const origin$1 = Symbol("Document.origin");
const readyState$1 = Symbol("Document.readyState");
const rootElement = Symbol("Document.rootElement");
const rootScroller = Symbol("Document.rootScroller");
const scrollingElement = Symbol("Document.scrollingElement");
const suborigin = Symbol("Document.suborigin");
const timeline$ = Symbol("Document.timeline");
const activeElement = Symbol("Document.activeElement");
const fullscreenElement = Symbol("Document.fullscreenElement");
const pointerLockElement = Symbol("Document.pointerLockElement");
const fonts = Symbol("Document.fonts");
dart.setMethodSignature(html$.Document, () => ({
  __proto__: dart.getMethods(html$.Document.__proto__),
  [$adoptNode]: dart.fnType(html$.Node, [html$.Node]),
  [_caretRangeFromPoint]: dart.fnType(html$.Range, [core.int, core.int]),
  [$createDocumentFragment]: dart.fnType(html$.DocumentFragment, []),
  [_createElement]: dart.fnType(html$.Element, [core.String], [dart.dynamic]),
  [_createElementNS]: dart.fnType(html$.Element, [core.String, core.String], [dart.dynamic]),
  [_createEvent]: dart.fnType(html$.Event, [core.String]),
  [$createRange]: dart.fnType(html$.Range, []),
  [_createTextNode]: dart.fnType(html$.Text, [core.String]),
  [_createTouch]: dart.fnType(html$.Touch, [html$.Window, html$.EventTarget, core.int, core.num, core.num, core.num, core.num], [core.num, core.num, core.num, core.num]),
  [_createTouch_1]: dart.fnType(html$.Touch, [html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_createTouch_2]: dart.fnType(html$.Touch, [html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_createTouch_3]: dart.fnType(html$.Touch, [html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_createTouch_4]: dart.fnType(html$.Touch, [html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_createTouch_5]: dart.fnType(html$.Touch, [html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_createTouchList]: dart.fnType(html$.TouchList, [html$.Touch]),
  [$execCommand]: dart.fnType(core.bool, [core.String], [core.bool, core.String]),
  [$exitFullscreen]: dart.fnType(dart.void, []),
  [$exitPointerLock]: dart.fnType(dart.void, []),
  [$getAnimations]: dart.fnType(core.List$(html$.Animation), []),
  [$getElementsByClassName]: dart.fnType(core.List$(html$.Node), [core.String]),
  [$getElementsByName]: dart.fnType(core.List$(html$.Node), [core.String]),
  [$getElementsByTagName]: dart.fnType(core.List$(html$.Node), [core.String]),
  [$importNode]: dart.fnType(html$.Node, [html$.Node], [core.bool]),
  [$queryCommandEnabled]: dart.fnType(core.bool, [core.String]),
  [$queryCommandIndeterm]: dart.fnType(core.bool, [core.String]),
  [$queryCommandState]: dart.fnType(core.bool, [core.String]),
  [$queryCommandSupported]: dart.fnType(core.bool, [core.String]),
  [$queryCommandValue]: dart.fnType(core.String, [core.String]),
  [$registerElement2]: dart.fnType(core.Function, [core.String], [core.Map]),
  [_registerElement2_1]: dart.fnType(core.Function, [dart.dynamic, dart.dynamic]),
  [_registerElement2_2]: dart.fnType(core.Function, [dart.dynamic]),
  [_webkitExitFullscreen]: dart.fnType(dart.void, []),
  [$getElementById]: dart.fnType(html$.Element, [core.String]),
  [_elementFromPoint]: dart.fnType(html$.Element, [core.int, core.int]),
  [$elementsFromPoint]: dart.fnType(core.List$(html$.Element), [core.int, core.int]),
  [$querySelector]: dart.fnType(html$.Element, [core.String]),
  [_querySelectorAll]: dart.fnType(core.List$(html$.Node), [core.String]),
  [$querySelectorAll]: dart.gFnType(T => [html$.ElementList$(T), [core.String]], T => [html$.Element]),
  [$registerElement]: dart.fnType(dart.void, [core.String, core.Type], {extendsTag: core.String}),
  [$createElement]: dart.fnType(html$.Element, [core.String], [core.String]),
  [_createElement_2]: dart.fnType(dart.dynamic, [core.String]),
  [_createElementNS_2]: dart.fnType(dart.dynamic, [core.String, core.String]),
  [$createElementNS]: dart.fnType(html$.Element, [core.String, core.String], [core.String]),
  [_createNodeIterator]: dart.fnType(html$.NodeIterator, [html$.Node], [core.int, html$.NodeFilter]),
  [_createTreeWalker]: dart.fnType(html$.TreeWalker, [html$.Node], [core.int, html$.NodeFilter])
}));
dart.setGetterSignature(html$.Document, () => ({
  __proto__: dart.getGetters(html$.Document.__proto__),
  [$window]: html$.WindowBase,
  [$onAbort]: async.Stream$(html$.Event),
  [$onBeforeCopy]: async.Stream$(html$.Event),
  [$onBeforeCut]: async.Stream$(html$.Event),
  [$onBeforePaste]: async.Stream$(html$.Event),
  [$onBlur]: async.Stream$(html$.Event),
  [$onCanPlay]: async.Stream$(html$.Event),
  [$onCanPlayThrough]: async.Stream$(html$.Event),
  [$onChange]: async.Stream$(html$.Event),
  [$onClick]: async.Stream$(html$.MouseEvent),
  [$onContextMenu]: async.Stream$(html$.MouseEvent),
  [$onCopy]: async.Stream$(html$.ClipboardEvent),
  [$onCut]: async.Stream$(html$.ClipboardEvent),
  [$onDoubleClick]: async.Stream$(html$.Event),
  [$onDrag]: async.Stream$(html$.MouseEvent),
  [$onDragEnd]: async.Stream$(html$.MouseEvent),
  [$onDragEnter]: async.Stream$(html$.MouseEvent),
  [$onDragLeave]: async.Stream$(html$.MouseEvent),
  [$onDragOver]: async.Stream$(html$.MouseEvent),
  [$onDragStart]: async.Stream$(html$.MouseEvent),
  [$onDrop]: async.Stream$(html$.MouseEvent),
  [$onDurationChange]: async.Stream$(html$.Event),
  [$onEmptied]: async.Stream$(html$.Event),
  [$onEnded]: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.Event),
  [$onFocus]: async.Stream$(html$.Event),
  [$onInput]: async.Stream$(html$.Event),
  [$onInvalid]: async.Stream$(html$.Event),
  [$onKeyDown]: async.Stream$(html$.KeyboardEvent),
  [$onKeyPress]: async.Stream$(html$.KeyboardEvent),
  [$onKeyUp]: async.Stream$(html$.KeyboardEvent),
  [$onLoad]: async.Stream$(html$.Event),
  [$onLoadedData]: async.Stream$(html$.Event),
  [$onLoadedMetadata]: async.Stream$(html$.Event),
  [$onMouseDown]: async.Stream$(html$.MouseEvent),
  [$onMouseEnter]: async.Stream$(html$.MouseEvent),
  [$onMouseLeave]: async.Stream$(html$.MouseEvent),
  [$onMouseMove]: async.Stream$(html$.MouseEvent),
  [$onMouseOut]: async.Stream$(html$.MouseEvent),
  [$onMouseOver]: async.Stream$(html$.MouseEvent),
  [$onMouseUp]: async.Stream$(html$.MouseEvent),
  [$onMouseWheel]: async.Stream$(html$.WheelEvent),
  [$onPaste]: async.Stream$(html$.ClipboardEvent),
  [$onPause]: async.Stream$(html$.Event),
  [$onPlay]: async.Stream$(html$.Event),
  [$onPlaying]: async.Stream$(html$.Event),
  [$onPointerLockChange]: async.Stream$(html$.Event),
  [$onPointerLockError]: async.Stream$(html$.Event),
  [$onRateChange]: async.Stream$(html$.Event),
  [$onReadyStateChange]: async.Stream$(html$.Event),
  [$onReset]: async.Stream$(html$.Event),
  [$onResize]: async.Stream$(html$.Event),
  [$onScroll]: async.Stream$(html$.Event),
  [$onSearch]: async.Stream$(html$.Event),
  [$onSecurityPolicyViolation]: async.Stream$(html$.SecurityPolicyViolationEvent),
  [$onSeeked]: async.Stream$(html$.Event),
  [$onSeeking]: async.Stream$(html$.Event),
  [$onSelect]: async.Stream$(html$.Event),
  [$onSelectionChange]: async.Stream$(html$.Event),
  [$onSelectStart]: async.Stream$(html$.Event),
  [$onStalled]: async.Stream$(html$.Event),
  [$onSubmit]: async.Stream$(html$.Event),
  [$onSuspend]: async.Stream$(html$.Event),
  [$onTimeUpdate]: async.Stream$(html$.Event),
  [$onTouchCancel]: async.Stream$(html$.TouchEvent),
  [$onTouchEnd]: async.Stream$(html$.TouchEvent),
  [$onTouchMove]: async.Stream$(html$.TouchEvent),
  [$onTouchStart]: async.Stream$(html$.TouchEvent),
  [$onVolumeChange]: async.Stream$(html$.Event),
  [$onWaiting]: async.Stream$(html$.Event),
  [$onFullscreenChange]: async.Stream$(html$.Event),
  [$onFullscreenError]: async.Stream$(html$.Event),
  [$supportsRegisterElement]: core.bool,
  [$supportsRegister]: core.bool,
  [$visibilityState]: core.String
}));
dart.setFieldSignature(html$.Document, () => ({
  __proto__: dart.getFields(html$.Document.__proto__),
  [$addressSpace]: dart.finalFieldType(core.String),
  [_body]: dart.fieldType(html$.HtmlElement),
  [$contentType]: dart.finalFieldType(core.String),
  [$cookie]: dart.fieldType(core.String),
  [$currentScript]: dart.finalFieldType(html$.ScriptElement),
  [_get_window]: dart.finalFieldType(dart.dynamic),
  [$documentElement]: dart.finalFieldType(html$.Element),
  [$domain]: dart.finalFieldType(core.String),
  [$fullscreenEnabled]: dart.finalFieldType(core.bool),
  [_head$]: dart.finalFieldType(html$.HeadElement),
  [$hidden]: dart.finalFieldType(core.bool),
  [$implementation]: dart.finalFieldType(html$.DomImplementation),
  [_lastModified]: dart.finalFieldType(core.String),
  [$origin]: dart.finalFieldType(core.String),
  [_preferredStylesheetSet]: dart.finalFieldType(core.String),
  [$readyState]: dart.finalFieldType(core.String),
  [_referrer]: dart.finalFieldType(core.String),
  [$rootElement]: dart.finalFieldType(svg$.SvgSvgElement),
  [$rootScroller]: dart.fieldType(html$.Element),
  [$scrollingElement]: dart.finalFieldType(html$.Element),
  [_selectedStylesheetSet]: dart.fieldType(core.String),
  [$suborigin]: dart.finalFieldType(core.String),
  [$timeline]: dart.finalFieldType(html$.DocumentTimeline),
  [_title]: dart.fieldType(core.String),
  [_visibilityState]: dart.finalFieldType(core.String),
  [_webkitFullscreenElement]: dart.finalFieldType(html$.Element),
  [_webkitFullscreenEnabled]: dart.finalFieldType(core.bool),
  [_webkitHidden]: dart.finalFieldType(core.bool),
  [_webkitVisibilityState]: dart.finalFieldType(core.String),
  [$activeElement]: dart.finalFieldType(html$.Element),
  [$fullscreenElement]: dart.finalFieldType(html$.Element),
  [$pointerLockElement]: dart.finalFieldType(html$.Element),
  [_styleSheets]: dart.finalFieldType(ListOfStyleSheet()),
  [$fonts]: dart.finalFieldType(html$.FontFaceSet),
  [_childElementCount]: dart.finalFieldType(core.int),
  [_children]: dart.finalFieldType(ListOfNode()),
  [_firstElementChild]: dart.finalFieldType(html$.Element),
  [_lastElementChild]: dart.finalFieldType(html$.Element)
}));
dart.defineLazy(html$.Document, {
  /*html$.Document.pointerLockChangeEvent*/get pointerLockChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("pointerlockchange"));
  },
  /*html$.Document.pointerLockErrorEvent*/get pointerLockErrorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("pointerlockerror"));
  },
  /*html$.Document.readyStateChangeEvent*/get readyStateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("readystatechange"));
  },
  /*html$.Document.securityPolicyViolationEvent*/get securityPolicyViolationEvent() {
    return dart.const(new (EventStreamProviderOfSecurityPolicyViolationEvent()).new("securitypolicyviolation"));
  },
  /*html$.Document.selectionChangeEvent*/get selectionChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("selectionchange"));
  }
});
dart.registerExtension("Document", html$.Document);
const _docChildren = Symbol('_docChildren');
html$.DocumentFragment = class DocumentFragment extends html$.Node {
  static new() {
    return html$.document.createDocumentFragment();
  }
  static html(html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    return html$.document.body[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
  }
  static svg(svgContent, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    return svg$.SvgSvgElement.new()[$createFragment](svgContent, {validator: validator, treeSanitizer: treeSanitizer});
  }
  get [_children]() {
    return dart.throw(new core.UnimplementedError.new("Use _docChildren instead"));
  }
  get [_docChildren]() {
    return this._docChildren;
  }
  set [_docChildren](value) {
    this._docChildren = value;
  }
  get [$children]() {
    if (this[_docChildren] == null) {
      this[_docChildren] = new html_common.FilteredElementList.new(this);
    }
    return this[_docChildren];
  }
  set [$children](value) {
    let copy = value[$toList]();
    let children = this[$children];
    children[$clear]();
    children[$addAll](copy);
  }
  [$querySelectorAll](T, selectors) {
    return new (html$._FrozenElementList$(T))._wrap(this[_querySelectorAll](selectors));
  }
  get [$innerHtml]() {
    let e = html$.DivElement.new();
    e[$append](this[$clone](true));
    return e[$innerHtml];
  }
  set [$innerHtml](value) {
    this[$setInnerHtml](value);
  }
  [$setInnerHtml](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    this[$nodes][$clear]();
    this[$append](html$.document.body[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer}));
  }
  [$appendText](text) {
    this[$append](html$.Text.new(text));
  }
  [$appendHtml](text, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    this[$append](html$.DocumentFragment.html(text, {validator: validator, treeSanitizer: treeSanitizer}));
  }
  [$getElementById](...args) {
    return this.getElementById.apply(this, args);
  }
  get [_childElementCount]() {
    return this.childElementCount;
  }
  get [_firstElementChild]() {
    return this.firstElementChild;
  }
  get [_lastElementChild]() {
    return this.lastElementChild;
  }
  [$querySelector](...args) {
    return this.querySelector.apply(this, args);
  }
  [_querySelectorAll](...args) {
    return this.querySelectorAll.apply(this, args);
  }
};
dart.addTypeTests(html$.DocumentFragment);
html$.DocumentFragment[dart.implements] = () => [html$.NonElementParentNode, html$.ParentNode];
dart.setMethodSignature(html$.DocumentFragment, () => ({
  __proto__: dart.getMethods(html$.DocumentFragment.__proto__),
  [$querySelectorAll]: dart.gFnType(T => [html$.ElementList$(T), [core.String]], T => [html$.Element]),
  [$setInnerHtml]: dart.fnType(dart.void, [core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
  [$appendText]: dart.fnType(dart.void, [core.String]),
  [$appendHtml]: dart.fnType(dart.void, [core.String], {validator: html$.NodeValidator, treeSanitizer: html$.NodeTreeSanitizer}),
  [$getElementById]: dart.fnType(html$.Element, [core.String]),
  [$querySelector]: dart.fnType(html$.Element, [core.String]),
  [_querySelectorAll]: dart.fnType(core.List$(html$.Node), [core.String])
}));
dart.setGetterSignature(html$.DocumentFragment, () => ({
  __proto__: dart.getGetters(html$.DocumentFragment.__proto__),
  [_children]: html$.HtmlCollection,
  [$children]: core.List$(html$.Element),
  [$innerHtml]: core.String
}));
dart.setSetterSignature(html$.DocumentFragment, () => ({
  __proto__: dart.getSetters(html$.DocumentFragment.__proto__),
  [$children]: core.List$(html$.Element),
  [$innerHtml]: core.String
}));
dart.setFieldSignature(html$.DocumentFragment, () => ({
  __proto__: dart.getFields(html$.DocumentFragment.__proto__),
  [_docChildren]: dart.fieldType(ListOfElement()),
  [_childElementCount]: dart.finalFieldType(core.int),
  [_firstElementChild]: dart.finalFieldType(html$.Element),
  [_lastElementChild]: dart.finalFieldType(html$.Element)
}));
dart.registerExtension("DocumentFragment", html$.DocumentFragment);
html$.DocumentOrShadowRoot = class DocumentOrShadowRoot extends _interceptors.Interceptor {
  get [$activeElement]() {
    return this.activeElement;
  }
  get [$fullscreenElement]() {
    return this.fullscreenElement;
  }
  get [$pointerLockElement]() {
    return this.pointerLockElement;
  }
  get [$styleSheets]() {
    return this.styleSheets;
  }
  [$elementFromPoint](...args) {
    return this.elementFromPoint.apply(this, args);
  }
  [$elementsFromPoint](...args) {
    return this.elementsFromPoint.apply(this, args);
  }
  [$getSelection](...args) {
    return this.getSelection.apply(this, args);
  }
};
dart.addTypeTests(html$.DocumentOrShadowRoot);
const activeElement$ = Symbol("DocumentOrShadowRoot.activeElement");
const fullscreenElement$ = Symbol("DocumentOrShadowRoot.fullscreenElement");
const pointerLockElement$ = Symbol("DocumentOrShadowRoot.pointerLockElement");
const styleSheets = Symbol("DocumentOrShadowRoot.styleSheets");
dart.setMethodSignature(html$.DocumentOrShadowRoot, () => ({
  __proto__: dart.getMethods(html$.DocumentOrShadowRoot.__proto__),
  [$elementFromPoint]: dart.fnType(html$.Element, [core.int, core.int]),
  [$elementsFromPoint]: dart.fnType(core.List$(html$.Element), [core.int, core.int]),
  [$getSelection]: dart.fnType(html$.Selection, [])
}));
dart.setFieldSignature(html$.DocumentOrShadowRoot, () => ({
  __proto__: dart.getFields(html$.DocumentOrShadowRoot.__proto__),
  [$activeElement]: dart.finalFieldType(html$.Element),
  [$fullscreenElement]: dart.finalFieldType(html$.Element),
  [$pointerLockElement]: dart.finalFieldType(html$.Element),
  [$styleSheets]: dart.finalFieldType(ListOfStyleSheet())
}));
dart.registerExtension("DocumentOrShadowRoot", html$.DocumentOrShadowRoot);
html$.DocumentTimeline = class DocumentTimeline$ extends html$.AnimationTimeline {
  static new(options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return html$.DocumentTimeline._create_1(options_1);
    }
    return html$.DocumentTimeline._create_2();
  }
  static _create_1(options) {
    return new DocumentTimeline(options);
  }
  static _create_2() {
    return new DocumentTimeline();
  }
};
dart.addTypeTests(html$.DocumentTimeline);
dart.registerExtension("DocumentTimeline", html$.DocumentTimeline);
html$.DomError = class DomError extends _interceptors.Interceptor {
  static new(name, message) {
    if (message === void 0) message = null;
    if (message != null) {
      return html$.DomError._create_1(name, message);
    }
    return html$.DomError._create_2(name);
  }
  static _create_1(name, message) {
    return new DOMError(name, message);
  }
  static _create_2(name) {
    return new DOMError(name);
  }
  get [$message]() {
    return this.message;
  }
  get [$name]() {
    return this.name;
  }
};
dart.addTypeTests(html$.DomError);
const message$17 = Symbol("DomError.message");
const name$11 = Symbol("DomError.name");
dart.setFieldSignature(html$.DomError, () => ({
  __proto__: dart.getFields(html$.DomError.__proto__),
  [$message]: dart.finalFieldType(core.String),
  [$name]: dart.finalFieldType(core.String)
}));
dart.registerExtension("DOMError", html$.DomError);
html$.DomException = class DomException extends _interceptors.Interceptor {
  get [$name]() {
    let errorName = this.name;
    if (dart.test(html_common.Device.isWebKit) && errorName === "SECURITY_ERR") return "SecurityError";
    if (dart.test(html_common.Device.isWebKit) && errorName === "SYNTAX_ERR") return "SyntaxError";
    return errorName;
  }
  get [$message]() {
    return this.message;
  }
  [$toString]() {
    return String(this);
  }
};
dart.addTypeTests(html$.DomException);
const message$18 = Symbol("DomException.message");
dart.setGetterSignature(html$.DomException, () => ({
  __proto__: dart.getGetters(html$.DomException.__proto__),
  [$name]: core.String
}));
dart.setFieldSignature(html$.DomException, () => ({
  __proto__: dart.getFields(html$.DomException.__proto__),
  [$message]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.DomException, {
  /*html$.DomException.INDEX_SIZE*/get INDEX_SIZE() {
    return "IndexSizeError";
  },
  /*html$.DomException.HIERARCHY_REQUEST*/get HIERARCHY_REQUEST() {
    return "HierarchyRequestError";
  },
  /*html$.DomException.WRONG_DOCUMENT*/get WRONG_DOCUMENT() {
    return "WrongDocumentError";
  },
  /*html$.DomException.INVALID_CHARACTER*/get INVALID_CHARACTER() {
    return "InvalidCharacterError";
  },
  /*html$.DomException.NO_MODIFICATION_ALLOWED*/get NO_MODIFICATION_ALLOWED() {
    return "NoModificationAllowedError";
  },
  /*html$.DomException.NOT_FOUND*/get NOT_FOUND() {
    return "NotFoundError";
  },
  /*html$.DomException.NOT_SUPPORTED*/get NOT_SUPPORTED() {
    return "NotSupportedError";
  },
  /*html$.DomException.INVALID_STATE*/get INVALID_STATE() {
    return "InvalidStateError";
  },
  /*html$.DomException.SYNTAX*/get SYNTAX() {
    return "SyntaxError";
  },
  /*html$.DomException.INVALID_MODIFICATION*/get INVALID_MODIFICATION() {
    return "InvalidModificationError";
  },
  /*html$.DomException.NAMESPACE*/get NAMESPACE() {
    return "NamespaceError";
  },
  /*html$.DomException.INVALID_ACCESS*/get INVALID_ACCESS() {
    return "InvalidAccessError";
  },
  /*html$.DomException.TYPE_MISMATCH*/get TYPE_MISMATCH() {
    return "TypeMismatchError";
  },
  /*html$.DomException.SECURITY*/get SECURITY() {
    return "SecurityError";
  },
  /*html$.DomException.NETWORK*/get NETWORK() {
    return "NetworkError";
  },
  /*html$.DomException.ABORT*/get ABORT() {
    return "AbortError";
  },
  /*html$.DomException.URL_MISMATCH*/get URL_MISMATCH() {
    return "URLMismatchError";
  },
  /*html$.DomException.QUOTA_EXCEEDED*/get QUOTA_EXCEEDED() {
    return "QuotaExceededError";
  },
  /*html$.DomException.TIMEOUT*/get TIMEOUT() {
    return "TimeoutError";
  },
  /*html$.DomException.INVALID_NODE_TYPE*/get INVALID_NODE_TYPE() {
    return "InvalidNodeTypeError";
  },
  /*html$.DomException.DATA_CLONE*/get DATA_CLONE() {
    return "DataCloneError";
  },
  /*html$.DomException.TYPE_ERROR*/get TYPE_ERROR() {
    return "TypeError";
  }
});
dart.registerExtension("DOMException", html$.DomException);
html$.DomImplementation = class DomImplementation extends _interceptors.Interceptor {
  [$createDocument](...args) {
    return this.createDocument.apply(this, args);
  }
  [$createDocumentType](...args) {
    return this.createDocumentType.apply(this, args);
  }
  [$createHtmlDocument](...args) {
    return this.createHTMLDocument.apply(this, args);
  }
  [$hasFeature](...args) {
    return this.hasFeature.apply(this, args);
  }
};
dart.addTypeTests(html$.DomImplementation);
dart.setMethodSignature(html$.DomImplementation, () => ({
  __proto__: dart.getMethods(html$.DomImplementation.__proto__),
  [$createDocument]: dart.fnType(html$.XmlDocument, [core.String, core.String, html$._DocumentType]),
  [$createDocumentType]: dart.fnType(html$._DocumentType, [core.String, core.String, core.String]),
  [$createHtmlDocument]: dart.fnType(html$.HtmlDocument, [], [core.String]),
  [$hasFeature]: dart.fnType(core.bool, [])
}));
dart.registerExtension("DOMImplementation", html$.DomImplementation);
html$.DomIterator = class DomIterator extends _interceptors.Interceptor {
  [$next](...args) {
    return this.next.apply(this, args);
  }
};
dart.addTypeTests(html$.DomIterator);
dart.setMethodSignature(html$.DomIterator, () => ({
  __proto__: dart.getMethods(html$.DomIterator.__proto__),
  [$next]: dart.fnType(core.Object, [], [core.Object])
}));
dart.registerExtension("Iterator", html$.DomIterator);
const _multiplySelf_1 = Symbol('_multiplySelf_1');
const _multiplySelf_2 = Symbol('_multiplySelf_2');
const _preMultiplySelf_1 = Symbol('_preMultiplySelf_1');
const _preMultiplySelf_2 = Symbol('_preMultiplySelf_2');
const _multiply_1 = Symbol('_multiply_1');
const _multiply_2 = Symbol('_multiply_2');
const _transformPoint_1 = Symbol('_transformPoint_1');
const _transformPoint_2 = Symbol('_transformPoint_2');
html$.DomMatrixReadOnly = class DomMatrixReadOnly extends _interceptors.Interceptor {
  static new(init) {
    if (init === void 0) init = null;
    if (init != null) {
      return html$.DomMatrixReadOnly._create_1(init);
    }
    return html$.DomMatrixReadOnly._create_2();
  }
  static _create_1(init) {
    return new DOMMatrixReadOnly(init);
  }
  static _create_2() {
    return new DOMMatrixReadOnly();
  }
  get [$a]() {
    return this.a;
  }
  get [$b]() {
    return this.b;
  }
  get [$c]() {
    return this.c;
  }
  get [$d]() {
    return this.d;
  }
  get [$e]() {
    return this.e;
  }
  get [$f]() {
    return this.f;
  }
  get [$is2D]() {
    return this.is2D;
  }
  get [$isIdentity]() {
    return this.isIdentity;
  }
  get [$m11]() {
    return this.m11;
  }
  get [$m12]() {
    return this.m12;
  }
  get [$m13]() {
    return this.m13;
  }
  get [$m14]() {
    return this.m14;
  }
  get [$m21]() {
    return this.m21;
  }
  get [$m22]() {
    return this.m22;
  }
  get [$m23]() {
    return this.m23;
  }
  get [$m24]() {
    return this.m24;
  }
  get [$m31]() {
    return this.m31;
  }
  get [$m32]() {
    return this.m32;
  }
  get [$m33]() {
    return this.m33;
  }
  get [$m34]() {
    return this.m34;
  }
  get [$m41]() {
    return this.m41;
  }
  get [$m42]() {
    return this.m42;
  }
  get [$m43]() {
    return this.m43;
  }
  get [$m44]() {
    return this.m44;
  }
  [$flipX](...args) {
    return this.flipX.apply(this, args);
  }
  [$flipY](...args) {
    return this.flipY.apply(this, args);
  }
  static fromMatrix(other) {
    if (other === void 0) other = null;
    if (other != null) {
      let other_1 = html_common.convertDartToNative_Dictionary(other);
      return dart.global.DOMMatrixReadOnly.fromMatrix(other_1);
    }
    return dart.global.DOMMatrixReadOnly.fromMatrix();
  }
  [$inverse](...args) {
    return this.inverse.apply(this, args);
  }
  [$multiply](other) {
    if (other === void 0) other = null;
    if (other != null) {
      let other_1 = html_common.convertDartToNative_Dictionary(other);
      return this[_multiply_1](other_1);
    }
    return this[_multiply_2]();
  }
  [_multiply_1](...args) {
    return this.multiply.apply(this, args);
  }
  [_multiply_2](...args) {
    return this.multiply.apply(this, args);
  }
  [$rotate](...args) {
    return this.rotate.apply(this, args);
  }
  [$rotateAxisAngle](...args) {
    return this.rotateAxisAngle.apply(this, args);
  }
  [$rotateFromVector](...args) {
    return this.rotateFromVector.apply(this, args);
  }
  [$scale](...args) {
    return this.scale.apply(this, args);
  }
  [$scale3d](...args) {
    return this.scale3d.apply(this, args);
  }
  [$skewX](...args) {
    return this.skewX.apply(this, args);
  }
  [$skewY](...args) {
    return this.skewY.apply(this, args);
  }
  [$toFloat32Array](...args) {
    return this.toFloat32Array.apply(this, args);
  }
  [$toFloat64Array](...args) {
    return this.toFloat64Array.apply(this, args);
  }
  [$transformPoint](point) {
    if (point === void 0) point = null;
    if (point != null) {
      let point_1 = html_common.convertDartToNative_Dictionary(point);
      return this[_transformPoint_1](point_1);
    }
    return this[_transformPoint_2]();
  }
  [_transformPoint_1](...args) {
    return this.transformPoint.apply(this, args);
  }
  [_transformPoint_2](...args) {
    return this.transformPoint.apply(this, args);
  }
  [$translate](...args) {
    return this.translate.apply(this, args);
  }
};
dart.addTypeTests(html$.DomMatrixReadOnly);
dart.setMethodSignature(html$.DomMatrixReadOnly, () => ({
  __proto__: dart.getMethods(html$.DomMatrixReadOnly.__proto__),
  [$flipX]: dart.fnType(html$.DomMatrix, []),
  [$flipY]: dart.fnType(html$.DomMatrix, []),
  [$inverse]: dart.fnType(html$.DomMatrix, []),
  [$multiply]: dart.fnType(html$.DomMatrix, [], [core.Map]),
  [_multiply_1]: dart.fnType(html$.DomMatrix, [dart.dynamic]),
  [_multiply_2]: dart.fnType(html$.DomMatrix, []),
  [$rotate]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num]),
  [$rotateAxisAngle]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num]),
  [$rotateFromVector]: dart.fnType(html$.DomMatrix, [], [core.num, core.num]),
  [$scale]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$scale3d]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num]),
  [$skewX]: dart.fnType(html$.DomMatrix, [], [core.num]),
  [$skewY]: dart.fnType(html$.DomMatrix, [], [core.num]),
  [$toFloat32Array]: dart.fnType(typed_data.Float32List, []),
  [$toFloat64Array]: dart.fnType(typed_data.Float64List, []),
  [$transformPoint]: dart.fnType(html$.DomPoint, [], [core.Map]),
  [_transformPoint_1]: dart.fnType(html$.DomPoint, [dart.dynamic]),
  [_transformPoint_2]: dart.fnType(html$.DomPoint, []),
  [$translate]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num])
}));
dart.setGetterSignature(html$.DomMatrixReadOnly, () => ({
  __proto__: dart.getGetters(html$.DomMatrixReadOnly.__proto__),
  [$a]: core.num,
  [$b]: core.num,
  [$c]: core.num,
  [$d]: core.num,
  [$e]: core.num,
  [$f]: core.num,
  [$is2D]: core.bool,
  [$isIdentity]: core.bool,
  [$m11]: core.num,
  [$m12]: core.num,
  [$m13]: core.num,
  [$m14]: core.num,
  [$m21]: core.num,
  [$m22]: core.num,
  [$m23]: core.num,
  [$m24]: core.num,
  [$m31]: core.num,
  [$m32]: core.num,
  [$m33]: core.num,
  [$m34]: core.num,
  [$m41]: core.num,
  [$m42]: core.num,
  [$m43]: core.num,
  [$m44]: core.num
}));
dart.registerExtension("DOMMatrixReadOnly", html$.DomMatrixReadOnly);
html$.DomMatrix = class DomMatrix extends html$.DomMatrixReadOnly {
  static new(init) {
    if (init === void 0) init = null;
    if (init != null) {
      return html$.DomMatrix._create_1(init);
    }
    return html$.DomMatrix._create_2();
  }
  static _create_1(init) {
    return new DOMMatrix(init);
  }
  static _create_2() {
    return new DOMMatrix();
  }
  get [$a]() {
    return this.a;
  }
  set [$a](value) {
    this.a = value;
  }
  get [$b]() {
    return this.b;
  }
  set [$b](value) {
    this.b = value;
  }
  get [$c]() {
    return this.c;
  }
  set [$c](value) {
    this.c = value;
  }
  get [$d]() {
    return this.d;
  }
  set [$d](value) {
    this.d = value;
  }
  get [$e]() {
    return this.e;
  }
  set [$e](value) {
    this.e = value;
  }
  get [$f]() {
    return this.f;
  }
  set [$f](value) {
    this.f = value;
  }
  get [$m11]() {
    return this.m11;
  }
  set [$m11](value) {
    this.m11 = value;
  }
  get [$m12]() {
    return this.m12;
  }
  set [$m12](value) {
    this.m12 = value;
  }
  get [$m13]() {
    return this.m13;
  }
  set [$m13](value) {
    this.m13 = value;
  }
  get [$m14]() {
    return this.m14;
  }
  set [$m14](value) {
    this.m14 = value;
  }
  get [$m21]() {
    return this.m21;
  }
  set [$m21](value) {
    this.m21 = value;
  }
  get [$m22]() {
    return this.m22;
  }
  set [$m22](value) {
    this.m22 = value;
  }
  get [$m23]() {
    return this.m23;
  }
  set [$m23](value) {
    this.m23 = value;
  }
  get [$m24]() {
    return this.m24;
  }
  set [$m24](value) {
    this.m24 = value;
  }
  get [$m31]() {
    return this.m31;
  }
  set [$m31](value) {
    this.m31 = value;
  }
  get [$m32]() {
    return this.m32;
  }
  set [$m32](value) {
    this.m32 = value;
  }
  get [$m33]() {
    return this.m33;
  }
  set [$m33](value) {
    this.m33 = value;
  }
  get [$m34]() {
    return this.m34;
  }
  set [$m34](value) {
    this.m34 = value;
  }
  get [$m41]() {
    return this.m41;
  }
  set [$m41](value) {
    this.m41 = value;
  }
  get [$m42]() {
    return this.m42;
  }
  set [$m42](value) {
    this.m42 = value;
  }
  get [$m43]() {
    return this.m43;
  }
  set [$m43](value) {
    this.m43 = value;
  }
  get [$m44]() {
    return this.m44;
  }
  set [$m44](value) {
    this.m44 = value;
  }
  static fromMatrix(other) {
    if (other === void 0) other = null;
    if (other != null) {
      let other_1 = html_common.convertDartToNative_Dictionary(other);
      return dart.global.DOMMatrix.fromMatrix(other_1);
    }
    return dart.global.DOMMatrix.fromMatrix();
  }
  [$invertSelf](...args) {
    return this.invertSelf.apply(this, args);
  }
  [$multiplySelf](other) {
    if (other === void 0) other = null;
    if (other != null) {
      let other_1 = html_common.convertDartToNative_Dictionary(other);
      return this[_multiplySelf_1](other_1);
    }
    return this[_multiplySelf_2]();
  }
  [_multiplySelf_1](...args) {
    return this.multiplySelf.apply(this, args);
  }
  [_multiplySelf_2](...args) {
    return this.multiplySelf.apply(this, args);
  }
  [$preMultiplySelf](other) {
    if (other === void 0) other = null;
    if (other != null) {
      let other_1 = html_common.convertDartToNative_Dictionary(other);
      return this[_preMultiplySelf_1](other_1);
    }
    return this[_preMultiplySelf_2]();
  }
  [_preMultiplySelf_1](...args) {
    return this.preMultiplySelf.apply(this, args);
  }
  [_preMultiplySelf_2](...args) {
    return this.preMultiplySelf.apply(this, args);
  }
  [$rotateAxisAngleSelf](...args) {
    return this.rotateAxisAngleSelf.apply(this, args);
  }
  [$rotateFromVectorSelf](...args) {
    return this.rotateFromVectorSelf.apply(this, args);
  }
  [$rotateSelf](...args) {
    return this.rotateSelf.apply(this, args);
  }
  [$scale3dSelf](...args) {
    return this.scale3dSelf.apply(this, args);
  }
  [$scaleSelf](...args) {
    return this.scaleSelf.apply(this, args);
  }
  [$setMatrixValue](...args) {
    return this.setMatrixValue.apply(this, args);
  }
  [$skewXSelf](...args) {
    return this.skewXSelf.apply(this, args);
  }
  [$skewYSelf](...args) {
    return this.skewYSelf.apply(this, args);
  }
  [$translateSelf](...args) {
    return this.translateSelf.apply(this, args);
  }
};
dart.addTypeTests(html$.DomMatrix);
dart.setMethodSignature(html$.DomMatrix, () => ({
  __proto__: dart.getMethods(html$.DomMatrix.__proto__),
  [$invertSelf]: dart.fnType(html$.DomMatrix, []),
  [$multiplySelf]: dart.fnType(html$.DomMatrix, [], [core.Map]),
  [_multiplySelf_1]: dart.fnType(html$.DomMatrix, [dart.dynamic]),
  [_multiplySelf_2]: dart.fnType(html$.DomMatrix, []),
  [$preMultiplySelf]: dart.fnType(html$.DomMatrix, [], [core.Map]),
  [_preMultiplySelf_1]: dart.fnType(html$.DomMatrix, [dart.dynamic]),
  [_preMultiplySelf_2]: dart.fnType(html$.DomMatrix, []),
  [$rotateAxisAngleSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num]),
  [$rotateFromVectorSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num]),
  [$rotateSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num]),
  [$scale3dSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num]),
  [$scaleSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$setMatrixValue]: dart.fnType(html$.DomMatrix, [core.String]),
  [$skewXSelf]: dart.fnType(html$.DomMatrix, [], [core.num]),
  [$skewYSelf]: dart.fnType(html$.DomMatrix, [], [core.num]),
  [$translateSelf]: dart.fnType(html$.DomMatrix, [], [core.num, core.num, core.num])
}));
dart.setSetterSignature(html$.DomMatrix, () => ({
  __proto__: dart.getSetters(html$.DomMatrix.__proto__),
  [$a]: core.num,
  [$b]: core.num,
  [$c]: core.num,
  [$d]: core.num,
  [$e]: core.num,
  [$f]: core.num,
  [$m11]: core.num,
  [$m12]: core.num,
  [$m13]: core.num,
  [$m14]: core.num,
  [$m21]: core.num,
  [$m22]: core.num,
  [$m23]: core.num,
  [$m24]: core.num,
  [$m31]: core.num,
  [$m32]: core.num,
  [$m33]: core.num,
  [$m34]: core.num,
  [$m41]: core.num,
  [$m42]: core.num,
  [$m43]: core.num,
  [$m44]: core.num
}));
dart.registerExtension("DOMMatrix", html$.DomMatrix);
html$.DomParser = class DomParser extends _interceptors.Interceptor {
  static new() {
    return html$.DomParser._create_1();
  }
  static _create_1() {
    return new DOMParser();
  }
  [$parseFromString](...args) {
    return this.parseFromString.apply(this, args);
  }
};
dart.addTypeTests(html$.DomParser);
dart.setMethodSignature(html$.DomParser, () => ({
  __proto__: dart.getMethods(html$.DomParser.__proto__),
  [$parseFromString]: dart.fnType(html$.Document, [core.String, core.String])
}));
dart.registerExtension("DOMParser", html$.DomParser);
const _matrixTransform_1 = Symbol('_matrixTransform_1');
const _matrixTransform_2 = Symbol('_matrixTransform_2');
html$.DomPointReadOnly = class DomPointReadOnly extends _interceptors.Interceptor {
  static new(x, y, z, w) {
    if (x === void 0) x = null;
    if (y === void 0) y = null;
    if (z === void 0) z = null;
    if (w === void 0) w = null;
    if (w != null) {
      return html$.DomPointReadOnly._create_1(x, y, z, w);
    }
    if (z != null) {
      return html$.DomPointReadOnly._create_2(x, y, z);
    }
    if (y != null) {
      return html$.DomPointReadOnly._create_3(x, y);
    }
    if (x != null) {
      return html$.DomPointReadOnly._create_4(x);
    }
    return html$.DomPointReadOnly._create_5();
  }
  static _create_1(x, y, z, w) {
    return new DOMPointReadOnly(x, y, z, w);
  }
  static _create_2(x, y, z) {
    return new DOMPointReadOnly(x, y, z);
  }
  static _create_3(x, y) {
    return new DOMPointReadOnly(x, y);
  }
  static _create_4(x) {
    return new DOMPointReadOnly(x);
  }
  static _create_5() {
    return new DOMPointReadOnly();
  }
  get [$w]() {
    return this.w;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$z]() {
    return this.z;
  }
  static fromPoint(other) {
    if (other === void 0) other = null;
    if (other != null) {
      let other_1 = html_common.convertDartToNative_Dictionary(other);
      return dart.global.DOMPointReadOnly.fromPoint(other_1);
    }
    return dart.global.DOMPointReadOnly.fromPoint();
  }
  [$matrixTransform](matrix) {
    if (matrix === void 0) matrix = null;
    if (matrix != null) {
      let matrix_1 = html_common.convertDartToNative_Dictionary(matrix);
      return this[_matrixTransform_1](matrix_1);
    }
    return this[_matrixTransform_2]();
  }
  [_matrixTransform_1](...args) {
    return this.matrixTransform.apply(this, args);
  }
  [_matrixTransform_2](...args) {
    return this.matrixTransform.apply(this, args);
  }
};
dart.addTypeTests(html$.DomPointReadOnly);
dart.setMethodSignature(html$.DomPointReadOnly, () => ({
  __proto__: dart.getMethods(html$.DomPointReadOnly.__proto__),
  [$matrixTransform]: dart.fnType(html$.DomPoint, [], [core.Map]),
  [_matrixTransform_1]: dart.fnType(html$.DomPoint, [dart.dynamic]),
  [_matrixTransform_2]: dart.fnType(html$.DomPoint, [])
}));
dart.setGetterSignature(html$.DomPointReadOnly, () => ({
  __proto__: dart.getGetters(html$.DomPointReadOnly.__proto__),
  [$w]: core.num,
  [$x]: core.num,
  [$y]: core.num,
  [$z]: core.num
}));
dart.registerExtension("DOMPointReadOnly", html$.DomPointReadOnly);
html$.DomPoint = class DomPoint extends html$.DomPointReadOnly {
  static new(x, y, z, w) {
    if (x === void 0) x = null;
    if (y === void 0) y = null;
    if (z === void 0) z = null;
    if (w === void 0) w = null;
    if (w != null) {
      return html$.DomPoint._create_1(x, y, z, w);
    }
    if (z != null) {
      return html$.DomPoint._create_2(x, y, z);
    }
    if (y != null) {
      return html$.DomPoint._create_3(x, y);
    }
    if (x != null) {
      return html$.DomPoint._create_4(x);
    }
    return html$.DomPoint._create_5();
  }
  static _create_1(x, y, z, w) {
    return new DOMPoint(x, y, z, w);
  }
  static _create_2(x, y, z) {
    return new DOMPoint(x, y, z);
  }
  static _create_3(x, y) {
    return new DOMPoint(x, y);
  }
  static _create_4(x) {
    return new DOMPoint(x);
  }
  static _create_5() {
    return new DOMPoint();
  }
  static get supported() {
    return !!window.DOMPoint || !!window.WebKitPoint;
  }
  get [$w]() {
    return this.w;
  }
  set [$w](value) {
    this.w = value;
  }
  get [$x]() {
    return this.x;
  }
  set [$x](value) {
    this.x = value;
  }
  get [$y]() {
    return this.y;
  }
  set [$y](value) {
    this.y = value;
  }
  get [$z]() {
    return this.z;
  }
  set [$z](value) {
    this.z = value;
  }
  static fromPoint(other) {
    if (other === void 0) other = null;
    if (other != null) {
      let other_1 = html_common.convertDartToNative_Dictionary(other);
      return dart.global.DOMPoint.fromPoint(other_1);
    }
    return dart.global.DOMPoint.fromPoint();
  }
};
dart.addTypeTests(html$.DomPoint);
dart.setSetterSignature(html$.DomPoint, () => ({
  __proto__: dart.getSetters(html$.DomPoint.__proto__),
  [$w]: core.num,
  [$x]: core.num,
  [$y]: core.num,
  [$z]: core.num
}));
dart.registerExtension("DOMPoint", html$.DomPoint);
html$.DomQuad = class DomQuad extends _interceptors.Interceptor {
  static new(p1, p2, p3, p4) {
    if (p1 === void 0) p1 = null;
    if (p2 === void 0) p2 = null;
    if (p3 === void 0) p3 = null;
    if (p4 === void 0) p4 = null;
    if (p4 != null) {
      let p1_1 = html_common.convertDartToNative_Dictionary(p1);
      let p2_2 = html_common.convertDartToNative_Dictionary(p2);
      let p3_3 = html_common.convertDartToNative_Dictionary(p3);
      let p4_4 = html_common.convertDartToNative_Dictionary(p4);
      return html$.DomQuad._create_1(p1_1, p2_2, p3_3, p4_4);
    }
    if (p3 != null) {
      let p1_1 = html_common.convertDartToNative_Dictionary(p1);
      let p2_2 = html_common.convertDartToNative_Dictionary(p2);
      let p3_3 = html_common.convertDartToNative_Dictionary(p3);
      return html$.DomQuad._create_2(p1_1, p2_2, p3_3);
    }
    if (p2 != null) {
      let p1_1 = html_common.convertDartToNative_Dictionary(p1);
      let p2_2 = html_common.convertDartToNative_Dictionary(p2);
      return html$.DomQuad._create_3(p1_1, p2_2);
    }
    if (p1 != null) {
      let p1_1 = html_common.convertDartToNative_Dictionary(p1);
      return html$.DomQuad._create_4(p1_1);
    }
    return html$.DomQuad._create_5();
  }
  static _create_1(p1, p2, p3, p4) {
    return new DOMQuad(p1, p2, p3, p4);
  }
  static _create_2(p1, p2, p3) {
    return new DOMQuad(p1, p2, p3);
  }
  static _create_3(p1, p2) {
    return new DOMQuad(p1, p2);
  }
  static _create_4(p1) {
    return new DOMQuad(p1);
  }
  static _create_5() {
    return new DOMQuad();
  }
  get [$p1]() {
    return this.p1;
  }
  get [$p2]() {
    return this.p2;
  }
  get [$p3]() {
    return this.p3;
  }
  get [$p4]() {
    return this.p4;
  }
  static fromQuad(other) {
    if (other === void 0) other = null;
    if (other != null) {
      let other_1 = html_common.convertDartToNative_Dictionary(other);
      return dart.global.DOMQuad.fromQuad(other_1);
    }
    return dart.global.DOMQuad.fromQuad();
  }
  static fromRect(other) {
    if (other === void 0) other = null;
    if (other != null) {
      let other_1 = html_common.convertDartToNative_Dictionary(other);
      return dart.global.DOMQuad.fromRect(other_1);
    }
    return dart.global.DOMQuad.fromRect();
  }
  [$getBounds](...args) {
    return this.getBounds.apply(this, args);
  }
};
dart.addTypeTests(html$.DomQuad);
const p1 = Symbol("DomQuad.p1");
const p2 = Symbol("DomQuad.p2");
const p3 = Symbol("DomQuad.p3");
const p4 = Symbol("DomQuad.p4");
dart.setMethodSignature(html$.DomQuad, () => ({
  __proto__: dart.getMethods(html$.DomQuad.__proto__),
  [$getBounds]: dart.fnType(math.Rectangle$(core.num), [])
}));
dart.setFieldSignature(html$.DomQuad, () => ({
  __proto__: dart.getFields(html$.DomQuad.__proto__),
  [$p1]: dart.finalFieldType(html$.DomPoint),
  [$p2]: dart.finalFieldType(html$.DomPoint),
  [$p3]: dart.finalFieldType(html$.DomPoint),
  [$p4]: dart.finalFieldType(html$.DomPoint)
}));
dart.registerExtension("DOMQuad", html$.DomQuad);
const _is_ImmutableListMixin_default = Symbol('_is_ImmutableListMixin_default');
html$.ImmutableListMixin$ = dart.generic(E => {
  let FixedSizeListIteratorOfE = () => (FixedSizeListIteratorOfE = dart.constFn(html$.FixedSizeListIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))();
  class ImmutableListMixin extends core.Object {
    get iterator() {
      return new (FixedSizeListIteratorOfE()).new(this);
    }
    [Symbol.iterator]() {
      return new dart.JsIterator(this[$iterator]);
    }
    add(value) {
      E._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot add to immutable List."));
    }
    addAll(iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot add to immutable List."));
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      dart.throw(new core.UnsupportedError.new("Cannot sort immutable List."));
    }
    shuffle(random) {
      if (random === void 0) random = null;
      dart.throw(new core.UnsupportedError.new("Cannot shuffle immutable List."));
    }
    insert(index, element) {
      E._check(element);
      dart.throw(new core.UnsupportedError.new("Cannot add to immutable List."));
    }
    insertAll(index, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot add to immutable List."));
    }
    setAll(index, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot modify an immutable List."));
    }
    removeAt(pos) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from immutable List."));
    }
    removeLast() {
      dart.throw(new core.UnsupportedError.new("Cannot remove from immutable List."));
    }
    remove(object) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from immutable List."));
    }
    removeWhere(test) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from immutable List."));
    }
    retainWhere(test) {
      dart.throw(new core.UnsupportedError.new("Cannot remove from immutable List."));
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      dart.throw(new core.UnsupportedError.new("Cannot setRange on immutable List."));
    }
    removeRange(start, end) {
      dart.throw(new core.UnsupportedError.new("Cannot removeRange on immutable List."));
    }
    replaceRange(start, end, iterable) {
      IterableOfE()._check(iterable);
      dart.throw(new core.UnsupportedError.new("Cannot modify an immutable List."));
    }
    fillRange(start, end, fillValue) {
      if (fillValue === void 0) fillValue = null;
      E._check(fillValue);
      dart.throw(new core.UnsupportedError.new("Cannot modify an immutable List."));
    }
  }
  (ImmutableListMixin.new = function() {
  }).prototype = ImmutableListMixin.prototype;
  ImmutableListMixin.prototype[dart.isList] = true;
  dart.addTypeTests(ImmutableListMixin);
  ImmutableListMixin.prototype[_is_ImmutableListMixin_default] = true;
  ImmutableListMixin[dart.implements] = () => [ListOfE()];
  dart.setMethodSignature(ImmutableListMixin, () => ({
    __proto__: dart.getMethods(ImmutableListMixin.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    [$add]: dart.fnType(dart.void, [core.Object]),
    addAll: dart.fnType(dart.void, [core.Object]),
    [$addAll]: dart.fnType(dart.void, [core.Object]),
    sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
    [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [E, E])]),
    shuffle: dart.fnType(dart.void, [], [math.Random]),
    [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
    insert: dart.fnType(dart.void, [core.int, core.Object]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    insertAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
    setAll: dart.fnType(dart.void, [core.int, core.Object]),
    [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
    removeAt: dart.fnType(E, [core.int]),
    [$removeAt]: dart.fnType(E, [core.int]),
    removeLast: dart.fnType(E, []),
    [$removeLast]: dart.fnType(E, []),
    remove: dart.fnType(core.bool, [core.Object]),
    [$remove]: dart.fnType(core.bool, [core.Object]),
    removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [E])]),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    removeRange: dart.fnType(dart.void, [core.int, core.int]),
    [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
    replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object])
  }));
  dart.setGetterSignature(ImmutableListMixin, () => ({
    __proto__: dart.getGetters(ImmutableListMixin.__proto__),
    iterator: core.Iterator$(E),
    [$iterator]: core.Iterator$(E)
  }));
  dart.defineExtensionMethods(ImmutableListMixin, [
    'add',
    'addAll',
    'sort',
    'shuffle',
    'insert',
    'insertAll',
    'setAll',
    'removeAt',
    'removeLast',
    'remove',
    'removeWhere',
    'retainWhere',
    'setRange',
    'removeRange',
    'replaceRange',
    'fillRange'
  ]);
  dart.defineExtensionAccessors(ImmutableListMixin, ['iterator']);
  return ImmutableListMixin;
});
html$.ImmutableListMixin = html$.ImmutableListMixin$();
dart.addTypeTests(html$.ImmutableListMixin, _is_ImmutableListMixin_default);
const Interceptor_ListMixin$ = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$.new = function() {
  Interceptor_ListMixin$.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$.prototype;
dart.applyMixin(Interceptor_ListMixin$, collection.ListMixin$(math.Rectangle$(core.num)));
const Interceptor_ImmutableListMixin$ = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$ {};
(Interceptor_ImmutableListMixin$.new = function() {
  Interceptor_ImmutableListMixin$.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$, html$.ImmutableListMixin$(math.Rectangle$(core.num)));
html$.DomRectList = class DomRectList extends Interceptor_ImmutableListMixin$ {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    RectangleOfnum()._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
html$.DomRectList.prototype[dart.isList] = true;
dart.addTypeTests(html$.DomRectList);
html$.DomRectList[dart.implements] = () => [ListOfRectangleOfnum(), JavaScriptIndexingBehaviorOfRectangleOfnum()];
dart.setMethodSignature(html$.DomRectList, () => ({
  __proto__: dart.getMethods(html$.DomRectList.__proto__),
  [$_get]: dart.fnType(math.Rectangle$(core.num), [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(math.Rectangle$(core.num), [core.int]),
  [$item]: dart.fnType(math.Rectangle$(core.num), [core.int])
}));
dart.setGetterSignature(html$.DomRectList, () => ({
  __proto__: dart.getGetters(html$.DomRectList.__proto__),
  [$length]: core.int,
  [$first]: math.Rectangle$(core.num),
  [$last]: math.Rectangle$(core.num),
  [$single]: math.Rectangle$(core.num)
}));
dart.setSetterSignature(html$.DomRectList, () => ({
  __proto__: dart.getSetters(html$.DomRectList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("ClientRectList", html$.DomRectList);
dart.registerExtension("DOMRectList", html$.DomRectList);
html$.DomRectReadOnly = class DomRectReadOnly extends _interceptors.Interceptor {
  [$toString]() {
    return "Rectangle (" + dart.str(this[$left]) + ", " + dart.str(this[$top]) + ") " + dart.str(this[$width]) + " x " + dart.str(this[$height]);
  }
  [$_equals](other) {
    if (!RectangleOfnum().is(other)) return false;
    return core.identical(this[$left], dart.dload(other, 'left')) && core.identical(this[$top], dart.dload(other, 'top')) && core.identical(this[$width], dart.dload(other, 'width')) && core.identical(this[$height], dart.dload(other, 'height'));
  }
  get [$hashCode]() {
    return html$._JenkinsSmiHash.hash4(dart.hashCode(this[$left]), dart.hashCode(this[$top]), dart.hashCode(this[$width]), dart.hashCode(this[$height]));
  }
  [$intersection](other) {
    let x0 = math.max(core.num, this[$left], other[$left]);
    let x1 = math.min(core.num, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
    if (x0 <= x1) {
      let y0 = math.max(core.num, this[$top], other[$top]);
      let y1 = math.min(core.num, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
      if (y0 <= y1) {
        return new (RectangleOfnum()).new(x0, y0, x1 - x0, y1 - y0);
      }
    }
    return null;
  }
  [$intersects](other) {
    return dart.notNull(this[$left]) <= dart.notNull(other[$left]) + dart.notNull(other[$width]) && dart.notNull(other[$left]) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(this[$top]) <= dart.notNull(other[$top]) + dart.notNull(other[$height]) && dart.notNull(other[$top]) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
  }
  [$boundingBox](other) {
    let right = math.max(core.num, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
    let bottom = math.max(core.num, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
    let left = math.min(core.num, this[$left], other[$left]);
    let top = math.min(core.num, this[$top], other[$top]);
    return new (RectangleOfnum()).new(left, top, right - left, bottom - top);
  }
  [$containsRectangle](another) {
    return dart.notNull(this[$left]) <= dart.notNull(another[$left]) && dart.notNull(this[$left]) + dart.notNull(this[$width]) >= dart.notNull(another[$left]) + dart.notNull(another[$width]) && dart.notNull(this[$top]) <= dart.notNull(another[$top]) && dart.notNull(this[$top]) + dart.notNull(this[$height]) >= dart.notNull(another[$top]) + dart.notNull(another[$height]);
  }
  [$containsPoint](another) {
    return dart.notNull(another.x) >= dart.notNull(this[$left]) && dart.notNull(another.x) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(another.y) >= dart.notNull(this[$top]) && dart.notNull(another.y) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
  }
  get [$topLeft]() {
    return new (PointOfnum()).new(this[$left], this[$top]);
  }
  get [$topRight]() {
    return new (PointOfnum()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), this[$top]);
  }
  get [$bottomRight]() {
    return new (PointOfnum()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(this[$top]) + dart.notNull(this[$height]));
  }
  get [$bottomLeft]() {
    return new (PointOfnum()).new(this[$left], dart.notNull(this[$top]) + dart.notNull(this[$height]));
  }
  static new(x, y, width, height) {
    if (x === void 0) x = null;
    if (y === void 0) y = null;
    if (width === void 0) width = null;
    if (height === void 0) height = null;
    if (height != null) {
      return html$.DomRectReadOnly._create_1(x, y, width, height);
    }
    if (width != null) {
      return html$.DomRectReadOnly._create_2(x, y, width);
    }
    if (y != null) {
      return html$.DomRectReadOnly._create_3(x, y);
    }
    if (x != null) {
      return html$.DomRectReadOnly._create_4(x);
    }
    return html$.DomRectReadOnly._create_5();
  }
  static _create_1(x, y, width, height) {
    return new DOMRectReadOnly(x, y, width, height);
  }
  static _create_2(x, y, width) {
    return new DOMRectReadOnly(x, y, width);
  }
  static _create_3(x, y) {
    return new DOMRectReadOnly(x, y);
  }
  static _create_4(x) {
    return new DOMRectReadOnly(x);
  }
  static _create_5() {
    return new DOMRectReadOnly();
  }
  get [$bottom]() {
    return this.bottom;
  }
  get [$height]() {
    return this.height;
  }
  get [$left]() {
    return this.left;
  }
  get [$right]() {
    return this.right;
  }
  get [$top]() {
    return this.top;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  static fromRect(other) {
    if (other === void 0) other = null;
    if (other != null) {
      let other_1 = html_common.convertDartToNative_Dictionary(other);
      return dart.global.DOMRectReadOnly.fromRect(other_1);
    }
    return dart.global.DOMRectReadOnly.fromRect();
  }
};
dart.addTypeTests(html$.DomRectReadOnly);
html$.DomRectReadOnly[dart.implements] = () => [RectangleOfnum()];
dart.setMethodSignature(html$.DomRectReadOnly, () => ({
  __proto__: dart.getMethods(html$.DomRectReadOnly.__proto__),
  [$intersection]: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
  [$intersects]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
  [$boundingBox]: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
  [$containsRectangle]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
  [$containsPoint]: dart.fnType(core.bool, [math.Point$(core.num)])
}));
dart.setGetterSignature(html$.DomRectReadOnly, () => ({
  __proto__: dart.getGetters(html$.DomRectReadOnly.__proto__),
  [$topLeft]: math.Point$(core.num),
  [$topRight]: math.Point$(core.num),
  [$bottomRight]: math.Point$(core.num),
  [$bottomLeft]: math.Point$(core.num),
  [$bottom]: core.num,
  [$height]: core.num,
  [$left]: core.num,
  [$right]: core.num,
  [$top]: core.num,
  [$width]: core.num,
  [$x]: core.num,
  [$y]: core.num
}));
dart.registerExtension("DOMRectReadOnly", html$.DomRectReadOnly);
const Interceptor_ListMixin$$ = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$.new = function() {
  Interceptor_ListMixin$$.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$.prototype;
dart.applyMixin(Interceptor_ListMixin$$, collection.ListMixin$(core.String));
const Interceptor_ImmutableListMixin$$ = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$ {};
(Interceptor_ImmutableListMixin$$.new = function() {
  Interceptor_ImmutableListMixin$$.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$, html$.ImmutableListMixin$(core.String));
html$.DomStringList = class DomStringList extends Interceptor_ImmutableListMixin$$ {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    core.String._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
html$.DomStringList.prototype[dart.isList] = true;
dart.addTypeTests(html$.DomStringList);
html$.DomStringList[dart.implements] = () => [JavaScriptIndexingBehaviorOfString(), ListOfString()];
dart.setMethodSignature(html$.DomStringList, () => ({
  __proto__: dart.getMethods(html$.DomStringList.__proto__),
  [$_get]: dart.fnType(core.String, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(core.String, [core.int]),
  [$item]: dart.fnType(core.String, [core.int])
}));
dart.setGetterSignature(html$.DomStringList, () => ({
  __proto__: dart.getGetters(html$.DomStringList.__proto__),
  [$length]: core.int,
  [$first]: core.String,
  [$last]: core.String,
  [$single]: core.String
}));
dart.setSetterSignature(html$.DomStringList, () => ({
  __proto__: dart.getSetters(html$.DomStringList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("DOMStringList", html$.DomStringList);
const __delete__ = Symbol('__delete__');
html$.DomStringMap = class DomStringMap extends _interceptors.Interceptor {
  [__delete__](...args) {
    return this.__delete__.apply(this, args);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
dart.addTypeTests(html$.DomStringMap);
dart.setMethodSignature(html$.DomStringMap, () => ({
  __proto__: dart.getMethods(html$.DomStringMap.__proto__),
  [__delete__]: dart.fnType(dart.void, [core.String]),
  [__setter__]: dart.fnType(dart.void, [core.String, core.String]),
  [$item]: dart.fnType(core.String, [core.String])
}));
dart.registerExtension("DOMStringMap", html$.DomStringMap);
html$.DomTokenList = class DomTokenList extends _interceptors.Interceptor {
  get [$length]() {
    return this.length;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
  [$add](...args) {
    return this.add.apply(this, args);
  }
  [$contains](...args) {
    return this.contains.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$remove](...args) {
    return this.remove.apply(this, args);
  }
  [$replace](...args) {
    return this.replace.apply(this, args);
  }
  [$supports](...args) {
    return this.supports.apply(this, args);
  }
  [$toggle](...args) {
    return this.toggle.apply(this, args);
  }
};
dart.addTypeTests(html$.DomTokenList);
const length$6 = Symbol("DomTokenList.length");
const value$5 = Symbol("DomTokenList.value");
dart.setMethodSignature(html$.DomTokenList, () => ({
  __proto__: dart.getMethods(html$.DomTokenList.__proto__),
  [$add]: dart.fnType(dart.void, [core.String]),
  [$contains]: dart.fnType(core.bool, [core.String]),
  [$item]: dart.fnType(core.String, [core.int]),
  [$remove]: dart.fnType(dart.void, [core.String]),
  [$replace]: dart.fnType(dart.void, [core.String, core.String]),
  [$supports]: dart.fnType(core.bool, [core.String]),
  [$toggle]: dart.fnType(core.bool, [core.String], [core.bool])
}));
dart.setFieldSignature(html$.DomTokenList, () => ({
  __proto__: dart.getFields(html$.DomTokenList.__proto__),
  [$length]: dart.finalFieldType(core.int),
  [$value]: dart.fieldType(core.String)
}));
dart.registerExtension("DOMTokenList", html$.DomTokenList);
const _childElements = Symbol('_childElements');
const _element$ = Symbol('_element');
const _filter$0 = Symbol('_filter');
html$._ChildrenElementList = class _ChildrenElementList extends collection.ListBase$(html$.Element) {
  contains(element) {
    return this[_childElements][$contains](element);
  }
  get isEmpty() {
    return this[_element$][_firstElementChild] == null;
  }
  get length() {
    return this[_childElements][$length];
  }
  _get(index) {
    return html$.Element._check(this[_childElements][$_get](index));
  }
  _set(index, value) {
    html$.Element._check(value);
    this[_element$][_replaceChild](value, this[_childElements][$_get](index));
    return value;
  }
  set length(newLength) {
    dart.throw(new core.UnsupportedError.new("Cannot resize element lists"));
  }
  add(value) {
    html$.Element._check(value);
    this[_element$][$append](value);
    return value;
  }
  get iterator() {
    return this[$toList]()[$iterator];
  }
  addAll(iterable) {
    IterableOfElement()._check(iterable);
    if (html$._ChildNodeListLazy.is(iterable)) {
      iterable = ListOfElement().from(iterable);
    }
    for (let element of iterable) {
      this[_element$][$append](element);
    }
  }
  sort(compare) {
    if (compare === void 0) compare = null;
    dart.throw(new core.UnsupportedError.new("Cannot sort element lists"));
  }
  shuffle(random) {
    if (random === void 0) random = null;
    dart.throw(new core.UnsupportedError.new("Cannot shuffle element lists"));
  }
  removeWhere(test) {
    this[_filter$0](test, false);
  }
  retainWhere(test) {
    this[_filter$0](test, true);
  }
  [_filter$0](test, retainMatching) {
    let removed = null;
    if (dart.test(retainMatching)) {
      removed = this[_element$][$children][$where](dart.fn(e => !dart.test(test(e)), ElementTobool()));
    } else {
      removed = this[_element$][$children][$where](test);
    }
    for (let e of core.Iterable._check(removed))
      dart.dsend(e, 'remove', []);
  }
  fillRange(start, end, fillValue) {
    if (fillValue === void 0) fillValue = null;
    html$.Element._check(fillValue);
    dart.throw(new core.UnimplementedError.new());
  }
  replaceRange(start, end, iterable) {
    IterableOfElement()._check(iterable);
    dart.throw(new core.UnimplementedError.new());
  }
  removeRange(start, end) {
    dart.throw(new core.UnimplementedError.new());
  }
  setRange(start, end, iterable, skipCount) {
    IterableOfElement()._check(iterable);
    if (skipCount === void 0) skipCount = 0;
    dart.throw(new core.UnimplementedError.new());
  }
  remove(object) {
    if (html$.Element.is(object)) {
      let element = object;
      if (element.parentNode == this[_element$]) {
        this[_element$][_removeChild](element);
        return true;
      }
    }
    return false;
  }
  insert(index, element) {
    html$.Element._check(element);
    if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this.length)) {
      dart.throw(new core.RangeError.range(index, 0, this.length));
    }
    if (index == this.length) {
      this[_element$][$append](element);
    } else {
      this[_element$].insertBefore(element, this._get(index));
    }
  }
  setAll(index, iterable) {
    IterableOfElement()._check(iterable);
    dart.throw(new core.UnimplementedError.new());
  }
  clear() {
    this[_element$][_clearChildren]();
  }
  removeAt(index) {
    let result = this._get(index);
    if (result != null) {
      this[_element$][_removeChild](result);
    }
    return result;
  }
  removeLast() {
    let result = this.last;
    if (result != null) {
      this[_element$][_removeChild](result);
    }
    return result;
  }
  get first() {
    let result = this[_element$][_firstElementChild];
    if (result == null) dart.throw(new core.StateError.new("No elements"));
    return result;
  }
  set first(value) {
    super.first = value;
  }
  get last() {
    let result = this[_element$][_lastElementChild];
    if (result == null) dart.throw(new core.StateError.new("No elements"));
    return result;
  }
  set last(value) {
    super.last = value;
  }
  get single() {
    if (dart.notNull(this.length) > 1) dart.throw(new core.StateError.new("More than one element"));
    return this.first;
  }
  get rawList() {
    return this[_childElements];
  }
};
(html$._ChildrenElementList._wrap = function(element) {
  this[_childElements] = html$.HtmlCollection._check(element[_children]);
  this[_element$] = element;
}).prototype = html$._ChildrenElementList.prototype;
dart.addTypeTests(html$._ChildrenElementList);
html$._ChildrenElementList[dart.implements] = () => [html_common.NodeListWrapper];
dart.setMethodSignature(html$._ChildrenElementList, () => ({
  __proto__: dart.getMethods(html$._ChildrenElementList.__proto__),
  contains: dart.fnType(core.bool, [core.Object]),
  [$contains]: dart.fnType(core.bool, [core.Object]),
  _get: dart.fnType(html$.Element, [core.int]),
  [$_get]: dart.fnType(html$.Element, [core.int]),
  _set: dart.fnType(dart.void, [core.int, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  add: dart.fnType(html$.Element, [core.Object]),
  [$add]: dart.fnType(html$.Element, [core.Object]),
  addAll: dart.fnType(dart.void, [core.Object]),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Element, html$.Element])]),
  [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Element, html$.Element])]),
  shuffle: dart.fnType(dart.void, [], [math.Random]),
  [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
  removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Element])]),
  [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Element])]),
  retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Element])]),
  [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Element])]),
  [_filter$0]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Element]), core.bool]),
  fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
  [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
  replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
  [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
  removeRange: dart.fnType(dart.void, [core.int, core.int]),
  [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
  setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
  [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
  remove: dart.fnType(core.bool, [core.Object]),
  [$remove]: dart.fnType(core.bool, [core.Object]),
  insert: dart.fnType(dart.void, [core.int, core.Object]),
  [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
  setAll: dart.fnType(dart.void, [core.int, core.Object]),
  [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
  clear: dart.fnType(dart.void, []),
  [$clear]: dart.fnType(dart.void, []),
  removeAt: dart.fnType(html$.Element, [core.int]),
  [$removeAt]: dart.fnType(html$.Element, [core.int]),
  removeLast: dart.fnType(html$.Element, []),
  [$removeLast]: dart.fnType(html$.Element, [])
}));
dart.setGetterSignature(html$._ChildrenElementList, () => ({
  __proto__: dart.getGetters(html$._ChildrenElementList.__proto__),
  isEmpty: core.bool,
  [$isEmpty]: core.bool,
  length: core.int,
  [$length]: core.int,
  iterator: core.Iterator$(html$.Element),
  [$iterator]: core.Iterator$(html$.Element),
  first: html$.Element,
  [$first]: html$.Element,
  last: html$.Element,
  [$last]: html$.Element,
  single: html$.Element,
  [$single]: html$.Element,
  rawList: core.List$(html$.Node)
}));
dart.setSetterSignature(html$._ChildrenElementList, () => ({
  __proto__: dart.getSetters(html$._ChildrenElementList.__proto__),
  length: core.int,
  [$length]: core.int
}));
dart.setFieldSignature(html$._ChildrenElementList, () => ({
  __proto__: dart.getFields(html$._ChildrenElementList.__proto__),
  [_element$]: dart.finalFieldType(html$.Element),
  [_childElements]: dart.finalFieldType(html$.HtmlCollection)
}));
dart.defineExtensionMethods(html$._ChildrenElementList, [
  'contains',
  '_get',
  '_set',
  'add',
  'addAll',
  'sort',
  'shuffle',
  'removeWhere',
  'retainWhere',
  'fillRange',
  'replaceRange',
  'removeRange',
  'setRange',
  'remove',
  'insert',
  'setAll',
  'clear',
  'removeAt',
  'removeLast'
]);
dart.defineExtensionAccessors(html$._ChildrenElementList, [
  'isEmpty',
  'length',
  'iterator',
  'first',
  'last',
  'single'
]);
const _is_ElementList_default = Symbol('_is_ElementList_default');
html$.ElementList$ = dart.generic(T => {
  class ElementList extends collection.ListBase$(T) {}
  (ElementList.new = function() {
  }).prototype = ElementList.prototype;
  dart.addTypeTests(ElementList);
  ElementList.prototype[_is_ElementList_default] = true;
  return ElementList;
});
html$.ElementList = html$.ElementList$();
dart.addTypeTests(html$.ElementList, _is_ElementList_default);
const _nodeList = Symbol('_nodeList');
const _forElementList = Symbol('_forElementList');
const _is__FrozenElementList_default = Symbol('_is__FrozenElementList_default');
html$._FrozenElementList$ = dart.generic(E => {
  let EToIterableOfString = () => (EToIterableOfString = dart.constFn(dart.fnType(IterableOfString(), [E])))();
  let ElementListOfE = () => (ElementListOfE = dart.constFn(html$.ElementList$(E)))();
  class _FrozenElementList extends collection.ListBase$(E) {
    get length() {
      return this[_nodeList][$length];
    }
    _get(index) {
      return E._check(this[_nodeList][$_get](index));
    }
    _set(index, value) {
      E._check(value);
      dart.throw(new core.UnsupportedError.new("Cannot modify list"));
      return value;
    }
    set length(newLength) {
      dart.throw(new core.UnsupportedError.new("Cannot modify list"));
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      dart.throw(new core.UnsupportedError.new("Cannot sort list"));
    }
    shuffle(random) {
      if (random === void 0) random = null;
      dart.throw(new core.UnsupportedError.new("Cannot shuffle list"));
    }
    get first() {
      return E._check(this[_nodeList][$first]);
    }
    set first(value) {
      super.first = value;
    }
    get last() {
      return E._check(this[_nodeList][$last]);
    }
    set last(value) {
      super.last = value;
    }
    get single() {
      return E._check(this[_nodeList][$single]);
    }
    get classes() {
      return html$._MultiElementCssClassSet.new(this);
    }
    get style() {
      return new html$._CssStyleDeclarationSet.new(this);
    }
    set classes(value) {
      this[$forEach](dart.fn(e => e[$classes] = value, EToIterableOfString()));
    }
    get contentEdge() {
      return new html$._ContentCssListRect.new(this);
    }
    get paddingEdge() {
      return this.first[$paddingEdge];
    }
    get borderEdge() {
      return this.first[$borderEdge];
    }
    get marginEdge() {
      return this.first[$marginEdge];
    }
    get rawList() {
      return this[_nodeList];
    }
    get onAbort() {
      return html$.Element.abortEvent[_forElementList](this);
    }
    get onBeforeCopy() {
      return html$.Element.beforeCopyEvent[_forElementList](this);
    }
    get onBeforeCut() {
      return html$.Element.beforeCutEvent[_forElementList](this);
    }
    get onBeforePaste() {
      return html$.Element.beforePasteEvent[_forElementList](this);
    }
    get onBlur() {
      return html$.Element.blurEvent[_forElementList](this);
    }
    get onCanPlay() {
      return html$.Element.canPlayEvent[_forElementList](this);
    }
    get onCanPlayThrough() {
      return html$.Element.canPlayThroughEvent[_forElementList](this);
    }
    get onChange() {
      return html$.Element.changeEvent[_forElementList](this);
    }
    get onClick() {
      return html$.Element.clickEvent[_forElementList](this);
    }
    get onContextMenu() {
      return html$.Element.contextMenuEvent[_forElementList](this);
    }
    get onCopy() {
      return html$.Element.copyEvent[_forElementList](this);
    }
    get onCut() {
      return html$.Element.cutEvent[_forElementList](this);
    }
    get onDoubleClick() {
      return html$.Element.doubleClickEvent[_forElementList](this);
    }
    get onDrag() {
      return html$.Element.dragEvent[_forElementList](this);
    }
    get onDragEnd() {
      return html$.Element.dragEndEvent[_forElementList](this);
    }
    get onDragEnter() {
      return html$.Element.dragEnterEvent[_forElementList](this);
    }
    get onDragLeave() {
      return html$.Element.dragLeaveEvent[_forElementList](this);
    }
    get onDragOver() {
      return html$.Element.dragOverEvent[_forElementList](this);
    }
    get onDragStart() {
      return html$.Element.dragStartEvent[_forElementList](this);
    }
    get onDrop() {
      return html$.Element.dropEvent[_forElementList](this);
    }
    get onDurationChange() {
      return html$.Element.durationChangeEvent[_forElementList](this);
    }
    get onEmptied() {
      return html$.Element.emptiedEvent[_forElementList](this);
    }
    get onEnded() {
      return html$.Element.endedEvent[_forElementList](this);
    }
    get onError() {
      return html$.Element.errorEvent[_forElementList](this);
    }
    get onFocus() {
      return html$.Element.focusEvent[_forElementList](this);
    }
    get onInput() {
      return html$.Element.inputEvent[_forElementList](this);
    }
    get onInvalid() {
      return html$.Element.invalidEvent[_forElementList](this);
    }
    get onKeyDown() {
      return html$.Element.keyDownEvent[_forElementList](this);
    }
    get onKeyPress() {
      return html$.Element.keyPressEvent[_forElementList](this);
    }
    get onKeyUp() {
      return html$.Element.keyUpEvent[_forElementList](this);
    }
    get onLoad() {
      return html$.Element.loadEvent[_forElementList](this);
    }
    get onLoadedData() {
      return html$.Element.loadedDataEvent[_forElementList](this);
    }
    get onLoadedMetadata() {
      return html$.Element.loadedMetadataEvent[_forElementList](this);
    }
    get onMouseDown() {
      return html$.Element.mouseDownEvent[_forElementList](this);
    }
    get onMouseEnter() {
      return html$.Element.mouseEnterEvent[_forElementList](this);
    }
    get onMouseLeave() {
      return html$.Element.mouseLeaveEvent[_forElementList](this);
    }
    get onMouseMove() {
      return html$.Element.mouseMoveEvent[_forElementList](this);
    }
    get onMouseOut() {
      return html$.Element.mouseOutEvent[_forElementList](this);
    }
    get onMouseOver() {
      return html$.Element.mouseOverEvent[_forElementList](this);
    }
    get onMouseUp() {
      return html$.Element.mouseUpEvent[_forElementList](this);
    }
    get onMouseWheel() {
      return html$.Element.mouseWheelEvent[_forElementList](this);
    }
    get onPaste() {
      return html$.Element.pasteEvent[_forElementList](this);
    }
    get onPause() {
      return html$.Element.pauseEvent[_forElementList](this);
    }
    get onPlay() {
      return html$.Element.playEvent[_forElementList](this);
    }
    get onPlaying() {
      return html$.Element.playingEvent[_forElementList](this);
    }
    get onRateChange() {
      return html$.Element.rateChangeEvent[_forElementList](this);
    }
    get onReset() {
      return html$.Element.resetEvent[_forElementList](this);
    }
    get onResize() {
      return html$.Element.resizeEvent[_forElementList](this);
    }
    get onScroll() {
      return html$.Element.scrollEvent[_forElementList](this);
    }
    get onSearch() {
      return html$.Element.searchEvent[_forElementList](this);
    }
    get onSeeked() {
      return html$.Element.seekedEvent[_forElementList](this);
    }
    get onSeeking() {
      return html$.Element.seekingEvent[_forElementList](this);
    }
    get onSelect() {
      return html$.Element.selectEvent[_forElementList](this);
    }
    get onSelectStart() {
      return html$.Element.selectStartEvent[_forElementList](this);
    }
    get onStalled() {
      return html$.Element.stalledEvent[_forElementList](this);
    }
    get onSubmit() {
      return html$.Element.submitEvent[_forElementList](this);
    }
    get onSuspend() {
      return html$.Element.suspendEvent[_forElementList](this);
    }
    get onTimeUpdate() {
      return html$.Element.timeUpdateEvent[_forElementList](this);
    }
    get onTouchCancel() {
      return html$.Element.touchCancelEvent[_forElementList](this);
    }
    get onTouchEnd() {
      return html$.Element.touchEndEvent[_forElementList](this);
    }
    get onTouchEnter() {
      return html$.Element.touchEnterEvent[_forElementList](this);
    }
    get onTouchLeave() {
      return html$.Element.touchLeaveEvent[_forElementList](this);
    }
    get onTouchMove() {
      return html$.Element.touchMoveEvent[_forElementList](this);
    }
    get onTouchStart() {
      return html$.Element.touchStartEvent[_forElementList](this);
    }
    get onTransitionEnd() {
      return html$.Element.transitionEndEvent[_forElementList](this);
    }
    get onVolumeChange() {
      return html$.Element.volumeChangeEvent[_forElementList](this);
    }
    get onWaiting() {
      return html$.Element.waitingEvent[_forElementList](this);
    }
    get onFullscreenChange() {
      return html$.Element.fullscreenChangeEvent[_forElementList](this);
    }
    get onFullscreenError() {
      return html$.Element.fullscreenErrorEvent[_forElementList](this);
    }
    get onWheel() {
      return html$.Element.wheelEvent[_forElementList](this);
    }
  }
  (_FrozenElementList._wrap = function(nodeList) {
    this[_nodeList] = nodeList;
    if (!dart.test(this[_nodeList][$every](dart.fn(element => E.is(element), NodeTobool())))) dart.assertFailed("Query expects only HTML elements of type " + dart.str(dart.wrapType(E)) + " but found " + dart.str(this[_nodeList][$firstWhere](dart.fn(e => !E.is(e), NodeTobool()))));
  }).prototype = _FrozenElementList.prototype;
  dart.addTypeTests(_FrozenElementList);
  _FrozenElementList.prototype[_is__FrozenElementList_default] = true;
  _FrozenElementList[dart.implements] = () => [ElementListOfE(), html_common.NodeListWrapper];
  dart.setMethodSignature(_FrozenElementList, () => ({
    __proto__: dart.getMethods(_FrozenElementList.__proto__),
    _get: dart.fnType(E, [core.int]),
    [$_get]: dart.fnType(E, [core.int]),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object])
  }));
  dart.setGetterSignature(_FrozenElementList, () => ({
    __proto__: dart.getGetters(_FrozenElementList.__proto__),
    length: core.int,
    [$length]: core.int,
    classes: html$.CssClassSet,
    style: html$.CssStyleDeclarationBase,
    contentEdge: html$.CssRect,
    paddingEdge: html$.CssRect,
    borderEdge: html$.CssRect,
    marginEdge: html$.CssRect,
    rawList: core.List$(html$.Node),
    onAbort: html$.ElementStream$(html$.Event),
    onBeforeCopy: html$.ElementStream$(html$.Event),
    onBeforeCut: html$.ElementStream$(html$.Event),
    onBeforePaste: html$.ElementStream$(html$.Event),
    onBlur: html$.ElementStream$(html$.Event),
    onCanPlay: html$.ElementStream$(html$.Event),
    onCanPlayThrough: html$.ElementStream$(html$.Event),
    onChange: html$.ElementStream$(html$.Event),
    onClick: html$.ElementStream$(html$.MouseEvent),
    onContextMenu: html$.ElementStream$(html$.MouseEvent),
    onCopy: html$.ElementStream$(html$.ClipboardEvent),
    onCut: html$.ElementStream$(html$.ClipboardEvent),
    onDoubleClick: html$.ElementStream$(html$.Event),
    onDrag: html$.ElementStream$(html$.MouseEvent),
    onDragEnd: html$.ElementStream$(html$.MouseEvent),
    onDragEnter: html$.ElementStream$(html$.MouseEvent),
    onDragLeave: html$.ElementStream$(html$.MouseEvent),
    onDragOver: html$.ElementStream$(html$.MouseEvent),
    onDragStart: html$.ElementStream$(html$.MouseEvent),
    onDrop: html$.ElementStream$(html$.MouseEvent),
    onDurationChange: html$.ElementStream$(html$.Event),
    onEmptied: html$.ElementStream$(html$.Event),
    onEnded: html$.ElementStream$(html$.Event),
    onError: html$.ElementStream$(html$.Event),
    onFocus: html$.ElementStream$(html$.Event),
    onInput: html$.ElementStream$(html$.Event),
    onInvalid: html$.ElementStream$(html$.Event),
    onKeyDown: html$.ElementStream$(html$.KeyboardEvent),
    onKeyPress: html$.ElementStream$(html$.KeyboardEvent),
    onKeyUp: html$.ElementStream$(html$.KeyboardEvent),
    onLoad: html$.ElementStream$(html$.Event),
    onLoadedData: html$.ElementStream$(html$.Event),
    onLoadedMetadata: html$.ElementStream$(html$.Event),
    onMouseDown: html$.ElementStream$(html$.MouseEvent),
    onMouseEnter: html$.ElementStream$(html$.MouseEvent),
    onMouseLeave: html$.ElementStream$(html$.MouseEvent),
    onMouseMove: html$.ElementStream$(html$.MouseEvent),
    onMouseOut: html$.ElementStream$(html$.MouseEvent),
    onMouseOver: html$.ElementStream$(html$.MouseEvent),
    onMouseUp: html$.ElementStream$(html$.MouseEvent),
    onMouseWheel: html$.ElementStream$(html$.WheelEvent),
    onPaste: html$.ElementStream$(html$.ClipboardEvent),
    onPause: html$.ElementStream$(html$.Event),
    onPlay: html$.ElementStream$(html$.Event),
    onPlaying: html$.ElementStream$(html$.Event),
    onRateChange: html$.ElementStream$(html$.Event),
    onReset: html$.ElementStream$(html$.Event),
    onResize: html$.ElementStream$(html$.Event),
    onScroll: html$.ElementStream$(html$.Event),
    onSearch: html$.ElementStream$(html$.Event),
    onSeeked: html$.ElementStream$(html$.Event),
    onSeeking: html$.ElementStream$(html$.Event),
    onSelect: html$.ElementStream$(html$.Event),
    onSelectStart: html$.ElementStream$(html$.Event),
    onStalled: html$.ElementStream$(html$.Event),
    onSubmit: html$.ElementStream$(html$.Event),
    onSuspend: html$.ElementStream$(html$.Event),
    onTimeUpdate: html$.ElementStream$(html$.Event),
    onTouchCancel: html$.ElementStream$(html$.TouchEvent),
    onTouchEnd: html$.ElementStream$(html$.TouchEvent),
    onTouchEnter: html$.ElementStream$(html$.TouchEvent),
    onTouchLeave: html$.ElementStream$(html$.TouchEvent),
    onTouchMove: html$.ElementStream$(html$.TouchEvent),
    onTouchStart: html$.ElementStream$(html$.TouchEvent),
    onTransitionEnd: html$.ElementStream$(html$.TransitionEvent),
    onVolumeChange: html$.ElementStream$(html$.Event),
    onWaiting: html$.ElementStream$(html$.Event),
    onFullscreenChange: html$.ElementStream$(html$.Event),
    onFullscreenError: html$.ElementStream$(html$.Event),
    onWheel: html$.ElementStream$(html$.WheelEvent)
  }));
  dart.setSetterSignature(_FrozenElementList, () => ({
    __proto__: dart.getSetters(_FrozenElementList.__proto__),
    length: core.int,
    [$length]: core.int,
    classes: core.Iterable$(core.String)
  }));
  dart.setFieldSignature(_FrozenElementList, () => ({
    __proto__: dart.getFields(_FrozenElementList.__proto__),
    [_nodeList]: dart.finalFieldType(ListOfNode())
  }));
  dart.defineExtensionMethods(_FrozenElementList, ['_get', '_set', 'sort', 'shuffle']);
  dart.defineExtensionAccessors(_FrozenElementList, ['length', 'first', 'last', 'single']);
  return _FrozenElementList;
});
html$._FrozenElementList = html$._FrozenElementList$();
dart.addTypeTests(html$._FrozenElementList, _is__FrozenElementList_default);
html$._ElementFactoryProvider = class _ElementFactoryProvider extends core.Object {
  static createElement_tag(tag, typeExtension) {
    if (typeExtension != null) {
      return document.createElement(tag, typeExtension);
    }
    return document.createElement(tag);
  }
};
(html$._ElementFactoryProvider.new = function() {
}).prototype = html$._ElementFactoryProvider.prototype;
dart.addTypeTests(html$._ElementFactoryProvider);
const _value$3 = Symbol('_value');
html$.ScrollAlignment = class ScrollAlignment extends core.Object {
  toString() {
    return "ScrollAlignment." + dart.str(this[_value$3]);
  }
};
(html$.ScrollAlignment._internal = function(value) {
  this[_value$3] = value;
}).prototype = html$.ScrollAlignment.prototype;
dart.addTypeTests(html$.ScrollAlignment);
dart.setFieldSignature(html$.ScrollAlignment, () => ({
  __proto__: dart.getFields(html$.ScrollAlignment.__proto__),
  [_value$3]: dart.finalFieldType(dart.dynamic)
}));
dart.defineExtensionMethods(html$.ScrollAlignment, ['toString']);
dart.defineLazy(html$.ScrollAlignment, {
  /*html$.ScrollAlignment.TOP*/get TOP() {
    return dart.const(new html$.ScrollAlignment._internal("TOP"));
  },
  /*html$.ScrollAlignment.CENTER*/get CENTER() {
    return dart.const(new html$.ScrollAlignment._internal("CENTER"));
  },
  /*html$.ScrollAlignment.BOTTOM*/get BOTTOM() {
    return dart.const(new html$.ScrollAlignment._internal("BOTTOM"));
  }
});
html$.EmbedElement = class EmbedElement extends html$.HtmlElement {
  static new() {
    return html$.EmbedElement._check(html$.document[$createElement]("embed"));
  }
  static get supported() {
    return html$.Element.isTagSupported("embed");
  }
  get [$height]() {
    return this.height;
  }
  set [$height](value) {
    this.height = value;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$src]() {
    return this.src;
  }
  set [$src](value) {
    this.src = value;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
};
(html$.EmbedElement.created = function() {
  this[height$] = null;
  this[name$12] = null;
  this[src$] = null;
  this[type$13] = null;
  this[width$] = null;
  html$.EmbedElement.__proto__.created.call(this);
}).prototype = html$.EmbedElement.prototype;
dart.addTypeTests(html$.EmbedElement);
const height$ = Symbol("EmbedElement.height");
const name$12 = Symbol("EmbedElement.name");
const src$ = Symbol("EmbedElement.src");
const type$13 = Symbol("EmbedElement.type");
const width$ = Symbol("EmbedElement.width");
dart.setMethodSignature(html$.EmbedElement, () => ({
  __proto__: dart.getMethods(html$.EmbedElement.__proto__),
  [__getter__]: dart.fnType(html$.Node, [core.String]),
  [__setter__]: dart.fnType(dart.void, [core.String, html$.Node])
}));
dart.setFieldSignature(html$.EmbedElement, () => ({
  __proto__: dart.getFields(html$.EmbedElement.__proto__),
  [$height]: dart.fieldType(core.String),
  [$name]: dart.fieldType(core.String),
  [$src]: dart.fieldType(core.String),
  [$type]: dart.fieldType(core.String),
  [$width]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLEmbedElement", html$.EmbedElement);
html$.ErrorEvent = class ErrorEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.ErrorEvent._create_1(type, eventInitDict_1);
    }
    return html$.ErrorEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ErrorEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ErrorEvent(type);
  }
  get [$colno]() {
    return this.colno;
  }
  get [$error]() {
    return this.error;
  }
  get [$filename]() {
    return this.filename;
  }
  get [$lineno]() {
    return this.lineno;
  }
  get [$message]() {
    return this.message;
  }
};
dart.addTypeTests(html$.ErrorEvent);
const colno = Symbol("ErrorEvent.colno");
const error$2 = Symbol("ErrorEvent.error");
const filename = Symbol("ErrorEvent.filename");
const lineno = Symbol("ErrorEvent.lineno");
const message$19 = Symbol("ErrorEvent.message");
dart.setFieldSignature(html$.ErrorEvent, () => ({
  __proto__: dart.getFields(html$.ErrorEvent.__proto__),
  [$colno]: dart.finalFieldType(core.int),
  [$error]: dart.finalFieldType(core.Object),
  [$filename]: dart.finalFieldType(core.String),
  [$lineno]: dart.finalFieldType(core.int),
  [$message]: dart.finalFieldType(core.String)
}));
dart.registerExtension("ErrorEvent", html$.ErrorEvent);
html$.EventSource = class EventSource$ extends html$.EventTarget {
  static new(url, opts) {
    let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : false;
    let parsedOptions = new (IdentityMapOfString$dynamic()).from(["withCredentials", withCredentials]);
    return html$.EventSource._factoryEventSource(url, parsedOptions);
  }
  static _factoryEventSource(url, eventSourceInitDict) {
    if (eventSourceInitDict === void 0) eventSourceInitDict = null;
    if (eventSourceInitDict != null) {
      let eventSourceInitDict_1 = html_common.convertDartToNative_Dictionary(eventSourceInitDict);
      return html$.EventSource._create_1(url, eventSourceInitDict_1);
    }
    return html$.EventSource._create_2(url);
  }
  static _create_1(url, eventSourceInitDict) {
    return new EventSource(url, eventSourceInitDict);
  }
  static _create_2(url) {
    return new EventSource(url);
  }
  get [$readyState]() {
    return this.readyState;
  }
  get [$url]() {
    return this.url;
  }
  get [$withCredentials]() {
    return this.withCredentials;
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  get [$onError]() {
    return html$.EventSource.errorEvent.forTarget(this);
  }
  get [$onMessage]() {
    return html$.EventSource.messageEvent.forTarget(this);
  }
  get [$onOpen]() {
    return html$.EventSource.openEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.EventSource);
const readyState$2 = Symbol("EventSource.readyState");
const url$1 = Symbol("EventSource.url");
const withCredentials = Symbol("EventSource.withCredentials");
dart.setMethodSignature(html$.EventSource, () => ({
  __proto__: dart.getMethods(html$.EventSource.__proto__),
  [$close]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.EventSource, () => ({
  __proto__: dart.getGetters(html$.EventSource.__proto__),
  [$onError]: async.Stream$(html$.Event),
  [$onMessage]: async.Stream$(html$.MessageEvent),
  [$onOpen]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.EventSource, () => ({
  __proto__: dart.getFields(html$.EventSource.__proto__),
  [$readyState]: dart.finalFieldType(core.int),
  [$url]: dart.finalFieldType(core.String),
  [$withCredentials]: dart.finalFieldType(core.bool)
}));
dart.defineLazy(html$.EventSource, {
  /*html$.EventSource.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.EventSource.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  },
  /*html$.EventSource.openEvent*/get openEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("open"));
  },
  /*html$.EventSource.CLOSED*/get CLOSED() {
    return 2;
  },
  /*html$.EventSource.CONNECTING*/get CONNECTING() {
    return 0;
  },
  /*html$.EventSource.OPEN*/get OPEN() {
    return 1;
  }
});
dart.registerExtension("EventSource", html$.EventSource);
const _ptr = Symbol('_ptr');
html$.Events = class Events extends core.Object {
  _get(type) {
    return new (_EventStreamOfEvent()).new(this[_ptr], type, false);
  }
};
(html$.Events.new = function(ptr) {
  this[_ptr] = ptr;
}).prototype = html$.Events.prototype;
dart.addTypeTests(html$.Events);
dart.setMethodSignature(html$.Events, () => ({
  __proto__: dart.getMethods(html$.Events.__proto__),
  _get: dart.fnType(async.Stream$(html$.Event), [core.String])
}));
dart.setFieldSignature(html$.Events, () => ({
  __proto__: dart.getFields(html$.Events.__proto__),
  [_ptr]: dart.finalFieldType(html$.EventTarget)
}));
html$.ElementEvents = class ElementEvents extends html$.Events {
  _get(type) {
    if (dart.test(html$.ElementEvents.webkitEvents[$keys][$contains](type[$toLowerCase]()))) {
      if (dart.test(html_common.Device.isWebKit)) {
        return new (_ElementEventStreamImplOfEvent()).new(this[_ptr], html$.ElementEvents.webkitEvents[$_get](type[$toLowerCase]()), false);
      }
    }
    return new (_ElementEventStreamImplOfEvent()).new(this[_ptr], type, false);
  }
};
(html$.ElementEvents.new = function(ptr) {
  html$.ElementEvents.__proto__.new.call(this, ptr);
}).prototype = html$.ElementEvents.prototype;
dart.addTypeTests(html$.ElementEvents);
dart.defineLazy(html$.ElementEvents, {
  /*html$.ElementEvents.webkitEvents*/get webkitEvents() {
    return new (IdentityMapOfString$String()).from(["animationend", "webkitAnimationEnd", "animationiteration", "webkitAnimationIteration", "animationstart", "webkitAnimationStart", "fullscreenchange", "webkitfullscreenchange", "fullscreenerror", "webkitfullscreenerror", "keyadded", "webkitkeyadded", "keyerror", "webkitkeyerror", "keymessage", "webkitkeymessage", "needkey", "webkitneedkey", "pointerlockchange", "webkitpointerlockchange", "pointerlockerror", "webkitpointerlockerror", "resourcetimingbufferfull", "webkitresourcetimingbufferfull", "transitionend", "webkitTransitionEnd", "speechchange", "webkitSpeechChange"]);
  }
});
html$.ExtendableMessageEvent = class ExtendableMessageEvent extends html$.ExtendableEvent {
  get [$data]() {
    return this.data;
  }
  get [$lastEventId]() {
    return this.lastEventId;
  }
  get [$origin]() {
    return this.origin;
  }
  get [$ports]() {
    return this.ports;
  }
  get [$source]() {
    return this.source;
  }
};
dart.addTypeTests(html$.ExtendableMessageEvent);
const data$2 = Symbol("ExtendableMessageEvent.data");
const lastEventId = Symbol("ExtendableMessageEvent.lastEventId");
const origin$2 = Symbol("ExtendableMessageEvent.origin");
const ports = Symbol("ExtendableMessageEvent.ports");
const source$1 = Symbol("ExtendableMessageEvent.source");
dart.setFieldSignature(html$.ExtendableMessageEvent, () => ({
  __proto__: dart.getFields(html$.ExtendableMessageEvent.__proto__),
  [$data]: dart.finalFieldType(core.Object),
  [$lastEventId]: dart.finalFieldType(core.String),
  [$origin]: dart.finalFieldType(core.String),
  [$ports]: dart.finalFieldType(ListOfMessagePort()),
  [$source]: dart.finalFieldType(core.Object)
}));
dart.registerExtension("ExtendableMessageEvent", html$.ExtendableMessageEvent);
html$.External = class External extends _interceptors.Interceptor {
  [$AddSearchProvider](...args) {
    return this.AddSearchProvider.apply(this, args);
  }
  [$IsSearchProviderInstalled](...args) {
    return this.IsSearchProviderInstalled.apply(this, args);
  }
};
dart.addTypeTests(html$.External);
dart.setMethodSignature(html$.External, () => ({
  __proto__: dart.getMethods(html$.External.__proto__),
  [$AddSearchProvider]: dart.fnType(dart.void, []),
  [$IsSearchProviderInstalled]: dart.fnType(dart.void, [])
}));
dart.registerExtension("External", html$.External);
html$.FaceDetector = class FaceDetector$ extends _interceptors.Interceptor {
  static new(faceDetectorOptions) {
    if (faceDetectorOptions === void 0) faceDetectorOptions = null;
    if (faceDetectorOptions != null) {
      let faceDetectorOptions_1 = html_common.convertDartToNative_Dictionary(faceDetectorOptions);
      return html$.FaceDetector._create_1(faceDetectorOptions_1);
    }
    return html$.FaceDetector._create_2();
  }
  static _create_1(faceDetectorOptions) {
    return new FaceDetector(faceDetectorOptions);
  }
  static _create_2() {
    return new FaceDetector();
  }
  [$detect](image) {
    return html$.promiseToFuture(ListOfDetectedFace(), this.detect(image));
  }
};
dart.addTypeTests(html$.FaceDetector);
dart.setMethodSignature(html$.FaceDetector, () => ({
  __proto__: dart.getMethods(html$.FaceDetector.__proto__),
  [$detect]: dart.fnType(async.Future$(core.List$(html$.DetectedFace)), [dart.dynamic])
}));
dart.registerExtension("FaceDetector", html$.FaceDetector);
html$.FederatedCredential = class FederatedCredential$ extends html$.Credential {
  static new(data) {
    let data_1 = html_common.convertDartToNative_Dictionary(data);
    return html$.FederatedCredential._create_1(data_1);
  }
  static _create_1(data) {
    return new FederatedCredential(data);
  }
  get [$protocol]() {
    return this.protocol;
  }
  get [$provider]() {
    return this.provider;
  }
  get [$iconUrl]() {
    return this.iconURL;
  }
  get [$name]() {
    return this.name;
  }
};
dart.addTypeTests(html$.FederatedCredential);
const protocol$0 = Symbol("FederatedCredential.protocol");
const provider = Symbol("FederatedCredential.provider");
const iconUrl$ = Symbol("FederatedCredential.iconUrl");
const name$13 = Symbol("FederatedCredential.name");
html$.FederatedCredential[dart.implements] = () => [html$.CredentialUserData];
dart.setFieldSignature(html$.FederatedCredential, () => ({
  __proto__: dart.getFields(html$.FederatedCredential.__proto__),
  [$protocol]: dart.finalFieldType(core.String),
  [$provider]: dart.finalFieldType(core.String),
  [$iconUrl]: dart.finalFieldType(core.String),
  [$name]: dart.finalFieldType(core.String)
}));
dart.registerExtension("FederatedCredential", html$.FederatedCredential);
html$.FetchEvent = class FetchEvent$ extends html$.ExtendableEvent {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.FetchEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new FetchEvent(type, eventInitDict);
  }
  get [$clientId]() {
    return this.clientId;
  }
  get [$isReload]() {
    return this.isReload;
  }
  get [$preloadResponse]() {
    return html$.promiseToFuture(dart.dynamic, this.preloadResponse);
  }
  get [$request]() {
    return this.request;
  }
  [$respondWith](...args) {
    return this.respondWith.apply(this, args);
  }
};
dart.addTypeTests(html$.FetchEvent);
const clientId = Symbol("FetchEvent.clientId");
const isReload = Symbol("FetchEvent.isReload");
const request$ = Symbol("FetchEvent.request");
dart.setMethodSignature(html$.FetchEvent, () => ({
  __proto__: dart.getMethods(html$.FetchEvent.__proto__),
  [$respondWith]: dart.fnType(dart.void, [async.Future])
}));
dart.setGetterSignature(html$.FetchEvent, () => ({
  __proto__: dart.getGetters(html$.FetchEvent.__proto__),
  [$preloadResponse]: async.Future
}));
dart.setFieldSignature(html$.FetchEvent, () => ({
  __proto__: dart.getFields(html$.FetchEvent.__proto__),
  [$clientId]: dart.finalFieldType(core.String),
  [$isReload]: dart.finalFieldType(core.bool),
  [$request]: dart.finalFieldType(html$._Request)
}));
dart.registerExtension("FetchEvent", html$.FetchEvent);
html$.FieldSetElement = class FieldSetElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("fieldset");
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$elements]() {
    return this.elements;
  }
  get [$form]() {
    return this.form;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$type]() {
    return this.type;
  }
  get [$validationMessage]() {
    return this.validationMessage;
  }
  get [$validity]() {
    return this.validity;
  }
  get [$willValidate]() {
    return this.willValidate;
  }
  [$checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [$reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [$setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
};
(html$.FieldSetElement.created = function() {
  this[disabled$1] = null;
  this[elements] = null;
  this[form$] = null;
  this[name$14] = null;
  this[type$14] = null;
  this[validationMessage$] = null;
  this[validity$] = null;
  this[willValidate$] = null;
  html$.FieldSetElement.__proto__.created.call(this);
}).prototype = html$.FieldSetElement.prototype;
dart.addTypeTests(html$.FieldSetElement);
const disabled$1 = Symbol("FieldSetElement.disabled");
const elements = Symbol("FieldSetElement.elements");
const form$ = Symbol("FieldSetElement.form");
const name$14 = Symbol("FieldSetElement.name");
const type$14 = Symbol("FieldSetElement.type");
const validationMessage$ = Symbol("FieldSetElement.validationMessage");
const validity$ = Symbol("FieldSetElement.validity");
const willValidate$ = Symbol("FieldSetElement.willValidate");
dart.setMethodSignature(html$.FieldSetElement, () => ({
  __proto__: dart.getMethods(html$.FieldSetElement.__proto__),
  [$checkValidity]: dart.fnType(core.bool, []),
  [$reportValidity]: dart.fnType(core.bool, []),
  [$setCustomValidity]: dart.fnType(dart.void, [core.String])
}));
dart.setFieldSignature(html$.FieldSetElement, () => ({
  __proto__: dart.getFields(html$.FieldSetElement.__proto__),
  [$disabled]: dart.fieldType(core.bool),
  [$elements]: dart.finalFieldType(ListOfNode()),
  [$form]: dart.finalFieldType(html$.FormElement),
  [$name]: dart.fieldType(core.String),
  [$type]: dart.finalFieldType(core.String),
  [$validationMessage]: dart.finalFieldType(core.String),
  [$validity]: dart.finalFieldType(html$.ValidityState),
  [$willValidate]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("HTMLFieldSetElement", html$.FieldSetElement);
const _get_lastModifiedDate = Symbol('_get_lastModifiedDate');
html$.File = class File$ extends html$.Blob {
  static new(fileBits, fileName, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return html$.File._create_1(fileBits, fileName, options_1);
    }
    return html$.File._create_2(fileBits, fileName);
  }
  static _create_1(fileBits, fileName, options) {
    return new File(fileBits, fileName, options);
  }
  static _create_2(fileBits, fileName) {
    return new File(fileBits, fileName);
  }
  get [$lastModified]() {
    return this.lastModified;
  }
  get [$lastModifiedDate]() {
    return html_common.convertNativeToDart_DateTime(this[_get_lastModifiedDate]);
  }
  get [_get_lastModifiedDate]() {
    return this.lastModifiedDate;
  }
  get [$name]() {
    return this.name;
  }
  get [$relativePath]() {
    return this.webkitRelativePath;
  }
};
dart.addTypeTests(html$.File);
const lastModified = Symbol("File.lastModified");
const name$15 = Symbol("File.name");
const relativePath = Symbol("File.relativePath");
dart.setGetterSignature(html$.File, () => ({
  __proto__: dart.getGetters(html$.File.__proto__),
  [$lastModifiedDate]: core.DateTime
}));
dart.setFieldSignature(html$.File, () => ({
  __proto__: dart.getFields(html$.File.__proto__),
  [$lastModified]: dart.finalFieldType(core.int),
  [_get_lastModifiedDate]: dart.finalFieldType(dart.dynamic),
  [$name]: dart.finalFieldType(core.String),
  [$relativePath]: dart.finalFieldType(core.String)
}));
dart.registerExtension("File", html$.File);
const _createWriter = Symbol('_createWriter');
const _file$ = Symbol('_file');
html$.FileEntry = class FileEntry extends html$.Entry {
  [_createWriter](...args) {
    return this.createWriter.apply(this, args);
  }
  [$createWriter]() {
    let completer = CompleterOfFileWriter().new();
    this[_createWriter](dart.fn(value => {
      _js_helper.applyExtension("FileWriter", value);
      completer.complete(value);
    }, FileWriterToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
  [_file$](...args) {
    return this.file.apply(this, args);
  }
  [$file]() {
    let completer = CompleterOfFile$().new();
    this[_file$](dart.fn(value => {
      _js_helper.applyExtension("File", value);
      completer.complete(value);
    }, FileToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
};
dart.addTypeTests(html$.FileEntry);
dart.setMethodSignature(html$.FileEntry, () => ({
  __proto__: dart.getMethods(html$.FileEntry.__proto__),
  [_createWriter]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.FileWriter])], [dart.fnType(dart.void, [html$.DomException])]),
  [$createWriter]: dart.fnType(async.Future$(html$.FileWriter), []),
  [_file$]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.File])], [dart.fnType(dart.void, [html$.DomException])]),
  [$file]: dart.fnType(async.Future$(html$.File), [])
}));
dart.registerExtension("FileEntry", html$.FileEntry);
const Interceptor_ListMixin$$0 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$0.new = function() {
  Interceptor_ListMixin$$0.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$0.prototype;
dart.applyMixin(Interceptor_ListMixin$$0, collection.ListMixin$(html$.File));
const Interceptor_ImmutableListMixin$$0 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$0 {};
(Interceptor_ImmutableListMixin$$0.new = function() {
  Interceptor_ImmutableListMixin$$0.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$0.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$0, html$.ImmutableListMixin$(html$.File));
html$.FileList = class FileList extends Interceptor_ImmutableListMixin$$0 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.File._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
html$.FileList.prototype[dart.isList] = true;
dart.addTypeTests(html$.FileList);
html$.FileList[dart.implements] = () => [ListOfFile(), JavaScriptIndexingBehaviorOfFile()];
dart.setMethodSignature(html$.FileList, () => ({
  __proto__: dart.getMethods(html$.FileList.__proto__),
  [$_get]: dart.fnType(html$.File, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.File, [core.int]),
  [$item]: dart.fnType(html$.File, [core.int])
}));
dart.setGetterSignature(html$.FileList, () => ({
  __proto__: dart.getGetters(html$.FileList.__proto__),
  [$length]: core.int,
  [$first]: html$.File,
  [$last]: html$.File,
  [$single]: html$.File
}));
dart.setSetterSignature(html$.FileList, () => ({
  __proto__: dart.getSetters(html$.FileList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("FileList", html$.FileList);
html$.FileReader = class FileReader$ extends html$.EventTarget {
  get [$result]() {
    let res = this.result;
    if (typed_data.ByteBuffer.is(res)) {
      return typed_data.Uint8List.view(res);
    }
    return res;
  }
  static new() {
    return html$.FileReader._create_1();
  }
  static _create_1() {
    return new FileReader();
  }
  get [$error]() {
    return this.error;
  }
  get [$readyState]() {
    return this.readyState;
  }
  [$abort](...args) {
    return this.abort.apply(this, args);
  }
  [$readAsArrayBuffer](...args) {
    return this.readAsArrayBuffer.apply(this, args);
  }
  [$readAsDataUrl](...args) {
    return this.readAsDataURL.apply(this, args);
  }
  [$readAsText](...args) {
    return this.readAsText.apply(this, args);
  }
  get [$onAbort]() {
    return html$.FileReader.abortEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.FileReader.errorEvent.forTarget(this);
  }
  get [$onLoad]() {
    return html$.FileReader.loadEvent.forTarget(this);
  }
  get [$onLoadEnd]() {
    return html$.FileReader.loadEndEvent.forTarget(this);
  }
  get [$onLoadStart]() {
    return html$.FileReader.loadStartEvent.forTarget(this);
  }
  get [$onProgress]() {
    return html$.FileReader.progressEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.FileReader);
const error$3 = Symbol("FileReader.error");
const readyState$3 = Symbol("FileReader.readyState");
dart.setMethodSignature(html$.FileReader, () => ({
  __proto__: dart.getMethods(html$.FileReader.__proto__),
  [$abort]: dart.fnType(dart.void, []),
  [$readAsArrayBuffer]: dart.fnType(dart.void, [html$.Blob]),
  [$readAsDataUrl]: dart.fnType(dart.void, [html$.Blob]),
  [$readAsText]: dart.fnType(dart.void, [html$.Blob], [core.String])
}));
dart.setGetterSignature(html$.FileReader, () => ({
  __proto__: dart.getGetters(html$.FileReader.__proto__),
  [$result]: core.Object,
  [$onAbort]: async.Stream$(html$.ProgressEvent),
  [$onError]: async.Stream$(html$.ProgressEvent),
  [$onLoad]: async.Stream$(html$.ProgressEvent),
  [$onLoadEnd]: async.Stream$(html$.ProgressEvent),
  [$onLoadStart]: async.Stream$(html$.ProgressEvent),
  [$onProgress]: async.Stream$(html$.ProgressEvent)
}));
dart.setFieldSignature(html$.FileReader, () => ({
  __proto__: dart.getFields(html$.FileReader.__proto__),
  [$error]: dart.finalFieldType(html$.DomException),
  [$readyState]: dart.finalFieldType(core.int)
}));
dart.defineLazy(html$.FileReader, {
  /*html$.FileReader.abortEvent*/get abortEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("abort"));
  },
  /*html$.FileReader.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("error"));
  },
  /*html$.FileReader.loadEvent*/get loadEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("load"));
  },
  /*html$.FileReader.loadEndEvent*/get loadEndEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("loadend"));
  },
  /*html$.FileReader.loadStartEvent*/get loadStartEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("loadstart"));
  },
  /*html$.FileReader.progressEvent*/get progressEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("progress"));
  },
  /*html$.FileReader.DONE*/get DONE() {
    return 2;
  },
  /*html$.FileReader.EMPTY*/get EMPTY() {
    return 0;
  },
  /*html$.FileReader.LOADING*/get LOADING() {
    return 1;
  }
});
dart.registerExtension("FileReader", html$.FileReader);
html$.FileSystem = class FileSystem extends _interceptors.Interceptor {
  static get supported() {
    return !!window.webkitRequestFileSystem;
  }
  get [$name]() {
    return this.name;
  }
  get [$root]() {
    return this.root;
  }
};
dart.addTypeTests(html$.FileSystem);
const name$16 = Symbol("FileSystem.name");
const root = Symbol("FileSystem.root");
dart.setFieldSignature(html$.FileSystem, () => ({
  __proto__: dart.getFields(html$.FileSystem.__proto__),
  [$name]: dart.finalFieldType(core.String),
  [$root]: dart.finalFieldType(html$.DirectoryEntry)
}));
dart.registerExtension("DOMFileSystem", html$.FileSystem);
html$.FileWriter = class FileWriter extends html$.EventTarget {
  get [$error]() {
    return this.error;
  }
  get [$length]() {
    return this.length;
  }
  get [$position]() {
    return this.position;
  }
  get [$readyState]() {
    return this.readyState;
  }
  [$abort](...args) {
    return this.abort.apply(this, args);
  }
  [$seek](...args) {
    return this.seek.apply(this, args);
  }
  [$truncate](...args) {
    return this.truncate.apply(this, args);
  }
  [$write](...args) {
    return this.write.apply(this, args);
  }
  get [$onAbort]() {
    return html$.FileWriter.abortEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.FileWriter.errorEvent.forTarget(this);
  }
  get [$onProgress]() {
    return html$.FileWriter.progressEvent.forTarget(this);
  }
  get [$onWrite]() {
    return html$.FileWriter.writeEvent.forTarget(this);
  }
  get [$onWriteEnd]() {
    return html$.FileWriter.writeEndEvent.forTarget(this);
  }
  get [$onWriteStart]() {
    return html$.FileWriter.writeStartEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.FileWriter);
const error$4 = Symbol("FileWriter.error");
const length$7 = Symbol("FileWriter.length");
const position = Symbol("FileWriter.position");
const readyState$4 = Symbol("FileWriter.readyState");
dart.setMethodSignature(html$.FileWriter, () => ({
  __proto__: dart.getMethods(html$.FileWriter.__proto__),
  [$abort]: dart.fnType(dart.void, []),
  [$seek]: dart.fnType(dart.void, [core.int]),
  [$truncate]: dart.fnType(dart.void, [core.int]),
  [$write]: dart.fnType(dart.void, [html$.Blob])
}));
dart.setGetterSignature(html$.FileWriter, () => ({
  __proto__: dart.getGetters(html$.FileWriter.__proto__),
  [$onAbort]: async.Stream$(html$.ProgressEvent),
  [$onError]: async.Stream$(html$.Event),
  [$onProgress]: async.Stream$(html$.ProgressEvent),
  [$onWrite]: async.Stream$(html$.ProgressEvent),
  [$onWriteEnd]: async.Stream$(html$.ProgressEvent),
  [$onWriteStart]: async.Stream$(html$.ProgressEvent)
}));
dart.setFieldSignature(html$.FileWriter, () => ({
  __proto__: dart.getFields(html$.FileWriter.__proto__),
  [$error]: dart.finalFieldType(html$.DomException),
  [$length]: dart.finalFieldType(core.int),
  [$position]: dart.finalFieldType(core.int),
  [$readyState]: dart.finalFieldType(core.int)
}));
dart.defineLazy(html$.FileWriter, {
  /*html$.FileWriter.abortEvent*/get abortEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("abort"));
  },
  /*html$.FileWriter.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.FileWriter.progressEvent*/get progressEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("progress"));
  },
  /*html$.FileWriter.writeEvent*/get writeEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("write"));
  },
  /*html$.FileWriter.writeEndEvent*/get writeEndEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("writeend"));
  },
  /*html$.FileWriter.writeStartEvent*/get writeStartEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("writestart"));
  },
  /*html$.FileWriter.DONE*/get DONE() {
    return 2;
  },
  /*html$.FileWriter.INIT*/get INIT() {
    return 0;
  },
  /*html$.FileWriter.WRITING*/get WRITING() {
    return 1;
  }
});
dart.registerExtension("FileWriter", html$.FileWriter);
const _get_relatedTarget = Symbol('_get_relatedTarget');
html$.FocusEvent = class FocusEvent$ extends html$.UIEvent {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.FocusEvent._create_1(type, eventInitDict_1);
    }
    return html$.FocusEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new FocusEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new FocusEvent(type);
  }
  get [$relatedTarget]() {
    return html$._convertNativeToDart_EventTarget(this[_get_relatedTarget]);
  }
  get [_get_relatedTarget]() {
    return this.relatedTarget;
  }
};
dart.addTypeTests(html$.FocusEvent);
dart.setGetterSignature(html$.FocusEvent, () => ({
  __proto__: dart.getGetters(html$.FocusEvent.__proto__),
  [$relatedTarget]: html$.EventTarget
}));
dart.setFieldSignature(html$.FocusEvent, () => ({
  __proto__: dart.getFields(html$.FocusEvent.__proto__),
  [_get_relatedTarget]: dart.finalFieldType(dart.dynamic)
}));
dart.registerExtension("FocusEvent", html$.FocusEvent);
html$.FontFace = class FontFace$ extends _interceptors.Interceptor {
  static new(family, source, descriptors) {
    if (descriptors === void 0) descriptors = null;
    if (descriptors != null) {
      let descriptors_1 = html_common.convertDartToNative_Dictionary(descriptors);
      return html$.FontFace._create_1(family, source, descriptors_1);
    }
    return html$.FontFace._create_2(family, source);
  }
  static _create_1(family, source, descriptors) {
    return new FontFace(family, source, descriptors);
  }
  static _create_2(family, source) {
    return new FontFace(family, source);
  }
  get [$display]() {
    return this.display;
  }
  set [$display](value) {
    this.display = value;
  }
  get [$family]() {
    return this.family;
  }
  set [$family](value) {
    this.family = value;
  }
  get [$featureSettings]() {
    return this.featureSettings;
  }
  set [$featureSettings](value) {
    this.featureSettings = value;
  }
  get [$loaded]() {
    return html$.promiseToFuture(html$.FontFace, this.loaded);
  }
  get [$status]() {
    return this.status;
  }
  get [$stretch]() {
    return this.stretch;
  }
  set [$stretch](value) {
    this.stretch = value;
  }
  get [$style]() {
    return this.style;
  }
  set [$style](value) {
    this.style = value;
  }
  get [$unicodeRange]() {
    return this.unicodeRange;
  }
  set [$unicodeRange](value) {
    this.unicodeRange = value;
  }
  get [$variant]() {
    return this.variant;
  }
  set [$variant](value) {
    this.variant = value;
  }
  get [$weight]() {
    return this.weight;
  }
  set [$weight](value) {
    this.weight = value;
  }
  [$load]() {
    return html$.promiseToFuture(html$.FontFace, this.load());
  }
};
dart.addTypeTests(html$.FontFace);
const display = Symbol("FontFace.display");
const family = Symbol("FontFace.family");
const featureSettings = Symbol("FontFace.featureSettings");
const status$0 = Symbol("FontFace.status");
const stretch = Symbol("FontFace.stretch");
const style$4 = Symbol("FontFace.style");
const unicodeRange = Symbol("FontFace.unicodeRange");
const variant = Symbol("FontFace.variant");
const weight = Symbol("FontFace.weight");
dart.setMethodSignature(html$.FontFace, () => ({
  __proto__: dart.getMethods(html$.FontFace.__proto__),
  [$load]: dart.fnType(async.Future$(html$.FontFace), [])
}));
dart.setGetterSignature(html$.FontFace, () => ({
  __proto__: dart.getGetters(html$.FontFace.__proto__),
  [$loaded]: async.Future$(html$.FontFace)
}));
dart.setFieldSignature(html$.FontFace, () => ({
  __proto__: dart.getFields(html$.FontFace.__proto__),
  [$display]: dart.fieldType(core.String),
  [$family]: dart.fieldType(core.String),
  [$featureSettings]: dart.fieldType(core.String),
  [$status]: dart.finalFieldType(core.String),
  [$stretch]: dart.fieldType(core.String),
  [$style]: dart.fieldType(core.String),
  [$unicodeRange]: dart.fieldType(core.String),
  [$variant]: dart.fieldType(core.String),
  [$weight]: dart.fieldType(core.String)
}));
dart.registerExtension("FontFace", html$.FontFace);
html$.FontFaceSet = class FontFaceSet extends html$.EventTarget {
  get [$status]() {
    return this.status;
  }
  [$add](...args) {
    return this.add.apply(this, args);
  }
  [$check](...args) {
    return this.check.apply(this, args);
  }
  [$clear](...args) {
    return this.clear.apply(this, args);
  }
  [$delete](...args) {
    return this.delete.apply(this, args);
  }
  [$forEach](...args) {
    return this.forEach.apply(this, args);
  }
  [$has](...args) {
    return this.has.apply(this, args);
  }
  get [$onLoading]() {
    return html$.FontFaceSet.loadingEvent.forTarget(this);
  }
  get [$onLoadingDone]() {
    return html$.FontFaceSet.loadingDoneEvent.forTarget(this);
  }
  get [$onLoadingError]() {
    return html$.FontFaceSet.loadingErrorEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.FontFaceSet);
const status$1 = Symbol("FontFaceSet.status");
dart.setMethodSignature(html$.FontFaceSet, () => ({
  __proto__: dart.getMethods(html$.FontFaceSet.__proto__),
  [$add]: dart.fnType(html$.FontFaceSet, [html$.FontFace]),
  [$check]: dart.fnType(core.bool, [core.String], [core.String]),
  [$clear]: dart.fnType(dart.void, []),
  [$delete]: dart.fnType(core.bool, [html$.FontFace]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.FontFace, html$.FontFace, html$.FontFaceSet])], [core.Object]),
  [$has]: dart.fnType(core.bool, [html$.FontFace])
}));
dart.setGetterSignature(html$.FontFaceSet, () => ({
  __proto__: dart.getGetters(html$.FontFaceSet.__proto__),
  [$onLoading]: async.Stream$(html$.FontFaceSetLoadEvent),
  [$onLoadingDone]: async.Stream$(html$.FontFaceSetLoadEvent),
  [$onLoadingError]: async.Stream$(html$.FontFaceSetLoadEvent)
}));
dart.setFieldSignature(html$.FontFaceSet, () => ({
  __proto__: dart.getFields(html$.FontFaceSet.__proto__),
  [$status]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.FontFaceSet, {
  /*html$.FontFaceSet.loadingEvent*/get loadingEvent() {
    return dart.const(new (EventStreamProviderOfFontFaceSetLoadEvent()).new("loading"));
  },
  /*html$.FontFaceSet.loadingDoneEvent*/get loadingDoneEvent() {
    return dart.const(new (EventStreamProviderOfFontFaceSetLoadEvent()).new("loadingdone"));
  },
  /*html$.FontFaceSet.loadingErrorEvent*/get loadingErrorEvent() {
    return dart.const(new (EventStreamProviderOfFontFaceSetLoadEvent()).new("loadingerror"));
  }
});
dart.registerExtension("FontFaceSet", html$.FontFaceSet);
html$.FontFaceSetLoadEvent = class FontFaceSetLoadEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.FontFaceSetLoadEvent._create_1(type, eventInitDict_1);
    }
    return html$.FontFaceSetLoadEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new FontFaceSetLoadEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new FontFaceSetLoadEvent(type);
  }
  get [$fontfaces]() {
    return this.fontfaces;
  }
};
dart.addTypeTests(html$.FontFaceSetLoadEvent);
const fontfaces = Symbol("FontFaceSetLoadEvent.fontfaces");
dart.setFieldSignature(html$.FontFaceSetLoadEvent, () => ({
  __proto__: dart.getFields(html$.FontFaceSetLoadEvent.__proto__),
  [$fontfaces]: dart.finalFieldType(ListOfFontFace())
}));
dart.registerExtension("FontFaceSetLoadEvent", html$.FontFaceSetLoadEvent);
html$.FontFaceSource = class FontFaceSource extends _interceptors.Interceptor {
  get [$fonts]() {
    return this.fonts;
  }
};
dart.addTypeTests(html$.FontFaceSource);
const fonts$ = Symbol("FontFaceSource.fonts");
dart.setFieldSignature(html$.FontFaceSource, () => ({
  __proto__: dart.getFields(html$.FontFaceSource.__proto__),
  [$fonts]: dart.finalFieldType(html$.FontFaceSet)
}));
dart.registerExtension("FontFaceSource", html$.FontFaceSource);
html$.ForeignFetchEvent = class ForeignFetchEvent$ extends html$.ExtendableEvent {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.ForeignFetchEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new ForeignFetchEvent(type, eventInitDict);
  }
  get [$origin]() {
    return this.origin;
  }
  get [$request]() {
    return this.request;
  }
  [$respondWith](...args) {
    return this.respondWith.apply(this, args);
  }
};
dart.addTypeTests(html$.ForeignFetchEvent);
const origin$3 = Symbol("ForeignFetchEvent.origin");
const request$0 = Symbol("ForeignFetchEvent.request");
dart.setMethodSignature(html$.ForeignFetchEvent, () => ({
  __proto__: dart.getMethods(html$.ForeignFetchEvent.__proto__),
  [$respondWith]: dart.fnType(dart.void, [async.Future])
}));
dart.setFieldSignature(html$.ForeignFetchEvent, () => ({
  __proto__: dart.getFields(html$.ForeignFetchEvent.__proto__),
  [$origin]: dart.finalFieldType(core.String),
  [$request]: dart.finalFieldType(html$._Request)
}));
dart.registerExtension("ForeignFetchEvent", html$.ForeignFetchEvent);
html$.FormData = class FormData$ extends _interceptors.Interceptor {
  static new(form) {
    if (form === void 0) form = null;
    if (form != null) {
      return html$.FormData._create_1(form);
    }
    return html$.FormData._create_2();
  }
  static _create_1(form) {
    return new FormData(form);
  }
  static _create_2() {
    return new FormData();
  }
  static get supported() {
    return !!window.FormData;
  }
  [$append](...args) {
    return this.append.apply(this, args);
  }
  [$appendBlob](...args) {
    return this.append.apply(this, args);
  }
  [$delete](...args) {
    return this.delete.apply(this, args);
  }
  [$get](...args) {
    return this.get.apply(this, args);
  }
  [$getAll](...args) {
    return this.getAll.apply(this, args);
  }
  [$has](...args) {
    return this.has.apply(this, args);
  }
  [$set](...args) {
    return this.set.apply(this, args);
  }
};
dart.addTypeTests(html$.FormData);
dart.setMethodSignature(html$.FormData, () => ({
  __proto__: dart.getMethods(html$.FormData.__proto__),
  [$append]: dart.fnType(dart.void, [core.String, core.String]),
  [$appendBlob]: dart.fnType(dart.void, [core.String, html$.Blob], [core.String]),
  [$delete]: dart.fnType(dart.void, [core.String]),
  [$get]: dart.fnType(core.Object, [core.String]),
  [$getAll]: dart.fnType(core.List$(core.Object), [core.String]),
  [$has]: dart.fnType(core.bool, [core.String]),
  [$set]: dart.fnType(dart.void, [core.String, dart.dynamic], [core.String])
}));
dart.registerExtension("FormData", html$.FormData);
const _requestAutocomplete_1 = Symbol('_requestAutocomplete_1');
html$.FormElement = class FormElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("form");
  }
  get [$acceptCharset]() {
    return this.acceptCharset;
  }
  set [$acceptCharset](value) {
    this.acceptCharset = value;
  }
  get [$action]() {
    return this.action;
  }
  set [$action](value) {
    this.action = value;
  }
  get [$autocomplete]() {
    return this.autocomplete;
  }
  set [$autocomplete](value) {
    this.autocomplete = value;
  }
  get [$encoding]() {
    return this.encoding;
  }
  set [$encoding](value) {
    this.encoding = value;
  }
  get [$enctype]() {
    return this.enctype;
  }
  set [$enctype](value) {
    this.enctype = value;
  }
  get [$length]() {
    return this.length;
  }
  get [$method]() {
    return this.method;
  }
  set [$method](value) {
    this.method = value;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$noValidate]() {
    return this.noValidate;
  }
  set [$noValidate](value) {
    this.noValidate = value;
  }
  get [$target]() {
    return this.target;
  }
  set [$target](value) {
    this.target = value;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [$checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [$requestAutocomplete](details) {
    let details_1 = html_common.convertDartToNative_Dictionary(details);
    this[_requestAutocomplete_1](details_1);
    return;
  }
  [_requestAutocomplete_1](...args) {
    return this.requestAutocomplete.apply(this, args);
  }
  [$reset](...args) {
    return this.reset.apply(this, args);
  }
  [$submit](...args) {
    return this.submit.apply(this, args);
  }
};
(html$.FormElement.created = function() {
  this[acceptCharset] = null;
  this[action] = null;
  this[autocomplete$] = null;
  this[encoding$0] = null;
  this[enctype] = null;
  this[length$8] = null;
  this[method] = null;
  this[name$17] = null;
  this[noValidate] = null;
  this[target$2] = null;
  html$.FormElement.__proto__.created.call(this);
}).prototype = html$.FormElement.prototype;
dart.addTypeTests(html$.FormElement);
const acceptCharset = Symbol("FormElement.acceptCharset");
const action = Symbol("FormElement.action");
const autocomplete$ = Symbol("FormElement.autocomplete");
const encoding$0 = Symbol("FormElement.encoding");
const enctype = Symbol("FormElement.enctype");
const length$8 = Symbol("FormElement.length");
const method = Symbol("FormElement.method");
const name$17 = Symbol("FormElement.name");
const noValidate = Symbol("FormElement.noValidate");
const target$2 = Symbol("FormElement.target");
dart.setMethodSignature(html$.FormElement, () => ({
  __proto__: dart.getMethods(html$.FormElement.__proto__),
  [__getter__]: dart.fnType(core.Object, [core.String]),
  [$checkValidity]: dart.fnType(core.bool, []),
  [$item]: dart.fnType(html$.Element, [core.int]),
  [$reportValidity]: dart.fnType(core.bool, []),
  [$requestAutocomplete]: dart.fnType(dart.void, [core.Map]),
  [_requestAutocomplete_1]: dart.fnType(dart.void, [dart.dynamic]),
  [$reset]: dart.fnType(dart.void, []),
  [$submit]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(html$.FormElement, () => ({
  __proto__: dart.getFields(html$.FormElement.__proto__),
  [$acceptCharset]: dart.fieldType(core.String),
  [$action]: dart.fieldType(core.String),
  [$autocomplete]: dart.fieldType(core.String),
  [$encoding]: dart.fieldType(core.String),
  [$enctype]: dart.fieldType(core.String),
  [$length]: dart.finalFieldType(core.int),
  [$method]: dart.fieldType(core.String),
  [$name]: dart.fieldType(core.String),
  [$noValidate]: dart.fieldType(core.bool),
  [$target]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLFormElement", html$.FormElement);
html$.Gamepad = class Gamepad extends _interceptors.Interceptor {
  get [$axes]() {
    return this.axes;
  }
  get [$buttons]() {
    return this.buttons;
  }
  get [$connected]() {
    return this.connected;
  }
  get [$displayId]() {
    return this.displayId;
  }
  get [$hand]() {
    return this.hand;
  }
  get [$id]() {
    return this.id;
  }
  get [$index]() {
    return this.index;
  }
  get [$mapping]() {
    return this.mapping;
  }
  get [$pose]() {
    return this.pose;
  }
  get [$timestamp]() {
    return this.timestamp;
  }
};
dart.addTypeTests(html$.Gamepad);
const axes = Symbol("Gamepad.axes");
const buttons = Symbol("Gamepad.buttons");
const connected = Symbol("Gamepad.connected");
const displayId = Symbol("Gamepad.displayId");
const hand = Symbol("Gamepad.hand");
const id$6 = Symbol("Gamepad.id");
const index = Symbol("Gamepad.index");
const mapping = Symbol("Gamepad.mapping");
const pose = Symbol("Gamepad.pose");
const timestamp$ = Symbol("Gamepad.timestamp");
dart.setFieldSignature(html$.Gamepad, () => ({
  __proto__: dart.getFields(html$.Gamepad.__proto__),
  [$axes]: dart.finalFieldType(ListOfnum()),
  [$buttons]: dart.finalFieldType(ListOfGamepadButton()),
  [$connected]: dart.finalFieldType(core.bool),
  [$displayId]: dart.finalFieldType(core.int),
  [$hand]: dart.finalFieldType(core.String),
  [$id]: dart.finalFieldType(core.String),
  [$index]: dart.finalFieldType(core.int),
  [$mapping]: dart.finalFieldType(core.String),
  [$pose]: dart.finalFieldType(html$.GamepadPose),
  [$timestamp]: dart.finalFieldType(core.int)
}));
dart.registerExtension("Gamepad", html$.Gamepad);
html$.GamepadButton = class GamepadButton extends _interceptors.Interceptor {
  get [$pressed]() {
    return this.pressed;
  }
  get [$touched]() {
    return this.touched;
  }
  get [$value]() {
    return this.value;
  }
};
dart.addTypeTests(html$.GamepadButton);
const pressed$ = Symbol("GamepadButton.pressed");
const touched = Symbol("GamepadButton.touched");
const value$6 = Symbol("GamepadButton.value");
dart.setFieldSignature(html$.GamepadButton, () => ({
  __proto__: dart.getFields(html$.GamepadButton.__proto__),
  [$pressed]: dart.finalFieldType(core.bool),
  [$touched]: dart.finalFieldType(core.bool),
  [$value]: dart.finalFieldType(core.num)
}));
dart.registerExtension("GamepadButton", html$.GamepadButton);
html$.GamepadEvent = class GamepadEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.GamepadEvent._create_1(type, eventInitDict_1);
    }
    return html$.GamepadEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new GamepadEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new GamepadEvent(type);
  }
  get [$gamepad]() {
    return this.gamepad;
  }
};
dart.addTypeTests(html$.GamepadEvent);
const gamepad = Symbol("GamepadEvent.gamepad");
dart.setFieldSignature(html$.GamepadEvent, () => ({
  __proto__: dart.getFields(html$.GamepadEvent.__proto__),
  [$gamepad]: dart.finalFieldType(html$.Gamepad)
}));
dart.registerExtension("GamepadEvent", html$.GamepadEvent);
html$.GamepadPose = class GamepadPose extends _interceptors.Interceptor {
  get [$angularAcceleration]() {
    return this.angularAcceleration;
  }
  get [$angularVelocity]() {
    return this.angularVelocity;
  }
  get [$hasOrientation]() {
    return this.hasOrientation;
  }
  get [$hasPosition]() {
    return this.hasPosition;
  }
  get [$linearAcceleration]() {
    return this.linearAcceleration;
  }
  get [$linearVelocity]() {
    return this.linearVelocity;
  }
  get [$orientation]() {
    return this.orientation;
  }
  get [$position]() {
    return this.position;
  }
};
dart.addTypeTests(html$.GamepadPose);
const angularAcceleration = Symbol("GamepadPose.angularAcceleration");
const angularVelocity = Symbol("GamepadPose.angularVelocity");
const hasOrientation = Symbol("GamepadPose.hasOrientation");
const hasPosition = Symbol("GamepadPose.hasPosition");
const linearAcceleration = Symbol("GamepadPose.linearAcceleration");
const linearVelocity = Symbol("GamepadPose.linearVelocity");
const orientation$ = Symbol("GamepadPose.orientation");
const position$ = Symbol("GamepadPose.position");
dart.setFieldSignature(html$.GamepadPose, () => ({
  __proto__: dart.getFields(html$.GamepadPose.__proto__),
  [$angularAcceleration]: dart.finalFieldType(typed_data.Float32List),
  [$angularVelocity]: dart.finalFieldType(typed_data.Float32List),
  [$hasOrientation]: dart.finalFieldType(core.bool),
  [$hasPosition]: dart.finalFieldType(core.bool),
  [$linearAcceleration]: dart.finalFieldType(typed_data.Float32List),
  [$linearVelocity]: dart.finalFieldType(typed_data.Float32List),
  [$orientation]: dart.finalFieldType(typed_data.Float32List),
  [$position]: dart.finalFieldType(typed_data.Float32List)
}));
dart.registerExtension("GamepadPose", html$.GamepadPose);
const _ensurePosition = Symbol('_ensurePosition');
const _getCurrentPosition = Symbol('_getCurrentPosition');
const _watchPosition = Symbol('_watchPosition');
const _clearWatch = Symbol('_clearWatch');
const _getCurrentPosition_1 = Symbol('_getCurrentPosition_1');
const _getCurrentPosition_2 = Symbol('_getCurrentPosition_2');
const _getCurrentPosition_3 = Symbol('_getCurrentPosition_3');
const _watchPosition_1 = Symbol('_watchPosition_1');
const _watchPosition_2 = Symbol('_watchPosition_2');
const _watchPosition_3 = Symbol('_watchPosition_3');
html$.Geolocation = class Geolocation extends _interceptors.Interceptor {
  [$getCurrentPosition](opts) {
    let enableHighAccuracy = opts && 'enableHighAccuracy' in opts ? opts.enableHighAccuracy : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    let maximumAge = opts && 'maximumAge' in opts ? opts.maximumAge : null;
    let options = new _js_helper.LinkedMap.new();
    if (enableHighAccuracy != null) {
      options[$_set]("enableHighAccuracy", enableHighAccuracy);
    }
    if (timeout != null) {
      options[$_set]("timeout", timeout.inMilliseconds);
    }
    if (maximumAge != null) {
      options[$_set]("maximumAge", maximumAge.inMilliseconds);
    }
    let completer = CompleterOfGeoposition().new();
    try {
      this[_getCurrentPosition](dart.fn(position => {
        completer.complete(this[_ensurePosition](position));
      }, GeopositionToNull()), dart.fn(error => {
        completer.completeError(error);
      }, PositionErrorToNull()), options);
    } catch (e$) {
      let e = dart.getThrown(e$);
      let stacktrace = dart.stackTrace(e$);
      completer.completeError(e, stacktrace);
    }
    return completer.future;
  }
  [$watchPosition](opts) {
    let enableHighAccuracy = opts && 'enableHighAccuracy' in opts ? opts.enableHighAccuracy : null;
    let timeout = opts && 'timeout' in opts ? opts.timeout : null;
    let maximumAge = opts && 'maximumAge' in opts ? opts.maximumAge : null;
    let options = new _js_helper.LinkedMap.new();
    if (enableHighAccuracy != null) {
      options[$_set]("enableHighAccuracy", enableHighAccuracy);
    }
    if (timeout != null) {
      options[$_set]("timeout", timeout.inMilliseconds);
    }
    if (maximumAge != null) {
      options[$_set]("maximumAge", maximumAge.inMilliseconds);
    }
    let watchId = null;
    let controller = null;
    controller = StreamControllerOfGeoposition().new({sync: true, onListen: dart.fn(() => {
        if (!(watchId == null)) dart.assertFailed();
        watchId = this[_watchPosition](dart.fn(position => {
          controller.add(this[_ensurePosition](position));
        }, GeopositionToNull()), dart.fn(error => {
          controller.addError(error);
        }, PositionErrorToNull()), options);
      }, VoidToNull()), onCancel: dart.fn(() => {
        if (!(watchId != null)) dart.assertFailed();
        this[_clearWatch](watchId);
      }, VoidToNull())});
    return controller.stream;
  }
  [_ensurePosition](domPosition) {
    try {
      if (html$.Geoposition.is(domPosition)) {
        return domPosition;
      }
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
    return new html$._GeopositionWrapper.new(domPosition);
  }
  [_clearWatch](...args) {
    return this.clearWatch.apply(this, args);
  }
  [_getCurrentPosition](successCallback, errorCallback, options) {
    if (errorCallback === void 0) errorCallback = null;
    if (options === void 0) options = null;
    if (options != null) {
      let successCallback_1 = _js_helper.convertDartClosureToJS(GeopositionTovoid(), successCallback, 1);
      let options_2 = html_common.convertDartToNative_Dictionary(options);
      this[_getCurrentPosition_1](successCallback_1, errorCallback, options_2);
      return;
    }
    if (errorCallback != null) {
      let successCallback_1 = _js_helper.convertDartClosureToJS(GeopositionTovoid(), successCallback, 1);
      this[_getCurrentPosition_2](successCallback_1, errorCallback);
      return;
    }
    let successCallback_1 = _js_helper.convertDartClosureToJS(GeopositionTovoid(), successCallback, 1);
    this[_getCurrentPosition_3](successCallback_1);
    return;
  }
  [_getCurrentPosition_1](...args) {
    return this.getCurrentPosition.apply(this, args);
  }
  [_getCurrentPosition_2](...args) {
    return this.getCurrentPosition.apply(this, args);
  }
  [_getCurrentPosition_3](...args) {
    return this.getCurrentPosition.apply(this, args);
  }
  [_watchPosition](successCallback, errorCallback, options) {
    if (errorCallback === void 0) errorCallback = null;
    if (options === void 0) options = null;
    if (options != null) {
      let successCallback_1 = _js_helper.convertDartClosureToJS(GeopositionTovoid(), successCallback, 1);
      let options_2 = html_common.convertDartToNative_Dictionary(options);
      return this[_watchPosition_1](successCallback_1, errorCallback, options_2);
    }
    if (errorCallback != null) {
      let successCallback_1 = _js_helper.convertDartClosureToJS(GeopositionTovoid(), successCallback, 1);
      return this[_watchPosition_2](successCallback_1, errorCallback);
    }
    let successCallback_1 = _js_helper.convertDartClosureToJS(GeopositionTovoid(), successCallback, 1);
    return this[_watchPosition_3](successCallback_1);
  }
  [_watchPosition_1](...args) {
    return this.watchPosition.apply(this, args);
  }
  [_watchPosition_2](...args) {
    return this.watchPosition.apply(this, args);
  }
  [_watchPosition_3](...args) {
    return this.watchPosition.apply(this, args);
  }
};
dart.addTypeTests(html$.Geolocation);
dart.setMethodSignature(html$.Geolocation, () => ({
  __proto__: dart.getMethods(html$.Geolocation.__proto__),
  [$getCurrentPosition]: dart.fnType(async.Future$(html$.Geoposition), [], {enableHighAccuracy: core.bool, timeout: core.Duration, maximumAge: core.Duration}),
  [$watchPosition]: dart.fnType(async.Stream$(html$.Geoposition), [], {enableHighAccuracy: core.bool, timeout: core.Duration, maximumAge: core.Duration}),
  [_ensurePosition]: dart.fnType(html$.Geoposition, [dart.dynamic]),
  [_clearWatch]: dart.fnType(dart.void, [core.int]),
  [_getCurrentPosition]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Geoposition])], [dart.fnType(dart.void, [html$.PositionError]), core.Map]),
  [_getCurrentPosition_1]: dart.fnType(dart.void, [dart.dynamic, dart.fnType(dart.void, [html$.PositionError]), dart.dynamic]),
  [_getCurrentPosition_2]: dart.fnType(dart.void, [dart.dynamic, dart.fnType(dart.void, [html$.PositionError])]),
  [_getCurrentPosition_3]: dart.fnType(dart.void, [dart.dynamic]),
  [_watchPosition]: dart.fnType(core.int, [dart.fnType(dart.void, [html$.Geoposition])], [dart.fnType(dart.void, [html$.PositionError]), core.Map]),
  [_watchPosition_1]: dart.fnType(core.int, [dart.dynamic, dart.fnType(dart.void, [html$.PositionError]), dart.dynamic]),
  [_watchPosition_2]: dart.fnType(core.int, [dart.dynamic, dart.fnType(dart.void, [html$.PositionError])]),
  [_watchPosition_3]: dart.fnType(core.int, [dart.dynamic])
}));
dart.registerExtension("Geolocation", html$.Geolocation);
html$._GeopositionWrapper = class _GeopositionWrapper extends core.Object {
  get coords() {
    return this[_ptr].coords;
  }
  get timestamp() {
    return this[_ptr].timestamp;
  }
};
(html$._GeopositionWrapper.new = function(ptr) {
  this[_ptr] = ptr;
}).prototype = html$._GeopositionWrapper.prototype;
dart.addTypeTests(html$._GeopositionWrapper);
html$._GeopositionWrapper[dart.implements] = () => [html$.Geoposition];
dart.setGetterSignature(html$._GeopositionWrapper, () => ({
  __proto__: dart.getGetters(html$._GeopositionWrapper.__proto__),
  coords: html$.Coordinates,
  [$coords]: html$.Coordinates,
  timestamp: core.int,
  [$timestamp]: core.int
}));
dart.setFieldSignature(html$._GeopositionWrapper, () => ({
  __proto__: dart.getFields(html$._GeopositionWrapper.__proto__),
  [_ptr]: dart.fieldType(dart.dynamic)
}));
dart.defineExtensionAccessors(html$._GeopositionWrapper, ['coords', 'timestamp']);
html$.Geoposition = class Geoposition extends _interceptors.Interceptor {
  get [$coords]() {
    return this.coords;
  }
  get [$timestamp]() {
    return this.timestamp;
  }
};
dart.addTypeTests(html$.Geoposition);
const coords$ = Symbol("Geoposition.coords");
const timestamp$0 = Symbol("Geoposition.timestamp");
dart.setFieldSignature(html$.Geoposition, () => ({
  __proto__: dart.getFields(html$.Geoposition.__proto__),
  [$coords]: dart.finalFieldType(html$.Coordinates),
  [$timestamp]: dart.finalFieldType(core.int)
}));
dart.registerExtension("Position", html$.Geoposition);
html$.GlobalEventHandlers = class GlobalEventHandlers extends core.Object {
  get onAbort() {
    return html$.GlobalEventHandlers.abortEvent.forTarget(this);
  }
  get onBlur() {
    return html$.GlobalEventHandlers.blurEvent.forTarget(this);
  }
  get onCanPlay() {
    return html$.GlobalEventHandlers.canPlayEvent.forTarget(this);
  }
  get onCanPlayThrough() {
    return html$.GlobalEventHandlers.canPlayThroughEvent.forTarget(this);
  }
  get onChange() {
    return html$.GlobalEventHandlers.changeEvent.forTarget(this);
  }
  get onClick() {
    return html$.GlobalEventHandlers.clickEvent.forTarget(this);
  }
  get onContextMenu() {
    return html$.GlobalEventHandlers.contextMenuEvent.forTarget(this);
  }
  get onDoubleClick() {
    return html$.GlobalEventHandlers.doubleClickEvent.forTarget(this);
  }
  get onDrag() {
    return html$.GlobalEventHandlers.dragEvent.forTarget(this);
  }
  get onDragEnd() {
    return html$.GlobalEventHandlers.dragEndEvent.forTarget(this);
  }
  get onDragEnter() {
    return html$.GlobalEventHandlers.dragEnterEvent.forTarget(this);
  }
  get onDragLeave() {
    return html$.GlobalEventHandlers.dragLeaveEvent.forTarget(this);
  }
  get onDragOver() {
    return html$.GlobalEventHandlers.dragOverEvent.forTarget(this);
  }
  get onDragStart() {
    return html$.GlobalEventHandlers.dragStartEvent.forTarget(this);
  }
  get onDrop() {
    return html$.GlobalEventHandlers.dropEvent.forTarget(this);
  }
  get onDurationChange() {
    return html$.GlobalEventHandlers.durationChangeEvent.forTarget(this);
  }
  get onEmptied() {
    return html$.GlobalEventHandlers.emptiedEvent.forTarget(this);
  }
  get onEnded() {
    return html$.GlobalEventHandlers.endedEvent.forTarget(this);
  }
  get onError() {
    return html$.GlobalEventHandlers.errorEvent.forTarget(this);
  }
  get onFocus() {
    return html$.GlobalEventHandlers.focusEvent.forTarget(this);
  }
  get onInput() {
    return html$.GlobalEventHandlers.inputEvent.forTarget(this);
  }
  get onInvalid() {
    return html$.GlobalEventHandlers.invalidEvent.forTarget(this);
  }
  get onKeyDown() {
    return html$.GlobalEventHandlers.keyDownEvent.forTarget(this);
  }
  get onKeyPress() {
    return html$.GlobalEventHandlers.keyPressEvent.forTarget(this);
  }
  get onKeyUp() {
    return html$.GlobalEventHandlers.keyUpEvent.forTarget(this);
  }
  get onLoad() {
    return html$.GlobalEventHandlers.loadEvent.forTarget(this);
  }
  get onLoadedData() {
    return html$.GlobalEventHandlers.loadedDataEvent.forTarget(this);
  }
  get onLoadedMetadata() {
    return html$.GlobalEventHandlers.loadedMetadataEvent.forTarget(this);
  }
  get onMouseDown() {
    return html$.GlobalEventHandlers.mouseDownEvent.forTarget(this);
  }
  get onMouseEnter() {
    return html$.GlobalEventHandlers.mouseEnterEvent.forTarget(this);
  }
  get onMouseLeave() {
    return html$.GlobalEventHandlers.mouseLeaveEvent.forTarget(this);
  }
  get onMouseMove() {
    return html$.GlobalEventHandlers.mouseMoveEvent.forTarget(this);
  }
  get onMouseOut() {
    return html$.GlobalEventHandlers.mouseOutEvent.forTarget(this);
  }
  get onMouseOver() {
    return html$.GlobalEventHandlers.mouseOverEvent.forTarget(this);
  }
  get onMouseUp() {
    return html$.GlobalEventHandlers.mouseUpEvent.forTarget(this);
  }
  get onMouseWheel() {
    return html$.GlobalEventHandlers.mouseWheelEvent.forTarget(this);
  }
  get onPause() {
    return html$.GlobalEventHandlers.pauseEvent.forTarget(this);
  }
  get onPlay() {
    return html$.GlobalEventHandlers.playEvent.forTarget(this);
  }
  get onPlaying() {
    return html$.GlobalEventHandlers.playingEvent.forTarget(this);
  }
  get onRateChange() {
    return html$.GlobalEventHandlers.rateChangeEvent.forTarget(this);
  }
  get onReset() {
    return html$.GlobalEventHandlers.resetEvent.forTarget(this);
  }
  get onResize() {
    return html$.GlobalEventHandlers.resizeEvent.forTarget(this);
  }
  get onScroll() {
    return html$.GlobalEventHandlers.scrollEvent.forTarget(this);
  }
  get onSeeked() {
    return html$.GlobalEventHandlers.seekedEvent.forTarget(this);
  }
  get onSeeking() {
    return html$.GlobalEventHandlers.seekingEvent.forTarget(this);
  }
  get onSelect() {
    return html$.GlobalEventHandlers.selectEvent.forTarget(this);
  }
  get onStalled() {
    return html$.GlobalEventHandlers.stalledEvent.forTarget(this);
  }
  get onSubmit() {
    return html$.GlobalEventHandlers.submitEvent.forTarget(this);
  }
  get onSuspend() {
    return html$.GlobalEventHandlers.suspendEvent.forTarget(this);
  }
  get onTimeUpdate() {
    return html$.GlobalEventHandlers.timeUpdateEvent.forTarget(this);
  }
  get onTouchCancel() {
    return html$.GlobalEventHandlers.touchCancelEvent.forTarget(this);
  }
  get onTouchEnd() {
    return html$.GlobalEventHandlers.touchEndEvent.forTarget(this);
  }
  get onTouchMove() {
    return html$.GlobalEventHandlers.touchMoveEvent.forTarget(this);
  }
  get onTouchStart() {
    return html$.GlobalEventHandlers.touchStartEvent.forTarget(this);
  }
  get onVolumeChange() {
    return html$.GlobalEventHandlers.volumeChangeEvent.forTarget(this);
  }
  get onWaiting() {
    return html$.GlobalEventHandlers.waitingEvent.forTarget(this);
  }
  get onWheel() {
    return html$.GlobalEventHandlers.wheelEvent.forTarget(this);
  }
};
(html$.GlobalEventHandlers[dart.mixinNew] = function() {
}).prototype = html$.GlobalEventHandlers.prototype;
dart.addTypeTests(html$.GlobalEventHandlers);
html$.GlobalEventHandlers[dart.implements] = () => [html$.EventTarget];
dart.setGetterSignature(html$.GlobalEventHandlers, () => ({
  __proto__: dart.getGetters(html$.GlobalEventHandlers.__proto__),
  onAbort: async.Stream$(html$.Event),
  [$onAbort]: async.Stream$(html$.Event),
  onBlur: async.Stream$(html$.Event),
  [$onBlur]: async.Stream$(html$.Event),
  onCanPlay: async.Stream$(html$.Event),
  [$onCanPlay]: async.Stream$(html$.Event),
  onCanPlayThrough: async.Stream$(html$.Event),
  [$onCanPlayThrough]: async.Stream$(html$.Event),
  onChange: async.Stream$(html$.Event),
  [$onChange]: async.Stream$(html$.Event),
  onClick: async.Stream$(html$.MouseEvent),
  [$onClick]: async.Stream$(html$.MouseEvent),
  onContextMenu: async.Stream$(html$.MouseEvent),
  [$onContextMenu]: async.Stream$(html$.MouseEvent),
  onDoubleClick: async.Stream$(html$.Event),
  [$onDoubleClick]: async.Stream$(html$.Event),
  onDrag: async.Stream$(html$.MouseEvent),
  [$onDrag]: async.Stream$(html$.MouseEvent),
  onDragEnd: async.Stream$(html$.MouseEvent),
  [$onDragEnd]: async.Stream$(html$.MouseEvent),
  onDragEnter: async.Stream$(html$.MouseEvent),
  [$onDragEnter]: async.Stream$(html$.MouseEvent),
  onDragLeave: async.Stream$(html$.MouseEvent),
  [$onDragLeave]: async.Stream$(html$.MouseEvent),
  onDragOver: async.Stream$(html$.MouseEvent),
  [$onDragOver]: async.Stream$(html$.MouseEvent),
  onDragStart: async.Stream$(html$.MouseEvent),
  [$onDragStart]: async.Stream$(html$.MouseEvent),
  onDrop: async.Stream$(html$.MouseEvent),
  [$onDrop]: async.Stream$(html$.MouseEvent),
  onDurationChange: async.Stream$(html$.Event),
  [$onDurationChange]: async.Stream$(html$.Event),
  onEmptied: async.Stream$(html$.Event),
  [$onEmptied]: async.Stream$(html$.Event),
  onEnded: async.Stream$(html$.Event),
  [$onEnded]: async.Stream$(html$.Event),
  onError: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.Event),
  onFocus: async.Stream$(html$.Event),
  [$onFocus]: async.Stream$(html$.Event),
  onInput: async.Stream$(html$.Event),
  [$onInput]: async.Stream$(html$.Event),
  onInvalid: async.Stream$(html$.Event),
  [$onInvalid]: async.Stream$(html$.Event),
  onKeyDown: async.Stream$(html$.KeyboardEvent),
  [$onKeyDown]: async.Stream$(html$.KeyboardEvent),
  onKeyPress: async.Stream$(html$.KeyboardEvent),
  [$onKeyPress]: async.Stream$(html$.KeyboardEvent),
  onKeyUp: async.Stream$(html$.KeyboardEvent),
  [$onKeyUp]: async.Stream$(html$.KeyboardEvent),
  onLoad: async.Stream$(html$.Event),
  [$onLoad]: async.Stream$(html$.Event),
  onLoadedData: async.Stream$(html$.Event),
  [$onLoadedData]: async.Stream$(html$.Event),
  onLoadedMetadata: async.Stream$(html$.Event),
  [$onLoadedMetadata]: async.Stream$(html$.Event),
  onMouseDown: async.Stream$(html$.MouseEvent),
  [$onMouseDown]: async.Stream$(html$.MouseEvent),
  onMouseEnter: async.Stream$(html$.MouseEvent),
  [$onMouseEnter]: async.Stream$(html$.MouseEvent),
  onMouseLeave: async.Stream$(html$.MouseEvent),
  [$onMouseLeave]: async.Stream$(html$.MouseEvent),
  onMouseMove: async.Stream$(html$.MouseEvent),
  [$onMouseMove]: async.Stream$(html$.MouseEvent),
  onMouseOut: async.Stream$(html$.MouseEvent),
  [$onMouseOut]: async.Stream$(html$.MouseEvent),
  onMouseOver: async.Stream$(html$.MouseEvent),
  [$onMouseOver]: async.Stream$(html$.MouseEvent),
  onMouseUp: async.Stream$(html$.MouseEvent),
  [$onMouseUp]: async.Stream$(html$.MouseEvent),
  onMouseWheel: async.Stream$(html$.WheelEvent),
  [$onMouseWheel]: async.Stream$(html$.WheelEvent),
  onPause: async.Stream$(html$.Event),
  [$onPause]: async.Stream$(html$.Event),
  onPlay: async.Stream$(html$.Event),
  [$onPlay]: async.Stream$(html$.Event),
  onPlaying: async.Stream$(html$.Event),
  [$onPlaying]: async.Stream$(html$.Event),
  onRateChange: async.Stream$(html$.Event),
  [$onRateChange]: async.Stream$(html$.Event),
  onReset: async.Stream$(html$.Event),
  [$onReset]: async.Stream$(html$.Event),
  onResize: async.Stream$(html$.Event),
  [$onResize]: async.Stream$(html$.Event),
  onScroll: async.Stream$(html$.Event),
  [$onScroll]: async.Stream$(html$.Event),
  onSeeked: async.Stream$(html$.Event),
  [$onSeeked]: async.Stream$(html$.Event),
  onSeeking: async.Stream$(html$.Event),
  [$onSeeking]: async.Stream$(html$.Event),
  onSelect: async.Stream$(html$.Event),
  [$onSelect]: async.Stream$(html$.Event),
  onStalled: async.Stream$(html$.Event),
  [$onStalled]: async.Stream$(html$.Event),
  onSubmit: async.Stream$(html$.Event),
  [$onSubmit]: async.Stream$(html$.Event),
  onSuspend: async.Stream$(html$.Event),
  [$onSuspend]: async.Stream$(html$.Event),
  onTimeUpdate: async.Stream$(html$.Event),
  [$onTimeUpdate]: async.Stream$(html$.Event),
  onTouchCancel: async.Stream$(html$.TouchEvent),
  [$onTouchCancel]: async.Stream$(html$.TouchEvent),
  onTouchEnd: async.Stream$(html$.TouchEvent),
  [$onTouchEnd]: async.Stream$(html$.TouchEvent),
  onTouchMove: async.Stream$(html$.TouchEvent),
  [$onTouchMove]: async.Stream$(html$.TouchEvent),
  onTouchStart: async.Stream$(html$.TouchEvent),
  [$onTouchStart]: async.Stream$(html$.TouchEvent),
  onVolumeChange: async.Stream$(html$.Event),
  [$onVolumeChange]: async.Stream$(html$.Event),
  onWaiting: async.Stream$(html$.Event),
  [$onWaiting]: async.Stream$(html$.Event),
  onWheel: async.Stream$(html$.WheelEvent),
  [$onWheel]: async.Stream$(html$.WheelEvent)
}));
dart.defineExtensionAccessors(html$.GlobalEventHandlers, [
  'onAbort',
  'onBlur',
  'onCanPlay',
  'onCanPlayThrough',
  'onChange',
  'onClick',
  'onContextMenu',
  'onDoubleClick',
  'onDrag',
  'onDragEnd',
  'onDragEnter',
  'onDragLeave',
  'onDragOver',
  'onDragStart',
  'onDrop',
  'onDurationChange',
  'onEmptied',
  'onEnded',
  'onError',
  'onFocus',
  'onInput',
  'onInvalid',
  'onKeyDown',
  'onKeyPress',
  'onKeyUp',
  'onLoad',
  'onLoadedData',
  'onLoadedMetadata',
  'onMouseDown',
  'onMouseEnter',
  'onMouseLeave',
  'onMouseMove',
  'onMouseOut',
  'onMouseOver',
  'onMouseUp',
  'onMouseWheel',
  'onPause',
  'onPlay',
  'onPlaying',
  'onRateChange',
  'onReset',
  'onResize',
  'onScroll',
  'onSeeked',
  'onSeeking',
  'onSelect',
  'onStalled',
  'onSubmit',
  'onSuspend',
  'onTimeUpdate',
  'onTouchCancel',
  'onTouchEnd',
  'onTouchMove',
  'onTouchStart',
  'onVolumeChange',
  'onWaiting',
  'onWheel'
]);
dart.defineLazy(html$.GlobalEventHandlers, {
  /*html$.GlobalEventHandlers.abortEvent*/get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
  },
  /*html$.GlobalEventHandlers.blurEvent*/get blurEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("blur"));
  },
  /*html$.GlobalEventHandlers.canPlayEvent*/get canPlayEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("canplay"));
  },
  /*html$.GlobalEventHandlers.canPlayThroughEvent*/get canPlayThroughEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("canplaythrough"));
  },
  /*html$.GlobalEventHandlers.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  },
  /*html$.GlobalEventHandlers.clickEvent*/get clickEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("click"));
  },
  /*html$.GlobalEventHandlers.contextMenuEvent*/get contextMenuEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("contextmenu"));
  },
  /*html$.GlobalEventHandlers.doubleClickEvent*/get doubleClickEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("dblclick"));
  },
  /*html$.GlobalEventHandlers.dragEvent*/get dragEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("drag"));
  },
  /*html$.GlobalEventHandlers.dragEndEvent*/get dragEndEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragend"));
  },
  /*html$.GlobalEventHandlers.dragEnterEvent*/get dragEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragenter"));
  },
  /*html$.GlobalEventHandlers.dragLeaveEvent*/get dragLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragleave"));
  },
  /*html$.GlobalEventHandlers.dragOverEvent*/get dragOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragover"));
  },
  /*html$.GlobalEventHandlers.dragStartEvent*/get dragStartEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragstart"));
  },
  /*html$.GlobalEventHandlers.dropEvent*/get dropEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("drop"));
  },
  /*html$.GlobalEventHandlers.durationChangeEvent*/get durationChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("durationchange"));
  },
  /*html$.GlobalEventHandlers.emptiedEvent*/get emptiedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("emptied"));
  },
  /*html$.GlobalEventHandlers.endedEvent*/get endedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("ended"));
  },
  /*html$.GlobalEventHandlers.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.GlobalEventHandlers.focusEvent*/get focusEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("focus"));
  },
  /*html$.GlobalEventHandlers.inputEvent*/get inputEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("input"));
  },
  /*html$.GlobalEventHandlers.invalidEvent*/get invalidEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("invalid"));
  },
  /*html$.GlobalEventHandlers.keyDownEvent*/get keyDownEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keydown"));
  },
  /*html$.GlobalEventHandlers.keyPressEvent*/get keyPressEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keypress"));
  },
  /*html$.GlobalEventHandlers.keyUpEvent*/get keyUpEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keyup"));
  },
  /*html$.GlobalEventHandlers.loadEvent*/get loadEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("load"));
  },
  /*html$.GlobalEventHandlers.loadedDataEvent*/get loadedDataEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("loadeddata"));
  },
  /*html$.GlobalEventHandlers.loadedMetadataEvent*/get loadedMetadataEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("loadedmetadata"));
  },
  /*html$.GlobalEventHandlers.mouseDownEvent*/get mouseDownEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousedown"));
  },
  /*html$.GlobalEventHandlers.mouseEnterEvent*/get mouseEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseenter"));
  },
  /*html$.GlobalEventHandlers.mouseLeaveEvent*/get mouseLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseleave"));
  },
  /*html$.GlobalEventHandlers.mouseMoveEvent*/get mouseMoveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousemove"));
  },
  /*html$.GlobalEventHandlers.mouseOutEvent*/get mouseOutEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseout"));
  },
  /*html$.GlobalEventHandlers.mouseOverEvent*/get mouseOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseover"));
  },
  /*html$.GlobalEventHandlers.mouseUpEvent*/get mouseUpEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseup"));
  },
  /*html$.GlobalEventHandlers.mouseWheelEvent*/get mouseWheelEvent() {
    return dart.const(new (EventStreamProviderOfWheelEvent()).new("mousewheel"));
  },
  /*html$.GlobalEventHandlers.pauseEvent*/get pauseEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("pause"));
  },
  /*html$.GlobalEventHandlers.playEvent*/get playEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("play"));
  },
  /*html$.GlobalEventHandlers.playingEvent*/get playingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("playing"));
  },
  /*html$.GlobalEventHandlers.rateChangeEvent*/get rateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("ratechange"));
  },
  /*html$.GlobalEventHandlers.resetEvent*/get resetEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("reset"));
  },
  /*html$.GlobalEventHandlers.resizeEvent*/get resizeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("resize"));
  },
  /*html$.GlobalEventHandlers.scrollEvent*/get scrollEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("scroll"));
  },
  /*html$.GlobalEventHandlers.seekedEvent*/get seekedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("seeked"));
  },
  /*html$.GlobalEventHandlers.seekingEvent*/get seekingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("seeking"));
  },
  /*html$.GlobalEventHandlers.selectEvent*/get selectEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("select"));
  },
  /*html$.GlobalEventHandlers.stalledEvent*/get stalledEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("stalled"));
  },
  /*html$.GlobalEventHandlers.submitEvent*/get submitEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("submit"));
  },
  /*html$.GlobalEventHandlers.suspendEvent*/get suspendEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("suspend"));
  },
  /*html$.GlobalEventHandlers.timeUpdateEvent*/get timeUpdateEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("timeupdate"));
  },
  /*html$.GlobalEventHandlers.touchCancelEvent*/get touchCancelEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchcancel"));
  },
  /*html$.GlobalEventHandlers.touchEndEvent*/get touchEndEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchend"));
  },
  /*html$.GlobalEventHandlers.touchMoveEvent*/get touchMoveEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchmove"));
  },
  /*html$.GlobalEventHandlers.touchStartEvent*/get touchStartEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchstart"));
  },
  /*html$.GlobalEventHandlers.volumeChangeEvent*/get volumeChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("volumechange"));
  },
  /*html$.GlobalEventHandlers.waitingEvent*/get waitingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("waiting"));
  },
  /*html$.GlobalEventHandlers.wheelEvent*/get wheelEvent() {
    return dart.const(new (EventStreamProviderOfWheelEvent()).new("wheel"));
  }
});
html$.Gyroscope = class Gyroscope$ extends html$.Sensor {
  static new(sensorOptions) {
    if (sensorOptions === void 0) sensorOptions = null;
    if (sensorOptions != null) {
      let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
      return html$.Gyroscope._create_1(sensorOptions_1);
    }
    return html$.Gyroscope._create_2();
  }
  static _create_1(sensorOptions) {
    return new Gyroscope(sensorOptions);
  }
  static _create_2() {
    return new Gyroscope();
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$z]() {
    return this.z;
  }
};
dart.addTypeTests(html$.Gyroscope);
const x$4 = Symbol("Gyroscope.x");
const y$4 = Symbol("Gyroscope.y");
const z$3 = Symbol("Gyroscope.z");
dart.setFieldSignature(html$.Gyroscope, () => ({
  __proto__: dart.getFields(html$.Gyroscope.__proto__),
  [$x]: dart.finalFieldType(core.num),
  [$y]: dart.finalFieldType(core.num),
  [$z]: dart.finalFieldType(core.num)
}));
dart.registerExtension("Gyroscope", html$.Gyroscope);
html$.HRElement = class HRElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("hr");
  }
  get [$color]() {
    return this.color;
  }
  set [$color](value) {
    this.color = value;
  }
};
(html$.HRElement.created = function() {
  this[color] = null;
  html$.HRElement.__proto__.created.call(this);
}).prototype = html$.HRElement.prototype;
dart.addTypeTests(html$.HRElement);
const color = Symbol("HRElement.color");
dart.setFieldSignature(html$.HRElement, () => ({
  __proto__: dart.getFields(html$.HRElement.__proto__),
  [$color]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLHRElement", html$.HRElement);
html$.HashChangeEvent = class HashChangeEvent$ extends html$.Event {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let oldUrl = opts && 'oldUrl' in opts ? opts.oldUrl : null;
    let newUrl = opts && 'newUrl' in opts ? opts.newUrl : null;
    let options = new (IdentityMapOfString$Object()).from(["canBubble", canBubble, "cancelable", cancelable, "oldURL", oldUrl, "newURL", newUrl]);
    return new HashChangeEvent(type, html_common.convertDartToNative_Dictionary(options));
  }
  static __(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.HashChangeEvent._create_1(type, eventInitDict_1);
    }
    return html$.HashChangeEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new HashChangeEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new HashChangeEvent(type);
  }
  static get supported() {
    return html_common.Device.isEventTypeSupported("HashChangeEvent");
  }
  get [$newUrl]() {
    return this.newURL;
  }
  get [$oldUrl]() {
    return this.oldURL;
  }
};
dart.addTypeTests(html$.HashChangeEvent);
const newUrl = Symbol("HashChangeEvent.newUrl");
const oldUrl = Symbol("HashChangeEvent.oldUrl");
dart.setFieldSignature(html$.HashChangeEvent, () => ({
  __proto__: dart.getFields(html$.HashChangeEvent.__proto__),
  [$newUrl]: dart.finalFieldType(core.String),
  [$oldUrl]: dart.finalFieldType(core.String)
}));
dart.registerExtension("HashChangeEvent", html$.HashChangeEvent);
html$.HeadElement = class HeadElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("head");
  }
};
(html$.HeadElement.created = function() {
  html$.HeadElement.__proto__.created.call(this);
}).prototype = html$.HeadElement.prototype;
dart.addTypeTests(html$.HeadElement);
dart.registerExtension("HTMLHeadElement", html$.HeadElement);
html$.Headers = class Headers$ extends _interceptors.Interceptor {
  static new(init) {
    if (init === void 0) init = null;
    if (init != null) {
      return html$.Headers._create_1(init);
    }
    return html$.Headers._create_2();
  }
  static _create_1(init) {
    return new Headers(init);
  }
  static _create_2() {
    return new Headers();
  }
};
dart.addTypeTests(html$.Headers);
dart.registerExtension("Headers", html$.Headers);
html$.HeadingElement = class HeadingElement extends html$.HtmlElement {
  static h1() {
    return html$.document.createElement("h1");
  }
  static h2() {
    return html$.document.createElement("h2");
  }
  static h3() {
    return html$.document.createElement("h3");
  }
  static h4() {
    return html$.document.createElement("h4");
  }
  static h5() {
    return html$.document.createElement("h5");
  }
  static h6() {
    return html$.document.createElement("h6");
  }
};
(html$.HeadingElement.created = function() {
  html$.HeadingElement.__proto__.created.call(this);
}).prototype = html$.HeadingElement.prototype;
dart.addTypeTests(html$.HeadingElement);
dart.registerExtension("HTMLHeadingElement", html$.HeadingElement);
const _get_state = Symbol('_get_state');
const _pushState_1 = Symbol('_pushState_1');
const _replaceState_1 = Symbol('_replaceState_1');
html$.History = class History extends _interceptors.Interceptor {
  static get supportsState() {
    return !!window.history.pushState;
  }
  get [$length]() {
    return this.length;
  }
  get [$scrollRestoration]() {
    return this.scrollRestoration;
  }
  set [$scrollRestoration](value) {
    this.scrollRestoration = value;
  }
  get [$state]() {
    return html_common.convertNativeToDart_SerializedScriptValue(this[_get_state]);
  }
  get [_get_state]() {
    return this.state;
  }
  [$back](...args) {
    return this.back.apply(this, args);
  }
  [$forward](...args) {
    return this.forward.apply(this, args);
  }
  [$go](...args) {
    return this.go.apply(this, args);
  }
  [$pushState](data, title, url) {
    let data_1 = html_common.convertDartToNative_SerializedScriptValue(data);
    this[_pushState_1](data_1, title, url);
    return;
  }
  [_pushState_1](...args) {
    return this.pushState.apply(this, args);
  }
  [$replaceState](data, title, url) {
    let data_1 = html_common.convertDartToNative_SerializedScriptValue(data);
    this[_replaceState_1](data_1, title, url);
    return;
  }
  [_replaceState_1](...args) {
    return this.replaceState.apply(this, args);
  }
};
dart.addTypeTests(html$.History);
const length$9 = Symbol("History.length");
const scrollRestoration = Symbol("History.scrollRestoration");
html$.History[dart.implements] = () => [html$.HistoryBase];
dart.setMethodSignature(html$.History, () => ({
  __proto__: dart.getMethods(html$.History.__proto__),
  [$back]: dart.fnType(dart.void, []),
  [$forward]: dart.fnType(dart.void, []),
  [$go]: dart.fnType(dart.void, [], [core.int]),
  [$pushState]: dart.fnType(dart.void, [dart.dynamic, core.String, core.String]),
  [_pushState_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
  [$replaceState]: dart.fnType(dart.void, [dart.dynamic, core.String, core.String]),
  [_replaceState_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic])
}));
dart.setGetterSignature(html$.History, () => ({
  __proto__: dart.getGetters(html$.History.__proto__),
  [$state]: dart.dynamic
}));
dart.setFieldSignature(html$.History, () => ({
  __proto__: dart.getFields(html$.History.__proto__),
  [$length]: dart.finalFieldType(core.int),
  [$scrollRestoration]: dart.fieldType(core.String),
  [_get_state]: dart.finalFieldType(dart.dynamic)
}));
dart.registerExtension("History", html$.History);
const Interceptor_ListMixin$$1 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$1.new = function() {
  Interceptor_ListMixin$$1.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$1.prototype;
dart.applyMixin(Interceptor_ListMixin$$1, collection.ListMixin$(html$.Node));
const Interceptor_ImmutableListMixin$$1 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$1 {};
(Interceptor_ImmutableListMixin$$1.new = function() {
  Interceptor_ImmutableListMixin$$1.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$1.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$1, html$.ImmutableListMixin$(html$.Node));
html$.HtmlCollection = class HtmlCollection extends Interceptor_ImmutableListMixin$$1 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.Node._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
};
html$.HtmlCollection.prototype[dart.isList] = true;
dart.addTypeTests(html$.HtmlCollection);
html$.HtmlCollection[dart.implements] = () => [JavaScriptIndexingBehaviorOfNode(), ListOfNode()];
dart.setMethodSignature(html$.HtmlCollection, () => ({
  __proto__: dart.getMethods(html$.HtmlCollection.__proto__),
  [$_get]: dart.fnType(html$.Node, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.Node, [core.int]),
  [$item]: dart.fnType(html$.Node, [core.int]),
  [$namedItem]: dart.fnType(core.Object, [core.String])
}));
dart.setGetterSignature(html$.HtmlCollection, () => ({
  __proto__: dart.getGetters(html$.HtmlCollection.__proto__),
  [$length]: core.int,
  [$first]: html$.Node,
  [$last]: html$.Node,
  [$single]: html$.Node
}));
dart.setSetterSignature(html$.HtmlCollection, () => ({
  __proto__: dart.getSetters(html$.HtmlCollection.__proto__),
  [$length]: core.int
}));
dart.registerExtension("HTMLCollection", html$.HtmlCollection);
html$.HtmlDocument = class HtmlDocument extends html$.Document {
  get [$body]() {
    return this.body;
  }
  set [$body](value) {
    this.body = value;
  }
  [$caretRangeFromPoint](x, y) {
    return this[_caretRangeFromPoint](x, y);
  }
  [$elementFromPoint](x, y) {
    return this[_elementFromPoint](x, y);
  }
  get [$head]() {
    return this[_head$];
  }
  get [$lastModified]() {
    return this[_lastModified];
  }
  get [$preferredStylesheetSet]() {
    return this[_preferredStylesheetSet];
  }
  get [$referrer]() {
    return this[_referrer];
  }
  get [$selectedStylesheetSet]() {
    return this[_selectedStylesheetSet];
  }
  set [$selectedStylesheetSet](value) {
    this[_selectedStylesheetSet] = value;
  }
  get [$styleSheets]() {
    return this[_styleSheets];
  }
  get [$title]() {
    return this[_title];
  }
  set [$title](value) {
    this[_title] = value;
  }
  [$exitFullscreen]() {
    this[_webkitExitFullscreen]();
  }
  [$registerElement2](tag, options) {
    if (options === void 0) options = null;
    return html$._registerCustomElement(window, this, tag, options);
  }
  [$register](tag, customElementClass, opts) {
    let extendsTag = opts && 'extendsTag' in opts ? opts.extendsTag : null;
    return this[$registerElement](tag, customElementClass, {extendsTag: extendsTag});
  }
  static _determineVisibilityChangeEventType(e) {
    if (typeof e.hidden !== "undefined") {
      return "visibilitychange";
    } else if (typeof e.mozHidden !== "undefined") {
      return "mozvisibilitychange";
    } else if (typeof e.msHidden !== "undefined") {
      return "msvisibilitychange";
    } else if (typeof e.webkitHidden !== "undefined") {
      return "webkitvisibilitychange";
    }
    return "visibilitychange";
  }
  get [$onVisibilityChange]() {
    return html$.HtmlDocument.visibilityChangeEvent.forTarget(this);
  }
  [$createElementUpgrader](type, opts) {
    let extendsTag = opts && 'extendsTag' in opts ? opts.extendsTag : null;
    return new html$._JSElementUpgrader.new(this, type, extendsTag);
  }
};
dart.addTypeTests(html$.HtmlDocument);
const body = Symbol("HtmlDocument.body");
dart.setMethodSignature(html$.HtmlDocument, () => ({
  __proto__: dart.getMethods(html$.HtmlDocument.__proto__),
  [$caretRangeFromPoint]: dart.fnType(html$.Range, [core.int, core.int]),
  [$elementFromPoint]: dart.fnType(html$.Element, [core.int, core.int]),
  [$register]: dart.fnType(dart.void, [core.String, core.Type], {extendsTag: core.String}),
  [$createElementUpgrader]: dart.fnType(html$.ElementUpgrader, [core.Type], {extendsTag: core.String})
}));
dart.setGetterSignature(html$.HtmlDocument, () => ({
  __proto__: dart.getGetters(html$.HtmlDocument.__proto__),
  [$head]: html$.HeadElement,
  [$lastModified]: core.String,
  [$preferredStylesheetSet]: core.String,
  [$referrer]: core.String,
  [$selectedStylesheetSet]: core.String,
  [$styleSheets]: core.List$(html$.StyleSheet),
  [$title]: core.String,
  [$onVisibilityChange]: async.Stream$(html$.Event)
}));
dart.setSetterSignature(html$.HtmlDocument, () => ({
  __proto__: dart.getSetters(html$.HtmlDocument.__proto__),
  [$selectedStylesheetSet]: core.String,
  [$title]: core.String
}));
dart.setFieldSignature(html$.HtmlDocument, () => ({
  __proto__: dart.getFields(html$.HtmlDocument.__proto__),
  [$body]: dart.fieldType(html$.BodyElement)
}));
dart.defineLazy(html$.HtmlDocument, {
  /*html$.HtmlDocument.visibilityChangeEvent*/get visibilityChangeEvent() {
    return dart.const(new (_CustomEventStreamProviderOfEvent()).new(dart.fn(html$.HtmlDocument._determineVisibilityChangeEventType, EventTargetToString())));
  }
});
dart.registerExtension("HTMLDocument", html$.HtmlDocument);
html$.HtmlFormControlsCollection = class HtmlFormControlsCollection extends html$.HtmlCollection {
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
};
dart.addTypeTests(html$.HtmlFormControlsCollection);
dart.registerExtension("HTMLFormControlsCollection", html$.HtmlFormControlsCollection);
html$.HtmlHtmlElement = class HtmlHtmlElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("html");
  }
};
(html$.HtmlHtmlElement.created = function() {
  html$.HtmlHtmlElement.__proto__.created.call(this);
}).prototype = html$.HtmlHtmlElement.prototype;
dart.addTypeTests(html$.HtmlHtmlElement);
dart.registerExtension("HTMLHtmlElement", html$.HtmlHtmlElement);
html$.HtmlHyperlinkElementUtils = class HtmlHyperlinkElementUtils extends _interceptors.Interceptor {
  get [$hash]() {
    return this.hash;
  }
  set [$hash](value) {
    this.hash = value;
  }
  get [$host]() {
    return this.host;
  }
  set [$host](value) {
    this.host = value;
  }
  get [$hostname]() {
    return this.hostname;
  }
  set [$hostname](value) {
    this.hostname = value;
  }
  get [$href]() {
    return this.href;
  }
  set [$href](value) {
    this.href = value;
  }
  get [$origin]() {
    return this.origin;
  }
  get [$password]() {
    return this.password;
  }
  set [$password](value) {
    this.password = value;
  }
  get [$pathname]() {
    return this.pathname;
  }
  set [$pathname](value) {
    this.pathname = value;
  }
  get [$port]() {
    return this.port;
  }
  set [$port](value) {
    this.port = value;
  }
  get [$protocol]() {
    return this.protocol;
  }
  set [$protocol](value) {
    this.protocol = value;
  }
  get [$search]() {
    return this.search;
  }
  set [$search](value) {
    this.search = value;
  }
  get [$username]() {
    return this.username;
  }
  set [$username](value) {
    this.username = value;
  }
};
dart.addTypeTests(html$.HtmlHyperlinkElementUtils);
const hash$0 = Symbol("HtmlHyperlinkElementUtils.hash");
const host$0 = Symbol("HtmlHyperlinkElementUtils.host");
const hostname$0 = Symbol("HtmlHyperlinkElementUtils.hostname");
const href$3 = Symbol("HtmlHyperlinkElementUtils.href");
const origin$4 = Symbol("HtmlHyperlinkElementUtils.origin");
const password$0 = Symbol("HtmlHyperlinkElementUtils.password");
const pathname$0 = Symbol("HtmlHyperlinkElementUtils.pathname");
const port$2 = Symbol("HtmlHyperlinkElementUtils.port");
const protocol$1 = Symbol("HtmlHyperlinkElementUtils.protocol");
const search$0 = Symbol("HtmlHyperlinkElementUtils.search");
const username$0 = Symbol("HtmlHyperlinkElementUtils.username");
dart.setFieldSignature(html$.HtmlHyperlinkElementUtils, () => ({
  __proto__: dart.getFields(html$.HtmlHyperlinkElementUtils.__proto__),
  [$hash]: dart.fieldType(core.String),
  [$host]: dart.fieldType(core.String),
  [$hostname]: dart.fieldType(core.String),
  [$href]: dart.fieldType(core.String),
  [$origin]: dart.finalFieldType(core.String),
  [$password]: dart.fieldType(core.String),
  [$pathname]: dart.fieldType(core.String),
  [$port]: dart.fieldType(core.String),
  [$protocol]: dart.fieldType(core.String),
  [$search]: dart.fieldType(core.String),
  [$username]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLHyperlinkElementUtils", html$.HtmlHyperlinkElementUtils);
const _item = Symbol('_item');
html$.HtmlOptionsCollection = class HtmlOptionsCollection extends html$.HtmlCollection {
  [_item](...args) {
    return this.item.apply(this, args);
  }
};
dart.addTypeTests(html$.HtmlOptionsCollection);
dart.setMethodSignature(html$.HtmlOptionsCollection, () => ({
  __proto__: dart.getMethods(html$.HtmlOptionsCollection.__proto__),
  [_item]: dart.fnType(html$.Element, [core.int])
}));
dart.registerExtension("HTMLOptionsCollection", html$.HtmlOptionsCollection);
const _get_response = Symbol('_get_response');
html$.HttpRequestEventTarget = class HttpRequestEventTarget extends html$.EventTarget {
  get [$onAbort]() {
    return html$.HttpRequestEventTarget.abortEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.HttpRequestEventTarget.errorEvent.forTarget(this);
  }
  get [$onLoad]() {
    return html$.HttpRequestEventTarget.loadEvent.forTarget(this);
  }
  get [$onLoadEnd]() {
    return html$.HttpRequestEventTarget.loadEndEvent.forTarget(this);
  }
  get [$onLoadStart]() {
    return html$.HttpRequestEventTarget.loadStartEvent.forTarget(this);
  }
  get [$onProgress]() {
    return html$.HttpRequestEventTarget.progressEvent.forTarget(this);
  }
  get [$onTimeout]() {
    return html$.HttpRequestEventTarget.timeoutEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.HttpRequestEventTarget);
dart.setGetterSignature(html$.HttpRequestEventTarget, () => ({
  __proto__: dart.getGetters(html$.HttpRequestEventTarget.__proto__),
  [$onAbort]: async.Stream$(html$.ProgressEvent),
  [$onError]: async.Stream$(html$.ProgressEvent),
  [$onLoad]: async.Stream$(html$.ProgressEvent),
  [$onLoadEnd]: async.Stream$(html$.ProgressEvent),
  [$onLoadStart]: async.Stream$(html$.ProgressEvent),
  [$onProgress]: async.Stream$(html$.ProgressEvent),
  [$onTimeout]: async.Stream$(html$.ProgressEvent)
}));
dart.defineLazy(html$.HttpRequestEventTarget, {
  /*html$.HttpRequestEventTarget.abortEvent*/get abortEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("abort"));
  },
  /*html$.HttpRequestEventTarget.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("error"));
  },
  /*html$.HttpRequestEventTarget.loadEvent*/get loadEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("load"));
  },
  /*html$.HttpRequestEventTarget.loadEndEvent*/get loadEndEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("loadend"));
  },
  /*html$.HttpRequestEventTarget.loadStartEvent*/get loadStartEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("loadstart"));
  },
  /*html$.HttpRequestEventTarget.progressEvent*/get progressEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("progress"));
  },
  /*html$.HttpRequestEventTarget.timeoutEvent*/get timeoutEvent() {
    return dart.const(new (EventStreamProviderOfProgressEvent()).new("timeout"));
  }
});
dart.registerExtension("XMLHttpRequestEventTarget", html$.HttpRequestEventTarget);
html$.HttpRequest = class HttpRequest extends html$.HttpRequestEventTarget {
  static getString(url, opts) {
    let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : null;
    let onProgress = opts && 'onProgress' in opts ? opts.onProgress : null;
    return FutureOfString()._check(html$.HttpRequest.request(url, {withCredentials: withCredentials, onProgress: onProgress}).then(core.String, dart.fn(xhr => xhr.responseText, HttpRequestToString())));
  }
  static postFormData(url, data, opts) {
    let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : null;
    let responseType = opts && 'responseType' in opts ? opts.responseType : null;
    let requestHeaders = opts && 'requestHeaders' in opts ? opts.requestHeaders : null;
    let onProgress = opts && 'onProgress' in opts ? opts.onProgress : null;
    let parts = [];
    data[$forEach](dart.fn((key, value) => {
      parts[$add](dart.str(core.Uri.encodeQueryComponent(key)) + "=" + dart.str(core.Uri.encodeQueryComponent(value)));
    }, StringAndStringToNull()));
    let formData = parts[$join]("&");
    if (requestHeaders == null) {
      requestHeaders = new (IdentityMapOfString$String()).new();
    }
    requestHeaders[$putIfAbsent]("Content-Type", dart.fn(() => "application/x-www-form-urlencoded; charset=UTF-8", VoidToString()));
    return html$.HttpRequest.request(url, {method: "POST", withCredentials: withCredentials, responseType: responseType, requestHeaders: requestHeaders, sendData: formData, onProgress: onProgress});
  }
  static request(url, opts) {
    let method = opts && 'method' in opts ? opts.method : null;
    let withCredentials = opts && 'withCredentials' in opts ? opts.withCredentials : null;
    let responseType = opts && 'responseType' in opts ? opts.responseType : null;
    let mimeType = opts && 'mimeType' in opts ? opts.mimeType : null;
    let requestHeaders = opts && 'requestHeaders' in opts ? opts.requestHeaders : null;
    let sendData = opts && 'sendData' in opts ? opts.sendData : null;
    let onProgress = opts && 'onProgress' in opts ? opts.onProgress : null;
    let completer = CompleterOfHttpRequest().new();
    let xhr = html$.HttpRequest.new();
    if (method == null) {
      method = "GET";
    }
    xhr.open(method, url, {async: true});
    if (withCredentials != null) {
      xhr.withCredentials = withCredentials;
    }
    if (responseType != null) {
      xhr.responseType = responseType;
    }
    if (mimeType != null) {
      xhr.overrideMimeType(mimeType);
    }
    if (requestHeaders != null) {
      requestHeaders[$forEach](dart.fn((header, value) => {
        xhr.setRequestHeader(header, value);
      }, StringAndStringToNull()));
    }
    if (onProgress != null) {
      xhr[$onProgress].listen(onProgress);
    }
    xhr[$onLoad].listen(dart.fn(e => {
      let accepted = dart.notNull(xhr.status) >= 200 && dart.notNull(xhr.status) < 300;
      let fileUri = xhr.status === 0;
      let notModified = xhr.status === 304;
      let unknownRedirect = dart.notNull(xhr.status) > 307 && dart.notNull(xhr.status) < 400;
      if (accepted || fileUri || notModified || unknownRedirect) {
        completer.complete(xhr);
      } else {
        completer.completeError(e);
      }
    }, ProgressEventToNull()));
    xhr[$onError].listen(dart.bind(completer, 'completeError'));
    if (sendData != null) {
      xhr.send(sendData);
    } else {
      xhr.send();
    }
    return completer.future;
  }
  static get supportsProgressEvent() {
    let xhr = html$.HttpRequest.new();
    return "onprogress" in xhr;
  }
  static get supportsCrossOrigin() {
    let xhr = html$.HttpRequest.new();
    return "withCredentials" in xhr;
  }
  static get supportsLoadEndEvent() {
    let xhr = html$.HttpRequest.new();
    return "onloadend" in xhr;
  }
  static get supportsOverrideMimeType() {
    let xhr = html$.HttpRequest.new();
    return "overrideMimeType" in xhr;
  }
  static requestCrossOrigin(url, opts) {
    let method = opts && 'method' in opts ? opts.method : null;
    let sendData = opts && 'sendData' in opts ? opts.sendData : null;
    if (dart.test(html$.HttpRequest.supportsCrossOrigin)) {
      return FutureOfString()._check(html$.HttpRequest.request(url, {method: method, sendData: sendData}).then(core.String, dart.fn(xhr => xhr.responseText, HttpRequestToString())));
    }
    let completer = CompleterOfString().new();
    if (method == null) {
      method = "GET";
    }
    let xhr = new XDomainRequest();
    xhr.open(method, url);
    xhr.onload = _js_helper.convertDartClosureToJS(dynamicToNull(), dart.fn(e => {
      let response = xhr.responseText;
      completer.complete(response);
    }, dynamicToNull()), 1);
    xhr.onerror = _js_helper.convertDartClosureToJS(dynamicToNull(), dart.fn(e => {
      completer.completeError(e);
    }, dynamicToNull()), 1);
    xhr.onprogress = {};
    xhr.ontimeout = {};
    xhr.timeout = Number.MAX_VALUE;
    if (sendData != null) {
      xhr.send(sendData);
    } else {
      xhr.send();
    }
    return completer.future;
  }
  get [$responseHeaders]() {
    let headers = new (IdentityMapOfString$String()).new();
    let headersString = this.getAllResponseHeaders();
    if (headersString == null) {
      return headers;
    }
    let headersList = headersString[$split]("\r\n");
    for (let header of headersList) {
      if (header[$isEmpty]) {
        continue;
      }
      let splitIdx = header[$indexOf](": ");
      if (splitIdx === -1) {
        continue;
      }
      let key = header[$substring](0, splitIdx)[$toLowerCase]();
      let value = header[$substring](splitIdx + 2);
      if (dart.test(headers[$containsKey](key))) {
        headers[$_set](key, dart.str(headers[$_get](key)) + ", " + value);
      } else {
        headers[$_set](key, value);
      }
    }
    return headers;
  }
  [$open](...args) {
    return this.open.apply(this, args);
  }
  static new() {
    return html$.HttpRequest._create_1();
  }
  static _create_1() {
    return new XMLHttpRequest();
  }
  get [$readyState]() {
    return this.readyState;
  }
  get [$response]() {
    return html$._convertNativeToDart_XHR_Response(this[_get_response]);
  }
  get [_get_response]() {
    return this.response;
  }
  get [$responseText]() {
    return this.responseText;
  }
  get [$responseType]() {
    return this.responseType;
  }
  set [$responseType](value) {
    this.responseType = value;
  }
  get [$responseUrl]() {
    return this.responseURL;
  }
  get [$responseXml]() {
    return this.responseXML;
  }
  get [$status]() {
    return this.status;
  }
  get [$statusText]() {
    return this.statusText;
  }
  get [$timeout]() {
    return this.timeout;
  }
  set [$timeout](value) {
    this.timeout = value;
  }
  get [$upload]() {
    return this.upload;
  }
  get [$withCredentials]() {
    return this.withCredentials;
  }
  set [$withCredentials](value) {
    this.withCredentials = value;
  }
  [$abort](...args) {
    return this.abort.apply(this, args);
  }
  [$getAllResponseHeaders](...args) {
    return this.getAllResponseHeaders.apply(this, args);
  }
  [$getResponseHeader](...args) {
    return this.getResponseHeader.apply(this, args);
  }
  [$overrideMimeType](...args) {
    return this.overrideMimeType.apply(this, args);
  }
  [$send](...args) {
    return this.send.apply(this, args);
  }
  [$setRequestHeader](...args) {
    return this.setRequestHeader.apply(this, args);
  }
  get [$onReadyStateChange]() {
    return html$.HttpRequest.readyStateChangeEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.HttpRequest);
const readyState$5 = Symbol("HttpRequest.readyState");
const responseText = Symbol("HttpRequest.responseText");
const responseType = Symbol("HttpRequest.responseType");
const responseUrl = Symbol("HttpRequest.responseUrl");
const responseXml = Symbol("HttpRequest.responseXml");
const status$2 = Symbol("HttpRequest.status");
const statusText = Symbol("HttpRequest.statusText");
const timeout = Symbol("HttpRequest.timeout");
const upload = Symbol("HttpRequest.upload");
const withCredentials$ = Symbol("HttpRequest.withCredentials");
dart.setMethodSignature(html$.HttpRequest, () => ({
  __proto__: dart.getMethods(html$.HttpRequest.__proto__),
  [$open]: dart.fnType(dart.void, [core.String, core.String], {async: core.bool, user: core.String, password: core.String}),
  [$abort]: dart.fnType(dart.void, []),
  [$getAllResponseHeaders]: dart.fnType(core.String, []),
  [$getResponseHeader]: dart.fnType(core.String, [core.String]),
  [$overrideMimeType]: dart.fnType(dart.void, [core.String]),
  [$send]: dart.fnType(dart.void, [], [dart.dynamic]),
  [$setRequestHeader]: dart.fnType(dart.void, [core.String, core.String])
}));
dart.setGetterSignature(html$.HttpRequest, () => ({
  __proto__: dart.getGetters(html$.HttpRequest.__proto__),
  [$responseHeaders]: core.Map$(core.String, core.String),
  [$response]: dart.dynamic,
  [$onReadyStateChange]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.HttpRequest, () => ({
  __proto__: dart.getFields(html$.HttpRequest.__proto__),
  [$readyState]: dart.finalFieldType(core.int),
  [_get_response]: dart.finalFieldType(dart.dynamic),
  [$responseText]: dart.finalFieldType(core.String),
  [$responseType]: dart.fieldType(core.String),
  [$responseUrl]: dart.finalFieldType(core.String),
  [$responseXml]: dart.finalFieldType(html$.Document),
  [$status]: dart.finalFieldType(core.int),
  [$statusText]: dart.finalFieldType(core.String),
  [$timeout]: dart.fieldType(core.int),
  [$upload]: dart.finalFieldType(html$.HttpRequestUpload),
  [$withCredentials]: dart.fieldType(core.bool)
}));
dart.defineLazy(html$.HttpRequest, {
  /*html$.HttpRequest.readyStateChangeEvent*/get readyStateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("readystatechange"));
  },
  /*html$.HttpRequest.DONE*/get DONE() {
    return 4;
  },
  /*html$.HttpRequest.HEADERS_RECEIVED*/get HEADERS_RECEIVED() {
    return 2;
  },
  /*html$.HttpRequest.LOADING*/get LOADING() {
    return 3;
  },
  /*html$.HttpRequest.OPENED*/get OPENED() {
    return 1;
  },
  /*html$.HttpRequest.UNSENT*/get UNSENT() {
    return 0;
  }
});
dart.registerExtension("XMLHttpRequest", html$.HttpRequest);
html$.HttpRequestUpload = class HttpRequestUpload extends html$.HttpRequestEventTarget {};
dart.addTypeTests(html$.HttpRequestUpload);
dart.registerExtension("XMLHttpRequestUpload", html$.HttpRequestUpload);
const _get_contentWindow = Symbol('_get_contentWindow');
html$.IFrameElement = class IFrameElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("iframe");
  }
  get [$allow]() {
    return this.allow;
  }
  set [$allow](value) {
    this.allow = value;
  }
  get [$allowFullscreen]() {
    return this.allowFullscreen;
  }
  set [$allowFullscreen](value) {
    this.allowFullscreen = value;
  }
  get [$allowPaymentRequest]() {
    return this.allowPaymentRequest;
  }
  set [$allowPaymentRequest](value) {
    this.allowPaymentRequest = value;
  }
  get [$contentWindow]() {
    return html$._convertNativeToDart_Window(this[_get_contentWindow]);
  }
  get [_get_contentWindow]() {
    return this.contentWindow;
  }
  get [$csp]() {
    return this.csp;
  }
  set [$csp](value) {
    this.csp = value;
  }
  get [$height]() {
    return this.height;
  }
  set [$height](value) {
    this.height = value;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$referrerPolicy]() {
    return this.referrerPolicy;
  }
  set [$referrerPolicy](value) {
    this.referrerPolicy = value;
  }
  get [$sandbox]() {
    return this.sandbox;
  }
  get [$src]() {
    return this.src;
  }
  set [$src](value) {
    this.src = value;
  }
  get [$srcdoc]() {
    return this.srcdoc;
  }
  set [$srcdoc](value) {
    this.srcdoc = value;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
};
(html$.IFrameElement.created = function() {
  this[allow] = null;
  this[allowFullscreen] = null;
  this[allowPaymentRequest] = null;
  this[_get_contentWindow] = null;
  this[csp] = null;
  this[height$0] = null;
  this[name$18] = null;
  this[referrerPolicy$0] = null;
  this[sandbox] = null;
  this[src$0] = null;
  this[srcdoc] = null;
  this[width$0] = null;
  html$.IFrameElement.__proto__.created.call(this);
}).prototype = html$.IFrameElement.prototype;
dart.addTypeTests(html$.IFrameElement);
const allow = Symbol("IFrameElement.allow");
const allowFullscreen = Symbol("IFrameElement.allowFullscreen");
const allowPaymentRequest = Symbol("IFrameElement.allowPaymentRequest");
const csp = Symbol("IFrameElement.csp");
const height$0 = Symbol("IFrameElement.height");
const name$18 = Symbol("IFrameElement.name");
const referrerPolicy$0 = Symbol("IFrameElement.referrerPolicy");
const sandbox = Symbol("IFrameElement.sandbox");
const src$0 = Symbol("IFrameElement.src");
const srcdoc = Symbol("IFrameElement.srcdoc");
const width$0 = Symbol("IFrameElement.width");
dart.setGetterSignature(html$.IFrameElement, () => ({
  __proto__: dart.getGetters(html$.IFrameElement.__proto__),
  [$contentWindow]: html$.WindowBase
}));
dart.setFieldSignature(html$.IFrameElement, () => ({
  __proto__: dart.getFields(html$.IFrameElement.__proto__),
  [$allow]: dart.fieldType(core.String),
  [$allowFullscreen]: dart.fieldType(core.bool),
  [$allowPaymentRequest]: dart.fieldType(core.bool),
  [_get_contentWindow]: dart.finalFieldType(dart.dynamic),
  [$csp]: dart.fieldType(core.String),
  [$height]: dart.fieldType(core.String),
  [$name]: dart.fieldType(core.String),
  [$referrerPolicy]: dart.fieldType(core.String),
  [$sandbox]: dart.finalFieldType(html$.DomTokenList),
  [$src]: dart.fieldType(core.String),
  [$srcdoc]: dart.fieldType(core.String),
  [$width]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLIFrameElement", html$.IFrameElement);
html$.IdleDeadline = class IdleDeadline extends _interceptors.Interceptor {
  get [$didTimeout]() {
    return this.didTimeout;
  }
  [$timeRemaining](...args) {
    return this.timeRemaining.apply(this, args);
  }
};
dart.addTypeTests(html$.IdleDeadline);
const didTimeout = Symbol("IdleDeadline.didTimeout");
dart.setMethodSignature(html$.IdleDeadline, () => ({
  __proto__: dart.getMethods(html$.IdleDeadline.__proto__),
  [$timeRemaining]: dart.fnType(core.double, [])
}));
dart.setFieldSignature(html$.IdleDeadline, () => ({
  __proto__: dart.getFields(html$.IdleDeadline.__proto__),
  [$didTimeout]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("IdleDeadline", html$.IdleDeadline);
html$.ImageBitmap = class ImageBitmap extends _interceptors.Interceptor {
  get [$height]() {
    return this.height;
  }
  get [$width]() {
    return this.width;
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
};
dart.addTypeTests(html$.ImageBitmap);
const height$1 = Symbol("ImageBitmap.height");
const width$1 = Symbol("ImageBitmap.width");
dart.setMethodSignature(html$.ImageBitmap, () => ({
  __proto__: dart.getMethods(html$.ImageBitmap.__proto__),
  [$close]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(html$.ImageBitmap, () => ({
  __proto__: dart.getFields(html$.ImageBitmap.__proto__),
  [$height]: dart.finalFieldType(core.int),
  [$width]: dart.finalFieldType(core.int)
}));
dart.registerExtension("ImageBitmap", html$.ImageBitmap);
html$.ImageBitmapRenderingContext = class ImageBitmapRenderingContext extends _interceptors.Interceptor {
  get [$canvas]() {
    return this.canvas;
  }
  [$transferFromImageBitmap](...args) {
    return this.transferFromImageBitmap.apply(this, args);
  }
};
dart.addTypeTests(html$.ImageBitmapRenderingContext);
const canvas$0 = Symbol("ImageBitmapRenderingContext.canvas");
dart.setMethodSignature(html$.ImageBitmapRenderingContext, () => ({
  __proto__: dart.getMethods(html$.ImageBitmapRenderingContext.__proto__),
  [$transferFromImageBitmap]: dart.fnType(dart.void, [html$.ImageBitmap])
}));
dart.setFieldSignature(html$.ImageBitmapRenderingContext, () => ({
  __proto__: dart.getFields(html$.ImageBitmapRenderingContext.__proto__),
  [$canvas]: dart.finalFieldType(html$.CanvasElement)
}));
dart.registerExtension("ImageBitmapRenderingContext", html$.ImageBitmapRenderingContext);
html$.ImageCapture = class ImageCapture$ extends _interceptors.Interceptor {
  static new(track) {
    return html$.ImageCapture._create_1(track);
  }
  static _create_1(track) {
    return new ImageCapture(track);
  }
  get [$track]() {
    return this.track;
  }
  [$getPhotoCapabilities]() {
    return html$.promiseToFuture(html$.PhotoCapabilities, this.getPhotoCapabilities());
  }
  [$getPhotoSettings]() {
    return html$.promiseToFutureAsMap(this.getPhotoSettings());
  }
  [$grabFrame]() {
    return html$.promiseToFuture(html$.ImageBitmap, this.grabFrame());
  }
  [$setOptions](photoSettings) {
    let photoSettings_dict = html_common.convertDartToNative_Dictionary(photoSettings);
    return html$.promiseToFuture(dart.dynamic, this.setOptions(photoSettings_dict));
  }
  [$takePhoto](photoSettings) {
    if (photoSettings === void 0) photoSettings = null;
    let photoSettings_dict = null;
    if (photoSettings != null) {
      photoSettings_dict = html_common.convertDartToNative_Dictionary(photoSettings);
    }
    return html$.promiseToFuture(html$.Blob, this.takePhoto(photoSettings_dict));
  }
};
dart.addTypeTests(html$.ImageCapture);
const track = Symbol("ImageCapture.track");
dart.setMethodSignature(html$.ImageCapture, () => ({
  __proto__: dart.getMethods(html$.ImageCapture.__proto__),
  [$getPhotoCapabilities]: dart.fnType(async.Future$(html$.PhotoCapabilities), []),
  [$getPhotoSettings]: dart.fnType(async.Future$(core.Map$(core.String, dart.dynamic)), []),
  [$grabFrame]: dart.fnType(async.Future$(html$.ImageBitmap), []),
  [$setOptions]: dart.fnType(async.Future, [core.Map]),
  [$takePhoto]: dart.fnType(async.Future$(html$.Blob), [], [core.Map])
}));
dart.setFieldSignature(html$.ImageCapture, () => ({
  __proto__: dart.getFields(html$.ImageCapture.__proto__),
  [$track]: dart.finalFieldType(html$.MediaStreamTrack)
}));
dart.registerExtension("ImageCapture", html$.ImageCapture);
html$.ImageData = class ImageData$ extends _interceptors.Interceptor {
  static new(data_OR_sw, sh_OR_sw, sh) {
    if (sh === void 0) sh = null;
    if (core.int.is(sh_OR_sw) && core.int.is(data_OR_sw) && sh == null) {
      return html$.ImageData._create_1(data_OR_sw, sh_OR_sw);
    }
    if (core.int.is(sh_OR_sw) && typed_data.Uint8ClampedList.is(data_OR_sw) && sh == null) {
      return html$.ImageData._create_2(data_OR_sw, sh_OR_sw);
    }
    if (core.int.is(sh) && core.int.is(sh_OR_sw) && typed_data.Uint8ClampedList.is(data_OR_sw)) {
      return html$.ImageData._create_3(data_OR_sw, sh_OR_sw, sh);
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  static _create_1(data_OR_sw, sh_OR_sw) {
    return new ImageData(data_OR_sw, sh_OR_sw);
  }
  static _create_2(data_OR_sw, sh_OR_sw) {
    return new ImageData(data_OR_sw, sh_OR_sw);
  }
  static _create_3(data_OR_sw, sh_OR_sw, sh) {
    return new ImageData(data_OR_sw, sh_OR_sw, sh);
  }
  get [$data]() {
    return this.data;
  }
  get [$height]() {
    return this.height;
  }
  get [$width]() {
    return this.width;
  }
};
dart.addTypeTests(html$.ImageData);
const data$3 = Symbol("ImageData.data");
const height$2 = Symbol("ImageData.height");
const width$2 = Symbol("ImageData.width");
dart.setFieldSignature(html$.ImageData, () => ({
  __proto__: dart.getFields(html$.ImageData.__proto__),
  [$data]: dart.finalFieldType(typed_data.Uint8ClampedList),
  [$height]: dart.finalFieldType(core.int),
  [$width]: dart.finalFieldType(core.int)
}));
dart.registerExtension("ImageData", html$.ImageData);
html$.ImageElement = class ImageElement extends html$.HtmlElement {
  static new(opts) {
    let src = opts && 'src' in opts ? opts.src : null;
    let width = opts && 'width' in opts ? opts.width : null;
    let height = opts && 'height' in opts ? opts.height : null;
    let e = html$.document.createElement("img");
    if (src != null) e.src = src;
    if (width != null) e.width = width;
    if (height != null) e.height = height;
    return e;
  }
  get [$alt]() {
    return this.alt;
  }
  set [$alt](value) {
    this.alt = value;
  }
  get [$async]() {
    return this.async;
  }
  set [$async](value) {
    this.async = value;
  }
  get [$complete]() {
    return this.complete;
  }
  get [$crossOrigin]() {
    return this.crossOrigin;
  }
  set [$crossOrigin](value) {
    this.crossOrigin = value;
  }
  get [$currentSrc]() {
    return this.currentSrc;
  }
  get [$height]() {
    return this.height;
  }
  set [$height](value) {
    this.height = value;
  }
  get [$isMap]() {
    return this.isMap;
  }
  set [$isMap](value) {
    this.isMap = value;
  }
  get [$naturalHeight]() {
    return this.naturalHeight;
  }
  get [$naturalWidth]() {
    return this.naturalWidth;
  }
  get [$referrerPolicy]() {
    return this.referrerPolicy;
  }
  set [$referrerPolicy](value) {
    this.referrerPolicy = value;
  }
  get [$sizes]() {
    return this.sizes;
  }
  set [$sizes](value) {
    this.sizes = value;
  }
  get [$src]() {
    return this.src;
  }
  set [$src](value) {
    this.src = value;
  }
  get [$srcset]() {
    return this.srcset;
  }
  set [$srcset](value) {
    this.srcset = value;
  }
  get [$useMap]() {
    return this.useMap;
  }
  set [$useMap](value) {
    this.useMap = value;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
  [$decode]() {
    return html$.promiseToFuture(dart.dynamic, this.decode());
  }
};
(html$.ImageElement.created = function() {
  this[alt$] = null;
  this[async$] = null;
  this[complete] = null;
  this[crossOrigin$] = null;
  this[currentSrc$] = null;
  this[height$3] = null;
  this[isMap] = null;
  this[naturalHeight] = null;
  this[naturalWidth] = null;
  this[referrerPolicy$1] = null;
  this[sizes] = null;
  this[src$1] = null;
  this[srcset] = null;
  this[useMap] = null;
  this[width$3] = null;
  html$.ImageElement.__proto__.created.call(this);
}).prototype = html$.ImageElement.prototype;
dart.addTypeTests(html$.ImageElement);
const alt$ = Symbol("ImageElement.alt");
const async$ = Symbol("ImageElement.async");
const complete = Symbol("ImageElement.complete");
const crossOrigin$ = Symbol("ImageElement.crossOrigin");
const currentSrc$ = Symbol("ImageElement.currentSrc");
const height$3 = Symbol("ImageElement.height");
const isMap = Symbol("ImageElement.isMap");
const naturalHeight = Symbol("ImageElement.naturalHeight");
const naturalWidth = Symbol("ImageElement.naturalWidth");
const referrerPolicy$1 = Symbol("ImageElement.referrerPolicy");
const sizes = Symbol("ImageElement.sizes");
const src$1 = Symbol("ImageElement.src");
const srcset = Symbol("ImageElement.srcset");
const useMap = Symbol("ImageElement.useMap");
const width$3 = Symbol("ImageElement.width");
html$.ImageElement[dart.implements] = () => [html$.CanvasImageSource];
dart.setMethodSignature(html$.ImageElement, () => ({
  __proto__: dart.getMethods(html$.ImageElement.__proto__),
  [$decode]: dart.fnType(async.Future, [])
}));
dart.setFieldSignature(html$.ImageElement, () => ({
  __proto__: dart.getFields(html$.ImageElement.__proto__),
  [$alt]: dart.fieldType(core.String),
  [$async]: dart.fieldType(core.String),
  [$complete]: dart.finalFieldType(core.bool),
  [$crossOrigin]: dart.fieldType(core.String),
  [$currentSrc]: dart.finalFieldType(core.String),
  [$height]: dart.fieldType(core.int),
  [$isMap]: dart.fieldType(core.bool),
  [$naturalHeight]: dart.finalFieldType(core.int),
  [$naturalWidth]: dart.finalFieldType(core.int),
  [$referrerPolicy]: dart.fieldType(core.String),
  [$sizes]: dart.fieldType(core.String),
  [$src]: dart.fieldType(core.String),
  [$srcset]: dart.fieldType(core.String),
  [$useMap]: dart.fieldType(core.String),
  [$width]: dart.fieldType(core.int)
}));
dart.registerExtension("HTMLImageElement", html$.ImageElement);
html$.InputDeviceCapabilities = class InputDeviceCapabilities$ extends _interceptors.Interceptor {
  static new(deviceInitDict) {
    if (deviceInitDict === void 0) deviceInitDict = null;
    if (deviceInitDict != null) {
      let deviceInitDict_1 = html_common.convertDartToNative_Dictionary(deviceInitDict);
      return html$.InputDeviceCapabilities._create_1(deviceInitDict_1);
    }
    return html$.InputDeviceCapabilities._create_2();
  }
  static _create_1(deviceInitDict) {
    return new InputDeviceCapabilities(deviceInitDict);
  }
  static _create_2() {
    return new InputDeviceCapabilities();
  }
  get [$firesTouchEvents]() {
    return this.firesTouchEvents;
  }
};
dart.addTypeTests(html$.InputDeviceCapabilities);
const firesTouchEvents = Symbol("InputDeviceCapabilities.firesTouchEvents");
dart.setFieldSignature(html$.InputDeviceCapabilities, () => ({
  __proto__: dart.getFields(html$.InputDeviceCapabilities.__proto__),
  [$firesTouchEvents]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("InputDeviceCapabilities", html$.InputDeviceCapabilities);
const _get_valueAsDate = Symbol('_get_valueAsDate');
const _set_valueAsDate = Symbol('_set_valueAsDate');
html$.InputElement = class InputElement extends html$.HtmlElement {
  static new(opts) {
    let type = opts && 'type' in opts ? opts.type : null;
    let e = html$.InputElement._check(html$.document[$createElement]("input"));
    if (type != null) {
      try {
        e.type = type;
      } catch (e$) {
        let _ = dart.getThrown(e$);
      }
    }
    return e;
  }
  get [$accept]() {
    return this.accept;
  }
  set [$accept](value) {
    this.accept = value;
  }
  get [$alt]() {
    return this.alt;
  }
  set [$alt](value) {
    this.alt = value;
  }
  get [$autocapitalize]() {
    return this.autocapitalize;
  }
  set [$autocapitalize](value) {
    this.autocapitalize = value;
  }
  get [$autocomplete]() {
    return this.autocomplete;
  }
  set [$autocomplete](value) {
    this.autocomplete = value;
  }
  get [$autofocus]() {
    return this.autofocus;
  }
  set [$autofocus](value) {
    this.autofocus = value;
  }
  get [$capture]() {
    return this.capture;
  }
  set [$capture](value) {
    this.capture = value;
  }
  get [$checked]() {
    return this.checked;
  }
  set [$checked](value) {
    this.checked = value;
  }
  get [$defaultChecked]() {
    return this.defaultChecked;
  }
  set [$defaultChecked](value) {
    this.defaultChecked = value;
  }
  get [$defaultValue]() {
    return this.defaultValue;
  }
  set [$defaultValue](value) {
    this.defaultValue = value;
  }
  get [$dirName]() {
    return this.dirName;
  }
  set [$dirName](value) {
    this.dirName = value;
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$files]() {
    return this.files;
  }
  set [$files](value) {
    this.files = value;
  }
  get [$form]() {
    return this.form;
  }
  get [$formAction]() {
    return this.formAction;
  }
  set [$formAction](value) {
    this.formAction = value;
  }
  get [$formEnctype]() {
    return this.formEnctype;
  }
  set [$formEnctype](value) {
    this.formEnctype = value;
  }
  get [$formMethod]() {
    return this.formMethod;
  }
  set [$formMethod](value) {
    this.formMethod = value;
  }
  get [$formNoValidate]() {
    return this.formNoValidate;
  }
  set [$formNoValidate](value) {
    this.formNoValidate = value;
  }
  get [$formTarget]() {
    return this.formTarget;
  }
  set [$formTarget](value) {
    this.formTarget = value;
  }
  get [$height]() {
    return this.height;
  }
  set [$height](value) {
    this.height = value;
  }
  get [$incremental]() {
    return this.incremental;
  }
  set [$incremental](value) {
    this.incremental = value;
  }
  get [$indeterminate]() {
    return this.indeterminate;
  }
  set [$indeterminate](value) {
    this.indeterminate = value;
  }
  get [$labels]() {
    return this.labels;
  }
  get [$list]() {
    return this.list;
  }
  get [$max]() {
    return this.max;
  }
  set [$max](value) {
    this.max = value;
  }
  get [$maxLength]() {
    return this.maxLength;
  }
  set [$maxLength](value) {
    this.maxLength = value;
  }
  get [$min]() {
    return this.min;
  }
  set [$min](value) {
    this.min = value;
  }
  get [$minLength]() {
    return this.minLength;
  }
  set [$minLength](value) {
    this.minLength = value;
  }
  get [$multiple]() {
    return this.multiple;
  }
  set [$multiple](value) {
    this.multiple = value;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$pattern]() {
    return this.pattern;
  }
  set [$pattern](value) {
    this.pattern = value;
  }
  get [$placeholder]() {
    return this.placeholder;
  }
  set [$placeholder](value) {
    this.placeholder = value;
  }
  get [$readOnly]() {
    return this.readOnly;
  }
  set [$readOnly](value) {
    this.readOnly = value;
  }
  get [$required]() {
    return this.required;
  }
  set [$required](value) {
    this.required = value;
  }
  get [$selectionDirection]() {
    return this.selectionDirection;
  }
  set [$selectionDirection](value) {
    this.selectionDirection = value;
  }
  get [$selectionEnd]() {
    return this.selectionEnd;
  }
  set [$selectionEnd](value) {
    this.selectionEnd = value;
  }
  get [$selectionStart]() {
    return this.selectionStart;
  }
  set [$selectionStart](value) {
    this.selectionStart = value;
  }
  get [$size]() {
    return this.size;
  }
  set [$size](value) {
    this.size = value;
  }
  get [$src]() {
    return this.src;
  }
  set [$src](value) {
    this.src = value;
  }
  get [$step]() {
    return this.step;
  }
  set [$step](value) {
    this.step = value;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
  get [$validationMessage]() {
    return this.validationMessage;
  }
  get [$validity]() {
    return this.validity;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
  get [$valueAsDate]() {
    return html_common.convertNativeToDart_DateTime(this[_get_valueAsDate]);
  }
  get [_get_valueAsDate]() {
    return this.valueAsDate;
  }
  set [$valueAsDate](value) {
    this[_set_valueAsDate] = html_common.convertDartToNative_DateTime(value);
  }
  set [_set_valueAsDate](value) {
    this.valueAsDate = value;
  }
  get [$valueAsNumber]() {
    return this.valueAsNumber;
  }
  set [$valueAsNumber](value) {
    this.valueAsNumber = value;
  }
  get [$entries]() {
    return this.webkitEntries;
  }
  get [$directory]() {
    return this.webkitdirectory;
  }
  set [$directory](value) {
    this.webkitdirectory = value;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
  get [$willValidate]() {
    return this.willValidate;
  }
  [$checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [$reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [$select](...args) {
    return this.select.apply(this, args);
  }
  [$setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
  [$setRangeText](...args) {
    return this.setRangeText.apply(this, args);
  }
  [$setSelectionRange](...args) {
    return this.setSelectionRange.apply(this, args);
  }
  [$stepDown](...args) {
    return this.stepDown.apply(this, args);
  }
  [$stepUp](...args) {
    return this.stepUp.apply(this, args);
  }
};
(html$.InputElement.created = function() {
  this[accept] = null;
  this[alt$0] = null;
  this[autocapitalize] = null;
  this[autocomplete$0] = null;
  this[autofocus$] = null;
  this[capture] = null;
  this[checked$] = null;
  this[defaultChecked] = null;
  this[defaultValue] = null;
  this[dirName] = null;
  this[disabled$2] = null;
  this[files$] = null;
  this[form$0] = null;
  this[formAction$] = null;
  this[formEnctype$] = null;
  this[formMethod$] = null;
  this[formNoValidate$] = null;
  this[formTarget$] = null;
  this[height$4] = null;
  this[incremental] = null;
  this[indeterminate] = null;
  this[labels$] = null;
  this[list] = null;
  this[max] = null;
  this[maxLength] = null;
  this[min] = null;
  this[minLength] = null;
  this[multiple] = null;
  this[name$19] = null;
  this[pattern] = null;
  this[placeholder$] = null;
  this[readOnly$] = null;
  this[required$] = null;
  this[selectionDirection] = null;
  this[selectionEnd] = null;
  this[selectionStart] = null;
  this[size$0] = null;
  this[src$2] = null;
  this[step] = null;
  this[type$15] = null;
  this[validationMessage$0] = null;
  this[validity$0] = null;
  this[value$7] = null;
  this[_get_valueAsDate] = null;
  this[valueAsNumber] = null;
  this[entries] = null;
  this[directory] = null;
  this[width$4] = null;
  this[willValidate$0] = null;
  html$.InputElement.__proto__.created.call(this);
}).prototype = html$.InputElement.prototype;
dart.addTypeTests(html$.InputElement);
const accept = Symbol("InputElement.accept");
const alt$0 = Symbol("InputElement.alt");
const autocapitalize = Symbol("InputElement.autocapitalize");
const autocomplete$0 = Symbol("InputElement.autocomplete");
const autofocus$ = Symbol("InputElement.autofocus");
const capture = Symbol("InputElement.capture");
const checked$ = Symbol("InputElement.checked");
const defaultChecked = Symbol("InputElement.defaultChecked");
const defaultValue = Symbol("InputElement.defaultValue");
const dirName = Symbol("InputElement.dirName");
const disabled$2 = Symbol("InputElement.disabled");
const files$ = Symbol("InputElement.files");
const form$0 = Symbol("InputElement.form");
const formAction$ = Symbol("InputElement.formAction");
const formEnctype$ = Symbol("InputElement.formEnctype");
const formMethod$ = Symbol("InputElement.formMethod");
const formNoValidate$ = Symbol("InputElement.formNoValidate");
const formTarget$ = Symbol("InputElement.formTarget");
const height$4 = Symbol("InputElement.height");
const incremental = Symbol("InputElement.incremental");
const indeterminate = Symbol("InputElement.indeterminate");
const labels$ = Symbol("InputElement.labels");
const list = Symbol("InputElement.list");
const max = Symbol("InputElement.max");
const maxLength = Symbol("InputElement.maxLength");
const min = Symbol("InputElement.min");
const minLength = Symbol("InputElement.minLength");
const multiple = Symbol("InputElement.multiple");
const name$19 = Symbol("InputElement.name");
const pattern = Symbol("InputElement.pattern");
const placeholder$ = Symbol("InputElement.placeholder");
const readOnly$ = Symbol("InputElement.readOnly");
const required$ = Symbol("InputElement.required");
const selectionDirection = Symbol("InputElement.selectionDirection");
const selectionEnd = Symbol("InputElement.selectionEnd");
const selectionStart = Symbol("InputElement.selectionStart");
const size$0 = Symbol("InputElement.size");
const src$2 = Symbol("InputElement.src");
const step = Symbol("InputElement.step");
const type$15 = Symbol("InputElement.type");
const validationMessage$0 = Symbol("InputElement.validationMessage");
const validity$0 = Symbol("InputElement.validity");
const value$7 = Symbol("InputElement.value");
const valueAsNumber = Symbol("InputElement.valueAsNumber");
const entries = Symbol("InputElement.entries");
const directory = Symbol("InputElement.directory");
const width$4 = Symbol("InputElement.width");
const willValidate$0 = Symbol("InputElement.willValidate");
html$.InputElement[dart.implements] = () => [html$.HiddenInputElement, html$.SearchInputElement, html$.TextInputElement, html$.UrlInputElement, html$.TelephoneInputElement, html$.EmailInputElement, html$.PasswordInputElement, html$.DateInputElement, html$.MonthInputElement, html$.WeekInputElement, html$.TimeInputElement, html$.LocalDateTimeInputElement, html$.NumberInputElement, html$.RangeInputElement, html$.CheckboxInputElement, html$.RadioButtonInputElement, html$.FileUploadInputElement, html$.SubmitButtonInputElement, html$.ImageButtonInputElement, html$.ResetButtonInputElement, html$.ButtonInputElement];
dart.setMethodSignature(html$.InputElement, () => ({
  __proto__: dart.getMethods(html$.InputElement.__proto__),
  [$checkValidity]: dart.fnType(core.bool, []),
  [$reportValidity]: dart.fnType(core.bool, []),
  [$select]: dart.fnType(dart.void, []),
  [$setCustomValidity]: dart.fnType(dart.void, [core.String]),
  [$setRangeText]: dart.fnType(dart.void, [core.String], {start: core.int, end: core.int, selectionMode: core.String}),
  [$setSelectionRange]: dart.fnType(dart.void, [core.int, core.int], [core.String]),
  [$stepDown]: dart.fnType(dart.void, [], [core.int]),
  [$stepUp]: dart.fnType(dart.void, [], [core.int])
}));
dart.setGetterSignature(html$.InputElement, () => ({
  __proto__: dart.getGetters(html$.InputElement.__proto__),
  [$valueAsDate]: core.DateTime
}));
dart.setSetterSignature(html$.InputElement, () => ({
  __proto__: dart.getSetters(html$.InputElement.__proto__),
  [$valueAsDate]: core.DateTime,
  [_set_valueAsDate]: dart.dynamic
}));
dart.setFieldSignature(html$.InputElement, () => ({
  __proto__: dart.getFields(html$.InputElement.__proto__),
  [$accept]: dart.fieldType(core.String),
  [$alt]: dart.fieldType(core.String),
  [$autocapitalize]: dart.fieldType(core.String),
  [$autocomplete]: dart.fieldType(core.String),
  [$autofocus]: dart.fieldType(core.bool),
  [$capture]: dart.fieldType(core.String),
  [$checked]: dart.fieldType(core.bool),
  [$defaultChecked]: dart.fieldType(core.bool),
  [$defaultValue]: dart.fieldType(core.String),
  [$dirName]: dart.fieldType(core.String),
  [$disabled]: dart.fieldType(core.bool),
  [$files]: dart.fieldType(ListOfFile()),
  [$form]: dart.finalFieldType(html$.FormElement),
  [$formAction]: dart.fieldType(core.String),
  [$formEnctype]: dart.fieldType(core.String),
  [$formMethod]: dart.fieldType(core.String),
  [$formNoValidate]: dart.fieldType(core.bool),
  [$formTarget]: dart.fieldType(core.String),
  [$height]: dart.fieldType(core.int),
  [$incremental]: dart.fieldType(core.bool),
  [$indeterminate]: dart.fieldType(core.bool),
  [$labels]: dart.finalFieldType(ListOfNode()),
  [$list]: dart.finalFieldType(html$.HtmlElement),
  [$max]: dart.fieldType(core.String),
  [$maxLength]: dart.fieldType(core.int),
  [$min]: dart.fieldType(core.String),
  [$minLength]: dart.fieldType(core.int),
  [$multiple]: dart.fieldType(core.bool),
  [$name]: dart.fieldType(core.String),
  [$pattern]: dart.fieldType(core.String),
  [$placeholder]: dart.fieldType(core.String),
  [$readOnly]: dart.fieldType(core.bool),
  [$required]: dart.fieldType(core.bool),
  [$selectionDirection]: dart.fieldType(core.String),
  [$selectionEnd]: dart.fieldType(core.int),
  [$selectionStart]: dart.fieldType(core.int),
  [$size]: dart.fieldType(core.int),
  [$src]: dart.fieldType(core.String),
  [$step]: dart.fieldType(core.String),
  [$type]: dart.fieldType(core.String),
  [$validationMessage]: dart.finalFieldType(core.String),
  [$validity]: dart.finalFieldType(html$.ValidityState),
  [$value]: dart.fieldType(core.String),
  [_get_valueAsDate]: dart.finalFieldType(dart.dynamic),
  [$valueAsNumber]: dart.fieldType(core.num),
  [$entries]: dart.finalFieldType(ListOfEntry()),
  [$directory]: dart.fieldType(core.bool),
  [$width]: dart.fieldType(core.int),
  [$willValidate]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("HTMLInputElement", html$.InputElement);
html$.InputElementBase = class InputElementBase extends core.Object {
  get autofocus() {
    return this[autofocus$0];
  }
  set autofocus(value) {
    this[autofocus$0] = value;
  }
  get disabled() {
    return this[disabled$3];
  }
  set disabled(value) {
    this[disabled$3] = value;
  }
  get incremental() {
    return this[incremental$];
  }
  set incremental(value) {
    this[incremental$] = value;
  }
  get indeterminate() {
    return this[indeterminate$];
  }
  set indeterminate(value) {
    this[indeterminate$] = value;
  }
  get name() {
    return this[name$20];
  }
  set name(value) {
    this[name$20] = value;
  }
  get value() {
    return this[value$8];
  }
  set value(value) {
    this[value$8] = value;
  }
};
(html$.InputElementBase.new = function() {
  this[autofocus$0] = null;
  this[disabled$3] = null;
  this[incremental$] = null;
  this[indeterminate$] = null;
  this[name$20] = null;
  this[value$8] = null;
}).prototype = html$.InputElementBase.prototype;
dart.addTypeTests(html$.InputElementBase);
const autofocus$0 = Symbol("InputElementBase.autofocus");
const disabled$3 = Symbol("InputElementBase.disabled");
const incremental$ = Symbol("InputElementBase.incremental");
const indeterminate$ = Symbol("InputElementBase.indeterminate");
const name$20 = Symbol("InputElementBase.name");
const value$8 = Symbol("InputElementBase.value");
html$.InputElementBase[dart.implements] = () => [html$.Element];
dart.setFieldSignature(html$.InputElementBase, () => ({
  __proto__: dart.getFields(html$.InputElementBase.__proto__),
  autofocus: dart.fieldType(core.bool),
  disabled: dart.fieldType(core.bool),
  incremental: dart.fieldType(core.bool),
  indeterminate: dart.fieldType(core.bool),
  name: dart.fieldType(core.String),
  value: dart.fieldType(core.String)
}));
dart.defineExtensionAccessors(html$.InputElementBase, [
  'autofocus',
  'disabled',
  'incremental',
  'indeterminate',
  'name',
  'value'
]);
html$.HiddenInputElement = class HiddenInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "hidden"});
  }
};
(html$.HiddenInputElement[dart.mixinNew] = function() {
}).prototype = html$.HiddenInputElement.prototype;
dart.addTypeTests(html$.HiddenInputElement);
html$.HiddenInputElement[dart.implements] = () => [html$.InputElementBase];
html$.TextInputElementBase = class TextInputElementBase extends core.Object {
  get autocomplete() {
    return this[autocomplete$1];
  }
  set autocomplete(value) {
    this[autocomplete$1] = value;
  }
  get maxLength() {
    return this[maxLength$];
  }
  set maxLength(value) {
    this[maxLength$] = value;
  }
  get pattern() {
    return this[pattern$];
  }
  set pattern(value) {
    this[pattern$] = value;
  }
  get placeholder() {
    return this[placeholder$0];
  }
  set placeholder(value) {
    this[placeholder$0] = value;
  }
  get readOnly() {
    return this[readOnly$0];
  }
  set readOnly(value) {
    this[readOnly$0] = value;
  }
  get required() {
    return this[required$0];
  }
  set required(value) {
    this[required$0] = value;
  }
  get size() {
    return this[size$1];
  }
  set size(value) {
    this[size$1] = value;
  }
  get selectionDirection() {
    return this[selectionDirection$];
  }
  set selectionDirection(value) {
    this[selectionDirection$] = value;
  }
  get selectionEnd() {
    return this[selectionEnd$];
  }
  set selectionEnd(value) {
    this[selectionEnd$] = value;
  }
  get selectionStart() {
    return this[selectionStart$];
  }
  set selectionStart(value) {
    this[selectionStart$] = value;
  }
};
(html$.TextInputElementBase.new = function() {
  this[autocomplete$1] = null;
  this[maxLength$] = null;
  this[pattern$] = null;
  this[placeholder$0] = null;
  this[readOnly$0] = null;
  this[required$0] = null;
  this[size$1] = null;
  this[selectionDirection$] = null;
  this[selectionEnd$] = null;
  this[selectionStart$] = null;
}).prototype = html$.TextInputElementBase.prototype;
dart.addTypeTests(html$.TextInputElementBase);
const autocomplete$1 = Symbol("TextInputElementBase.autocomplete");
const maxLength$ = Symbol("TextInputElementBase.maxLength");
const pattern$ = Symbol("TextInputElementBase.pattern");
const placeholder$0 = Symbol("TextInputElementBase.placeholder");
const readOnly$0 = Symbol("TextInputElementBase.readOnly");
const required$0 = Symbol("TextInputElementBase.required");
const size$1 = Symbol("TextInputElementBase.size");
const selectionDirection$ = Symbol("TextInputElementBase.selectionDirection");
const selectionEnd$ = Symbol("TextInputElementBase.selectionEnd");
const selectionStart$ = Symbol("TextInputElementBase.selectionStart");
html$.TextInputElementBase[dart.implements] = () => [html$.InputElementBase];
dart.setFieldSignature(html$.TextInputElementBase, () => ({
  __proto__: dart.getFields(html$.TextInputElementBase.__proto__),
  autocomplete: dart.fieldType(core.String),
  maxLength: dart.fieldType(core.int),
  pattern: dart.fieldType(core.String),
  placeholder: dart.fieldType(core.String),
  readOnly: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool),
  size: dart.fieldType(core.int),
  selectionDirection: dart.fieldType(core.String),
  selectionEnd: dart.fieldType(core.int),
  selectionStart: dart.fieldType(core.int)
}));
dart.defineExtensionAccessors(html$.TextInputElementBase, [
  'autocomplete',
  'maxLength',
  'pattern',
  'placeholder',
  'readOnly',
  'required',
  'size',
  'selectionDirection',
  'selectionEnd',
  'selectionStart'
]);
html$.SearchInputElement = class SearchInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "search"});
  }
  get dirName() {
    return this[dirName$];
  }
  set dirName(value) {
    this[dirName$] = value;
  }
  static get supported() {
    return html$.InputElement.new({type: "search"}).type === "search";
  }
};
(html$.SearchInputElement[dart.mixinNew] = function() {
  this[dirName$] = null;
}).prototype = html$.SearchInputElement.prototype;
dart.addTypeTests(html$.SearchInputElement);
const dirName$ = Symbol("SearchInputElement.dirName");
html$.SearchInputElement[dart.implements] = () => [html$.TextInputElementBase];
dart.setFieldSignature(html$.SearchInputElement, () => ({
  __proto__: dart.getFields(html$.SearchInputElement.__proto__),
  dirName: dart.fieldType(core.String)
}));
dart.defineExtensionAccessors(html$.SearchInputElement, ['dirName']);
html$.TextInputElement = class TextInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "text"});
  }
  get dirName() {
    return this[dirName$0];
  }
  set dirName(value) {
    this[dirName$0] = value;
  }
};
(html$.TextInputElement[dart.mixinNew] = function() {
  this[dirName$0] = null;
}).prototype = html$.TextInputElement.prototype;
dart.addTypeTests(html$.TextInputElement);
const dirName$0 = Symbol("TextInputElement.dirName");
html$.TextInputElement[dart.implements] = () => [html$.TextInputElementBase];
dart.setFieldSignature(html$.TextInputElement, () => ({
  __proto__: dart.getFields(html$.TextInputElement.__proto__),
  dirName: dart.fieldType(core.String)
}));
dart.defineExtensionAccessors(html$.TextInputElement, ['dirName']);
html$.UrlInputElement = class UrlInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "url"});
  }
  static get supported() {
    return html$.InputElement.new({type: "url"}).type === "url";
  }
};
(html$.UrlInputElement[dart.mixinNew] = function() {
}).prototype = html$.UrlInputElement.prototype;
dart.addTypeTests(html$.UrlInputElement);
html$.UrlInputElement[dart.implements] = () => [html$.TextInputElementBase];
html$.TelephoneInputElement = class TelephoneInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "tel"});
  }
  static get supported() {
    return html$.InputElement.new({type: "tel"}).type === "tel";
  }
};
(html$.TelephoneInputElement[dart.mixinNew] = function() {
}).prototype = html$.TelephoneInputElement.prototype;
dart.addTypeTests(html$.TelephoneInputElement);
html$.TelephoneInputElement[dart.implements] = () => [html$.TextInputElementBase];
html$.EmailInputElement = class EmailInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "email"});
  }
  get autocomplete() {
    return this[autocomplete$2];
  }
  set autocomplete(value) {
    this[autocomplete$2] = value;
  }
  get autofocus() {
    return this[autofocus$1];
  }
  set autofocus(value) {
    this[autofocus$1] = value;
  }
  get maxLength() {
    return this[maxLength$0];
  }
  set maxLength(value) {
    this[maxLength$0] = value;
  }
  get multiple() {
    return this[multiple$];
  }
  set multiple(value) {
    this[multiple$] = value;
  }
  get pattern() {
    return this[pattern$0];
  }
  set pattern(value) {
    this[pattern$0] = value;
  }
  get placeholder() {
    return this[placeholder$1];
  }
  set placeholder(value) {
    this[placeholder$1] = value;
  }
  get readOnly() {
    return this[readOnly$1];
  }
  set readOnly(value) {
    this[readOnly$1] = value;
  }
  get required() {
    return this[required$1];
  }
  set required(value) {
    this[required$1] = value;
  }
  get size() {
    return this[size$2];
  }
  set size(value) {
    this[size$2] = value;
  }
  static get supported() {
    return html$.InputElement.new({type: "email"}).type === "email";
  }
};
(html$.EmailInputElement[dart.mixinNew] = function() {
  this[autocomplete$2] = null;
  this[autofocus$1] = null;
  this[maxLength$0] = null;
  this[multiple$] = null;
  this[pattern$0] = null;
  this[placeholder$1] = null;
  this[readOnly$1] = null;
  this[required$1] = null;
  this[size$2] = null;
}).prototype = html$.EmailInputElement.prototype;
dart.addTypeTests(html$.EmailInputElement);
const autocomplete$2 = Symbol("EmailInputElement.autocomplete");
const autofocus$1 = Symbol("EmailInputElement.autofocus");
const maxLength$0 = Symbol("EmailInputElement.maxLength");
const multiple$ = Symbol("EmailInputElement.multiple");
const pattern$0 = Symbol("EmailInputElement.pattern");
const placeholder$1 = Symbol("EmailInputElement.placeholder");
const readOnly$1 = Symbol("EmailInputElement.readOnly");
const required$1 = Symbol("EmailInputElement.required");
const size$2 = Symbol("EmailInputElement.size");
html$.EmailInputElement[dart.implements] = () => [html$.TextInputElementBase];
dart.setFieldSignature(html$.EmailInputElement, () => ({
  __proto__: dart.getFields(html$.EmailInputElement.__proto__),
  autocomplete: dart.fieldType(core.String),
  autofocus: dart.fieldType(core.bool),
  maxLength: dart.fieldType(core.int),
  multiple: dart.fieldType(core.bool),
  pattern: dart.fieldType(core.String),
  placeholder: dart.fieldType(core.String),
  readOnly: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool),
  size: dart.fieldType(core.int)
}));
dart.defineExtensionAccessors(html$.EmailInputElement, [
  'autocomplete',
  'autofocus',
  'maxLength',
  'multiple',
  'pattern',
  'placeholder',
  'readOnly',
  'required',
  'size'
]);
html$.PasswordInputElement = class PasswordInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "password"});
  }
};
(html$.PasswordInputElement[dart.mixinNew] = function() {
}).prototype = html$.PasswordInputElement.prototype;
dart.addTypeTests(html$.PasswordInputElement);
html$.PasswordInputElement[dart.implements] = () => [html$.TextInputElementBase];
html$.RangeInputElementBase = class RangeInputElementBase extends core.Object {
  get max() {
    return this[max$0];
  }
  set max(value) {
    this[max$0] = value;
  }
  get min() {
    return this[min$0];
  }
  set min(value) {
    this[min$0] = value;
  }
  get step() {
    return this[step$];
  }
  set step(value) {
    this[step$] = value;
  }
  get valueAsNumber() {
    return this[valueAsNumber$];
  }
  set valueAsNumber(value) {
    this[valueAsNumber$] = value;
  }
};
(html$.RangeInputElementBase.new = function() {
  this[max$0] = null;
  this[min$0] = null;
  this[step$] = null;
  this[valueAsNumber$] = null;
}).prototype = html$.RangeInputElementBase.prototype;
dart.addTypeTests(html$.RangeInputElementBase);
const max$0 = Symbol("RangeInputElementBase.max");
const min$0 = Symbol("RangeInputElementBase.min");
const step$ = Symbol("RangeInputElementBase.step");
const valueAsNumber$ = Symbol("RangeInputElementBase.valueAsNumber");
html$.RangeInputElementBase[dart.implements] = () => [html$.InputElementBase];
dart.setFieldSignature(html$.RangeInputElementBase, () => ({
  __proto__: dart.getFields(html$.RangeInputElementBase.__proto__),
  max: dart.fieldType(core.String),
  min: dart.fieldType(core.String),
  step: dart.fieldType(core.String),
  valueAsNumber: dart.fieldType(core.num)
}));
dart.defineExtensionAccessors(html$.RangeInputElementBase, ['max', 'min', 'step', 'valueAsNumber']);
html$.DateInputElement = class DateInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "date"});
  }
  get valueAsDate() {
    return this[valueAsDate];
  }
  set valueAsDate(value) {
    this[valueAsDate] = value;
  }
  get readOnly() {
    return this[readOnly$2];
  }
  set readOnly(value) {
    this[readOnly$2] = value;
  }
  get required() {
    return this[required$2];
  }
  set required(value) {
    this[required$2] = value;
  }
  static get supported() {
    return html$.InputElement.new({type: "date"}).type === "date";
  }
};
(html$.DateInputElement[dart.mixinNew] = function() {
  this[valueAsDate] = null;
  this[readOnly$2] = null;
  this[required$2] = null;
}).prototype = html$.DateInputElement.prototype;
dart.addTypeTests(html$.DateInputElement);
const valueAsDate = Symbol("DateInputElement.valueAsDate");
const readOnly$2 = Symbol("DateInputElement.readOnly");
const required$2 = Symbol("DateInputElement.required");
html$.DateInputElement[dart.implements] = () => [html$.RangeInputElementBase];
dart.setFieldSignature(html$.DateInputElement, () => ({
  __proto__: dart.getFields(html$.DateInputElement.__proto__),
  valueAsDate: dart.fieldType(core.DateTime),
  readOnly: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool)
}));
dart.defineExtensionAccessors(html$.DateInputElement, ['valueAsDate', 'readOnly', 'required']);
html$.MonthInputElement = class MonthInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "month"});
  }
  get valueAsDate() {
    return this[valueAsDate$];
  }
  set valueAsDate(value) {
    this[valueAsDate$] = value;
  }
  get readOnly() {
    return this[readOnly$3];
  }
  set readOnly(value) {
    this[readOnly$3] = value;
  }
  get required() {
    return this[required$3];
  }
  set required(value) {
    this[required$3] = value;
  }
  static get supported() {
    return html$.InputElement.new({type: "month"}).type === "month";
  }
};
(html$.MonthInputElement[dart.mixinNew] = function() {
  this[valueAsDate$] = null;
  this[readOnly$3] = null;
  this[required$3] = null;
}).prototype = html$.MonthInputElement.prototype;
dart.addTypeTests(html$.MonthInputElement);
const valueAsDate$ = Symbol("MonthInputElement.valueAsDate");
const readOnly$3 = Symbol("MonthInputElement.readOnly");
const required$3 = Symbol("MonthInputElement.required");
html$.MonthInputElement[dart.implements] = () => [html$.RangeInputElementBase];
dart.setFieldSignature(html$.MonthInputElement, () => ({
  __proto__: dart.getFields(html$.MonthInputElement.__proto__),
  valueAsDate: dart.fieldType(core.DateTime),
  readOnly: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool)
}));
dart.defineExtensionAccessors(html$.MonthInputElement, ['valueAsDate', 'readOnly', 'required']);
html$.WeekInputElement = class WeekInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "week"});
  }
  get valueAsDate() {
    return this[valueAsDate$0];
  }
  set valueAsDate(value) {
    this[valueAsDate$0] = value;
  }
  get readOnly() {
    return this[readOnly$4];
  }
  set readOnly(value) {
    this[readOnly$4] = value;
  }
  get required() {
    return this[required$4];
  }
  set required(value) {
    this[required$4] = value;
  }
  static get supported() {
    return html$.InputElement.new({type: "week"}).type === "week";
  }
};
(html$.WeekInputElement[dart.mixinNew] = function() {
  this[valueAsDate$0] = null;
  this[readOnly$4] = null;
  this[required$4] = null;
}).prototype = html$.WeekInputElement.prototype;
dart.addTypeTests(html$.WeekInputElement);
const valueAsDate$0 = Symbol("WeekInputElement.valueAsDate");
const readOnly$4 = Symbol("WeekInputElement.readOnly");
const required$4 = Symbol("WeekInputElement.required");
html$.WeekInputElement[dart.implements] = () => [html$.RangeInputElementBase];
dart.setFieldSignature(html$.WeekInputElement, () => ({
  __proto__: dart.getFields(html$.WeekInputElement.__proto__),
  valueAsDate: dart.fieldType(core.DateTime),
  readOnly: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool)
}));
dart.defineExtensionAccessors(html$.WeekInputElement, ['valueAsDate', 'readOnly', 'required']);
html$.TimeInputElement = class TimeInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "time"});
  }
  get valueAsDate() {
    return this[valueAsDate$1];
  }
  set valueAsDate(value) {
    this[valueAsDate$1] = value;
  }
  get readOnly() {
    return this[readOnly$5];
  }
  set readOnly(value) {
    this[readOnly$5] = value;
  }
  get required() {
    return this[required$5];
  }
  set required(value) {
    this[required$5] = value;
  }
  static get supported() {
    return html$.InputElement.new({type: "time"}).type === "time";
  }
};
(html$.TimeInputElement[dart.mixinNew] = function() {
  this[valueAsDate$1] = null;
  this[readOnly$5] = null;
  this[required$5] = null;
}).prototype = html$.TimeInputElement.prototype;
dart.addTypeTests(html$.TimeInputElement);
const valueAsDate$1 = Symbol("TimeInputElement.valueAsDate");
const readOnly$5 = Symbol("TimeInputElement.readOnly");
const required$5 = Symbol("TimeInputElement.required");
html$.TimeInputElement[dart.implements] = () => [html$.RangeInputElementBase];
dart.setFieldSignature(html$.TimeInputElement, () => ({
  __proto__: dart.getFields(html$.TimeInputElement.__proto__),
  valueAsDate: dart.fieldType(core.DateTime),
  readOnly: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool)
}));
dart.defineExtensionAccessors(html$.TimeInputElement, ['valueAsDate', 'readOnly', 'required']);
html$.LocalDateTimeInputElement = class LocalDateTimeInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "datetime-local"});
  }
  get readOnly() {
    return this[readOnly$6];
  }
  set readOnly(value) {
    this[readOnly$6] = value;
  }
  get required() {
    return this[required$6];
  }
  set required(value) {
    this[required$6] = value;
  }
  static get supported() {
    return html$.InputElement.new({type: "datetime-local"}).type === "datetime-local";
  }
};
(html$.LocalDateTimeInputElement[dart.mixinNew] = function() {
  this[readOnly$6] = null;
  this[required$6] = null;
}).prototype = html$.LocalDateTimeInputElement.prototype;
dart.addTypeTests(html$.LocalDateTimeInputElement);
const readOnly$6 = Symbol("LocalDateTimeInputElement.readOnly");
const required$6 = Symbol("LocalDateTimeInputElement.required");
html$.LocalDateTimeInputElement[dart.implements] = () => [html$.RangeInputElementBase];
dart.setFieldSignature(html$.LocalDateTimeInputElement, () => ({
  __proto__: dart.getFields(html$.LocalDateTimeInputElement.__proto__),
  readOnly: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool)
}));
dart.defineExtensionAccessors(html$.LocalDateTimeInputElement, ['readOnly', 'required']);
html$.NumberInputElement = class NumberInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "number"});
  }
  get placeholder() {
    return this[placeholder$2];
  }
  set placeholder(value) {
    this[placeholder$2] = value;
  }
  get readOnly() {
    return this[readOnly$7];
  }
  set readOnly(value) {
    this[readOnly$7] = value;
  }
  get required() {
    return this[required$7];
  }
  set required(value) {
    this[required$7] = value;
  }
  static get supported() {
    return html$.InputElement.new({type: "number"}).type === "number";
  }
};
(html$.NumberInputElement[dart.mixinNew] = function() {
  this[placeholder$2] = null;
  this[readOnly$7] = null;
  this[required$7] = null;
}).prototype = html$.NumberInputElement.prototype;
dart.addTypeTests(html$.NumberInputElement);
const placeholder$2 = Symbol("NumberInputElement.placeholder");
const readOnly$7 = Symbol("NumberInputElement.readOnly");
const required$7 = Symbol("NumberInputElement.required");
html$.NumberInputElement[dart.implements] = () => [html$.RangeInputElementBase];
dart.setFieldSignature(html$.NumberInputElement, () => ({
  __proto__: dart.getFields(html$.NumberInputElement.__proto__),
  placeholder: dart.fieldType(core.String),
  readOnly: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool)
}));
dart.defineExtensionAccessors(html$.NumberInputElement, ['placeholder', 'readOnly', 'required']);
html$.RangeInputElement = class RangeInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "range"});
  }
  static get supported() {
    return html$.InputElement.new({type: "range"}).type === "range";
  }
};
(html$.RangeInputElement[dart.mixinNew] = function() {
}).prototype = html$.RangeInputElement.prototype;
dart.addTypeTests(html$.RangeInputElement);
html$.RangeInputElement[dart.implements] = () => [html$.RangeInputElementBase];
html$.CheckboxInputElement = class CheckboxInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "checkbox"});
  }
  get checked() {
    return this[checked$0];
  }
  set checked(value) {
    this[checked$0] = value;
  }
  get required() {
    return this[required$8];
  }
  set required(value) {
    this[required$8] = value;
  }
};
(html$.CheckboxInputElement[dart.mixinNew] = function() {
  this[checked$0] = null;
  this[required$8] = null;
}).prototype = html$.CheckboxInputElement.prototype;
dart.addTypeTests(html$.CheckboxInputElement);
const checked$0 = Symbol("CheckboxInputElement.checked");
const required$8 = Symbol("CheckboxInputElement.required");
html$.CheckboxInputElement[dart.implements] = () => [html$.InputElementBase];
dart.setFieldSignature(html$.CheckboxInputElement, () => ({
  __proto__: dart.getFields(html$.CheckboxInputElement.__proto__),
  checked: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool)
}));
dart.defineExtensionAccessors(html$.CheckboxInputElement, ['checked', 'required']);
html$.RadioButtonInputElement = class RadioButtonInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "radio"});
  }
  get checked() {
    return this[checked$1];
  }
  set checked(value) {
    this[checked$1] = value;
  }
  get required() {
    return this[required$9];
  }
  set required(value) {
    this[required$9] = value;
  }
};
(html$.RadioButtonInputElement[dart.mixinNew] = function() {
  this[checked$1] = null;
  this[required$9] = null;
}).prototype = html$.RadioButtonInputElement.prototype;
dart.addTypeTests(html$.RadioButtonInputElement);
const checked$1 = Symbol("RadioButtonInputElement.checked");
const required$9 = Symbol("RadioButtonInputElement.required");
html$.RadioButtonInputElement[dart.implements] = () => [html$.InputElementBase];
dart.setFieldSignature(html$.RadioButtonInputElement, () => ({
  __proto__: dart.getFields(html$.RadioButtonInputElement.__proto__),
  checked: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool)
}));
dart.defineExtensionAccessors(html$.RadioButtonInputElement, ['checked', 'required']);
html$.FileUploadInputElement = class FileUploadInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "file"});
  }
  get accept() {
    return this[accept$];
  }
  set accept(value) {
    this[accept$] = value;
  }
  get multiple() {
    return this[multiple$0];
  }
  set multiple(value) {
    this[multiple$0] = value;
  }
  get required() {
    return this[required$10];
  }
  set required(value) {
    this[required$10] = value;
  }
  get files() {
    return this[files$0];
  }
  set files(value) {
    this[files$0] = value;
  }
};
(html$.FileUploadInputElement[dart.mixinNew] = function() {
  this[accept$] = null;
  this[multiple$0] = null;
  this[required$10] = null;
  this[files$0] = null;
}).prototype = html$.FileUploadInputElement.prototype;
dart.addTypeTests(html$.FileUploadInputElement);
const accept$ = Symbol("FileUploadInputElement.accept");
const multiple$0 = Symbol("FileUploadInputElement.multiple");
const required$10 = Symbol("FileUploadInputElement.required");
const files$0 = Symbol("FileUploadInputElement.files");
html$.FileUploadInputElement[dart.implements] = () => [html$.InputElementBase];
dart.setFieldSignature(html$.FileUploadInputElement, () => ({
  __proto__: dart.getFields(html$.FileUploadInputElement.__proto__),
  accept: dart.fieldType(core.String),
  multiple: dart.fieldType(core.bool),
  required: dart.fieldType(core.bool),
  files: dart.fieldType(ListOfFile())
}));
dart.defineExtensionAccessors(html$.FileUploadInputElement, ['accept', 'multiple', 'required', 'files']);
html$.SubmitButtonInputElement = class SubmitButtonInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "submit"});
  }
  get formAction() {
    return this[formAction$0];
  }
  set formAction(value) {
    this[formAction$0] = value;
  }
  get formEnctype() {
    return this[formEnctype$0];
  }
  set formEnctype(value) {
    this[formEnctype$0] = value;
  }
  get formMethod() {
    return this[formMethod$0];
  }
  set formMethod(value) {
    this[formMethod$0] = value;
  }
  get formNoValidate() {
    return this[formNoValidate$0];
  }
  set formNoValidate(value) {
    this[formNoValidate$0] = value;
  }
  get formTarget() {
    return this[formTarget$0];
  }
  set formTarget(value) {
    this[formTarget$0] = value;
  }
};
(html$.SubmitButtonInputElement[dart.mixinNew] = function() {
  this[formAction$0] = null;
  this[formEnctype$0] = null;
  this[formMethod$0] = null;
  this[formNoValidate$0] = null;
  this[formTarget$0] = null;
}).prototype = html$.SubmitButtonInputElement.prototype;
dart.addTypeTests(html$.SubmitButtonInputElement);
const formAction$0 = Symbol("SubmitButtonInputElement.formAction");
const formEnctype$0 = Symbol("SubmitButtonInputElement.formEnctype");
const formMethod$0 = Symbol("SubmitButtonInputElement.formMethod");
const formNoValidate$0 = Symbol("SubmitButtonInputElement.formNoValidate");
const formTarget$0 = Symbol("SubmitButtonInputElement.formTarget");
html$.SubmitButtonInputElement[dart.implements] = () => [html$.InputElementBase];
dart.setFieldSignature(html$.SubmitButtonInputElement, () => ({
  __proto__: dart.getFields(html$.SubmitButtonInputElement.__proto__),
  formAction: dart.fieldType(core.String),
  formEnctype: dart.fieldType(core.String),
  formMethod: dart.fieldType(core.String),
  formNoValidate: dart.fieldType(core.bool),
  formTarget: dart.fieldType(core.String)
}));
dart.defineExtensionAccessors(html$.SubmitButtonInputElement, [
  'formAction',
  'formEnctype',
  'formMethod',
  'formNoValidate',
  'formTarget'
]);
html$.ImageButtonInputElement = class ImageButtonInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "image"});
  }
  get alt() {
    return this[alt$1];
  }
  set alt(value) {
    this[alt$1] = value;
  }
  get formAction() {
    return this[formAction$1];
  }
  set formAction(value) {
    this[formAction$1] = value;
  }
  get formEnctype() {
    return this[formEnctype$1];
  }
  set formEnctype(value) {
    this[formEnctype$1] = value;
  }
  get formMethod() {
    return this[formMethod$1];
  }
  set formMethod(value) {
    this[formMethod$1] = value;
  }
  get formNoValidate() {
    return this[formNoValidate$1];
  }
  set formNoValidate(value) {
    this[formNoValidate$1] = value;
  }
  get formTarget() {
    return this[formTarget$1];
  }
  set formTarget(value) {
    this[formTarget$1] = value;
  }
  get height() {
    return this[height$5];
  }
  set height(value) {
    this[height$5] = value;
  }
  get src() {
    return this[src$3];
  }
  set src(value) {
    this[src$3] = value;
  }
  get width() {
    return this[width$5];
  }
  set width(value) {
    this[width$5] = value;
  }
};
(html$.ImageButtonInputElement[dart.mixinNew] = function() {
  this[alt$1] = null;
  this[formAction$1] = null;
  this[formEnctype$1] = null;
  this[formMethod$1] = null;
  this[formNoValidate$1] = null;
  this[formTarget$1] = null;
  this[height$5] = null;
  this[src$3] = null;
  this[width$5] = null;
}).prototype = html$.ImageButtonInputElement.prototype;
dart.addTypeTests(html$.ImageButtonInputElement);
const alt$1 = Symbol("ImageButtonInputElement.alt");
const formAction$1 = Symbol("ImageButtonInputElement.formAction");
const formEnctype$1 = Symbol("ImageButtonInputElement.formEnctype");
const formMethod$1 = Symbol("ImageButtonInputElement.formMethod");
const formNoValidate$1 = Symbol("ImageButtonInputElement.formNoValidate");
const formTarget$1 = Symbol("ImageButtonInputElement.formTarget");
const height$5 = Symbol("ImageButtonInputElement.height");
const src$3 = Symbol("ImageButtonInputElement.src");
const width$5 = Symbol("ImageButtonInputElement.width");
html$.ImageButtonInputElement[dart.implements] = () => [html$.InputElementBase];
dart.setFieldSignature(html$.ImageButtonInputElement, () => ({
  __proto__: dart.getFields(html$.ImageButtonInputElement.__proto__),
  alt: dart.fieldType(core.String),
  formAction: dart.fieldType(core.String),
  formEnctype: dart.fieldType(core.String),
  formMethod: dart.fieldType(core.String),
  formNoValidate: dart.fieldType(core.bool),
  formTarget: dart.fieldType(core.String),
  height: dart.fieldType(core.int),
  src: dart.fieldType(core.String),
  width: dart.fieldType(core.int)
}));
dart.defineExtensionAccessors(html$.ImageButtonInputElement, [
  'alt',
  'formAction',
  'formEnctype',
  'formMethod',
  'formNoValidate',
  'formTarget',
  'height',
  'src',
  'width'
]);
html$.ResetButtonInputElement = class ResetButtonInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "reset"});
  }
};
(html$.ResetButtonInputElement[dart.mixinNew] = function() {
}).prototype = html$.ResetButtonInputElement.prototype;
dart.addTypeTests(html$.ResetButtonInputElement);
html$.ResetButtonInputElement[dart.implements] = () => [html$.InputElementBase];
html$.ButtonInputElement = class ButtonInputElement extends core.Object {
  static new() {
    return html$.InputElement.new({type: "button"});
  }
};
(html$.ButtonInputElement[dart.mixinNew] = function() {
}).prototype = html$.ButtonInputElement.prototype;
dart.addTypeTests(html$.ButtonInputElement);
html$.ButtonInputElement[dart.implements] = () => [html$.InputElementBase];
const _registerForeignFetch_1 = Symbol('_registerForeignFetch_1');
html$.InstallEvent = class InstallEvent$ extends html$.ExtendableEvent {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.InstallEvent._create_1(type, eventInitDict_1);
    }
    return html$.InstallEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new InstallEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new InstallEvent(type);
  }
  [$registerForeignFetch](options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    this[_registerForeignFetch_1](options_1);
    return;
  }
  [_registerForeignFetch_1](...args) {
    return this.registerForeignFetch.apply(this, args);
  }
};
dart.addTypeTests(html$.InstallEvent);
dart.setMethodSignature(html$.InstallEvent, () => ({
  __proto__: dart.getMethods(html$.InstallEvent.__proto__),
  [$registerForeignFetch]: dart.fnType(dart.void, [core.Map]),
  [_registerForeignFetch_1]: dart.fnType(dart.void, [dart.dynamic])
}));
dart.registerExtension("InstallEvent", html$.InstallEvent);
html$.IntersectionObserver = class IntersectionObserver$ extends _interceptors.Interceptor {
  static new(callback, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let callback_1 = _js_helper.convertDartClosureToJS(ListAndIntersectionObserverTovoid(), callback, 2);
      let options_2 = html_common.convertDartToNative_Dictionary(options);
      return html$.IntersectionObserver._create_1(callback_1, options_2);
    }
    let callback_1 = _js_helper.convertDartClosureToJS(ListAndIntersectionObserverTovoid(), callback, 2);
    return html$.IntersectionObserver._create_2(callback_1);
  }
  static _create_1(callback, options) {
    return new IntersectionObserver(callback, options);
  }
  static _create_2(callback) {
    return new IntersectionObserver(callback);
  }
  get [$root]() {
    return this.root;
  }
  get [$rootMargin]() {
    return this.rootMargin;
  }
  get [$thresholds]() {
    return this.thresholds;
  }
  [$disconnect](...args) {
    return this.disconnect.apply(this, args);
  }
  [$observe](...args) {
    return this.observe.apply(this, args);
  }
  [$takeRecords](...args) {
    return this.takeRecords.apply(this, args);
  }
  [$unobserve](...args) {
    return this.unobserve.apply(this, args);
  }
};
dart.addTypeTests(html$.IntersectionObserver);
const root$ = Symbol("IntersectionObserver.root");
const rootMargin = Symbol("IntersectionObserver.rootMargin");
const thresholds = Symbol("IntersectionObserver.thresholds");
dart.setMethodSignature(html$.IntersectionObserver, () => ({
  __proto__: dart.getMethods(html$.IntersectionObserver.__proto__),
  [$disconnect]: dart.fnType(dart.void, []),
  [$observe]: dart.fnType(dart.void, [html$.Element]),
  [$takeRecords]: dart.fnType(core.List$(html$.IntersectionObserverEntry), []),
  [$unobserve]: dart.fnType(dart.void, [html$.Element])
}));
dart.setFieldSignature(html$.IntersectionObserver, () => ({
  __proto__: dart.getFields(html$.IntersectionObserver.__proto__),
  [$root]: dart.finalFieldType(html$.Element),
  [$rootMargin]: dart.finalFieldType(core.String),
  [$thresholds]: dart.finalFieldType(ListOfnum())
}));
dart.registerExtension("IntersectionObserver", html$.IntersectionObserver);
html$.IntersectionObserverEntry = class IntersectionObserverEntry extends _interceptors.Interceptor {
  get [$boundingClientRect]() {
    return this.boundingClientRect;
  }
  get [$intersectionRatio]() {
    return this.intersectionRatio;
  }
  get [$intersectionRect]() {
    return this.intersectionRect;
  }
  get [$isIntersecting]() {
    return this.isIntersecting;
  }
  get [$rootBounds]() {
    return this.rootBounds;
  }
  get [$target]() {
    return this.target;
  }
  get [$time]() {
    return this.time;
  }
};
dart.addTypeTests(html$.IntersectionObserverEntry);
const boundingClientRect = Symbol("IntersectionObserverEntry.boundingClientRect");
const intersectionRatio = Symbol("IntersectionObserverEntry.intersectionRatio");
const intersectionRect = Symbol("IntersectionObserverEntry.intersectionRect");
const isIntersecting = Symbol("IntersectionObserverEntry.isIntersecting");
const rootBounds = Symbol("IntersectionObserverEntry.rootBounds");
const target$3 = Symbol("IntersectionObserverEntry.target");
const time$ = Symbol("IntersectionObserverEntry.time");
dart.setFieldSignature(html$.IntersectionObserverEntry, () => ({
  __proto__: dart.getFields(html$.IntersectionObserverEntry.__proto__),
  [$boundingClientRect]: dart.finalFieldType(html$.DomRectReadOnly),
  [$intersectionRatio]: dart.finalFieldType(core.num),
  [$intersectionRect]: dart.finalFieldType(html$.DomRectReadOnly),
  [$isIntersecting]: dart.finalFieldType(core.bool),
  [$rootBounds]: dart.finalFieldType(html$.DomRectReadOnly),
  [$target]: dart.finalFieldType(html$.Element),
  [$time]: dart.finalFieldType(core.num)
}));
dart.registerExtension("IntersectionObserverEntry", html$.IntersectionObserverEntry);
html$.InterventionReport = class InterventionReport extends html$.ReportBody {
  get [$lineNumber]() {
    return this.lineNumber;
  }
  get [$message]() {
    return this.message;
  }
  get [$sourceFile]() {
    return this.sourceFile;
  }
};
dart.addTypeTests(html$.InterventionReport);
const lineNumber$ = Symbol("InterventionReport.lineNumber");
const message$20 = Symbol("InterventionReport.message");
const sourceFile$ = Symbol("InterventionReport.sourceFile");
dart.setFieldSignature(html$.InterventionReport, () => ({
  __proto__: dart.getFields(html$.InterventionReport.__proto__),
  [$lineNumber]: dart.finalFieldType(core.int),
  [$message]: dart.finalFieldType(core.String),
  [$sourceFile]: dart.finalFieldType(core.String)
}));
dart.registerExtension("InterventionReport", html$.InterventionReport);
const _initKeyboardEvent = Symbol('_initKeyboardEvent');
const _charCode = Symbol('_charCode');
const _keyCode = Symbol('_keyCode');
html$.KeyboardEvent = class KeyboardEvent$ extends html$.UIEvent {
  static new(type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let location = opts && 'location' in opts ? opts.location : null;
    let keyLocation = opts && 'keyLocation' in opts ? opts.keyLocation : null;
    let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
    let altKey = opts && 'altKey' in opts ? opts.altKey : false;
    let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
    let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
    if (view == null) {
      view = html$.window;
    }
    let t = location;
    t == null ? location = keyLocation != null ? keyLocation : 1 : t;
    let e = html$.KeyboardEvent._check(html$.document[_createEvent]("KeyboardEvent"));
    e[_initKeyboardEvent](type, canBubble, cancelable, view, "", location, ctrlKey, altKey, shiftKey, metaKey);
    return e;
  }
  [_initKeyboardEvent](type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey) {
    if (typeof this.initKeyEvent == "function") {
      this.initKeyEvent(type, canBubble, cancelable, view, ctrlKey, altKey, shiftKey, metaKey, 0, 0);
    } else {
      this.initKeyboardEvent(type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey);
    }
  }
  get [$keyCode]() {
    return this.keyCode;
  }
  get [$charCode]() {
    return this.charCode;
  }
  get [$which]() {
    return this[_which];
  }
  static __(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.KeyboardEvent._create_1(type, eventInitDict_1);
    }
    return html$.KeyboardEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new KeyboardEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new KeyboardEvent(type);
  }
  get [$altKey]() {
    return this.altKey;
  }
  get [_charCode]() {
    return this.charCode;
  }
  get [$code]() {
    return this.code;
  }
  get [$ctrlKey]() {
    return this.ctrlKey;
  }
  get [$isComposing]() {
    return this.isComposing;
  }
  get [$key]() {
    return this.key;
  }
  get [_keyCode]() {
    return this.keyCode;
  }
  get [$location]() {
    return this.location;
  }
  get [$metaKey]() {
    return this.metaKey;
  }
  get [$repeat]() {
    return this.repeat;
  }
  get [$shiftKey]() {
    return this.shiftKey;
  }
  [$getModifierState](...args) {
    return this.getModifierState.apply(this, args);
  }
};
dart.addTypeTests(html$.KeyboardEvent);
const keyCode = Symbol("KeyboardEvent.keyCode");
const charCode = Symbol("KeyboardEvent.charCode");
const altKey = Symbol("KeyboardEvent.altKey");
const code$ = Symbol("KeyboardEvent.code");
const ctrlKey = Symbol("KeyboardEvent.ctrlKey");
const isComposing = Symbol("KeyboardEvent.isComposing");
const key$0 = Symbol("KeyboardEvent.key");
const location$ = Symbol("KeyboardEvent.location");
const metaKey = Symbol("KeyboardEvent.metaKey");
const repeat = Symbol("KeyboardEvent.repeat");
const shiftKey = Symbol("KeyboardEvent.shiftKey");
dart.setMethodSignature(html$.KeyboardEvent, () => ({
  __proto__: dart.getMethods(html$.KeyboardEvent.__proto__),
  [_initKeyboardEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.String, core.int, core.bool, core.bool, core.bool, core.bool]),
  [$getModifierState]: dart.fnType(core.bool, [core.String])
}));
dart.setGetterSignature(html$.KeyboardEvent, () => ({
  __proto__: dart.getGetters(html$.KeyboardEvent.__proto__),
  [$which]: core.int
}));
dart.setFieldSignature(html$.KeyboardEvent, () => ({
  __proto__: dart.getFields(html$.KeyboardEvent.__proto__),
  [$keyCode]: dart.finalFieldType(core.int),
  [$charCode]: dart.finalFieldType(core.int),
  [$altKey]: dart.finalFieldType(core.bool),
  [_charCode]: dart.finalFieldType(core.int),
  [$code]: dart.finalFieldType(core.String),
  [$ctrlKey]: dart.finalFieldType(core.bool),
  [$isComposing]: dart.finalFieldType(core.bool),
  [$key]: dart.finalFieldType(core.String),
  [_keyCode]: dart.finalFieldType(core.int),
  [$location]: dart.finalFieldType(core.int),
  [$metaKey]: dart.finalFieldType(core.bool),
  [$repeat]: dart.finalFieldType(core.bool),
  [$shiftKey]: dart.finalFieldType(core.bool)
}));
dart.defineLazy(html$.KeyboardEvent, {
  /*html$.KeyboardEvent.DOM_KEY_LOCATION_LEFT*/get DOM_KEY_LOCATION_LEFT() {
    return 1;
  },
  /*html$.KeyboardEvent.DOM_KEY_LOCATION_NUMPAD*/get DOM_KEY_LOCATION_NUMPAD() {
    return 3;
  },
  /*html$.KeyboardEvent.DOM_KEY_LOCATION_RIGHT*/get DOM_KEY_LOCATION_RIGHT() {
    return 2;
  },
  /*html$.KeyboardEvent.DOM_KEY_LOCATION_STANDARD*/get DOM_KEY_LOCATION_STANDARD() {
    return 0;
  }
});
dart.registerExtension("KeyboardEvent", html$.KeyboardEvent);
html$.KeyframeEffectReadOnly = class KeyframeEffectReadOnly$ extends html$.AnimationEffectReadOnly {
  static new(target, effect, options) {
    if (options === void 0) options = null;
    if (options != null) {
      return html$.KeyframeEffectReadOnly._create_1(target, effect, options);
    }
    return html$.KeyframeEffectReadOnly._create_2(target, effect);
  }
  static _create_1(target, effect, options) {
    return new KeyframeEffectReadOnly(target, effect, options);
  }
  static _create_2(target, effect) {
    return new KeyframeEffectReadOnly(target, effect);
  }
};
dart.addTypeTests(html$.KeyframeEffectReadOnly);
dart.registerExtension("KeyframeEffectReadOnly", html$.KeyframeEffectReadOnly);
html$.KeyframeEffect = class KeyframeEffect$ extends html$.KeyframeEffectReadOnly {
  static new(target, effect, options) {
    if (options === void 0) options = null;
    if (options != null) {
      return html$.KeyframeEffect._create_1(target, effect, options);
    }
    return html$.KeyframeEffect._create_2(target, effect);
  }
  static _create_1(target, effect, options) {
    return new KeyframeEffect(target, effect, options);
  }
  static _create_2(target, effect) {
    return new KeyframeEffect(target, effect);
  }
};
dart.addTypeTests(html$.KeyframeEffect);
dart.registerExtension("KeyframeEffect", html$.KeyframeEffect);
html$.LIElement = class LIElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("li");
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
};
(html$.LIElement.created = function() {
  this[value$9] = null;
  html$.LIElement.__proto__.created.call(this);
}).prototype = html$.LIElement.prototype;
dart.addTypeTests(html$.LIElement);
const value$9 = Symbol("LIElement.value");
dart.setFieldSignature(html$.LIElement, () => ({
  __proto__: dart.getFields(html$.LIElement.__proto__),
  [$value]: dart.fieldType(core.int)
}));
dart.registerExtension("HTMLLIElement", html$.LIElement);
html$.LabelElement = class LabelElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("label");
  }
  get [$control]() {
    return this.control;
  }
  get [$form]() {
    return this.form;
  }
  get [$htmlFor]() {
    return this.htmlFor;
  }
  set [$htmlFor](value) {
    this.htmlFor = value;
  }
};
(html$.LabelElement.created = function() {
  this[control] = null;
  this[form$1] = null;
  this[htmlFor] = null;
  html$.LabelElement.__proto__.created.call(this);
}).prototype = html$.LabelElement.prototype;
dart.addTypeTests(html$.LabelElement);
const control = Symbol("LabelElement.control");
const form$1 = Symbol("LabelElement.form");
const htmlFor = Symbol("LabelElement.htmlFor");
dart.setFieldSignature(html$.LabelElement, () => ({
  __proto__: dart.getFields(html$.LabelElement.__proto__),
  [$control]: dart.finalFieldType(html$.HtmlElement),
  [$form]: dart.finalFieldType(html$.FormElement),
  [$htmlFor]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLLabelElement", html$.LabelElement);
html$.LegendElement = class LegendElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("legend");
  }
  get [$form]() {
    return this.form;
  }
};
(html$.LegendElement.created = function() {
  this[form$2] = null;
  html$.LegendElement.__proto__.created.call(this);
}).prototype = html$.LegendElement.prototype;
dart.addTypeTests(html$.LegendElement);
const form$2 = Symbol("LegendElement.form");
dart.setFieldSignature(html$.LegendElement, () => ({
  __proto__: dart.getFields(html$.LegendElement.__proto__),
  [$form]: dart.finalFieldType(html$.FormElement)
}));
dart.registerExtension("HTMLLegendElement", html$.LegendElement);
html$.LinearAccelerationSensor = class LinearAccelerationSensor$ extends html$.Accelerometer {
  static new(sensorOptions) {
    if (sensorOptions === void 0) sensorOptions = null;
    if (sensorOptions != null) {
      let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
      return html$.LinearAccelerationSensor._create_1(sensorOptions_1);
    }
    return html$.LinearAccelerationSensor._create_2();
  }
  static _create_1(sensorOptions) {
    return new LinearAccelerationSensor(sensorOptions);
  }
  static _create_2() {
    return new LinearAccelerationSensor();
  }
};
dart.addTypeTests(html$.LinearAccelerationSensor);
dart.registerExtension("LinearAccelerationSensor", html$.LinearAccelerationSensor);
html$.LinkElement = class LinkElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("link");
  }
  get [$as]() {
    return this.as;
  }
  set [$as](value) {
    this.as = value;
  }
  get [$crossOrigin]() {
    return this.crossOrigin;
  }
  set [$crossOrigin](value) {
    this.crossOrigin = value;
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$href]() {
    return this.href;
  }
  set [$href](value) {
    this.href = value;
  }
  get [$hreflang]() {
    return this.hreflang;
  }
  set [$hreflang](value) {
    this.hreflang = value;
  }
  get [$import]() {
    return this.import;
  }
  get [$integrity]() {
    return this.integrity;
  }
  set [$integrity](value) {
    this.integrity = value;
  }
  get [$media]() {
    return this.media;
  }
  set [$media](value) {
    this.media = value;
  }
  get [$referrerPolicy]() {
    return this.referrerPolicy;
  }
  set [$referrerPolicy](value) {
    this.referrerPolicy = value;
  }
  get [$rel]() {
    return this.rel;
  }
  set [$rel](value) {
    this.rel = value;
  }
  get [$relList]() {
    return this.relList;
  }
  get [$scope]() {
    return this.scope;
  }
  set [$scope](value) {
    this.scope = value;
  }
  get [$sheet]() {
    return this.sheet;
  }
  get [$sizes]() {
    return this.sizes;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
  get [$supportsImport]() {
    return "import" in this;
  }
};
(html$.LinkElement.created = function() {
  this[as] = null;
  this[crossOrigin$0] = null;
  this[disabled$4] = null;
  this[href$4] = null;
  this[hreflang$] = null;
  this[import$] = null;
  this[integrity] = null;
  this[media$1] = null;
  this[referrerPolicy$2] = null;
  this[rel$0] = null;
  this[relList] = null;
  this[scope] = null;
  this[sheet] = null;
  this[sizes$] = null;
  this[type$16] = null;
  html$.LinkElement.__proto__.created.call(this);
}).prototype = html$.LinkElement.prototype;
dart.addTypeTests(html$.LinkElement);
const as = Symbol("LinkElement.as");
const crossOrigin$0 = Symbol("LinkElement.crossOrigin");
const disabled$4 = Symbol("LinkElement.disabled");
const href$4 = Symbol("LinkElement.href");
const hreflang$ = Symbol("LinkElement.hreflang");
const import$ = Symbol("LinkElement.import");
const integrity = Symbol("LinkElement.integrity");
const media$1 = Symbol("LinkElement.media");
const referrerPolicy$2 = Symbol("LinkElement.referrerPolicy");
const rel$0 = Symbol("LinkElement.rel");
const relList = Symbol("LinkElement.relList");
const scope = Symbol("LinkElement.scope");
const sheet = Symbol("LinkElement.sheet");
const sizes$ = Symbol("LinkElement.sizes");
const type$16 = Symbol("LinkElement.type");
dart.setGetterSignature(html$.LinkElement, () => ({
  __proto__: dart.getGetters(html$.LinkElement.__proto__),
  [$supportsImport]: core.bool
}));
dart.setFieldSignature(html$.LinkElement, () => ({
  __proto__: dart.getFields(html$.LinkElement.__proto__),
  [$as]: dart.fieldType(core.String),
  [$crossOrigin]: dart.fieldType(core.String),
  [$disabled]: dart.fieldType(core.bool),
  [$href]: dart.fieldType(core.String),
  [$hreflang]: dart.fieldType(core.String),
  [$import]: dart.finalFieldType(html$.Document),
  [$integrity]: dart.fieldType(core.String),
  [$media]: dart.fieldType(core.String),
  [$referrerPolicy]: dart.fieldType(core.String),
  [$rel]: dart.fieldType(core.String),
  [$relList]: dart.finalFieldType(html$.DomTokenList),
  [$scope]: dart.fieldType(core.String),
  [$sheet]: dart.finalFieldType(html$.StyleSheet),
  [$sizes]: dart.finalFieldType(html$.DomTokenList),
  [$type]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLLinkElement", html$.LinkElement);
html$.Location = class Location extends _interceptors.Interceptor {
  get [$ancestorOrigins]() {
    return this.ancestorOrigins;
  }
  get [$hash]() {
    return this.hash;
  }
  set [$hash](value) {
    this.hash = value;
  }
  get [$host]() {
    return this.host;
  }
  set [$host](value) {
    this.host = value;
  }
  get [$hostname]() {
    return this.hostname;
  }
  set [$hostname](value) {
    this.hostname = value;
  }
  get [$href]() {
    return this.href;
  }
  set [$href](value) {
    this.href = value;
  }
  get [$pathname]() {
    return this.pathname;
  }
  set [$pathname](value) {
    this.pathname = value;
  }
  get [$port]() {
    return this.port;
  }
  set [$port](value) {
    this.port = value;
  }
  get [$protocol]() {
    return this.protocol;
  }
  set [$protocol](value) {
    this.protocol = value;
  }
  get [$search]() {
    return this.search;
  }
  set [$search](value) {
    this.search = value;
  }
  get [$trustedHref]() {
    return this.trustedHref;
  }
  set [$trustedHref](value) {
    this.trustedHref = value;
  }
  [$assign](...args) {
    return this.assign.apply(this, args);
  }
  [$reload](...args) {
    return this.reload.apply(this, args);
  }
  [$replace](...args) {
    return this.replace.apply(this, args);
  }
  get [$origin]() {
    if ("origin" in this) {
      return this.origin;
    }
    return dart.str(this.protocol) + "//" + dart.str(this.host);
  }
  [$toString]() {
    return String(this);
  }
};
dart.addTypeTests(html$.Location);
const ancestorOrigins = Symbol("Location.ancestorOrigins");
const hash$1 = Symbol("Location.hash");
const host$1 = Symbol("Location.host");
const hostname$1 = Symbol("Location.hostname");
const href$5 = Symbol("Location.href");
const pathname$1 = Symbol("Location.pathname");
const port$3 = Symbol("Location.port");
const protocol$2 = Symbol("Location.protocol");
const search$1 = Symbol("Location.search");
const trustedHref = Symbol("Location.trustedHref");
html$.Location[dart.implements] = () => [html$.LocationBase];
dart.setMethodSignature(html$.Location, () => ({
  __proto__: dart.getMethods(html$.Location.__proto__),
  [$assign]: dart.fnType(dart.void, [], [core.String]),
  [$reload]: dart.fnType(dart.void, []),
  [$replace]: dart.fnType(dart.void, [core.String])
}));
dart.setGetterSignature(html$.Location, () => ({
  __proto__: dart.getGetters(html$.Location.__proto__),
  [$origin]: core.String
}));
dart.setFieldSignature(html$.Location, () => ({
  __proto__: dart.getFields(html$.Location.__proto__),
  [$ancestorOrigins]: dart.finalFieldType(ListOfString()),
  [$hash]: dart.fieldType(core.String),
  [$host]: dart.fieldType(core.String),
  [$hostname]: dart.fieldType(core.String),
  [$href]: dart.fieldType(core.String),
  [$pathname]: dart.fieldType(core.String),
  [$port]: dart.fieldType(core.String),
  [$protocol]: dart.fieldType(core.String),
  [$search]: dart.fieldType(core.String),
  [$trustedHref]: dart.fieldType(html$.TrustedUrl)
}));
dart.registerExtension("Location", html$.Location);
html$.Magnetometer = class Magnetometer$ extends html$.Sensor {
  static new(sensorOptions) {
    if (sensorOptions === void 0) sensorOptions = null;
    if (sensorOptions != null) {
      let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
      return html$.Magnetometer._create_1(sensorOptions_1);
    }
    return html$.Magnetometer._create_2();
  }
  static _create_1(sensorOptions) {
    return new Magnetometer(sensorOptions);
  }
  static _create_2() {
    return new Magnetometer();
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$z]() {
    return this.z;
  }
};
dart.addTypeTests(html$.Magnetometer);
const x$5 = Symbol("Magnetometer.x");
const y$5 = Symbol("Magnetometer.y");
const z$4 = Symbol("Magnetometer.z");
dart.setFieldSignature(html$.Magnetometer, () => ({
  __proto__: dart.getFields(html$.Magnetometer.__proto__),
  [$x]: dart.finalFieldType(core.num),
  [$y]: dart.finalFieldType(core.num),
  [$z]: dart.finalFieldType(core.num)
}));
dart.registerExtension("Magnetometer", html$.Magnetometer);
html$.MapElement = class MapElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("map");
  }
  get [$areas]() {
    return this.areas;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
};
(html$.MapElement.created = function() {
  this[areas] = null;
  this[name$21] = null;
  html$.MapElement.__proto__.created.call(this);
}).prototype = html$.MapElement.prototype;
dart.addTypeTests(html$.MapElement);
const areas = Symbol("MapElement.areas");
const name$21 = Symbol("MapElement.name");
dart.setFieldSignature(html$.MapElement, () => ({
  __proto__: dart.getFields(html$.MapElement.__proto__),
  [$areas]: dart.finalFieldType(ListOfNode()),
  [$name]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLMapElement", html$.MapElement);
html$.MediaCapabilities = class MediaCapabilities extends _interceptors.Interceptor {
  [$decodingInfo](configuration) {
    let configuration_dict = html_common.convertDartToNative_Dictionary(configuration);
    return html$.promiseToFuture(html$.MediaCapabilitiesInfo, this.decodingInfo(configuration_dict));
  }
  [$encodingInfo](configuration) {
    let configuration_dict = html_common.convertDartToNative_Dictionary(configuration);
    return html$.promiseToFuture(html$.MediaCapabilitiesInfo, this.encodingInfo(configuration_dict));
  }
};
dart.addTypeTests(html$.MediaCapabilities);
dart.setMethodSignature(html$.MediaCapabilities, () => ({
  __proto__: dart.getMethods(html$.MediaCapabilities.__proto__),
  [$decodingInfo]: dart.fnType(async.Future$(html$.MediaCapabilitiesInfo), [core.Map]),
  [$encodingInfo]: dart.fnType(async.Future$(html$.MediaCapabilitiesInfo), [core.Map])
}));
dart.registerExtension("MediaCapabilities", html$.MediaCapabilities);
html$.MediaCapabilitiesInfo = class MediaCapabilitiesInfo extends _interceptors.Interceptor {
  get [$powerEfficient]() {
    return this.powerEfficient;
  }
  get [$smooth]() {
    return this.smooth;
  }
  get [$supported]() {
    return this.supported;
  }
};
dart.addTypeTests(html$.MediaCapabilitiesInfo);
const powerEfficient = Symbol("MediaCapabilitiesInfo.powerEfficient");
const smooth = Symbol("MediaCapabilitiesInfo.smooth");
const supported = Symbol("MediaCapabilitiesInfo.supported");
dart.setFieldSignature(html$.MediaCapabilitiesInfo, () => ({
  __proto__: dart.getFields(html$.MediaCapabilitiesInfo.__proto__),
  [$powerEfficient]: dart.finalFieldType(core.bool),
  [$smooth]: dart.finalFieldType(core.bool),
  [$supported]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("MediaCapabilitiesInfo", html$.MediaCapabilitiesInfo);
html$.MediaDeviceInfo = class MediaDeviceInfo extends _interceptors.Interceptor {
  get [$deviceId]() {
    return this.deviceId;
  }
  get [$groupId]() {
    return this.groupId;
  }
  get [$kind]() {
    return this.kind;
  }
  get [$label]() {
    return this.label;
  }
};
dart.addTypeTests(html$.MediaDeviceInfo);
const deviceId = Symbol("MediaDeviceInfo.deviceId");
const groupId = Symbol("MediaDeviceInfo.groupId");
const kind$0 = Symbol("MediaDeviceInfo.kind");
const label$0 = Symbol("MediaDeviceInfo.label");
dart.setFieldSignature(html$.MediaDeviceInfo, () => ({
  __proto__: dart.getFields(html$.MediaDeviceInfo.__proto__),
  [$deviceId]: dart.finalFieldType(core.String),
  [$groupId]: dart.finalFieldType(core.String),
  [$kind]: dart.finalFieldType(core.String),
  [$label]: dart.finalFieldType(core.String)
}));
dart.registerExtension("MediaDeviceInfo", html$.MediaDeviceInfo);
const _getSupportedConstraints_1 = Symbol('_getSupportedConstraints_1');
html$.MediaDevices = class MediaDevices extends html$.EventTarget {
  [$enumerateDevices]() {
    return html$.promiseToFuture(ListOfMediaDeviceInfo(), this.enumerateDevices());
  }
  [$getSupportedConstraints]() {
    return html_common.convertNativeToDart_Dictionary(this[_getSupportedConstraints_1]());
  }
  [_getSupportedConstraints_1](...args) {
    return this.getSupportedConstraints.apply(this, args);
  }
};
dart.addTypeTests(html$.MediaDevices);
dart.setMethodSignature(html$.MediaDevices, () => ({
  __proto__: dart.getMethods(html$.MediaDevices.__proto__),
  [$enumerateDevices]: dart.fnType(async.Future$(core.List$(html$.MediaDeviceInfo)), []),
  [$getSupportedConstraints]: dart.fnType(core.Map, []),
  [_getSupportedConstraints_1]: dart.fnType(dart.dynamic, [])
}));
dart.registerExtension("MediaDevices", html$.MediaDevices);
html$.MediaEncryptedEvent = class MediaEncryptedEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.MediaEncryptedEvent._create_1(type, eventInitDict_1);
    }
    return html$.MediaEncryptedEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MediaEncryptedEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MediaEncryptedEvent(type);
  }
  get [$initData]() {
    return this.initData;
  }
  get [$initDataType]() {
    return this.initDataType;
  }
};
dart.addTypeTests(html$.MediaEncryptedEvent);
const initData = Symbol("MediaEncryptedEvent.initData");
const initDataType = Symbol("MediaEncryptedEvent.initDataType");
dart.setFieldSignature(html$.MediaEncryptedEvent, () => ({
  __proto__: dart.getFields(html$.MediaEncryptedEvent.__proto__),
  [$initData]: dart.finalFieldType(typed_data.ByteBuffer),
  [$initDataType]: dart.finalFieldType(core.String)
}));
dart.registerExtension("MediaEncryptedEvent", html$.MediaEncryptedEvent);
html$.MediaError = class MediaError extends _interceptors.Interceptor {
  get [$code]() {
    return this.code;
  }
  get [$message]() {
    return this.message;
  }
};
dart.addTypeTests(html$.MediaError);
const code$0 = Symbol("MediaError.code");
const message$21 = Symbol("MediaError.message");
dart.setFieldSignature(html$.MediaError, () => ({
  __proto__: dart.getFields(html$.MediaError.__proto__),
  [$code]: dart.finalFieldType(core.int),
  [$message]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.MediaError, {
  /*html$.MediaError.MEDIA_ERR_ABORTED*/get MEDIA_ERR_ABORTED() {
    return 1;
  },
  /*html$.MediaError.MEDIA_ERR_DECODE*/get MEDIA_ERR_DECODE() {
    return 3;
  },
  /*html$.MediaError.MEDIA_ERR_NETWORK*/get MEDIA_ERR_NETWORK() {
    return 2;
  },
  /*html$.MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED*/get MEDIA_ERR_SRC_NOT_SUPPORTED() {
    return 4;
  }
});
dart.registerExtension("MediaError", html$.MediaError);
html$.MediaKeyMessageEvent = class MediaKeyMessageEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.MediaKeyMessageEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new MediaKeyMessageEvent(type, eventInitDict);
  }
  get [$message]() {
    return this.message;
  }
  get [$messageType]() {
    return this.messageType;
  }
};
dart.addTypeTests(html$.MediaKeyMessageEvent);
const message$22 = Symbol("MediaKeyMessageEvent.message");
const messageType = Symbol("MediaKeyMessageEvent.messageType");
dart.setFieldSignature(html$.MediaKeyMessageEvent, () => ({
  __proto__: dart.getFields(html$.MediaKeyMessageEvent.__proto__),
  [$message]: dart.finalFieldType(typed_data.ByteBuffer),
  [$messageType]: dart.finalFieldType(core.String)
}));
dart.registerExtension("MediaKeyMessageEvent", html$.MediaKeyMessageEvent);
const _update$ = Symbol('_update');
html$.MediaKeySession = class MediaKeySession extends html$.EventTarget {
  get [$closed]() {
    return html$.promiseToFuture(dart.void, this.closed);
  }
  get [$expiration]() {
    return this.expiration;
  }
  get [$keyStatuses]() {
    return this.keyStatuses;
  }
  get [$sessionId]() {
    return this.sessionId;
  }
  [$close]() {
    return html$.promiseToFuture(dart.dynamic, this.close());
  }
  [$generateRequest](initDataType, initData) {
    return html$.promiseToFuture(dart.dynamic, this.generateRequest(initDataType, initData));
  }
  [$load](sessionId) {
    return html$.promiseToFuture(dart.dynamic, this.load(sessionId));
  }
  [$remove]() {
    return html$.promiseToFuture(dart.dynamic, this.remove());
  }
  [_update$](...args) {
    return this.update.apply(this, args);
  }
  get [$onMessage]() {
    return html$.MediaKeySession.messageEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.MediaKeySession);
const expiration = Symbol("MediaKeySession.expiration");
const keyStatuses = Symbol("MediaKeySession.keyStatuses");
const sessionId = Symbol("MediaKeySession.sessionId");
dart.setMethodSignature(html$.MediaKeySession, () => ({
  __proto__: dart.getMethods(html$.MediaKeySession.__proto__),
  [$close]: dart.fnType(async.Future, []),
  [$generateRequest]: dart.fnType(async.Future, [core.String, dart.dynamic]),
  [$load]: dart.fnType(async.Future, [core.String]),
  [$remove]: dart.fnType(async.Future, []),
  [_update$]: dart.fnType(async.Future, [dart.dynamic])
}));
dart.setGetterSignature(html$.MediaKeySession, () => ({
  __proto__: dart.getGetters(html$.MediaKeySession.__proto__),
  [$closed]: async.Future$(dart.void),
  [$onMessage]: async.Stream$(html$.MessageEvent)
}));
dart.setFieldSignature(html$.MediaKeySession, () => ({
  __proto__: dart.getFields(html$.MediaKeySession.__proto__),
  [$expiration]: dart.finalFieldType(core.num),
  [$keyStatuses]: dart.finalFieldType(html$.MediaKeyStatusMap),
  [$sessionId]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.MediaKeySession, {
  /*html$.MediaKeySession.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  }
});
dart.registerExtension("MediaKeySession", html$.MediaKeySession);
html$.MediaKeyStatusMap = class MediaKeyStatusMap extends _interceptors.Interceptor {
  get [$size]() {
    return this.size;
  }
  [$get](...args) {
    return this.get.apply(this, args);
  }
  [$has](...args) {
    return this.has.apply(this, args);
  }
};
dart.addTypeTests(html$.MediaKeyStatusMap);
const size$3 = Symbol("MediaKeyStatusMap.size");
dart.setMethodSignature(html$.MediaKeyStatusMap, () => ({
  __proto__: dart.getMethods(html$.MediaKeyStatusMap.__proto__),
  [$get]: dart.fnType(core.Object, [dart.dynamic]),
  [$has]: dart.fnType(core.bool, [dart.dynamic])
}));
dart.setFieldSignature(html$.MediaKeyStatusMap, () => ({
  __proto__: dart.getFields(html$.MediaKeyStatusMap.__proto__),
  [$size]: dart.finalFieldType(core.int)
}));
dart.registerExtension("MediaKeyStatusMap", html$.MediaKeyStatusMap);
const _getConfiguration_1 = Symbol('_getConfiguration_1');
html$.MediaKeySystemAccess = class MediaKeySystemAccess extends _interceptors.Interceptor {
  get [$keySystem]() {
    return this.keySystem;
  }
  [$createMediaKeys]() {
    return html$.promiseToFuture(dart.dynamic, this.createMediaKeys());
  }
  [$getConfiguration]() {
    return html_common.convertNativeToDart_Dictionary(this[_getConfiguration_1]());
  }
  [_getConfiguration_1](...args) {
    return this.getConfiguration.apply(this, args);
  }
};
dart.addTypeTests(html$.MediaKeySystemAccess);
const keySystem = Symbol("MediaKeySystemAccess.keySystem");
dart.setMethodSignature(html$.MediaKeySystemAccess, () => ({
  __proto__: dart.getMethods(html$.MediaKeySystemAccess.__proto__),
  [$createMediaKeys]: dart.fnType(async.Future, []),
  [$getConfiguration]: dart.fnType(core.Map, []),
  [_getConfiguration_1]: dart.fnType(dart.dynamic, [])
}));
dart.setFieldSignature(html$.MediaKeySystemAccess, () => ({
  __proto__: dart.getFields(html$.MediaKeySystemAccess.__proto__),
  [$keySystem]: dart.finalFieldType(core.String)
}));
dart.registerExtension("MediaKeySystemAccess", html$.MediaKeySystemAccess);
const _createSession = Symbol('_createSession');
html$.MediaKeys = class MediaKeys extends _interceptors.Interceptor {
  [_createSession](...args) {
    return this.createSession.apply(this, args);
  }
  [$getStatusForPolicy](policy) {
    return html$.promiseToFuture(dart.dynamic, this.getStatusForPolicy(policy));
  }
  [$setServerCertificate](serverCertificate) {
    return html$.promiseToFuture(dart.dynamic, this.setServerCertificate(serverCertificate));
  }
};
dart.addTypeTests(html$.MediaKeys);
dart.setMethodSignature(html$.MediaKeys, () => ({
  __proto__: dart.getMethods(html$.MediaKeys.__proto__),
  [_createSession]: dart.fnType(html$.MediaKeySession, [], [core.String]),
  [$getStatusForPolicy]: dart.fnType(async.Future, [html$.MediaKeysPolicy]),
  [$setServerCertificate]: dart.fnType(async.Future, [dart.dynamic])
}));
dart.registerExtension("MediaKeys", html$.MediaKeys);
html$.MediaKeysPolicy = class MediaKeysPolicy$ extends _interceptors.Interceptor {
  static new(init) {
    let init_1 = html_common.convertDartToNative_Dictionary(init);
    return html$.MediaKeysPolicy._create_1(init_1);
  }
  static _create_1(init) {
    return new MediaKeysPolicy(init);
  }
  get [$minHdcpVersion]() {
    return this.minHdcpVersion;
  }
};
dart.addTypeTests(html$.MediaKeysPolicy);
const minHdcpVersion = Symbol("MediaKeysPolicy.minHdcpVersion");
dart.setFieldSignature(html$.MediaKeysPolicy, () => ({
  __proto__: dart.getFields(html$.MediaKeysPolicy.__proto__),
  [$minHdcpVersion]: dart.finalFieldType(core.String)
}));
dart.registerExtension("MediaKeysPolicy", html$.MediaKeysPolicy);
html$.MediaList = class MediaList extends _interceptors.Interceptor {
  get [$length]() {
    return this.length;
  }
  get [$mediaText]() {
    return this.mediaText;
  }
  set [$mediaText](value) {
    this.mediaText = value;
  }
  [$appendMedium](...args) {
    return this.appendMedium.apply(this, args);
  }
  [$deleteMedium](...args) {
    return this.deleteMedium.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
dart.addTypeTests(html$.MediaList);
const length$10 = Symbol("MediaList.length");
const mediaText = Symbol("MediaList.mediaText");
dart.setMethodSignature(html$.MediaList, () => ({
  __proto__: dart.getMethods(html$.MediaList.__proto__),
  [$appendMedium]: dart.fnType(dart.void, [core.String]),
  [$deleteMedium]: dart.fnType(dart.void, [core.String]),
  [$item]: dart.fnType(core.String, [core.int])
}));
dart.setFieldSignature(html$.MediaList, () => ({
  __proto__: dart.getFields(html$.MediaList.__proto__),
  [$length]: dart.finalFieldType(core.int),
  [$mediaText]: dart.fieldType(core.String)
}));
dart.registerExtension("MediaList", html$.MediaList);
html$.MediaMetadata = class MediaMetadata$ extends _interceptors.Interceptor {
  static new(metadata) {
    if (metadata === void 0) metadata = null;
    if (metadata != null) {
      let metadata_1 = html_common.convertDartToNative_Dictionary(metadata);
      return html$.MediaMetadata._create_1(metadata_1);
    }
    return html$.MediaMetadata._create_2();
  }
  static _create_1(metadata) {
    return new MediaMetadata(metadata);
  }
  static _create_2() {
    return new MediaMetadata();
  }
  get [$album]() {
    return this.album;
  }
  set [$album](value) {
    this.album = value;
  }
  get [$artist]() {
    return this.artist;
  }
  set [$artist](value) {
    this.artist = value;
  }
  get [$artwork]() {
    return this.artwork;
  }
  set [$artwork](value) {
    this.artwork = value;
  }
  get [$title]() {
    return this.title;
  }
  set [$title](value) {
    this.title = value;
  }
};
dart.addTypeTests(html$.MediaMetadata);
const album = Symbol("MediaMetadata.album");
const artist = Symbol("MediaMetadata.artist");
const artwork = Symbol("MediaMetadata.artwork");
const title$1 = Symbol("MediaMetadata.title");
dart.setFieldSignature(html$.MediaMetadata, () => ({
  __proto__: dart.getFields(html$.MediaMetadata.__proto__),
  [$album]: dart.fieldType(core.String),
  [$artist]: dart.fieldType(core.String),
  [$artwork]: dart.fieldType(core.List),
  [$title]: dart.fieldType(core.String)
}));
dart.registerExtension("MediaMetadata", html$.MediaMetadata);
html$.MediaQueryList = class MediaQueryList extends html$.EventTarget {
  get [$matches]() {
    return this.matches;
  }
  get [$media]() {
    return this.media;
  }
  [$addListener](...args) {
    return this.addListener.apply(this, args);
  }
  [$removeListener](...args) {
    return this.removeListener.apply(this, args);
  }
  get [$onChange]() {
    return html$.MediaQueryList.changeEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.MediaQueryList);
const matches = Symbol("MediaQueryList.matches");
const media$2 = Symbol("MediaQueryList.media");
dart.setMethodSignature(html$.MediaQueryList, () => ({
  __proto__: dart.getMethods(html$.MediaQueryList.__proto__),
  [$addListener]: dart.fnType(dart.void, [dart.fnType(dart.dynamic, [html$.Event])]),
  [$removeListener]: dart.fnType(dart.void, [dart.fnType(dart.dynamic, [html$.Event])])
}));
dart.setGetterSignature(html$.MediaQueryList, () => ({
  __proto__: dart.getGetters(html$.MediaQueryList.__proto__),
  [$onChange]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.MediaQueryList, () => ({
  __proto__: dart.getFields(html$.MediaQueryList.__proto__),
  [$matches]: dart.finalFieldType(core.bool),
  [$media]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.MediaQueryList, {
  /*html$.MediaQueryList.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  }
});
dart.registerExtension("MediaQueryList", html$.MediaQueryList);
html$.MediaQueryListEvent = class MediaQueryListEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.MediaQueryListEvent._create_1(type, eventInitDict_1);
    }
    return html$.MediaQueryListEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MediaQueryListEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MediaQueryListEvent(type);
  }
  get [$matches]() {
    return this.matches;
  }
  get [$media]() {
    return this.media;
  }
};
dart.addTypeTests(html$.MediaQueryListEvent);
const matches$ = Symbol("MediaQueryListEvent.matches");
const media$3 = Symbol("MediaQueryListEvent.media");
dart.setFieldSignature(html$.MediaQueryListEvent, () => ({
  __proto__: dart.getFields(html$.MediaQueryListEvent.__proto__),
  [$matches]: dart.finalFieldType(core.bool),
  [$media]: dart.finalFieldType(core.String)
}));
dart.registerExtension("MediaQueryListEvent", html$.MediaQueryListEvent);
html$.MediaRecorder = class MediaRecorder$ extends html$.EventTarget {
  static new(stream, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return html$.MediaRecorder._create_1(stream, options_1);
    }
    return html$.MediaRecorder._create_2(stream);
  }
  static _create_1(stream, options) {
    return new MediaRecorder(stream, options);
  }
  static _create_2(stream) {
    return new MediaRecorder(stream);
  }
  get [$audioBitsPerSecond]() {
    return this.audioBitsPerSecond;
  }
  get [$mimeType]() {
    return this.mimeType;
  }
  get [$state]() {
    return this.state;
  }
  get [$stream]() {
    return this.stream;
  }
  get [$videoBitsPerSecond]() {
    return this.videoBitsPerSecond;
  }
  [$pause](...args) {
    return this.pause.apply(this, args);
  }
  [$requestData](...args) {
    return this.requestData.apply(this, args);
  }
  [$resume](...args) {
    return this.resume.apply(this, args);
  }
  [$start](...args) {
    return this.start.apply(this, args);
  }
  [$stop](...args) {
    return this.stop.apply(this, args);
  }
  get [$onError]() {
    return html$.MediaRecorder.errorEvent.forTarget(this);
  }
  get [$onPause]() {
    return html$.MediaRecorder.pauseEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.MediaRecorder);
const audioBitsPerSecond = Symbol("MediaRecorder.audioBitsPerSecond");
const mimeType = Symbol("MediaRecorder.mimeType");
const state$0 = Symbol("MediaRecorder.state");
const stream = Symbol("MediaRecorder.stream");
const videoBitsPerSecond = Symbol("MediaRecorder.videoBitsPerSecond");
dart.setMethodSignature(html$.MediaRecorder, () => ({
  __proto__: dart.getMethods(html$.MediaRecorder.__proto__),
  [$pause]: dart.fnType(dart.void, []),
  [$requestData]: dart.fnType(dart.void, []),
  [$resume]: dart.fnType(dart.void, []),
  [$start]: dart.fnType(dart.void, [], [core.int]),
  [$stop]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.MediaRecorder, () => ({
  __proto__: dart.getGetters(html$.MediaRecorder.__proto__),
  [$onError]: async.Stream$(html$.Event),
  [$onPause]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.MediaRecorder, () => ({
  __proto__: dart.getFields(html$.MediaRecorder.__proto__),
  [$audioBitsPerSecond]: dart.finalFieldType(core.int),
  [$mimeType]: dart.finalFieldType(core.String),
  [$state]: dart.finalFieldType(core.String),
  [$stream]: dart.finalFieldType(html$.MediaStream),
  [$videoBitsPerSecond]: dart.finalFieldType(core.int)
}));
dart.defineLazy(html$.MediaRecorder, {
  /*html$.MediaRecorder.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.MediaRecorder.pauseEvent*/get pauseEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("pause"));
  }
});
dart.registerExtension("MediaRecorder", html$.MediaRecorder);
html$.MediaSession = class MediaSession extends _interceptors.Interceptor {
  get [$metadata]() {
    return this.metadata;
  }
  set [$metadata](value) {
    this.metadata = value;
  }
  get [$playbackState]() {
    return this.playbackState;
  }
  set [$playbackState](value) {
    this.playbackState = value;
  }
  [$setActionHandler](...args) {
    return this.setActionHandler.apply(this, args);
  }
};
dart.addTypeTests(html$.MediaSession);
const metadata = Symbol("MediaSession.metadata");
const playbackState = Symbol("MediaSession.playbackState");
dart.setMethodSignature(html$.MediaSession, () => ({
  __proto__: dart.getMethods(html$.MediaSession.__proto__),
  [$setActionHandler]: dart.fnType(dart.void, [core.String, dart.fnType(dart.void, [])])
}));
dart.setFieldSignature(html$.MediaSession, () => ({
  __proto__: dart.getFields(html$.MediaSession.__proto__),
  [$metadata]: dart.fieldType(html$.MediaMetadata),
  [$playbackState]: dart.fieldType(core.String)
}));
dart.registerExtension("MediaSession", html$.MediaSession);
html$.MediaSettingsRange = class MediaSettingsRange extends _interceptors.Interceptor {
  get [$max]() {
    return this.max;
  }
  get [$min]() {
    return this.min;
  }
  get [$step]() {
    return this.step;
  }
};
dart.addTypeTests(html$.MediaSettingsRange);
const max$1 = Symbol("MediaSettingsRange.max");
const min$1 = Symbol("MediaSettingsRange.min");
const step$0 = Symbol("MediaSettingsRange.step");
dart.setFieldSignature(html$.MediaSettingsRange, () => ({
  __proto__: dart.getFields(html$.MediaSettingsRange.__proto__),
  [$max]: dart.finalFieldType(core.num),
  [$min]: dart.finalFieldType(core.num),
  [$step]: dart.finalFieldType(core.num)
}));
dart.registerExtension("MediaSettingsRange", html$.MediaSettingsRange);
html$.MediaSource = class MediaSource$ extends html$.EventTarget {
  static new() {
    return html$.MediaSource._create_1();
  }
  static _create_1() {
    return new MediaSource();
  }
  static get supported() {
    return !!window.MediaSource;
  }
  get [$activeSourceBuffers]() {
    return this.activeSourceBuffers;
  }
  get [$duration]() {
    return this.duration;
  }
  set [$duration](value) {
    this.duration = value;
  }
  get [$readyState]() {
    return this.readyState;
  }
  get [$sourceBuffers]() {
    return this.sourceBuffers;
  }
  [$addSourceBuffer](...args) {
    return this.addSourceBuffer.apply(this, args);
  }
  [$clearLiveSeekableRange](...args) {
    return this.clearLiveSeekableRange.apply(this, args);
  }
  [$endOfStream](...args) {
    return this.endOfStream.apply(this, args);
  }
  [$removeSourceBuffer](...args) {
    return this.removeSourceBuffer.apply(this, args);
  }
  [$setLiveSeekableRange](...args) {
    return this.setLiveSeekableRange.apply(this, args);
  }
};
dart.addTypeTests(html$.MediaSource);
const activeSourceBuffers = Symbol("MediaSource.activeSourceBuffers");
const duration$1 = Symbol("MediaSource.duration");
const readyState$6 = Symbol("MediaSource.readyState");
const sourceBuffers = Symbol("MediaSource.sourceBuffers");
dart.setMethodSignature(html$.MediaSource, () => ({
  __proto__: dart.getMethods(html$.MediaSource.__proto__),
  [$addSourceBuffer]: dart.fnType(html$.SourceBuffer, [core.String]),
  [$clearLiveSeekableRange]: dart.fnType(dart.void, []),
  [$endOfStream]: dart.fnType(dart.void, [], [core.String]),
  [$removeSourceBuffer]: dart.fnType(dart.void, [html$.SourceBuffer]),
  [$setLiveSeekableRange]: dart.fnType(dart.void, [core.num, core.num])
}));
dart.setFieldSignature(html$.MediaSource, () => ({
  __proto__: dart.getFields(html$.MediaSource.__proto__),
  [$activeSourceBuffers]: dart.finalFieldType(html$.SourceBufferList),
  [$duration]: dart.fieldType(core.num),
  [$readyState]: dart.finalFieldType(core.String),
  [$sourceBuffers]: dart.finalFieldType(html$.SourceBufferList)
}));
dart.registerExtension("MediaSource", html$.MediaSource);
html$.MediaStream = class MediaStream$ extends html$.EventTarget {
  static new(stream_OR_tracks) {
    if (stream_OR_tracks === void 0) stream_OR_tracks = null;
    if (stream_OR_tracks == null) {
      return html$.MediaStream._create_1();
    }
    if (html$.MediaStream.is(stream_OR_tracks)) {
      return html$.MediaStream._create_2(stream_OR_tracks);
    }
    if (ListOfMediaStreamTrack().is(stream_OR_tracks)) {
      return html$.MediaStream._create_3(stream_OR_tracks);
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  static _create_1() {
    return new MediaStream();
  }
  static _create_2(stream_OR_tracks) {
    return new MediaStream(stream_OR_tracks);
  }
  static _create_3(stream_OR_tracks) {
    return new MediaStream(stream_OR_tracks);
  }
  get [$active]() {
    return this.active;
  }
  get [$id]() {
    return this.id;
  }
  [$addTrack](...args) {
    return this.addTrack.apply(this, args);
  }
  [$clone](...args) {
    return this.clone.apply(this, args);
  }
  [$getAudioTracks](...args) {
    return this.getAudioTracks.apply(this, args);
  }
  [$getTrackById](...args) {
    return this.getTrackById.apply(this, args);
  }
  [$getTracks](...args) {
    return this.getTracks.apply(this, args);
  }
  [$getVideoTracks](...args) {
    return this.getVideoTracks.apply(this, args);
  }
  [$removeTrack](...args) {
    return this.removeTrack.apply(this, args);
  }
  get [$onAddTrack]() {
    return html$.MediaStream.addTrackEvent.forTarget(this);
  }
  get [$onRemoveTrack]() {
    return html$.MediaStream.removeTrackEvent.forTarget(this);
  }
  static get supported() {
    return !!(html$.window.navigator.getUserMedia || html$.window.navigator.webkitGetUserMedia || html$.window.navigator.mozGetUserMedia || html$.window.navigator.msGetUserMedia);
  }
};
dart.addTypeTests(html$.MediaStream);
const active = Symbol("MediaStream.active");
const id$7 = Symbol("MediaStream.id");
dart.setMethodSignature(html$.MediaStream, () => ({
  __proto__: dart.getMethods(html$.MediaStream.__proto__),
  [$addTrack]: dart.fnType(dart.void, [html$.MediaStreamTrack]),
  [$clone]: dart.fnType(html$.MediaStream, []),
  [$getAudioTracks]: dart.fnType(core.List$(html$.MediaStreamTrack), []),
  [$getTrackById]: dart.fnType(html$.MediaStreamTrack, [core.String]),
  [$getTracks]: dart.fnType(core.List$(html$.MediaStreamTrack), []),
  [$getVideoTracks]: dart.fnType(core.List$(html$.MediaStreamTrack), []),
  [$removeTrack]: dart.fnType(dart.void, [html$.MediaStreamTrack])
}));
dart.setGetterSignature(html$.MediaStream, () => ({
  __proto__: dart.getGetters(html$.MediaStream.__proto__),
  [$onAddTrack]: async.Stream$(html$.Event),
  [$onRemoveTrack]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.MediaStream, () => ({
  __proto__: dart.getFields(html$.MediaStream.__proto__),
  [$active]: dart.finalFieldType(core.bool),
  [$id]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.MediaStream, {
  /*html$.MediaStream.addTrackEvent*/get addTrackEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("addtrack"));
  },
  /*html$.MediaStream.removeTrackEvent*/get removeTrackEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("removetrack"));
  }
});
dart.registerExtension("MediaStream", html$.MediaStream);
html$.MediaStreamEvent = class MediaStreamEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.MediaStreamEvent._create_1(type, eventInitDict_1);
    }
    return html$.MediaStreamEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MediaStreamEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MediaStreamEvent(type);
  }
  static get supported() {
    return html_common.Device.isEventTypeSupported("MediaStreamEvent");
  }
  get [$stream]() {
    return this.stream;
  }
};
dart.addTypeTests(html$.MediaStreamEvent);
const stream$ = Symbol("MediaStreamEvent.stream");
dart.setFieldSignature(html$.MediaStreamEvent, () => ({
  __proto__: dart.getFields(html$.MediaStreamEvent.__proto__),
  [$stream]: dart.finalFieldType(html$.MediaStream)
}));
dart.registerExtension("MediaStreamEvent", html$.MediaStreamEvent);
html$.MediaStreamTrackEvent = class MediaStreamTrackEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.MediaStreamTrackEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new MediaStreamTrackEvent(type, eventInitDict);
  }
  static get supported() {
    return html_common.Device.isEventTypeSupported("MediaStreamTrackEvent");
  }
  get [$track]() {
    return this.track;
  }
};
dart.addTypeTests(html$.MediaStreamTrackEvent);
const track$ = Symbol("MediaStreamTrackEvent.track");
dart.setFieldSignature(html$.MediaStreamTrackEvent, () => ({
  __proto__: dart.getFields(html$.MediaStreamTrackEvent.__proto__),
  [$track]: dart.finalFieldType(html$.MediaStreamTrack)
}));
dart.registerExtension("MediaStreamTrackEvent", html$.MediaStreamTrackEvent);
html$.MemoryInfo = class MemoryInfo extends _interceptors.Interceptor {
  get [$jsHeapSizeLimit]() {
    return this.jsHeapSizeLimit;
  }
  get [$totalJSHeapSize]() {
    return this.totalJSHeapSize;
  }
  get [$usedJSHeapSize]() {
    return this.usedJSHeapSize;
  }
};
dart.addTypeTests(html$.MemoryInfo);
const jsHeapSizeLimit = Symbol("MemoryInfo.jsHeapSizeLimit");
const totalJSHeapSize = Symbol("MemoryInfo.totalJSHeapSize");
const usedJSHeapSize = Symbol("MemoryInfo.usedJSHeapSize");
dart.setFieldSignature(html$.MemoryInfo, () => ({
  __proto__: dart.getFields(html$.MemoryInfo.__proto__),
  [$jsHeapSizeLimit]: dart.finalFieldType(core.int),
  [$totalJSHeapSize]: dart.finalFieldType(core.int),
  [$usedJSHeapSize]: dart.finalFieldType(core.int)
}));
dart.registerExtension("MemoryInfo", html$.MemoryInfo);
html$.MenuElement = class MenuElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("menu");
  }
};
(html$.MenuElement.created = function() {
  html$.MenuElement.__proto__.created.call(this);
}).prototype = html$.MenuElement.prototype;
dart.addTypeTests(html$.MenuElement);
dart.registerExtension("HTMLMenuElement", html$.MenuElement);
html$.MessageChannel = class MessageChannel$ extends _interceptors.Interceptor {
  static new() {
    return html$.MessageChannel._create_1();
  }
  static _create_1() {
    return new MessageChannel();
  }
  get [$port1]() {
    return this.port1;
  }
  get [$port2]() {
    return this.port2;
  }
};
dart.addTypeTests(html$.MessageChannel);
const port1 = Symbol("MessageChannel.port1");
const port2 = Symbol("MessageChannel.port2");
dart.setFieldSignature(html$.MessageChannel, () => ({
  __proto__: dart.getFields(html$.MessageChannel.__proto__),
  [$port1]: dart.finalFieldType(html$.MessagePort),
  [$port2]: dart.finalFieldType(html$.MessagePort)
}));
dart.registerExtension("MessageChannel", html$.MessageChannel);
let const$69;
const _initMessageEvent = Symbol('_initMessageEvent');
const _get_data = Symbol('_get_data');
const _get_source = Symbol('_get_source');
const _initMessageEvent_1 = Symbol('_initMessageEvent_1');
html$.MessageEvent = class MessageEvent$ extends html$.Event {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
    let data = opts && 'data' in opts ? opts.data : null;
    let origin = opts && 'origin' in opts ? opts.origin : null;
    let lastEventId = opts && 'lastEventId' in opts ? opts.lastEventId : null;
    let source = opts && 'source' in opts ? opts.source : null;
    let messagePorts = opts && 'messagePorts' in opts ? opts.messagePorts : const$69 || (const$69 = dart.constList([], html$.MessagePort));
    if (source == null) {
      source = html$.window;
    }
    if (!dart.test(html_common.Device.isIE)) {
      return new MessageEvent(type, {bubbles: canBubble, cancelable: cancelable, data: data, origin: origin, lastEventId: lastEventId, source: source, ports: messagePorts});
    }
    let event = html$.MessageEvent._check(html$.document[_createEvent]("MessageEvent"));
    event[_initMessageEvent](type, canBubble, cancelable, data, origin, lastEventId, source, messagePorts);
    return event;
  }
  get [$data]() {
    return html_common.convertNativeToDart_SerializedScriptValue(this[_get_data]);
  }
  get [_get_data]() {
    return this.data;
  }
  static __(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.MessageEvent._create_1(type, eventInitDict_1);
    }
    return html$.MessageEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MessageEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MessageEvent(type);
  }
  get [$lastEventId]() {
    return this.lastEventId;
  }
  get [$origin]() {
    return this.origin;
  }
  get [$ports]() {
    return this.ports;
  }
  get [$source]() {
    return html$._convertNativeToDart_EventTarget(this[_get_source]);
  }
  get [_get_source]() {
    return this.source;
  }
  get [$suborigin]() {
    return this.suborigin;
  }
  [_initMessageEvent](typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, portsArg) {
    let sourceArg_1 = html$._convertDartToNative_EventTarget(sourceArg);
    this[_initMessageEvent_1](typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg_1, portsArg);
    return;
  }
  [_initMessageEvent_1](...args) {
    return this.initMessageEvent.apply(this, args);
  }
};
dart.addTypeTests(html$.MessageEvent);
const lastEventId$ = Symbol("MessageEvent.lastEventId");
const origin$5 = Symbol("MessageEvent.origin");
const ports$ = Symbol("MessageEvent.ports");
const suborigin$ = Symbol("MessageEvent.suborigin");
dart.setMethodSignature(html$.MessageEvent, () => ({
  __proto__: dart.getMethods(html$.MessageEvent.__proto__),
  [_initMessageEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, core.Object, core.String, core.String, html$.EventTarget, core.List$(html$.MessagePort)]),
  [_initMessageEvent_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.List$(html$.MessagePort)])
}));
dart.setGetterSignature(html$.MessageEvent, () => ({
  __proto__: dart.getGetters(html$.MessageEvent.__proto__),
  [$data]: dart.dynamic,
  [$source]: html$.EventTarget
}));
dart.setFieldSignature(html$.MessageEvent, () => ({
  __proto__: dart.getFields(html$.MessageEvent.__proto__),
  [_get_data]: dart.finalFieldType(dart.dynamic),
  [$lastEventId]: dart.finalFieldType(core.String),
  [$origin]: dart.finalFieldType(core.String),
  [$ports]: dart.finalFieldType(ListOfMessagePort()),
  [_get_source]: dart.finalFieldType(dart.dynamic),
  [$suborigin]: dart.finalFieldType(core.String)
}));
dart.registerExtension("MessageEvent", html$.MessageEvent);
const _start$3 = Symbol('_start');
html$.MessagePort = class MessagePort extends html$.EventTarget {
  [$addEventListener](type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    if (type === "message") {
      this[_start$3]();
    }
    super[$addEventListener](type, listener, useCapture);
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [$postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  [_start$3](...args) {
    return this.start.apply(this, args);
  }
  get [$onMessage]() {
    return html$.MessagePort.messageEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.MessagePort);
dart.setMethodSignature(html$.MessagePort, () => ({
  __proto__: dart.getMethods(html$.MessagePort.__proto__),
  [$close]: dart.fnType(dart.void, []),
  [$postMessage]: dart.fnType(dart.void, [dart.dynamic], [core.List$(core.Object)]),
  [_postMessage_1]: dart.fnType(dart.void, [dart.dynamic, core.List$(core.Object)]),
  [_postMessage_2]: dart.fnType(dart.void, [dart.dynamic]),
  [_start$3]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.MessagePort, () => ({
  __proto__: dart.getGetters(html$.MessagePort.__proto__),
  [$onMessage]: async.Stream$(html$.MessageEvent)
}));
dart.defineLazy(html$.MessagePort, {
  /*html$.MessagePort.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  }
});
dart.registerExtension("MessagePort", html$.MessagePort);
html$.MetaElement = class MetaElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("meta");
  }
  get [$content]() {
    return this.content;
  }
  set [$content](value) {
    this.content = value;
  }
  get [$httpEquiv]() {
    return this.httpEquiv;
  }
  set [$httpEquiv](value) {
    this.httpEquiv = value;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
};
(html$.MetaElement.created = function() {
  this[content] = null;
  this[httpEquiv] = null;
  this[name$22] = null;
  html$.MetaElement.__proto__.created.call(this);
}).prototype = html$.MetaElement.prototype;
dart.addTypeTests(html$.MetaElement);
const content = Symbol("MetaElement.content");
const httpEquiv = Symbol("MetaElement.httpEquiv");
const name$22 = Symbol("MetaElement.name");
dart.setFieldSignature(html$.MetaElement, () => ({
  __proto__: dart.getFields(html$.MetaElement.__proto__),
  [$content]: dart.fieldType(core.String),
  [$httpEquiv]: dart.fieldType(core.String),
  [$name]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLMetaElement", html$.MetaElement);
const _get_modificationTime = Symbol('_get_modificationTime');
html$.Metadata = class Metadata extends _interceptors.Interceptor {
  get [$modificationTime]() {
    return html_common.convertNativeToDart_DateTime(this[_get_modificationTime]);
  }
  get [_get_modificationTime]() {
    return this.modificationTime;
  }
  get [$size]() {
    return this.size;
  }
};
dart.addTypeTests(html$.Metadata);
const size$4 = Symbol("Metadata.size");
dart.setGetterSignature(html$.Metadata, () => ({
  __proto__: dart.getGetters(html$.Metadata.__proto__),
  [$modificationTime]: core.DateTime
}));
dart.setFieldSignature(html$.Metadata, () => ({
  __proto__: dart.getFields(html$.Metadata.__proto__),
  [_get_modificationTime]: dart.finalFieldType(dart.dynamic),
  [$size]: dart.finalFieldType(core.int)
}));
dart.registerExtension("Metadata", html$.Metadata);
html$.MeterElement = class MeterElement extends html$.HtmlElement {
  static new() {
    return html$.MeterElement._check(html$.document[$createElement]("meter"));
  }
  static get supported() {
    return html$.Element.isTagSupported("meter");
  }
  get [$high]() {
    return this.high;
  }
  set [$high](value) {
    this.high = value;
  }
  get [$labels]() {
    return this.labels;
  }
  get [$low]() {
    return this.low;
  }
  set [$low](value) {
    this.low = value;
  }
  get [$max]() {
    return this.max;
  }
  set [$max](value) {
    this.max = value;
  }
  get [$min]() {
    return this.min;
  }
  set [$min](value) {
    this.min = value;
  }
  get [$optimum]() {
    return this.optimum;
  }
  set [$optimum](value) {
    this.optimum = value;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
};
(html$.MeterElement.created = function() {
  this[high] = null;
  this[labels$0] = null;
  this[low] = null;
  this[max$2] = null;
  this[min$2] = null;
  this[optimum] = null;
  this[value$10] = null;
  html$.MeterElement.__proto__.created.call(this);
}).prototype = html$.MeterElement.prototype;
dart.addTypeTests(html$.MeterElement);
const high = Symbol("MeterElement.high");
const labels$0 = Symbol("MeterElement.labels");
const low = Symbol("MeterElement.low");
const max$2 = Symbol("MeterElement.max");
const min$2 = Symbol("MeterElement.min");
const optimum = Symbol("MeterElement.optimum");
const value$10 = Symbol("MeterElement.value");
dart.setFieldSignature(html$.MeterElement, () => ({
  __proto__: dart.getFields(html$.MeterElement.__proto__),
  [$high]: dart.fieldType(core.num),
  [$labels]: dart.finalFieldType(ListOfNode()),
  [$low]: dart.fieldType(core.num),
  [$max]: dart.fieldType(core.num),
  [$min]: dart.fieldType(core.num),
  [$optimum]: dart.fieldType(core.num),
  [$value]: dart.fieldType(core.num)
}));
dart.registerExtension("HTMLMeterElement", html$.MeterElement);
html$.MidiAccess = class MidiAccess extends html$.EventTarget {
  get [$inputs]() {
    return this.inputs;
  }
  get [$outputs]() {
    return this.outputs;
  }
  get [$sysexEnabled]() {
    return this.sysexEnabled;
  }
};
dart.addTypeTests(html$.MidiAccess);
const inputs = Symbol("MidiAccess.inputs");
const outputs = Symbol("MidiAccess.outputs");
const sysexEnabled = Symbol("MidiAccess.sysexEnabled");
dart.setFieldSignature(html$.MidiAccess, () => ({
  __proto__: dart.getFields(html$.MidiAccess.__proto__),
  [$inputs]: dart.finalFieldType(html$.MidiInputMap),
  [$outputs]: dart.finalFieldType(html$.MidiOutputMap),
  [$sysexEnabled]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("MIDIAccess", html$.MidiAccess);
html$.MidiConnectionEvent = class MidiConnectionEvent extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.MidiConnectionEvent._create_1(type, eventInitDict_1);
    }
    return html$.MidiConnectionEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MIDIConnectionEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MIDIConnectionEvent(type);
  }
  get [$port]() {
    return this.port;
  }
};
dart.addTypeTests(html$.MidiConnectionEvent);
const port$4 = Symbol("MidiConnectionEvent.port");
dart.setFieldSignature(html$.MidiConnectionEvent, () => ({
  __proto__: dart.getFields(html$.MidiConnectionEvent.__proto__),
  [$port]: dart.finalFieldType(html$.MidiPort)
}));
dart.registerExtension("MIDIConnectionEvent", html$.MidiConnectionEvent);
html$.MidiPort = class MidiPort extends html$.EventTarget {
  get [$connection]() {
    return this.connection;
  }
  get [$id]() {
    return this.id;
  }
  get [$manufacturer]() {
    return this.manufacturer;
  }
  get [$name]() {
    return this.name;
  }
  get [$state]() {
    return this.state;
  }
  get [$type]() {
    return this.type;
  }
  get [$version]() {
    return this.version;
  }
  [$close]() {
    return html$.promiseToFuture(dart.dynamic, this.close());
  }
  [$open]() {
    return html$.promiseToFuture(dart.dynamic, this.open());
  }
};
dart.addTypeTests(html$.MidiPort);
const connection = Symbol("MidiPort.connection");
const id$8 = Symbol("MidiPort.id");
const manufacturer = Symbol("MidiPort.manufacturer");
const name$23 = Symbol("MidiPort.name");
const state$1 = Symbol("MidiPort.state");
const type$17 = Symbol("MidiPort.type");
const version$0 = Symbol("MidiPort.version");
dart.setMethodSignature(html$.MidiPort, () => ({
  __proto__: dart.getMethods(html$.MidiPort.__proto__),
  [$close]: dart.fnType(async.Future, []),
  [$open]: dart.fnType(async.Future, [])
}));
dart.setFieldSignature(html$.MidiPort, () => ({
  __proto__: dart.getFields(html$.MidiPort.__proto__),
  [$connection]: dart.finalFieldType(core.String),
  [$id]: dart.finalFieldType(core.String),
  [$manufacturer]: dart.finalFieldType(core.String),
  [$name]: dart.finalFieldType(core.String),
  [$state]: dart.finalFieldType(core.String),
  [$type]: dart.finalFieldType(core.String),
  [$version]: dart.finalFieldType(core.String)
}));
dart.registerExtension("MIDIPort", html$.MidiPort);
html$.MidiInput = class MidiInput extends html$.MidiPort {
  get [$onMidiMessage]() {
    return html$.MidiInput.midiMessageEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.MidiInput);
dart.setGetterSignature(html$.MidiInput, () => ({
  __proto__: dart.getGetters(html$.MidiInput.__proto__),
  [$onMidiMessage]: async.Stream$(html$.MidiMessageEvent)
}));
dart.defineLazy(html$.MidiInput, {
  /*html$.MidiInput.midiMessageEvent*/get midiMessageEvent() {
    return dart.const(new (EventStreamProviderOfMidiMessageEvent()).new("midimessage"));
  }
});
dart.registerExtension("MIDIInput", html$.MidiInput);
const _getItem = Symbol('_getItem');
const Interceptor_MapMixin$ = class Interceptor_MapMixin extends _interceptors.Interceptor {};
(Interceptor_MapMixin$.new = function() {
  Interceptor_MapMixin$.__proto__.new.call(this);
}).prototype = Interceptor_MapMixin$.prototype;
dart.applyMixin(Interceptor_MapMixin$, collection.MapMixin$(core.String, dart.dynamic));
html$.MidiInputMap = class MidiInputMap extends Interceptor_MapMixin$ {
  [_getItem](key) {
    return html_common.convertNativeToDart_Dictionary(this.get(key));
  }
  [$addAll](other) {
    MapOfString$dynamic()._check(other);
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$containsValue](value) {
    return this[$values][$any](dart.fn(e => dart.equals(e, value), MapTobool()));
  }
  [$containsKey](key) {
    return this[_getItem](core.String._check(key)) != null;
  }
  [$_get](key) {
    return this[_getItem](core.String._check(key));
  }
  [$forEach](f) {
    let entries = this.entries();
    while (true) {
      let entry = entries.next();
      if (entry.done) return;
      f(entry.value[0], html_common.convertNativeToDart_Dictionary(entry.value[1]));
    }
  }
  get [$keys]() {
    let keys = JSArrayOfString().of([]);
    this[$forEach](dart.fn((k, v) => keys[$add](k), StringAnddynamicTovoid()));
    return keys;
  }
  get [$values]() {
    let values = JSArrayOfMap().of([]);
    this[$forEach](dart.fn((k, v) => values[$add](core.Map._check(v)), StringAnddynamicTovoid()));
    return values;
  }
  get [$length]() {
    return this.size;
  }
  get [$isEmpty]() {
    return this[$length] === 0;
  }
  get [$isNotEmpty]() {
    return !dart.test(this[$isEmpty]);
  }
  [$_set](key, value) {
    core.String._check(key);
    dart.throw(new core.UnsupportedError.new("Not supported"));
    return value;
  }
  [$putIfAbsent](key, ifAbsent) {
    core.String._check(key);
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$remove](key) {
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$clear]() {
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
};
dart.addTypeTests(html$.MidiInputMap);
dart.setMethodSignature(html$.MidiInputMap, () => ({
  __proto__: dart.getMethods(html$.MidiInputMap.__proto__),
  [_getItem]: dart.fnType(core.Map, [core.String]),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  [$containsValue]: dart.fnType(core.bool, [dart.dynamic]),
  [$containsKey]: dart.fnType(core.bool, [dart.dynamic]),
  [$_get]: dart.fnType(core.Map, [dart.dynamic]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
  [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
  [$putIfAbsent]: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
  [$remove]: dart.fnType(core.String, [dart.dynamic]),
  [$clear]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.MidiInputMap, () => ({
  __proto__: dart.getGetters(html$.MidiInputMap.__proto__),
  [$keys]: core.Iterable$(core.String),
  [$values]: core.Iterable$(core.Map),
  [$length]: core.int,
  [$isEmpty]: core.bool,
  [$isNotEmpty]: core.bool
}));
dart.registerExtension("MIDIInputMap", html$.MidiInputMap);
html$.MidiMessageEvent = class MidiMessageEvent extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.MidiMessageEvent._create_1(type, eventInitDict_1);
    }
    return html$.MidiMessageEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MIDIMessageEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MIDIMessageEvent(type);
  }
  get [$data]() {
    return this.data;
  }
};
dart.addTypeTests(html$.MidiMessageEvent);
const data$4 = Symbol("MidiMessageEvent.data");
dart.setFieldSignature(html$.MidiMessageEvent, () => ({
  __proto__: dart.getFields(html$.MidiMessageEvent.__proto__),
  [$data]: dart.finalFieldType(typed_data.Uint8List)
}));
dart.registerExtension("MIDIMessageEvent", html$.MidiMessageEvent);
html$.MidiOutput = class MidiOutput extends html$.MidiPort {
  [$send](...args) {
    return this.send.apply(this, args);
  }
};
dart.addTypeTests(html$.MidiOutput);
dart.setMethodSignature(html$.MidiOutput, () => ({
  __proto__: dart.getMethods(html$.MidiOutput.__proto__),
  [$send]: dart.fnType(dart.void, [typed_data.Uint8List], [core.num])
}));
dart.registerExtension("MIDIOutput", html$.MidiOutput);
const Interceptor_MapMixin$$ = class Interceptor_MapMixin extends _interceptors.Interceptor {};
(Interceptor_MapMixin$$.new = function() {
  Interceptor_MapMixin$$.__proto__.new.call(this);
}).prototype = Interceptor_MapMixin$$.prototype;
dart.applyMixin(Interceptor_MapMixin$$, collection.MapMixin$(core.String, dart.dynamic));
html$.MidiOutputMap = class MidiOutputMap extends Interceptor_MapMixin$$ {
  [_getItem](key) {
    return html_common.convertNativeToDart_Dictionary(this.get(key));
  }
  [$addAll](other) {
    MapOfString$dynamic()._check(other);
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$containsValue](value) {
    return this[$values][$any](dart.fn(e => dart.equals(e, value), MapTobool()));
  }
  [$containsKey](key) {
    return this[_getItem](core.String._check(key)) != null;
  }
  [$_get](key) {
    return this[_getItem](core.String._check(key));
  }
  [$forEach](f) {
    let entries = this.entries();
    while (true) {
      let entry = entries.next();
      if (entry.done) return;
      f(entry.value[0], html_common.convertNativeToDart_Dictionary(entry.value[1]));
    }
  }
  get [$keys]() {
    let keys = JSArrayOfString().of([]);
    this[$forEach](dart.fn((k, v) => keys[$add](k), StringAnddynamicTovoid()));
    return keys;
  }
  get [$values]() {
    let values = JSArrayOfMap().of([]);
    this[$forEach](dart.fn((k, v) => values[$add](core.Map._check(v)), StringAnddynamicTovoid()));
    return values;
  }
  get [$length]() {
    return this.size;
  }
  get [$isEmpty]() {
    return this[$length] === 0;
  }
  get [$isNotEmpty]() {
    return !dart.test(this[$isEmpty]);
  }
  [$_set](key, value) {
    core.String._check(key);
    dart.throw(new core.UnsupportedError.new("Not supported"));
    return value;
  }
  [$putIfAbsent](key, ifAbsent) {
    core.String._check(key);
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$remove](key) {
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$clear]() {
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
};
dart.addTypeTests(html$.MidiOutputMap);
dart.setMethodSignature(html$.MidiOutputMap, () => ({
  __proto__: dart.getMethods(html$.MidiOutputMap.__proto__),
  [_getItem]: dart.fnType(core.Map, [core.String]),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  [$containsValue]: dart.fnType(core.bool, [dart.dynamic]),
  [$containsKey]: dart.fnType(core.bool, [dart.dynamic]),
  [$_get]: dart.fnType(core.Map, [dart.dynamic]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
  [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
  [$putIfAbsent]: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
  [$remove]: dart.fnType(core.String, [dart.dynamic]),
  [$clear]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.MidiOutputMap, () => ({
  __proto__: dart.getGetters(html$.MidiOutputMap.__proto__),
  [$keys]: core.Iterable$(core.String),
  [$values]: core.Iterable$(core.Map),
  [$length]: core.int,
  [$isEmpty]: core.bool,
  [$isNotEmpty]: core.bool
}));
dart.registerExtension("MIDIOutputMap", html$.MidiOutputMap);
html$.MimeType = class MimeType extends _interceptors.Interceptor {
  get [$description]() {
    return this.description;
  }
  get [$enabledPlugin]() {
    return this.enabledPlugin;
  }
  get [$suffixes]() {
    return this.suffixes;
  }
  get [$type]() {
    return this.type;
  }
};
dart.addTypeTests(html$.MimeType);
const description = Symbol("MimeType.description");
const enabledPlugin = Symbol("MimeType.enabledPlugin");
const suffixes = Symbol("MimeType.suffixes");
const type$18 = Symbol("MimeType.type");
dart.setFieldSignature(html$.MimeType, () => ({
  __proto__: dart.getFields(html$.MimeType.__proto__),
  [$description]: dart.finalFieldType(core.String),
  [$enabledPlugin]: dart.finalFieldType(html$.Plugin),
  [$suffixes]: dart.finalFieldType(core.String),
  [$type]: dart.finalFieldType(core.String)
}));
dart.registerExtension("MimeType", html$.MimeType);
const Interceptor_ListMixin$$2 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$2.new = function() {
  Interceptor_ListMixin$$2.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$2.prototype;
dart.applyMixin(Interceptor_ListMixin$$2, collection.ListMixin$(html$.MimeType));
const Interceptor_ImmutableListMixin$$2 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$2 {};
(Interceptor_ImmutableListMixin$$2.new = function() {
  Interceptor_ImmutableListMixin$$2.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$2.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$2, html$.ImmutableListMixin$(html$.MimeType));
html$.MimeTypeArray = class MimeTypeArray extends Interceptor_ImmutableListMixin$$2 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.MimeType._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
};
html$.MimeTypeArray.prototype[dart.isList] = true;
dart.addTypeTests(html$.MimeTypeArray);
html$.MimeTypeArray[dart.implements] = () => [ListOfMimeType(), JavaScriptIndexingBehaviorOfMimeType()];
dart.setMethodSignature(html$.MimeTypeArray, () => ({
  __proto__: dart.getMethods(html$.MimeTypeArray.__proto__),
  [$_get]: dart.fnType(html$.MimeType, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.MimeType, [core.int]),
  [$item]: dart.fnType(html$.MimeType, [core.int]),
  [$namedItem]: dart.fnType(html$.MimeType, [core.String])
}));
dart.setGetterSignature(html$.MimeTypeArray, () => ({
  __proto__: dart.getGetters(html$.MimeTypeArray.__proto__),
  [$length]: core.int,
  [$first]: html$.MimeType,
  [$last]: html$.MimeType,
  [$single]: html$.MimeType
}));
dart.setSetterSignature(html$.MimeTypeArray, () => ({
  __proto__: dart.getSetters(html$.MimeTypeArray.__proto__),
  [$length]: core.int
}));
dart.registerExtension("MimeTypeArray", html$.MimeTypeArray);
html$.ModElement = class ModElement extends html$.HtmlElement {
  get [$cite]() {
    return this.cite;
  }
  set [$cite](value) {
    this.cite = value;
  }
  get [$dateTime]() {
    return this.dateTime;
  }
  set [$dateTime](value) {
    this.dateTime = value;
  }
};
(html$.ModElement.created = function() {
  this[cite] = null;
  this[dateTime] = null;
  html$.ModElement.__proto__.created.call(this);
}).prototype = html$.ModElement.prototype;
dart.addTypeTests(html$.ModElement);
const cite = Symbol("ModElement.cite");
const dateTime = Symbol("ModElement.dateTime");
dart.setFieldSignature(html$.ModElement, () => ({
  __proto__: dart.getFields(html$.ModElement.__proto__),
  [$cite]: dart.fieldType(core.String),
  [$dateTime]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLModElement", html$.ModElement);
const _initMouseEvent = Symbol('_initMouseEvent');
const _clientX = Symbol('_clientX');
const _clientY = Symbol('_clientY');
const _layerX = Symbol('_layerX');
const _layerY = Symbol('_layerY');
const _movementX = Symbol('_movementX');
const _movementY = Symbol('_movementY');
const _pageX = Symbol('_pageX');
const _pageY = Symbol('_pageY');
const _screenX = Symbol('_screenX');
const _screenY = Symbol('_screenY');
const _initMouseEvent_1 = Symbol('_initMouseEvent_1');
html$.MouseEvent = class MouseEvent$ extends html$.UIEvent {
  static new(type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let detail = opts && 'detail' in opts ? opts.detail : 0;
    let screenX = opts && 'screenX' in opts ? opts.screenX : 0;
    let screenY = opts && 'screenY' in opts ? opts.screenY : 0;
    let clientX = opts && 'clientX' in opts ? opts.clientX : 0;
    let clientY = opts && 'clientY' in opts ? opts.clientY : 0;
    let button = opts && 'button' in opts ? opts.button : 0;
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
    let altKey = opts && 'altKey' in opts ? opts.altKey : false;
    let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
    let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
    let relatedTarget = opts && 'relatedTarget' in opts ? opts.relatedTarget : null;
    if (view == null) {
      view = html$.window;
    }
    let event = html$.MouseEvent._check(html$.document[_createEvent]("MouseEvent"));
    event[_initMouseEvent](type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget);
    return event;
  }
  static __(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.MouseEvent._create_1(type, eventInitDict_1);
    }
    return html$.MouseEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MouseEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MouseEvent(type);
  }
  get [$altKey]() {
    return this.altKey;
  }
  get [$button]() {
    return this.button;
  }
  get [$buttons]() {
    return this.buttons;
  }
  get [_clientX]() {
    return this.clientX;
  }
  get [_clientY]() {
    return this.clientY;
  }
  get [$ctrlKey]() {
    return this.ctrlKey;
  }
  get [$fromElement]() {
    return this.fromElement;
  }
  get [_layerX]() {
    return this.layerX;
  }
  get [_layerY]() {
    return this.layerY;
  }
  get [$metaKey]() {
    return this.metaKey;
  }
  get [_movementX]() {
    return this.movementX;
  }
  get [_movementY]() {
    return this.movementY;
  }
  get [_pageX]() {
    return this.pageX;
  }
  get [_pageY]() {
    return this.pageY;
  }
  get [$region]() {
    return this.region;
  }
  get [$relatedTarget]() {
    return html$._convertNativeToDart_EventTarget(this[_get_relatedTarget]);
  }
  get [_get_relatedTarget]() {
    return this.relatedTarget;
  }
  get [_screenX]() {
    return this.screenX;
  }
  get [_screenY]() {
    return this.screenY;
  }
  get [$shiftKey]() {
    return this.shiftKey;
  }
  get [$toElement]() {
    return this.toElement;
  }
  [$getModifierState](...args) {
    return this.getModifierState.apply(this, args);
  }
  [_initMouseEvent](type, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget) {
    let relatedTarget_1 = html$._convertDartToNative_EventTarget(relatedTarget);
    this[_initMouseEvent_1](type, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget_1);
    return;
  }
  [_initMouseEvent_1](...args) {
    return this.initMouseEvent.apply(this, args);
  }
  get [$client]() {
    return new (PointOfnum()).new(this[_clientX], this[_clientY]);
  }
  get [$movement]() {
    return new (PointOfnum()).new(this[_movementX], this[_movementY]);
  }
  get [$offset]() {
    if (!!this.offsetX) {
      let x = this.offsetX;
      let y = this.offsetY;
      return new (PointOfnum()).new(x, y);
    } else {
      if (!html$.Element.is(this[$target])) {
        dart.throw(new core.UnsupportedError.new("offsetX is only supported on elements"));
      }
      let target = html$.Element._check(this[$target]);
      let point = this[$client]['-'](target.getBoundingClientRect()[$topLeft]);
      return new (PointOfnum()).new(point.x[$toInt](), point.y[$toInt]());
    }
  }
  get [$screen]() {
    return new (PointOfnum()).new(this[_screenX], this[_screenY]);
  }
  get [$layer]() {
    return new (PointOfnum()).new(this[_layerX], this[_layerY]);
  }
  get [$page]() {
    return new (PointOfnum()).new(this[_pageX], this[_pageY]);
  }
  get [$dataTransfer]() {
    return this.dataTransfer;
  }
};
dart.addTypeTests(html$.MouseEvent);
const altKey$ = Symbol("MouseEvent.altKey");
const button = Symbol("MouseEvent.button");
const buttons$ = Symbol("MouseEvent.buttons");
const ctrlKey$ = Symbol("MouseEvent.ctrlKey");
const fromElement = Symbol("MouseEvent.fromElement");
const metaKey$ = Symbol("MouseEvent.metaKey");
const region = Symbol("MouseEvent.region");
const shiftKey$ = Symbol("MouseEvent.shiftKey");
const toElement = Symbol("MouseEvent.toElement");
dart.setMethodSignature(html$.MouseEvent, () => ({
  __proto__: dart.getMethods(html$.MouseEvent.__proto__),
  [$getModifierState]: dart.fnType(core.bool, [core.String]),
  [_initMouseEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.int, core.int, core.int, core.int, core.int, core.bool, core.bool, core.bool, core.bool, core.int, html$.EventTarget]),
  [_initMouseEvent_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, html$.Window, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic])
}));
dart.setGetterSignature(html$.MouseEvent, () => ({
  __proto__: dart.getGetters(html$.MouseEvent.__proto__),
  [$relatedTarget]: html$.EventTarget,
  [$client]: math.Point$(core.num),
  [$movement]: math.Point$(core.num),
  [$offset]: math.Point$(core.num),
  [$screen]: math.Point$(core.num),
  [$layer]: math.Point$(core.num),
  [$page]: math.Point$(core.num),
  [$dataTransfer]: html$.DataTransfer
}));
dart.setFieldSignature(html$.MouseEvent, () => ({
  __proto__: dart.getFields(html$.MouseEvent.__proto__),
  [$altKey]: dart.finalFieldType(core.bool),
  [$button]: dart.finalFieldType(core.int),
  [$buttons]: dart.finalFieldType(core.int),
  [_clientX]: dart.finalFieldType(core.num),
  [_clientY]: dart.finalFieldType(core.num),
  [$ctrlKey]: dart.finalFieldType(core.bool),
  [$fromElement]: dart.finalFieldType(html$.Node),
  [_layerX]: dart.finalFieldType(core.int),
  [_layerY]: dart.finalFieldType(core.int),
  [$metaKey]: dart.finalFieldType(core.bool),
  [_movementX]: dart.finalFieldType(core.int),
  [_movementY]: dart.finalFieldType(core.int),
  [_pageX]: dart.finalFieldType(core.num),
  [_pageY]: dart.finalFieldType(core.num),
  [$region]: dart.finalFieldType(core.String),
  [_get_relatedTarget]: dart.finalFieldType(dart.dynamic),
  [_screenX]: dart.finalFieldType(core.num),
  [_screenY]: dart.finalFieldType(core.num),
  [$shiftKey]: dart.finalFieldType(core.bool),
  [$toElement]: dart.finalFieldType(html$.Node)
}));
dart.registerExtension("MouseEvent", html$.MouseEvent);
dart.registerExtension("DragEvent", html$.MouseEvent);
html$.MutationEvent = class MutationEvent extends html$.Event {
  get [$attrChange]() {
    return this.attrChange;
  }
  get [$attrName]() {
    return this.attrName;
  }
  get [$newValue]() {
    return this.newValue;
  }
  get [$prevValue]() {
    return this.prevValue;
  }
  get [$relatedNode]() {
    return this.relatedNode;
  }
  [$initMutationEvent](...args) {
    return this.initMutationEvent.apply(this, args);
  }
};
dart.addTypeTests(html$.MutationEvent);
const attrChange = Symbol("MutationEvent.attrChange");
const attrName = Symbol("MutationEvent.attrName");
const newValue = Symbol("MutationEvent.newValue");
const prevValue = Symbol("MutationEvent.prevValue");
const relatedNode = Symbol("MutationEvent.relatedNode");
dart.setMethodSignature(html$.MutationEvent, () => ({
  __proto__: dart.getMethods(html$.MutationEvent.__proto__),
  [$initMutationEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Node, core.String, core.String, core.String, core.int])
}));
dart.setFieldSignature(html$.MutationEvent, () => ({
  __proto__: dart.getFields(html$.MutationEvent.__proto__),
  [$attrChange]: dart.finalFieldType(core.int),
  [$attrName]: dart.finalFieldType(core.String),
  [$newValue]: dart.finalFieldType(core.String),
  [$prevValue]: dart.finalFieldType(core.String),
  [$relatedNode]: dart.finalFieldType(html$.Node)
}));
dart.defineLazy(html$.MutationEvent, {
  /*html$.MutationEvent.ADDITION*/get ADDITION() {
    return 2;
  },
  /*html$.MutationEvent.MODIFICATION*/get MODIFICATION() {
    return 1;
  },
  /*html$.MutationEvent.REMOVAL*/get REMOVAL() {
    return 3;
  }
});
dart.registerExtension("MutationEvent", html$.MutationEvent);
const _observe_1$ = Symbol('_observe_1');
const _observe_2 = Symbol('_observe_2');
const _observe = Symbol('_observe');
const _call = Symbol('_call');
html$.MutationObserver = class MutationObserver extends _interceptors.Interceptor {
  [$disconnect](...args) {
    return this.disconnect.apply(this, args);
  }
  [_observe](target, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      this[_observe_1$](target, options_1);
      return;
    }
    this[_observe_2](target);
    return;
  }
  [_observe_1$](...args) {
    return this.observe.apply(this, args);
  }
  [_observe_2](...args) {
    return this.observe.apply(this, args);
  }
  [$takeRecords](...args) {
    return this.takeRecords.apply(this, args);
  }
  static get supported() {
    return !!(window.MutationObserver || window.WebKitMutationObserver);
  }
  [$observe](target, opts) {
    let childList = opts && 'childList' in opts ? opts.childList : null;
    let attributes = opts && 'attributes' in opts ? opts.attributes : null;
    let characterData = opts && 'characterData' in opts ? opts.characterData : null;
    let subtree = opts && 'subtree' in opts ? opts.subtree : null;
    let attributeOldValue = opts && 'attributeOldValue' in opts ? opts.attributeOldValue : null;
    let characterDataOldValue = opts && 'characterDataOldValue' in opts ? opts.characterDataOldValue : null;
    let attributeFilter = opts && 'attributeFilter' in opts ? opts.attributeFilter : null;
    let parsedOptions = html$.MutationObserver._createDict();
    function override(key, value) {
      if (value != null) html$.MutationObserver._add(parsedOptions, core.String._check(key), value);
    }
    dart.fn(override, dynamicAnddynamicToNull());
    override("childList", childList);
    override("attributes", attributes);
    override("characterData", characterData);
    override("subtree", subtree);
    override("attributeOldValue", attributeOldValue);
    override("characterDataOldValue", characterDataOldValue);
    if (attributeFilter != null) {
      override("attributeFilter", html$.MutationObserver._fixupList(attributeFilter));
    }
    this[_call](target, parsedOptions);
  }
  static _createDict() {
    return {};
  }
  static _add(m, key, value) {
    m[key] = value;
  }
  static _fixupList(list) {
    return list;
  }
  [_call](...args) {
    return this.observe.apply(this, args);
  }
  static new(callback) {
    0;
    return new (window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver)(_js_helper.convertDartClosureToJS(ListAndMutationObserverTovoid(), html$._wrapBinaryZone(core.List, html$.MutationObserver, callback), 2));
  }
};
dart.addTypeTests(html$.MutationObserver);
dart.setMethodSignature(html$.MutationObserver, () => ({
  __proto__: dart.getMethods(html$.MutationObserver.__proto__),
  [$disconnect]: dart.fnType(dart.void, []),
  [_observe]: dart.fnType(dart.void, [html$.Node], [core.Map]),
  [_observe_1$]: dart.fnType(dart.void, [html$.Node, dart.dynamic]),
  [_observe_2]: dart.fnType(dart.void, [html$.Node]),
  [$takeRecords]: dart.fnType(core.List$(html$.MutationRecord), []),
  [$observe]: dart.fnType(dart.void, [html$.Node], {childList: core.bool, attributes: core.bool, characterData: core.bool, subtree: core.bool, attributeOldValue: core.bool, characterDataOldValue: core.bool, attributeFilter: core.List$(core.String)}),
  [_call]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic])
}));
dart.defineLazy(html$.MutationObserver, {
  /*html$.MutationObserver._boolKeys*/get _boolKeys() {
    return dart.constMap(core.String, core.bool, ["childList", true, "attributes", true, "characterData", true, "subtree", true, "attributeOldValue", true, "characterDataOldValue", true]);
  }
});
dart.registerExtension("MutationObserver", html$.MutationObserver);
dart.registerExtension("WebKitMutationObserver", html$.MutationObserver);
html$.MutationRecord = class MutationRecord extends _interceptors.Interceptor {
  get [$addedNodes]() {
    return this.addedNodes;
  }
  get [$attributeName]() {
    return this.attributeName;
  }
  get [$attributeNamespace]() {
    return this.attributeNamespace;
  }
  get [$nextSibling]() {
    return this.nextSibling;
  }
  get [$oldValue]() {
    return this.oldValue;
  }
  get [$previousSibling]() {
    return this.previousSibling;
  }
  get [$removedNodes]() {
    return this.removedNodes;
  }
  get [$target]() {
    return this.target;
  }
  get [$type]() {
    return this.type;
  }
};
dart.addTypeTests(html$.MutationRecord);
const addedNodes = Symbol("MutationRecord.addedNodes");
const attributeName = Symbol("MutationRecord.attributeName");
const attributeNamespace = Symbol("MutationRecord.attributeNamespace");
const nextSibling = Symbol("MutationRecord.nextSibling");
const oldValue = Symbol("MutationRecord.oldValue");
const previousSibling = Symbol("MutationRecord.previousSibling");
const removedNodes = Symbol("MutationRecord.removedNodes");
const target$4 = Symbol("MutationRecord.target");
const type$19 = Symbol("MutationRecord.type");
dart.setFieldSignature(html$.MutationRecord, () => ({
  __proto__: dart.getFields(html$.MutationRecord.__proto__),
  [$addedNodes]: dart.finalFieldType(ListOfNode()),
  [$attributeName]: dart.finalFieldType(core.String),
  [$attributeNamespace]: dart.finalFieldType(core.String),
  [$nextSibling]: dart.finalFieldType(html$.Node),
  [$oldValue]: dart.finalFieldType(core.String),
  [$previousSibling]: dart.finalFieldType(html$.Node),
  [$removedNodes]: dart.finalFieldType(ListOfNode()),
  [$target]: dart.finalFieldType(html$.Node),
  [$type]: dart.finalFieldType(core.String)
}));
dart.registerExtension("MutationRecord", html$.MutationRecord);
html$.NavigationPreloadManager = class NavigationPreloadManager extends _interceptors.Interceptor {
  [$disable]() {
    return html$.promiseToFuture(dart.dynamic, this.disable());
  }
  [$enable]() {
    return html$.promiseToFuture(dart.dynamic, this.enable());
  }
  [$getState]() {
    return html$.promiseToFutureAsMap(this.getState());
  }
};
dart.addTypeTests(html$.NavigationPreloadManager);
dart.setMethodSignature(html$.NavigationPreloadManager, () => ({
  __proto__: dart.getMethods(html$.NavigationPreloadManager.__proto__),
  [$disable]: dart.fnType(async.Future, []),
  [$enable]: dart.fnType(async.Future, []),
  [$getState]: dart.fnType(async.Future$(core.Map$(core.String, dart.dynamic)), [])
}));
dart.registerExtension("NavigationPreloadManager", html$.NavigationPreloadManager);
const _getGamepads = Symbol('_getGamepads');
const _ensureGetUserMedia = Symbol('_ensureGetUserMedia');
const _getUserMedia = Symbol('_getUserMedia');
const _requestKeyboardLock_1 = Symbol('_requestKeyboardLock_1');
const _requestKeyboardLock_2 = Symbol('_requestKeyboardLock_2');
html$.NavigatorConcurrentHardware = class NavigatorConcurrentHardware extends _interceptors.Interceptor {
  get [$hardwareConcurrency]() {
    return this.hardwareConcurrency;
  }
};
dart.addTypeTests(html$.NavigatorConcurrentHardware);
const hardwareConcurrency = Symbol("NavigatorConcurrentHardware.hardwareConcurrency");
dart.setFieldSignature(html$.NavigatorConcurrentHardware, () => ({
  __proto__: dart.getFields(html$.NavigatorConcurrentHardware.__proto__),
  [$hardwareConcurrency]: dart.finalFieldType(core.int)
}));
dart.registerExtension("NavigatorConcurrentHardware", html$.NavigatorConcurrentHardware);
html$.Navigator = class Navigator extends html$.NavigatorConcurrentHardware {
  [$getGamepads]() {
    let gamepadList = this[_getGamepads]();
    let jsProto = gamepadList.prototype;
    if (jsProto == null) {
      gamepadList.prototype = Object.create(null);
    }
    _js_helper.applyExtension("GamepadList", gamepadList);
    return gamepadList;
  }
  get [$language]() {
    return this.language || this.userLanguage;
  }
  [$getUserMedia](opts) {
    let audio = opts && 'audio' in opts ? opts.audio : false;
    let video = opts && 'video' in opts ? opts.video : false;
    let completer = CompleterOfMediaStream().new();
    let options = new (IdentityMapOfString$dynamic()).from(["audio", audio, "video", video]);
    this[_ensureGetUserMedia]();
    this[_getUserMedia](html_common.convertDartToNative_SerializedScriptValue(options), dart.fn(stream => {
      completer.complete(stream);
    }, MediaStreamToNull()), dart.fn(error => {
      completer.completeError(error);
    }, NavigatorUserMediaErrorToNull()));
    return completer.future;
  }
  [_ensureGetUserMedia]() {
    if (!this.getUserMedia) {
      this.getUserMedia = this.getUserMedia || this.webkitGetUserMedia || this.mozGetUserMedia || this.msGetUserMedia;
    }
  }
  [_getUserMedia](...args) {
    return this.getUserMedia.apply(this, args);
  }
  get [$budget]() {
    return this.budget;
  }
  get [$clipboard]() {
    return this.clipboard;
  }
  get [$connection]() {
    return this.connection;
  }
  get [$credentials]() {
    return this.credentials;
  }
  get [$deviceMemory]() {
    return this.deviceMemory;
  }
  get [$doNotTrack]() {
    return this.doNotTrack;
  }
  get [$geolocation]() {
    return this.geolocation;
  }
  get [$maxTouchPoints]() {
    return this.maxTouchPoints;
  }
  get [$mediaCapabilities]() {
    return this.mediaCapabilities;
  }
  get [$mediaDevices]() {
    return this.mediaDevices;
  }
  get [$mediaSession]() {
    return this.mediaSession;
  }
  get [$mimeTypes]() {
    return this.mimeTypes;
  }
  get [$nfc]() {
    return this.nfc;
  }
  get [$permissions]() {
    return this.permissions;
  }
  get [$presentation]() {
    return this.presentation;
  }
  get [$productSub]() {
    return this.productSub;
  }
  get [$serviceWorker]() {
    return this.serviceWorker;
  }
  get [$storage]() {
    return this.storage;
  }
  get [$vendor]() {
    return this.vendor;
  }
  get [$vendorSub]() {
    return this.vendorSub;
  }
  get [$vr]() {
    return this.vr;
  }
  get [$persistentStorage]() {
    return this.webkitPersistentStorage;
  }
  get [$temporaryStorage]() {
    return this.webkitTemporaryStorage;
  }
  [$cancelKeyboardLock](...args) {
    return this.cancelKeyboardLock.apply(this, args);
  }
  [$getBattery]() {
    return html$.promiseToFuture(dart.dynamic, this.getBattery());
  }
  [_getGamepads](...args) {
    return this.getGamepads.apply(this, args);
  }
  [$getInstalledRelatedApps]() {
    return html$.promiseToFuture(html$.RelatedApplication, this.getInstalledRelatedApps());
  }
  [$getVRDisplays]() {
    return html$.promiseToFuture(dart.dynamic, this.getVRDisplays());
  }
  [$registerProtocolHandler](...args) {
    return this.registerProtocolHandler.apply(this, args);
  }
  [$requestKeyboardLock](keyCodes) {
    if (keyCodes === void 0) keyCodes = null;
    if (keyCodes != null) {
      let keyCodes_1 = html_common.convertDartToNative_StringArray(keyCodes);
      return this[_requestKeyboardLock_1](keyCodes_1);
    }
    return this[_requestKeyboardLock_2]();
  }
  [_requestKeyboardLock_1](keyCodes) {
    return html$.promiseToFuture(dart.dynamic, this.requestKeyboardLock(keyCodes));
  }
  [_requestKeyboardLock_2]() {
    return html$.promiseToFuture(dart.dynamic, this.requestKeyboardLock());
  }
  [$requestMidiAccess](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.requestMidiAccess(options_dict));
  }
  [$requestMediaKeySystemAccess](keySystem, supportedConfigurations) {
    return html$.promiseToFuture(dart.dynamic, this.requestMediaKeySystemAccess(keySystem, supportedConfigurations));
  }
  [$sendBeacon](...args) {
    return this.sendBeacon.apply(this, args);
  }
  [$share](data) {
    if (data === void 0) data = null;
    let data_dict = null;
    if (data != null) {
      data_dict = html_common.convertDartToNative_Dictionary(data);
    }
    return html$.promiseToFuture(dart.dynamic, this.share(data_dict));
  }
  get [$webdriver]() {
    return this.webdriver;
  }
  get [$cookieEnabled]() {
    return this.cookieEnabled;
  }
  get [$appCodeName]() {
    return this.appCodeName;
  }
  get [$appName]() {
    return this.appName;
  }
  get [$appVersion]() {
    return this.appVersion;
  }
  get [$dartEnabled]() {
    return this.dartEnabled;
  }
  get [$platform]() {
    return this.platform;
  }
  get [$product]() {
    return this.product;
  }
  get [$userAgent]() {
    return this.userAgent;
  }
  get [$languages]() {
    return this.languages;
  }
  get [$onLine]() {
    return this.onLine;
  }
};
dart.addTypeTests(html$.Navigator);
const budget = Symbol("Navigator.budget");
const clipboard = Symbol("Navigator.clipboard");
const connection$ = Symbol("Navigator.connection");
const credentials = Symbol("Navigator.credentials");
const deviceMemory = Symbol("Navigator.deviceMemory");
const doNotTrack = Symbol("Navigator.doNotTrack");
const geolocation = Symbol("Navigator.geolocation");
const maxTouchPoints = Symbol("Navigator.maxTouchPoints");
const mediaCapabilities = Symbol("Navigator.mediaCapabilities");
const mediaDevices = Symbol("Navigator.mediaDevices");
const mediaSession = Symbol("Navigator.mediaSession");
const mimeTypes = Symbol("Navigator.mimeTypes");
const nfc = Symbol("Navigator.nfc");
const permissions = Symbol("Navigator.permissions");
const presentation = Symbol("Navigator.presentation");
const productSub = Symbol("Navigator.productSub");
const serviceWorker = Symbol("Navigator.serviceWorker");
const storage = Symbol("Navigator.storage");
const vendor = Symbol("Navigator.vendor");
const vendorSub = Symbol("Navigator.vendorSub");
const vr = Symbol("Navigator.vr");
const persistentStorage = Symbol("Navigator.persistentStorage");
const temporaryStorage = Symbol("Navigator.temporaryStorage");
const webdriver = Symbol("Navigator.webdriver");
const cookieEnabled = Symbol("Navigator.cookieEnabled");
const appCodeName = Symbol("Navigator.appCodeName");
const appName = Symbol("Navigator.appName");
const appVersion = Symbol("Navigator.appVersion");
const dartEnabled = Symbol("Navigator.dartEnabled");
const platform = Symbol("Navigator.platform");
const product = Symbol("Navigator.product");
const userAgent = Symbol("Navigator.userAgent");
const languages = Symbol("Navigator.languages");
const onLine = Symbol("Navigator.onLine");
html$.Navigator[dart.implements] = () => [html$.NavigatorCookies, html$.NavigatorLanguage, html$.NavigatorOnLine, html$.NavigatorAutomationInformation, html$.NavigatorID];
dart.setMethodSignature(html$.Navigator, () => ({
  __proto__: dart.getMethods(html$.Navigator.__proto__),
  [$getGamepads]: dart.fnType(core.List$(html$.Gamepad), []),
  [$getUserMedia]: dart.fnType(async.Future$(html$.MediaStream), [], {audio: dart.dynamic, video: dart.dynamic}),
  [_ensureGetUserMedia]: dart.fnType(dart.dynamic, []),
  [_getUserMedia]: dart.fnType(dart.void, [dart.dynamic, dart.fnType(dart.void, [html$.MediaStream]), dart.fnType(dart.void, [html$.NavigatorUserMediaError])]),
  [$cancelKeyboardLock]: dart.fnType(dart.void, []),
  [$getBattery]: dart.fnType(async.Future, []),
  [_getGamepads]: dart.fnType(core.List$(html$.Gamepad), []),
  [$getInstalledRelatedApps]: dart.fnType(async.Future$(html$.RelatedApplication), []),
  [$getVRDisplays]: dart.fnType(async.Future, []),
  [$registerProtocolHandler]: dart.fnType(dart.void, [core.String, core.String, core.String]),
  [$requestKeyboardLock]: dart.fnType(async.Future, [], [core.List$(core.String)]),
  [_requestKeyboardLock_1]: dart.fnType(async.Future, [core.List]),
  [_requestKeyboardLock_2]: dart.fnType(async.Future, []),
  [$requestMidiAccess]: dart.fnType(async.Future, [], [core.Map]),
  [$requestMediaKeySystemAccess]: dart.fnType(async.Future, [core.String, core.List$(core.Map)]),
  [$sendBeacon]: dart.fnType(core.bool, [core.String, core.Object]),
  [$share]: dart.fnType(async.Future, [], [core.Map])
}));
dart.setGetterSignature(html$.Navigator, () => ({
  __proto__: dart.getGetters(html$.Navigator.__proto__),
  [$language]: core.String
}));
dart.setFieldSignature(html$.Navigator, () => ({
  __proto__: dart.getFields(html$.Navigator.__proto__),
  [$budget]: dart.finalFieldType(html$._BudgetService),
  [$clipboard]: dart.finalFieldType(html$._Clipboard),
  [$connection]: dart.finalFieldType(html$.NetworkInformation),
  [$credentials]: dart.finalFieldType(html$.CredentialsContainer),
  [$deviceMemory]: dart.finalFieldType(core.num),
  [$doNotTrack]: dart.finalFieldType(core.String),
  [$geolocation]: dart.finalFieldType(html$.Geolocation),
  [$maxTouchPoints]: dart.finalFieldType(core.int),
  [$mediaCapabilities]: dart.finalFieldType(html$.MediaCapabilities),
  [$mediaDevices]: dart.finalFieldType(html$.MediaDevices),
  [$mediaSession]: dart.finalFieldType(html$.MediaSession),
  [$mimeTypes]: dart.finalFieldType(html$.MimeTypeArray),
  [$nfc]: dart.finalFieldType(html$._NFC),
  [$permissions]: dart.finalFieldType(html$.Permissions),
  [$presentation]: dart.finalFieldType(html$.Presentation),
  [$productSub]: dart.finalFieldType(core.String),
  [$serviceWorker]: dart.finalFieldType(html$.ServiceWorkerContainer),
  [$storage]: dart.finalFieldType(html$.StorageManager),
  [$vendor]: dart.finalFieldType(core.String),
  [$vendorSub]: dart.finalFieldType(core.String),
  [$vr]: dart.finalFieldType(html$.VR),
  [$persistentStorage]: dart.finalFieldType(html$.DeprecatedStorageQuota),
  [$temporaryStorage]: dart.finalFieldType(html$.DeprecatedStorageQuota),
  [$webdriver]: dart.finalFieldType(core.bool),
  [$cookieEnabled]: dart.finalFieldType(core.bool),
  [$appCodeName]: dart.finalFieldType(core.String),
  [$appName]: dart.finalFieldType(core.String),
  [$appVersion]: dart.finalFieldType(core.String),
  [$dartEnabled]: dart.finalFieldType(core.bool),
  [$platform]: dart.finalFieldType(core.String),
  [$product]: dart.finalFieldType(core.String),
  [$userAgent]: dart.finalFieldType(core.String),
  [$languages]: dart.finalFieldType(ListOfString()),
  [$onLine]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("Navigator", html$.Navigator);
html$.NavigatorAutomationInformation = class NavigatorAutomationInformation extends _interceptors.Interceptor {
  get [$webdriver]() {
    return this.webdriver;
  }
};
dart.addTypeTests(html$.NavigatorAutomationInformation);
const webdriver$ = Symbol("NavigatorAutomationInformation.webdriver");
dart.setFieldSignature(html$.NavigatorAutomationInformation, () => ({
  __proto__: dart.getFields(html$.NavigatorAutomationInformation.__proto__),
  [$webdriver]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("NavigatorAutomationInformation", html$.NavigatorAutomationInformation);
html$.NavigatorCookies = class NavigatorCookies extends _interceptors.Interceptor {
  get [$cookieEnabled]() {
    return this.cookieEnabled;
  }
};
dart.addTypeTests(html$.NavigatorCookies);
const cookieEnabled$ = Symbol("NavigatorCookies.cookieEnabled");
dart.setFieldSignature(html$.NavigatorCookies, () => ({
  __proto__: dart.getFields(html$.NavigatorCookies.__proto__),
  [$cookieEnabled]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("NavigatorCookies", html$.NavigatorCookies);
html$.NavigatorID = class NavigatorID extends _interceptors.Interceptor {
  get appCodeName() {
    return this[appCodeName$];
  }
  set appCodeName(value) {
    super.appCodeName = value;
  }
  get appName() {
    return this[appName$];
  }
  set appName(value) {
    super.appName = value;
  }
  get appVersion() {
    return this[appVersion$];
  }
  set appVersion(value) {
    super.appVersion = value;
  }
  get dartEnabled() {
    return this[dartEnabled$];
  }
  set dartEnabled(value) {
    super.dartEnabled = value;
  }
  get platform() {
    return this[platform$];
  }
  set platform(value) {
    super.platform = value;
  }
  get product() {
    return this[product$];
  }
  set product(value) {
    super.product = value;
  }
  get userAgent() {
    return this[userAgent$];
  }
  set userAgent(value) {
    super.userAgent = value;
  }
};
dart.addTypeTests(html$.NavigatorID);
const appCodeName$ = Symbol("NavigatorID.appCodeName");
const appName$ = Symbol("NavigatorID.appName");
const appVersion$ = Symbol("NavigatorID.appVersion");
const dartEnabled$ = Symbol("NavigatorID.dartEnabled");
const platform$ = Symbol("NavigatorID.platform");
const product$ = Symbol("NavigatorID.product");
const userAgent$ = Symbol("NavigatorID.userAgent");
dart.setFieldSignature(html$.NavigatorID, () => ({
  __proto__: dart.getFields(html$.NavigatorID.__proto__),
  appCodeName: dart.finalFieldType(core.String),
  appName: dart.finalFieldType(core.String),
  appVersion: dart.finalFieldType(core.String),
  dartEnabled: dart.finalFieldType(core.bool),
  platform: dart.finalFieldType(core.String),
  product: dart.finalFieldType(core.String),
  userAgent: dart.finalFieldType(core.String)
}));
dart.defineExtensionAccessors(html$.NavigatorID, [
  'appCodeName',
  'appName',
  'appVersion',
  'dartEnabled',
  'platform',
  'product',
  'userAgent'
]);
html$.NavigatorLanguage = class NavigatorLanguage extends _interceptors.Interceptor {
  get language() {
    return this[language];
  }
  set language(value) {
    super.language = value;
  }
  get languages() {
    return this[languages$];
  }
  set languages(value) {
    super.languages = value;
  }
};
dart.addTypeTests(html$.NavigatorLanguage);
const language = Symbol("NavigatorLanguage.language");
const languages$ = Symbol("NavigatorLanguage.languages");
dart.setFieldSignature(html$.NavigatorLanguage, () => ({
  __proto__: dart.getFields(html$.NavigatorLanguage.__proto__),
  language: dart.finalFieldType(core.String),
  languages: dart.finalFieldType(ListOfString())
}));
dart.defineExtensionAccessors(html$.NavigatorLanguage, ['language', 'languages']);
html$.NavigatorOnLine = class NavigatorOnLine extends _interceptors.Interceptor {
  get onLine() {
    return this[onLine$];
  }
  set onLine(value) {
    super.onLine = value;
  }
};
dart.addTypeTests(html$.NavigatorOnLine);
const onLine$ = Symbol("NavigatorOnLine.onLine");
dart.setFieldSignature(html$.NavigatorOnLine, () => ({
  __proto__: dart.getFields(html$.NavigatorOnLine.__proto__),
  onLine: dart.finalFieldType(core.bool)
}));
dart.defineExtensionAccessors(html$.NavigatorOnLine, ['onLine']);
html$.NavigatorUserMediaError = class NavigatorUserMediaError extends _interceptors.Interceptor {
  get [$constraintName]() {
    return this.constraintName;
  }
  get [$message]() {
    return this.message;
  }
  get [$name]() {
    return this.name;
  }
};
dart.addTypeTests(html$.NavigatorUserMediaError);
const constraintName = Symbol("NavigatorUserMediaError.constraintName");
const message$23 = Symbol("NavigatorUserMediaError.message");
const name$24 = Symbol("NavigatorUserMediaError.name");
dart.setFieldSignature(html$.NavigatorUserMediaError, () => ({
  __proto__: dart.getFields(html$.NavigatorUserMediaError.__proto__),
  [$constraintName]: dart.finalFieldType(core.String),
  [$message]: dart.finalFieldType(core.String),
  [$name]: dart.finalFieldType(core.String)
}));
dart.registerExtension("NavigatorUserMediaError", html$.NavigatorUserMediaError);
html$.NetworkInformation = class NetworkInformation extends html$.EventTarget {
  get [$downlink]() {
    return this.downlink;
  }
  get [$downlinkMax]() {
    return this.downlinkMax;
  }
  get [$effectiveType]() {
    return this.effectiveType;
  }
  get [$rtt]() {
    return this.rtt;
  }
  get [$type]() {
    return this.type;
  }
  get [$onChange]() {
    return html$.NetworkInformation.changeEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.NetworkInformation);
const downlink = Symbol("NetworkInformation.downlink");
const downlinkMax = Symbol("NetworkInformation.downlinkMax");
const effectiveType = Symbol("NetworkInformation.effectiveType");
const rtt = Symbol("NetworkInformation.rtt");
const type$20 = Symbol("NetworkInformation.type");
dart.setGetterSignature(html$.NetworkInformation, () => ({
  __proto__: dart.getGetters(html$.NetworkInformation.__proto__),
  [$onChange]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.NetworkInformation, () => ({
  __proto__: dart.getFields(html$.NetworkInformation.__proto__),
  [$downlink]: dart.finalFieldType(core.num),
  [$downlinkMax]: dart.finalFieldType(core.num),
  [$effectiveType]: dart.finalFieldType(core.String),
  [$rtt]: dart.finalFieldType(core.int),
  [$type]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.NetworkInformation, {
  /*html$.NetworkInformation.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  }
});
dart.registerExtension("NetworkInformation", html$.NetworkInformation);
html$._ChildNodeListLazy = class _ChildNodeListLazy extends collection.ListBase$(html$.Node) {
  get first() {
    let result = this[_this].firstChild;
    if (result == null) dart.throw(new core.StateError.new("No elements"));
    return result;
  }
  set first(value) {
    super.first = value;
  }
  get last() {
    let result = this[_this].lastChild;
    if (result == null) dart.throw(new core.StateError.new("No elements"));
    return result;
  }
  set last(value) {
    super.last = value;
  }
  get single() {
    let l = this.length;
    if (l === 0) dart.throw(new core.StateError.new("No elements"));
    if (dart.notNull(l) > 1) dart.throw(new core.StateError.new("More than one element"));
    return this[_this].firstChild;
  }
  add(value) {
    html$.Node._check(value);
    this[_this][$append](value);
  }
  addAll(iterable) {
    IterableOfNode()._check(iterable);
    if (html$._ChildNodeListLazy.is(iterable)) {
      let otherList = iterable;
      if (!(otherList[_this] == this[_this])) {
        for (let i = 0, len = otherList.length; i < dart.notNull(len); ++i) {
          this[_this][$append](otherList[_this].firstChild);
        }
      }
      return;
    }
    for (let node of iterable) {
      this[_this][$append](node);
    }
  }
  insert(index, node) {
    html$.Node._check(node);
    if (dart.notNull(index) < 0 || dart.notNull(index) > dart.notNull(this.length)) {
      dart.throw(new core.RangeError.range(index, 0, this.length));
    }
    if (index == this.length) {
      this[_this][$append](node);
    } else {
      this[_this].insertBefore(node, this._get(index));
    }
  }
  insertAll(index, iterable) {
    IterableOfNode()._check(iterable);
    if (index == this.length) {
      this.addAll(iterable);
    } else {
      let item = this._get(index);
      this[_this][$insertAllBefore](iterable, item);
    }
  }
  setAll(index, iterable) {
    IterableOfNode()._check(iterable);
    dart.throw(new core.UnsupportedError.new("Cannot setAll on Node list"));
  }
  removeLast() {
    let result = this.last;
    if (result != null) {
      this[_this][_removeChild](result);
    }
    return result;
  }
  removeAt(index) {
    let result = this._get(index);
    if (result != null) {
      this[_this][_removeChild](result);
    }
    return result;
  }
  remove(object) {
    if (!html$.Node.is(object)) return false;
    let node = html$.Node._check(object);
    if (!(this[_this] == node.parentNode)) return false;
    this[_this][_removeChild](node);
    return true;
  }
  [_filter$0](test, removeMatching) {
    let child = this[_this].firstChild;
    while (child != null) {
      let nextChild = child[$nextNode];
      if (test(child) == removeMatching) {
        this[_this][_removeChild](child);
      }
      child = nextChild;
    }
  }
  removeWhere(test) {
    this[_filter$0](test, true);
  }
  retainWhere(test) {
    this[_filter$0](test, false);
  }
  clear() {
    this[_this][_clearChildren]();
  }
  _set(index, value) {
    html$.Node._check(value);
    this[_this][_replaceChild](value, this._get(index));
    return value;
  }
  get iterator() {
    return this[_this].childNodes[$iterator];
  }
  sort(compare) {
    if (compare === void 0) compare = null;
    dart.throw(new core.UnsupportedError.new("Cannot sort Node list"));
  }
  shuffle(random) {
    if (random === void 0) random = null;
    dart.throw(new core.UnsupportedError.new("Cannot shuffle Node list"));
  }
  setRange(start, end, iterable, skipCount) {
    IterableOfNode()._check(iterable);
    if (skipCount === void 0) skipCount = 0;
    dart.throw(new core.UnsupportedError.new("Cannot setRange on Node list"));
  }
  fillRange(start, end, fill) {
    if (fill === void 0) fill = null;
    html$.Node._check(fill);
    dart.throw(new core.UnsupportedError.new("Cannot fillRange on Node list"));
  }
  removeRange(start, end) {
    dart.throw(new core.UnsupportedError.new("Cannot removeRange on Node list"));
  }
  get length() {
    return this[_this].childNodes[$length];
  }
  set length(value) {
    dart.throw(new core.UnsupportedError.new("Cannot set length on immutable List."));
  }
  _get(index) {
    return this[_this].childNodes[$_get](index);
  }
  get rawList() {
    return this[_this].childNodes;
  }
};
(html$._ChildNodeListLazy.new = function(this$) {
  this[_this] = this$;
}).prototype = html$._ChildNodeListLazy.prototype;
dart.addTypeTests(html$._ChildNodeListLazy);
html$._ChildNodeListLazy[dart.implements] = () => [html_common.NodeListWrapper];
dart.setMethodSignature(html$._ChildNodeListLazy, () => ({
  __proto__: dart.getMethods(html$._ChildNodeListLazy.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  [$add]: dart.fnType(dart.void, [core.Object]),
  addAll: dart.fnType(dart.void, [core.Object]),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  insert: dart.fnType(dart.void, [core.int, core.Object]),
  [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
  insertAll: dart.fnType(dart.void, [core.int, core.Object]),
  [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
  setAll: dart.fnType(dart.void, [core.int, core.Object]),
  [$setAll]: dart.fnType(dart.void, [core.int, core.Object]),
  removeLast: dart.fnType(html$.Node, []),
  [$removeLast]: dart.fnType(html$.Node, []),
  removeAt: dart.fnType(html$.Node, [core.int]),
  [$removeAt]: dart.fnType(html$.Node, [core.int]),
  remove: dart.fnType(core.bool, [core.Object]),
  [$remove]: dart.fnType(core.bool, [core.Object]),
  [_filter$0]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Node]), core.bool]),
  removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Node])]),
  [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Node])]),
  retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Node])]),
  [$retainWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [html$.Node])]),
  clear: dart.fnType(dart.void, []),
  [$clear]: dart.fnType(dart.void, []),
  _set: dart.fnType(dart.void, [core.int, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Node, html$.Node])]),
  [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Node, html$.Node])]),
  shuffle: dart.fnType(dart.void, [], [math.Random]),
  [$shuffle]: dart.fnType(dart.void, [], [math.Random]),
  setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
  [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
  fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
  [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
  removeRange: dart.fnType(dart.void, [core.int, core.int]),
  [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
  _get: dart.fnType(html$.Node, [core.int]),
  [$_get]: dart.fnType(html$.Node, [core.int])
}));
dart.setGetterSignature(html$._ChildNodeListLazy, () => ({
  __proto__: dart.getGetters(html$._ChildNodeListLazy.__proto__),
  first: html$.Node,
  [$first]: html$.Node,
  last: html$.Node,
  [$last]: html$.Node,
  single: html$.Node,
  [$single]: html$.Node,
  iterator: core.Iterator$(html$.Node),
  [$iterator]: core.Iterator$(html$.Node),
  length: core.int,
  [$length]: core.int,
  rawList: core.List$(html$.Node)
}));
dart.setSetterSignature(html$._ChildNodeListLazy, () => ({
  __proto__: dart.getSetters(html$._ChildNodeListLazy.__proto__),
  length: core.int,
  [$length]: core.int
}));
dart.setFieldSignature(html$._ChildNodeListLazy, () => ({
  __proto__: dart.getFields(html$._ChildNodeListLazy.__proto__),
  [_this]: dart.finalFieldType(html$.Node)
}));
dart.defineExtensionMethods(html$._ChildNodeListLazy, [
  'add',
  'addAll',
  'insert',
  'insertAll',
  'setAll',
  'removeLast',
  'removeAt',
  'remove',
  'removeWhere',
  'retainWhere',
  'clear',
  '_set',
  'sort',
  'shuffle',
  'setRange',
  'fillRange',
  'removeRange',
  '_get'
]);
dart.defineExtensionAccessors(html$._ChildNodeListLazy, [
  'first',
  'last',
  'single',
  'iterator',
  'length'
]);
html$.NodeFilter = class NodeFilter extends _interceptors.Interceptor {};
dart.addTypeTests(html$.NodeFilter);
dart.defineLazy(html$.NodeFilter, {
  /*html$.NodeFilter.FILTER_ACCEPT*/get FILTER_ACCEPT() {
    return 1;
  },
  /*html$.NodeFilter.FILTER_REJECT*/get FILTER_REJECT() {
    return 2;
  },
  /*html$.NodeFilter.FILTER_SKIP*/get FILTER_SKIP() {
    return 3;
  },
  /*html$.NodeFilter.SHOW_ALL*/get SHOW_ALL() {
    return 4294967295;
  },
  /*html$.NodeFilter.SHOW_COMMENT*/get SHOW_COMMENT() {
    return 128;
  },
  /*html$.NodeFilter.SHOW_DOCUMENT*/get SHOW_DOCUMENT() {
    return 256;
  },
  /*html$.NodeFilter.SHOW_DOCUMENT_FRAGMENT*/get SHOW_DOCUMENT_FRAGMENT() {
    return 1024;
  },
  /*html$.NodeFilter.SHOW_DOCUMENT_TYPE*/get SHOW_DOCUMENT_TYPE() {
    return 512;
  },
  /*html$.NodeFilter.SHOW_ELEMENT*/get SHOW_ELEMENT() {
    return 1;
  },
  /*html$.NodeFilter.SHOW_PROCESSING_INSTRUCTION*/get SHOW_PROCESSING_INSTRUCTION() {
    return 64;
  },
  /*html$.NodeFilter.SHOW_TEXT*/get SHOW_TEXT() {
    return 4;
  }
});
dart.registerExtension("NodeFilter", html$.NodeFilter);
html$.NodeIterator = class NodeIterator extends _interceptors.Interceptor {
  static new(root, whatToShow) {
    return html$.document[_createNodeIterator](root, whatToShow, null);
  }
  get [$pointerBeforeReferenceNode]() {
    return this.pointerBeforeReferenceNode;
  }
  get [$referenceNode]() {
    return this.referenceNode;
  }
  get [$root]() {
    return this.root;
  }
  get [$whatToShow]() {
    return this.whatToShow;
  }
  [$detach](...args) {
    return this.detach.apply(this, args);
  }
  [$nextNode](...args) {
    return this.nextNode.apply(this, args);
  }
  [$previousNode](...args) {
    return this.previousNode.apply(this, args);
  }
};
dart.addTypeTests(html$.NodeIterator);
const pointerBeforeReferenceNode = Symbol("NodeIterator.pointerBeforeReferenceNode");
const referenceNode = Symbol("NodeIterator.referenceNode");
const root$0 = Symbol("NodeIterator.root");
const whatToShow = Symbol("NodeIterator.whatToShow");
dart.setMethodSignature(html$.NodeIterator, () => ({
  __proto__: dart.getMethods(html$.NodeIterator.__proto__),
  [$detach]: dart.fnType(dart.void, []),
  [$nextNode]: dart.fnType(html$.Node, []),
  [$previousNode]: dart.fnType(html$.Node, [])
}));
dart.setFieldSignature(html$.NodeIterator, () => ({
  __proto__: dart.getFields(html$.NodeIterator.__proto__),
  [$pointerBeforeReferenceNode]: dart.finalFieldType(core.bool),
  [$referenceNode]: dart.finalFieldType(html$.Node),
  [$root]: dart.finalFieldType(html$.Node),
  [$whatToShow]: dart.finalFieldType(core.int)
}));
dart.registerExtension("NodeIterator", html$.NodeIterator);
const Interceptor_ListMixin$$3 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$3.new = function() {
  Interceptor_ListMixin$$3.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$3.prototype;
dart.applyMixin(Interceptor_ListMixin$$3, collection.ListMixin$(html$.Node));
const Interceptor_ImmutableListMixin$$3 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$3 {};
(Interceptor_ImmutableListMixin$$3.new = function() {
  Interceptor_ImmutableListMixin$$3.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$3.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$3, html$.ImmutableListMixin$(html$.Node));
html$.NodeList = class NodeList extends Interceptor_ImmutableListMixin$$3 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.Node._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [_item](...args) {
    return this.item.apply(this, args);
  }
};
html$.NodeList.prototype[dart.isList] = true;
dart.addTypeTests(html$.NodeList);
html$.NodeList[dart.implements] = () => [JavaScriptIndexingBehaviorOfNode(), ListOfNode()];
dart.setMethodSignature(html$.NodeList, () => ({
  __proto__: dart.getMethods(html$.NodeList.__proto__),
  [$_get]: dart.fnType(html$.Node, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.Node, [core.int]),
  [_item]: dart.fnType(html$.Node, [core.int])
}));
dart.setGetterSignature(html$.NodeList, () => ({
  __proto__: dart.getGetters(html$.NodeList.__proto__),
  [$length]: core.int,
  [$first]: html$.Node,
  [$last]: html$.Node,
  [$single]: html$.Node
}));
dart.setSetterSignature(html$.NodeList, () => ({
  __proto__: dart.getSetters(html$.NodeList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("NodeList", html$.NodeList);
dart.registerExtension("RadioNodeList", html$.NodeList);
html$.NonDocumentTypeChildNode = class NonDocumentTypeChildNode extends _interceptors.Interceptor {
  get [$nextElementSibling]() {
    return this.nextElementSibling;
  }
  get [$previousElementSibling]() {
    return this.previousElementSibling;
  }
};
dart.addTypeTests(html$.NonDocumentTypeChildNode);
const nextElementSibling$0 = Symbol("NonDocumentTypeChildNode.nextElementSibling");
const previousElementSibling$0 = Symbol("NonDocumentTypeChildNode.previousElementSibling");
dart.setFieldSignature(html$.NonDocumentTypeChildNode, () => ({
  __proto__: dart.getFields(html$.NonDocumentTypeChildNode.__proto__),
  [$nextElementSibling]: dart.finalFieldType(html$.Element),
  [$previousElementSibling]: dart.finalFieldType(html$.Element)
}));
dart.registerExtension("NonDocumentTypeChildNode", html$.NonDocumentTypeChildNode);
html$.NonElementParentNode = class NonElementParentNode extends _interceptors.Interceptor {
  [$getElementById](...args) {
    return this.getElementById.apply(this, args);
  }
};
dart.addTypeTests(html$.NonElementParentNode);
dart.setMethodSignature(html$.NonElementParentNode, () => ({
  __proto__: dart.getMethods(html$.NonElementParentNode.__proto__),
  [$getElementById]: dart.fnType(html$.Element, [core.String])
}));
dart.registerExtension("NonElementParentNode", html$.NonElementParentNode);
html$.NoncedElement = class NoncedElement extends _interceptors.Interceptor {
  get [$nonce]() {
    return this.nonce;
  }
  set [$nonce](value) {
    this.nonce = value;
  }
};
dart.addTypeTests(html$.NoncedElement);
const nonce$ = Symbol("NoncedElement.nonce");
dart.setFieldSignature(html$.NoncedElement, () => ({
  __proto__: dart.getFields(html$.NoncedElement.__proto__),
  [$nonce]: dart.fieldType(core.String)
}));
dart.registerExtension("NoncedElement", html$.NoncedElement);
html$.Notification = class Notification$ extends html$.EventTarget {
  static new(title, opts) {
    let dir = opts && 'dir' in opts ? opts.dir : null;
    let body = opts && 'body' in opts ? opts.body : null;
    let lang = opts && 'lang' in opts ? opts.lang : null;
    let tag = opts && 'tag' in opts ? opts.tag : null;
    let icon = opts && 'icon' in opts ? opts.icon : null;
    let parsedOptions = new _js_helper.LinkedMap.new();
    if (dir != null) parsedOptions[$_set]("dir", dir);
    if (body != null) parsedOptions[$_set]("body", body);
    if (lang != null) parsedOptions[$_set]("lang", lang);
    if (tag != null) parsedOptions[$_set]("tag", tag);
    if (icon != null) parsedOptions[$_set]("icon", icon);
    return html$.Notification._factoryNotification(title, parsedOptions);
  }
  static _factoryNotification(title, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return html$.Notification._create_1(title, options_1);
    }
    return html$.Notification._create_2(title);
  }
  static _create_1(title, options) {
    return new Notification(title, options);
  }
  static _create_2(title) {
    return new Notification(title);
  }
  static get supported() {
    return !!window.Notification;
  }
  get [$actions]() {
    return this.actions;
  }
  get [$badge]() {
    return this.badge;
  }
  get [$body]() {
    return this.body;
  }
  get [$data]() {
    return this.data;
  }
  get [$dir]() {
    return this.dir;
  }
  get [$icon]() {
    return this.icon;
  }
  get [$image]() {
    return this.image;
  }
  get [$lang]() {
    return this.lang;
  }
  get [$renotify]() {
    return this.renotify;
  }
  get [$requireInteraction]() {
    return this.requireInteraction;
  }
  get [$silent]() {
    return this.silent;
  }
  get [$tag]() {
    return this.tag;
  }
  get [$timestamp]() {
    return this.timestamp;
  }
  get [$title]() {
    return this.title;
  }
  get [$vibrate]() {
    return this.vibrate;
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  static requestPermission() {
    let completer = CompleterOfString().new();
    dart.global.Notification.requestPermission(dart.fn(value => {
      completer.complete(value);
    }, StringToNull()));
    return completer.future;
  }
  get [$onClick]() {
    return html$.Notification.clickEvent.forTarget(this);
  }
  get [$onClose]() {
    return html$.Notification.closeEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.Notification.errorEvent.forTarget(this);
  }
  get [$onShow]() {
    return html$.Notification.showEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.Notification);
const actions = Symbol("Notification.actions");
const badge = Symbol("Notification.badge");
const body$ = Symbol("Notification.body");
const data$5 = Symbol("Notification.data");
const dir$ = Symbol("Notification.dir");
const icon = Symbol("Notification.icon");
const image = Symbol("Notification.image");
const lang$ = Symbol("Notification.lang");
const renotify = Symbol("Notification.renotify");
const requireInteraction = Symbol("Notification.requireInteraction");
const silent = Symbol("Notification.silent");
const tag = Symbol("Notification.tag");
const timestamp$1 = Symbol("Notification.timestamp");
const title$2 = Symbol("Notification.title");
const vibrate = Symbol("Notification.vibrate");
dart.setMethodSignature(html$.Notification, () => ({
  __proto__: dart.getMethods(html$.Notification.__proto__),
  [$close]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.Notification, () => ({
  __proto__: dart.getGetters(html$.Notification.__proto__),
  [$onClick]: async.Stream$(html$.Event),
  [$onClose]: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.Event),
  [$onShow]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.Notification, () => ({
  __proto__: dart.getFields(html$.Notification.__proto__),
  [$actions]: dart.finalFieldType(core.List),
  [$badge]: dart.finalFieldType(core.String),
  [$body]: dart.finalFieldType(core.String),
  [$data]: dart.finalFieldType(core.Object),
  [$dir]: dart.finalFieldType(core.String),
  [$icon]: dart.finalFieldType(core.String),
  [$image]: dart.finalFieldType(core.String),
  [$lang]: dart.finalFieldType(core.String),
  [$renotify]: dart.finalFieldType(core.bool),
  [$requireInteraction]: dart.finalFieldType(core.bool),
  [$silent]: dart.finalFieldType(core.bool),
  [$tag]: dart.finalFieldType(core.String),
  [$timestamp]: dart.finalFieldType(core.int),
  [$title]: dart.finalFieldType(core.String),
  [$vibrate]: dart.finalFieldType(ListOfint())
}));
dart.defineLazy(html$.Notification, {
  /*html$.Notification.clickEvent*/get clickEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("click"));
  },
  /*html$.Notification.closeEvent*/get closeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("close"));
  },
  /*html$.Notification.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.Notification.showEvent*/get showEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("show"));
  },
  /*html$.Notification.maxActions*/get maxActions() {
    return null;
  },
  /*html$.Notification.permission*/get permission() {
    return null;
  }
});
dart.registerExtension("Notification", html$.Notification);
html$.NotificationEvent = class NotificationEvent$ extends html$.ExtendableEvent {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.NotificationEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new NotificationEvent(type, eventInitDict);
  }
  get [$action]() {
    return this.action;
  }
  get [$notification]() {
    return this.notification;
  }
  get [$reply]() {
    return this.reply;
  }
};
dart.addTypeTests(html$.NotificationEvent);
const action$ = Symbol("NotificationEvent.action");
const notification = Symbol("NotificationEvent.notification");
const reply = Symbol("NotificationEvent.reply");
dart.setFieldSignature(html$.NotificationEvent, () => ({
  __proto__: dart.getFields(html$.NotificationEvent.__proto__),
  [$action]: dart.finalFieldType(core.String),
  [$notification]: dart.finalFieldType(html$.Notification),
  [$reply]: dart.finalFieldType(core.String)
}));
dart.registerExtension("NotificationEvent", html$.NotificationEvent);
html$.OListElement = class OListElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("ol");
  }
  get [$reversed]() {
    return this.reversed;
  }
  set [$reversed](value) {
    this.reversed = value;
  }
  get [$start]() {
    return this.start;
  }
  set [$start](value) {
    this.start = value;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
};
(html$.OListElement.created = function() {
  this[reversed] = null;
  this[start$] = null;
  this[type$21] = null;
  html$.OListElement.__proto__.created.call(this);
}).prototype = html$.OListElement.prototype;
dart.addTypeTests(html$.OListElement);
const reversed = Symbol("OListElement.reversed");
const start$ = Symbol("OListElement.start");
const type$21 = Symbol("OListElement.type");
dart.setFieldSignature(html$.OListElement, () => ({
  __proto__: dart.getFields(html$.OListElement.__proto__),
  [$reversed]: dart.fieldType(core.bool),
  [$start]: dart.fieldType(core.int),
  [$type]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLOListElement", html$.OListElement);
html$.ObjectElement = class ObjectElement extends html$.HtmlElement {
  static new() {
    return html$.ObjectElement._check(html$.document[$createElement]("object"));
  }
  static get supported() {
    return html$.Element.isTagSupported("object");
  }
  get [$contentWindow]() {
    return html$._convertNativeToDart_Window(this[_get_contentWindow]);
  }
  get [_get_contentWindow]() {
    return this.contentWindow;
  }
  get [$data]() {
    return this.data;
  }
  set [$data](value) {
    this.data = value;
  }
  get [$form]() {
    return this.form;
  }
  get [$height]() {
    return this.height;
  }
  set [$height](value) {
    this.height = value;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
  get [$useMap]() {
    return this.useMap;
  }
  set [$useMap](value) {
    this.useMap = value;
  }
  get [$validationMessage]() {
    return this.validationMessage;
  }
  get [$validity]() {
    return this.validity;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
  get [$willValidate]() {
    return this.willValidate;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [$checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [$reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [$setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
};
(html$.ObjectElement.created = function() {
  this[_get_contentWindow] = null;
  this[data$6] = null;
  this[form$3] = null;
  this[height$6] = null;
  this[name$25] = null;
  this[type$22] = null;
  this[useMap$] = null;
  this[validationMessage$1] = null;
  this[validity$1] = null;
  this[width$6] = null;
  this[willValidate$1] = null;
  html$.ObjectElement.__proto__.created.call(this);
}).prototype = html$.ObjectElement.prototype;
dart.addTypeTests(html$.ObjectElement);
const data$6 = Symbol("ObjectElement.data");
const form$3 = Symbol("ObjectElement.form");
const height$6 = Symbol("ObjectElement.height");
const name$25 = Symbol("ObjectElement.name");
const type$22 = Symbol("ObjectElement.type");
const useMap$ = Symbol("ObjectElement.useMap");
const validationMessage$1 = Symbol("ObjectElement.validationMessage");
const validity$1 = Symbol("ObjectElement.validity");
const width$6 = Symbol("ObjectElement.width");
const willValidate$1 = Symbol("ObjectElement.willValidate");
dart.setMethodSignature(html$.ObjectElement, () => ({
  __proto__: dart.getMethods(html$.ObjectElement.__proto__),
  [__getter__]: dart.fnType(html$.Node, [core.String]),
  [__setter__]: dart.fnType(dart.void, [core.String, html$.Node]),
  [$checkValidity]: dart.fnType(core.bool, []),
  [$reportValidity]: dart.fnType(core.bool, []),
  [$setCustomValidity]: dart.fnType(dart.void, [core.String])
}));
dart.setGetterSignature(html$.ObjectElement, () => ({
  __proto__: dart.getGetters(html$.ObjectElement.__proto__),
  [$contentWindow]: html$.WindowBase
}));
dart.setFieldSignature(html$.ObjectElement, () => ({
  __proto__: dart.getFields(html$.ObjectElement.__proto__),
  [_get_contentWindow]: dart.finalFieldType(dart.dynamic),
  [$data]: dart.fieldType(core.String),
  [$form]: dart.finalFieldType(html$.FormElement),
  [$height]: dart.fieldType(core.String),
  [$name]: dart.fieldType(core.String),
  [$type]: dart.fieldType(core.String),
  [$useMap]: dart.fieldType(core.String),
  [$validationMessage]: dart.finalFieldType(core.String),
  [$validity]: dart.finalFieldType(html$.ValidityState),
  [$width]: dart.fieldType(core.String),
  [$willValidate]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("HTMLObjectElement", html$.ObjectElement);
html$.OffscreenCanvas = class OffscreenCanvas$ extends html$.EventTarget {
  static new(width, height) {
    return html$.OffscreenCanvas._create_1(width, height);
  }
  static _create_1(width, height) {
    return new OffscreenCanvas(width, height);
  }
  get [$height]() {
    return this.height;
  }
  set [$height](value) {
    this.height = value;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
  [$convertToBlob](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(html$.Blob, this.convertToBlob(options_dict));
  }
  [$getContext](contextType, attributes) {
    if (attributes === void 0) attributes = null;
    if (attributes != null) {
      let attributes_1 = html_common.convertDartToNative_Dictionary(attributes);
      return this[_getContext_1](contextType, attributes_1);
    }
    return this[_getContext_2](contextType);
  }
  [_getContext_1](...args) {
    return this.getContext.apply(this, args);
  }
  [_getContext_2](...args) {
    return this.getContext.apply(this, args);
  }
  [$transferToImageBitmap](...args) {
    return this.transferToImageBitmap.apply(this, args);
  }
};
dart.addTypeTests(html$.OffscreenCanvas);
const height$7 = Symbol("OffscreenCanvas.height");
const width$7 = Symbol("OffscreenCanvas.width");
dart.setMethodSignature(html$.OffscreenCanvas, () => ({
  __proto__: dart.getMethods(html$.OffscreenCanvas.__proto__),
  [$convertToBlob]: dart.fnType(async.Future$(html$.Blob), [], [core.Map]),
  [$getContext]: dart.fnType(core.Object, [core.String], [core.Map]),
  [_getContext_1]: dart.fnType(core.Object, [dart.dynamic, dart.dynamic]),
  [_getContext_2]: dart.fnType(core.Object, [dart.dynamic]),
  [$transferToImageBitmap]: dart.fnType(html$.ImageBitmap, [])
}));
dart.setFieldSignature(html$.OffscreenCanvas, () => ({
  __proto__: dart.getFields(html$.OffscreenCanvas.__proto__),
  [$height]: dart.fieldType(core.int),
  [$width]: dart.fieldType(core.int)
}));
dart.registerExtension("OffscreenCanvas", html$.OffscreenCanvas);
html$.OffscreenCanvasRenderingContext2D = class OffscreenCanvasRenderingContext2D extends _interceptors.Interceptor {
  get [$canvas]() {
    return this.canvas;
  }
  get [$direction]() {
    return this.direction;
  }
  set [$direction](value) {
    this.direction = value;
  }
  get [$fillStyle]() {
    return this.fillStyle;
  }
  set [$fillStyle](value) {
    this.fillStyle = value;
  }
  get [$filter]() {
    return this.filter;
  }
  set [$filter](value) {
    this.filter = value;
  }
  get [$font]() {
    return this.font;
  }
  set [$font](value) {
    this.font = value;
  }
  get [$globalAlpha]() {
    return this.globalAlpha;
  }
  set [$globalAlpha](value) {
    this.globalAlpha = value;
  }
  get [$globalCompositeOperation]() {
    return this.globalCompositeOperation;
  }
  set [$globalCompositeOperation](value) {
    this.globalCompositeOperation = value;
  }
  get [$imageSmoothingEnabled]() {
    return this.imageSmoothingEnabled;
  }
  set [$imageSmoothingEnabled](value) {
    this.imageSmoothingEnabled = value;
  }
  get [$imageSmoothingQuality]() {
    return this.imageSmoothingQuality;
  }
  set [$imageSmoothingQuality](value) {
    this.imageSmoothingQuality = value;
  }
  get [$lineCap]() {
    return this.lineCap;
  }
  set [$lineCap](value) {
    this.lineCap = value;
  }
  get [$lineDashOffset]() {
    return this.lineDashOffset;
  }
  set [$lineDashOffset](value) {
    this.lineDashOffset = value;
  }
  get [$lineJoin]() {
    return this.lineJoin;
  }
  set [$lineJoin](value) {
    this.lineJoin = value;
  }
  get [$lineWidth]() {
    return this.lineWidth;
  }
  set [$lineWidth](value) {
    this.lineWidth = value;
  }
  get [$miterLimit]() {
    return this.miterLimit;
  }
  set [$miterLimit](value) {
    this.miterLimit = value;
  }
  get [$shadowBlur]() {
    return this.shadowBlur;
  }
  set [$shadowBlur](value) {
    this.shadowBlur = value;
  }
  get [$shadowColor]() {
    return this.shadowColor;
  }
  set [$shadowColor](value) {
    this.shadowColor = value;
  }
  get [$shadowOffsetX]() {
    return this.shadowOffsetX;
  }
  set [$shadowOffsetX](value) {
    this.shadowOffsetX = value;
  }
  get [$shadowOffsetY]() {
    return this.shadowOffsetY;
  }
  set [$shadowOffsetY](value) {
    this.shadowOffsetY = value;
  }
  get [$strokeStyle]() {
    return this.strokeStyle;
  }
  set [$strokeStyle](value) {
    this.strokeStyle = value;
  }
  get [$textAlign]() {
    return this.textAlign;
  }
  set [$textAlign](value) {
    this.textAlign = value;
  }
  get [$textBaseline]() {
    return this.textBaseline;
  }
  set [$textBaseline](value) {
    this.textBaseline = value;
  }
  [$beginPath](...args) {
    return this.beginPath.apply(this, args);
  }
  [$clearRect](...args) {
    return this.clearRect.apply(this, args);
  }
  [$clip](...args) {
    return this.clip.apply(this, args);
  }
  [$commit]() {
    return html$.promiseToFuture(dart.dynamic, this.commit());
  }
  [$createImageData](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_OR_sh, imageDataColorSettings) {
    if (sh_OR_sw === void 0) sh_OR_sw = null;
    if (imageDataColorSettings_OR_sh === void 0) imageDataColorSettings_OR_sh = null;
    if (imageDataColorSettings === void 0) imageDataColorSettings = null;
    if (html$.ImageData.is(data_OR_imagedata_OR_sw) && sh_OR_sw == null && imageDataColorSettings_OR_sh == null && imageDataColorSettings == null) {
      let imagedata_1 = html_common.convertDartToNative_ImageData(data_OR_imagedata_OR_sw);
      return html_common.convertNativeToDart_ImageData(this[_createImageData_1](imagedata_1));
    }
    if (sh_OR_sw != null && core.int.is(data_OR_imagedata_OR_sw) && imageDataColorSettings_OR_sh == null && imageDataColorSettings == null) {
      return html_common.convertNativeToDart_ImageData(this[_createImageData_2](data_OR_imagedata_OR_sw, sh_OR_sw));
    }
    if (core.Map.is(imageDataColorSettings_OR_sh) && sh_OR_sw != null && core.int.is(data_OR_imagedata_OR_sw) && imageDataColorSettings == null) {
      let imageDataColorSettings_1 = html_common.convertDartToNative_Dictionary(imageDataColorSettings_OR_sh);
      return html_common.convertNativeToDart_ImageData(this[_createImageData_3](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_1));
    }
    if (imageDataColorSettings != null && core.int.is(imageDataColorSettings_OR_sh) && sh_OR_sw != null && data_OR_imagedata_OR_sw != null) {
      let imageDataColorSettings_1 = html_common.convertDartToNative_Dictionary(imageDataColorSettings);
      return html_common.convertNativeToDart_ImageData(this[_createImageData_4](data_OR_imagedata_OR_sw, sh_OR_sw, imageDataColorSettings_OR_sh, imageDataColorSettings_1));
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_createImageData_1](...args) {
    return this.createImageData.apply(this, args);
  }
  [_createImageData_2](...args) {
    return this.createImageData.apply(this, args);
  }
  [_createImageData_3](...args) {
    return this.createImageData.apply(this, args);
  }
  [_createImageData_4](...args) {
    return this.createImageData.apply(this, args);
  }
  [$createLinearGradient](...args) {
    return this.createLinearGradient.apply(this, args);
  }
  [$createPattern](...args) {
    return this.createPattern.apply(this, args);
  }
  [$createRadialGradient](...args) {
    return this.createRadialGradient.apply(this, args);
  }
  [$drawImage](...args) {
    return this.drawImage.apply(this, args);
  }
  [$fill](...args) {
    return this.fill.apply(this, args);
  }
  [$fillRect](...args) {
    return this.fillRect.apply(this, args);
  }
  [$fillText](...args) {
    return this.fillText.apply(this, args);
  }
  [$getImageData](sx, sy, sw, sh) {
    return html_common.convertNativeToDart_ImageData(this[_getImageData_1](sx, sy, sw, sh));
  }
  [_getImageData_1](...args) {
    return this.getImageData.apply(this, args);
  }
  [$getLineDash](...args) {
    return this.getLineDash.apply(this, args);
  }
  [$isPointInPath](...args) {
    return this.isPointInPath.apply(this, args);
  }
  [$isPointInStroke](...args) {
    return this.isPointInStroke.apply(this, args);
  }
  [$measureText](...args) {
    return this.measureText.apply(this, args);
  }
  [$putImageData](imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {
    if (dirtyX === void 0) dirtyX = null;
    if (dirtyY === void 0) dirtyY = null;
    if (dirtyWidth === void 0) dirtyWidth = null;
    if (dirtyHeight === void 0) dirtyHeight = null;
    if (dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) {
      let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata);
      this[_putImageData_1](imagedata_1, dx, dy);
      return;
    }
    if (dirtyHeight != null && dirtyWidth != null && dirtyY != null && dirtyX != null) {
      let imagedata_1 = html_common.convertDartToNative_ImageData(imagedata);
      this[_putImageData_2](imagedata_1, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_putImageData_1](...args) {
    return this.putImageData.apply(this, args);
  }
  [_putImageData_2](...args) {
    return this.putImageData.apply(this, args);
  }
  [$resetTransform](...args) {
    return this.resetTransform.apply(this, args);
  }
  [$restore](...args) {
    return this.restore.apply(this, args);
  }
  [$rotate](...args) {
    return this.rotate.apply(this, args);
  }
  [$save](...args) {
    return this.save.apply(this, args);
  }
  [$scale](...args) {
    return this.scale.apply(this, args);
  }
  [$setLineDash](...args) {
    return this.setLineDash.apply(this, args);
  }
  [$setTransform](...args) {
    return this.setTransform.apply(this, args);
  }
  [$stroke](...args) {
    return this.stroke.apply(this, args);
  }
  [$strokeRect](...args) {
    return this.strokeRect.apply(this, args);
  }
  [$strokeText](...args) {
    return this.strokeText.apply(this, args);
  }
  [$transform](...args) {
    return this.transform.apply(this, args);
  }
  [$translate](...args) {
    return this.translate.apply(this, args);
  }
  [$arc](...args) {
    return this.arc.apply(this, args);
  }
  [$arcTo](...args) {
    return this.arcTo.apply(this, args);
  }
  [$bezierCurveTo](...args) {
    return this.bezierCurveTo.apply(this, args);
  }
  [$closePath](...args) {
    return this.closePath.apply(this, args);
  }
  [$ellipse](...args) {
    return this.ellipse.apply(this, args);
  }
  [$lineTo](...args) {
    return this.lineTo.apply(this, args);
  }
  [$moveTo](...args) {
    return this.moveTo.apply(this, args);
  }
  [$quadraticCurveTo](...args) {
    return this.quadraticCurveTo.apply(this, args);
  }
  [$rect](...args) {
    return this.rect.apply(this, args);
  }
};
dart.addTypeTests(html$.OffscreenCanvasRenderingContext2D);
const canvas$1 = Symbol("OffscreenCanvasRenderingContext2D.canvas");
const direction$1 = Symbol("OffscreenCanvasRenderingContext2D.direction");
const fillStyle$ = Symbol("OffscreenCanvasRenderingContext2D.fillStyle");
const filter$ = Symbol("OffscreenCanvasRenderingContext2D.filter");
const font$ = Symbol("OffscreenCanvasRenderingContext2D.font");
const globalAlpha$ = Symbol("OffscreenCanvasRenderingContext2D.globalAlpha");
const globalCompositeOperation$ = Symbol("OffscreenCanvasRenderingContext2D.globalCompositeOperation");
const imageSmoothingEnabled$ = Symbol("OffscreenCanvasRenderingContext2D.imageSmoothingEnabled");
const imageSmoothingQuality$ = Symbol("OffscreenCanvasRenderingContext2D.imageSmoothingQuality");
const lineCap$ = Symbol("OffscreenCanvasRenderingContext2D.lineCap");
const lineDashOffset = Symbol("OffscreenCanvasRenderingContext2D.lineDashOffset");
const lineJoin$ = Symbol("OffscreenCanvasRenderingContext2D.lineJoin");
const lineWidth$ = Symbol("OffscreenCanvasRenderingContext2D.lineWidth");
const miterLimit$ = Symbol("OffscreenCanvasRenderingContext2D.miterLimit");
const shadowBlur$ = Symbol("OffscreenCanvasRenderingContext2D.shadowBlur");
const shadowColor$ = Symbol("OffscreenCanvasRenderingContext2D.shadowColor");
const shadowOffsetX$ = Symbol("OffscreenCanvasRenderingContext2D.shadowOffsetX");
const shadowOffsetY$ = Symbol("OffscreenCanvasRenderingContext2D.shadowOffsetY");
const strokeStyle$ = Symbol("OffscreenCanvasRenderingContext2D.strokeStyle");
const textAlign$ = Symbol("OffscreenCanvasRenderingContext2D.textAlign");
const textBaseline$ = Symbol("OffscreenCanvasRenderingContext2D.textBaseline");
html$.OffscreenCanvasRenderingContext2D[dart.implements] = () => [html$._CanvasPath];
dart.setMethodSignature(html$.OffscreenCanvasRenderingContext2D, () => ({
  __proto__: dart.getMethods(html$.OffscreenCanvasRenderingContext2D.__proto__),
  [$beginPath]: dart.fnType(dart.void, []),
  [$clearRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$clip]: dart.fnType(dart.void, [], [html$.Path2D]),
  [$commit]: dart.fnType(async.Future, []),
  [$createImageData]: dart.fnType(html$.ImageData, [dart.dynamic], [core.int, dart.dynamic, core.Map]),
  [_createImageData_1]: dart.fnType(dart.dynamic, [dart.dynamic]),
  [_createImageData_2]: dart.fnType(dart.dynamic, [core.int, dart.dynamic]),
  [_createImageData_3]: dart.fnType(dart.dynamic, [core.int, dart.dynamic, dart.dynamic]),
  [_createImageData_4]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic, core.int, dart.dynamic]),
  [$createLinearGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num]),
  [$createPattern]: dart.fnType(html$.CanvasPattern, [dart.dynamic, core.String]),
  [$createRadialGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$drawImage]: dart.fnType(dart.void, [dart.dynamic, core.num, core.num], [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$fill]: dart.fnType(dart.void, [], [dart.dynamic, core.String]),
  [$fillRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$fillText]: dart.fnType(dart.void, [core.String, core.num, core.num], [core.num]),
  [$getImageData]: dart.fnType(html$.ImageData, [core.int, core.int, core.int, core.int]),
  [_getImageData_1]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [$getLineDash]: dart.fnType(core.List$(core.num), []),
  [$isPointInPath]: dart.fnType(core.bool, [dart.dynamic, core.num], [dart.dynamic, core.String]),
  [$isPointInStroke]: dart.fnType(core.bool, [dart.dynamic, core.num], [core.num]),
  [$measureText]: dart.fnType(html$.TextMetrics, [core.String]),
  [$putImageData]: dart.fnType(dart.void, [html$.ImageData, core.int, core.int], [core.int, core.int, core.int, core.int]),
  [_putImageData_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
  [_putImageData_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [$resetTransform]: dart.fnType(dart.void, []),
  [$restore]: dart.fnType(dart.void, []),
  [$rotate]: dart.fnType(dart.void, [core.num]),
  [$save]: dart.fnType(dart.void, []),
  [$scale]: dart.fnType(dart.void, [core.num, core.num]),
  [$setLineDash]: dart.fnType(dart.void, [core.List$(core.num)]),
  [$setTransform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$stroke]: dart.fnType(dart.void, [], [html$.Path2D]),
  [$strokeRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$strokeText]: dart.fnType(dart.void, [core.String, core.num, core.num], [core.num]),
  [$transform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$translate]: dart.fnType(dart.void, [core.num, core.num]),
  [$arc]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.bool]),
  [$arcTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num]),
  [$bezierCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$closePath]: dart.fnType(dart.void, []),
  [$ellipse]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.bool]),
  [$lineTo]: dart.fnType(dart.void, [core.num, core.num]),
  [$moveTo]: dart.fnType(dart.void, [core.num, core.num]),
  [$quadraticCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$rect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num])
}));
dart.setFieldSignature(html$.OffscreenCanvasRenderingContext2D, () => ({
  __proto__: dart.getFields(html$.OffscreenCanvasRenderingContext2D.__proto__),
  [$canvas]: dart.finalFieldType(html$.OffscreenCanvas),
  [$direction]: dart.fieldType(core.String),
  [$fillStyle]: dart.fieldType(core.Object),
  [$filter]: dart.fieldType(core.String),
  [$font]: dart.fieldType(core.String),
  [$globalAlpha]: dart.fieldType(core.num),
  [$globalCompositeOperation]: dart.fieldType(core.String),
  [$imageSmoothingEnabled]: dart.fieldType(core.bool),
  [$imageSmoothingQuality]: dart.fieldType(core.String),
  [$lineCap]: dart.fieldType(core.String),
  [$lineDashOffset]: dart.fieldType(core.num),
  [$lineJoin]: dart.fieldType(core.String),
  [$lineWidth]: dart.fieldType(core.num),
  [$miterLimit]: dart.fieldType(core.num),
  [$shadowBlur]: dart.fieldType(core.num),
  [$shadowColor]: dart.fieldType(core.String),
  [$shadowOffsetX]: dart.fieldType(core.num),
  [$shadowOffsetY]: dart.fieldType(core.num),
  [$strokeStyle]: dart.fieldType(core.Object),
  [$textAlign]: dart.fieldType(core.String),
  [$textBaseline]: dart.fieldType(core.String)
}));
dart.registerExtension("OffscreenCanvasRenderingContext2D", html$.OffscreenCanvasRenderingContext2D);
html$.OptGroupElement = class OptGroupElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("optgroup");
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$label]() {
    return this.label;
  }
  set [$label](value) {
    this.label = value;
  }
};
(html$.OptGroupElement.created = function() {
  this[disabled$5] = null;
  this[label$1] = null;
  html$.OptGroupElement.__proto__.created.call(this);
}).prototype = html$.OptGroupElement.prototype;
dart.addTypeTests(html$.OptGroupElement);
const disabled$5 = Symbol("OptGroupElement.disabled");
const label$1 = Symbol("OptGroupElement.label");
dart.setFieldSignature(html$.OptGroupElement, () => ({
  __proto__: dart.getFields(html$.OptGroupElement.__proto__),
  [$disabled]: dart.fieldType(core.bool),
  [$label]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLOptGroupElement", html$.OptGroupElement);
html$.OptionElement = class OptionElement extends html$.HtmlElement {
  static new(opts) {
    let data = opts && 'data' in opts ? opts.data : "";
    let value = opts && 'value' in opts ? opts.value : "";
    let selected = opts && 'selected' in opts ? opts.selected : false;
    return html$.OptionElement.__(data, value, null, selected);
  }
  static __(data, value, defaultSelected, selected) {
    if (data === void 0) data = null;
    if (value === void 0) value = null;
    if (defaultSelected === void 0) defaultSelected = null;
    if (selected === void 0) selected = null;
    if (selected != null) {
      return html$.OptionElement._create_1(data, value, defaultSelected, selected);
    }
    if (defaultSelected != null) {
      return html$.OptionElement._create_2(data, value, defaultSelected);
    }
    if (value != null) {
      return html$.OptionElement._create_3(data, value);
    }
    if (data != null) {
      return html$.OptionElement._create_4(data);
    }
    return html$.OptionElement._create_5();
  }
  static _create_1(data, value, defaultSelected, selected) {
    return new Option(data, value, defaultSelected, selected);
  }
  static _create_2(data, value, defaultSelected) {
    return new Option(data, value, defaultSelected);
  }
  static _create_3(data, value) {
    return new Option(data, value);
  }
  static _create_4(data) {
    return new Option(data);
  }
  static _create_5() {
    return new Option();
  }
  get [$defaultSelected]() {
    return this.defaultSelected;
  }
  set [$defaultSelected](value) {
    this.defaultSelected = value;
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$form]() {
    return this.form;
  }
  get [$index]() {
    return this.index;
  }
  get [$label]() {
    return this.label;
  }
  set [$label](value) {
    this.label = value;
  }
  get [$selected]() {
    return this.selected;
  }
  set [$selected](value) {
    this.selected = value;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
};
(html$.OptionElement.created = function() {
  this[defaultSelected] = null;
  this[disabled$6] = null;
  this[form$4] = null;
  this[index$] = null;
  this[label$2] = null;
  this[selected$] = null;
  this[value$11] = null;
  html$.OptionElement.__proto__.created.call(this);
}).prototype = html$.OptionElement.prototype;
dart.addTypeTests(html$.OptionElement);
const defaultSelected = Symbol("OptionElement.defaultSelected");
const disabled$6 = Symbol("OptionElement.disabled");
const form$4 = Symbol("OptionElement.form");
const index$ = Symbol("OptionElement.index");
const label$2 = Symbol("OptionElement.label");
const selected$ = Symbol("OptionElement.selected");
const value$11 = Symbol("OptionElement.value");
dart.setFieldSignature(html$.OptionElement, () => ({
  __proto__: dart.getFields(html$.OptionElement.__proto__),
  [$defaultSelected]: dart.fieldType(core.bool),
  [$disabled]: dart.fieldType(core.bool),
  [$form]: dart.finalFieldType(html$.FormElement),
  [$index]: dart.finalFieldType(core.int),
  [$label]: dart.fieldType(core.String),
  [$selected]: dart.fieldType(core.bool),
  [$value]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLOptionElement", html$.OptionElement);
html$.OutputElement = class OutputElement extends html$.HtmlElement {
  static new() {
    return html$.OutputElement._check(html$.document[$createElement]("output"));
  }
  static get supported() {
    return html$.Element.isTagSupported("output");
  }
  get [$defaultValue]() {
    return this.defaultValue;
  }
  set [$defaultValue](value) {
    this.defaultValue = value;
  }
  get [$form]() {
    return this.form;
  }
  get [$htmlFor]() {
    return this.htmlFor;
  }
  get [$labels]() {
    return this.labels;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$type]() {
    return this.type;
  }
  get [$validationMessage]() {
    return this.validationMessage;
  }
  get [$validity]() {
    return this.validity;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
  get [$willValidate]() {
    return this.willValidate;
  }
  [$checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [$reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [$setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
};
(html$.OutputElement.created = function() {
  this[defaultValue$] = null;
  this[form$5] = null;
  this[htmlFor$] = null;
  this[labels$1] = null;
  this[name$26] = null;
  this[type$23] = null;
  this[validationMessage$2] = null;
  this[validity$2] = null;
  this[value$12] = null;
  this[willValidate$2] = null;
  html$.OutputElement.__proto__.created.call(this);
}).prototype = html$.OutputElement.prototype;
dart.addTypeTests(html$.OutputElement);
const defaultValue$ = Symbol("OutputElement.defaultValue");
const form$5 = Symbol("OutputElement.form");
const htmlFor$ = Symbol("OutputElement.htmlFor");
const labels$1 = Symbol("OutputElement.labels");
const name$26 = Symbol("OutputElement.name");
const type$23 = Symbol("OutputElement.type");
const validationMessage$2 = Symbol("OutputElement.validationMessage");
const validity$2 = Symbol("OutputElement.validity");
const value$12 = Symbol("OutputElement.value");
const willValidate$2 = Symbol("OutputElement.willValidate");
dart.setMethodSignature(html$.OutputElement, () => ({
  __proto__: dart.getMethods(html$.OutputElement.__proto__),
  [$checkValidity]: dart.fnType(core.bool, []),
  [$reportValidity]: dart.fnType(core.bool, []),
  [$setCustomValidity]: dart.fnType(dart.void, [core.String])
}));
dart.setFieldSignature(html$.OutputElement, () => ({
  __proto__: dart.getFields(html$.OutputElement.__proto__),
  [$defaultValue]: dart.fieldType(core.String),
  [$form]: dart.finalFieldType(html$.FormElement),
  [$htmlFor]: dart.finalFieldType(html$.DomTokenList),
  [$labels]: dart.finalFieldType(ListOfNode()),
  [$name]: dart.fieldType(core.String),
  [$type]: dart.finalFieldType(core.String),
  [$validationMessage]: dart.finalFieldType(core.String),
  [$validity]: dart.finalFieldType(html$.ValidityState),
  [$value]: dart.fieldType(core.String),
  [$willValidate]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("HTMLOutputElement", html$.OutputElement);
html$.OverconstrainedError = class OverconstrainedError$ extends _interceptors.Interceptor {
  static new(constraint, message) {
    return html$.OverconstrainedError._create_1(constraint, message);
  }
  static _create_1(constraint, message) {
    return new OverconstrainedError(constraint, message);
  }
  get [$constraint]() {
    return this.constraint;
  }
  get [$message]() {
    return this.message;
  }
  get [$name]() {
    return this.name;
  }
};
dart.addTypeTests(html$.OverconstrainedError);
const constraint = Symbol("OverconstrainedError.constraint");
const message$24 = Symbol("OverconstrainedError.message");
const name$27 = Symbol("OverconstrainedError.name");
dart.setFieldSignature(html$.OverconstrainedError, () => ({
  __proto__: dart.getFields(html$.OverconstrainedError.__proto__),
  [$constraint]: dart.finalFieldType(core.String),
  [$message]: dart.finalFieldType(core.String),
  [$name]: dart.finalFieldType(core.String)
}));
dart.registerExtension("OverconstrainedError", html$.OverconstrainedError);
html$.PageTransitionEvent = class PageTransitionEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.PageTransitionEvent._create_1(type, eventInitDict_1);
    }
    return html$.PageTransitionEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new PageTransitionEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new PageTransitionEvent(type);
  }
  get [$persisted]() {
    return this.persisted;
  }
};
dart.addTypeTests(html$.PageTransitionEvent);
const persisted = Symbol("PageTransitionEvent.persisted");
dart.setFieldSignature(html$.PageTransitionEvent, () => ({
  __proto__: dart.getFields(html$.PageTransitionEvent.__proto__),
  [$persisted]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("PageTransitionEvent", html$.PageTransitionEvent);
html$.PaintRenderingContext2D = class PaintRenderingContext2D extends _interceptors.Interceptor {
  get [$currentTransform]() {
    return this.currentTransform;
  }
  set [$currentTransform](value) {
    this.currentTransform = value;
  }
  get [$fillStyle]() {
    return this.fillStyle;
  }
  set [$fillStyle](value) {
    this.fillStyle = value;
  }
  get [$filter]() {
    return this.filter;
  }
  set [$filter](value) {
    this.filter = value;
  }
  get [$globalAlpha]() {
    return this.globalAlpha;
  }
  set [$globalAlpha](value) {
    this.globalAlpha = value;
  }
  get [$globalCompositeOperation]() {
    return this.globalCompositeOperation;
  }
  set [$globalCompositeOperation](value) {
    this.globalCompositeOperation = value;
  }
  get [$imageSmoothingEnabled]() {
    return this.imageSmoothingEnabled;
  }
  set [$imageSmoothingEnabled](value) {
    this.imageSmoothingEnabled = value;
  }
  get [$imageSmoothingQuality]() {
    return this.imageSmoothingQuality;
  }
  set [$imageSmoothingQuality](value) {
    this.imageSmoothingQuality = value;
  }
  get [$lineCap]() {
    return this.lineCap;
  }
  set [$lineCap](value) {
    this.lineCap = value;
  }
  get [$lineDashOffset]() {
    return this.lineDashOffset;
  }
  set [$lineDashOffset](value) {
    this.lineDashOffset = value;
  }
  get [$lineJoin]() {
    return this.lineJoin;
  }
  set [$lineJoin](value) {
    this.lineJoin = value;
  }
  get [$lineWidth]() {
    return this.lineWidth;
  }
  set [$lineWidth](value) {
    this.lineWidth = value;
  }
  get [$miterLimit]() {
    return this.miterLimit;
  }
  set [$miterLimit](value) {
    this.miterLimit = value;
  }
  get [$shadowBlur]() {
    return this.shadowBlur;
  }
  set [$shadowBlur](value) {
    this.shadowBlur = value;
  }
  get [$shadowColor]() {
    return this.shadowColor;
  }
  set [$shadowColor](value) {
    this.shadowColor = value;
  }
  get [$shadowOffsetX]() {
    return this.shadowOffsetX;
  }
  set [$shadowOffsetX](value) {
    this.shadowOffsetX = value;
  }
  get [$shadowOffsetY]() {
    return this.shadowOffsetY;
  }
  set [$shadowOffsetY](value) {
    this.shadowOffsetY = value;
  }
  get [$strokeStyle]() {
    return this.strokeStyle;
  }
  set [$strokeStyle](value) {
    this.strokeStyle = value;
  }
  [$beginPath](...args) {
    return this.beginPath.apply(this, args);
  }
  [$clearRect](...args) {
    return this.clearRect.apply(this, args);
  }
  [$clip](...args) {
    return this.clip.apply(this, args);
  }
  [$createLinearGradient](...args) {
    return this.createLinearGradient.apply(this, args);
  }
  [$createPattern](...args) {
    return this.createPattern.apply(this, args);
  }
  [$createRadialGradient](...args) {
    return this.createRadialGradient.apply(this, args);
  }
  [$drawImage](...args) {
    return this.drawImage.apply(this, args);
  }
  [$fill](...args) {
    return this.fill.apply(this, args);
  }
  [$fillRect](...args) {
    return this.fillRect.apply(this, args);
  }
  [$getLineDash](...args) {
    return this.getLineDash.apply(this, args);
  }
  [$isPointInPath](...args) {
    return this.isPointInPath.apply(this, args);
  }
  [$isPointInStroke](...args) {
    return this.isPointInStroke.apply(this, args);
  }
  [$resetTransform](...args) {
    return this.resetTransform.apply(this, args);
  }
  [$restore](...args) {
    return this.restore.apply(this, args);
  }
  [$rotate](...args) {
    return this.rotate.apply(this, args);
  }
  [$save](...args) {
    return this.save.apply(this, args);
  }
  [$scale](...args) {
    return this.scale.apply(this, args);
  }
  [$setLineDash](...args) {
    return this.setLineDash.apply(this, args);
  }
  [$setTransform](...args) {
    return this.setTransform.apply(this, args);
  }
  [$stroke](...args) {
    return this.stroke.apply(this, args);
  }
  [$strokeRect](...args) {
    return this.strokeRect.apply(this, args);
  }
  [$transform](...args) {
    return this.transform.apply(this, args);
  }
  [$translate](...args) {
    return this.translate.apply(this, args);
  }
  [$arc](...args) {
    return this.arc.apply(this, args);
  }
  [$arcTo](...args) {
    return this.arcTo.apply(this, args);
  }
  [$bezierCurveTo](...args) {
    return this.bezierCurveTo.apply(this, args);
  }
  [$closePath](...args) {
    return this.closePath.apply(this, args);
  }
  [$ellipse](...args) {
    return this.ellipse.apply(this, args);
  }
  [$lineTo](...args) {
    return this.lineTo.apply(this, args);
  }
  [$moveTo](...args) {
    return this.moveTo.apply(this, args);
  }
  [$quadraticCurveTo](...args) {
    return this.quadraticCurveTo.apply(this, args);
  }
  [$rect](...args) {
    return this.rect.apply(this, args);
  }
};
dart.addTypeTests(html$.PaintRenderingContext2D);
const currentTransform$ = Symbol("PaintRenderingContext2D.currentTransform");
const fillStyle$0 = Symbol("PaintRenderingContext2D.fillStyle");
const filter$0 = Symbol("PaintRenderingContext2D.filter");
const globalAlpha$0 = Symbol("PaintRenderingContext2D.globalAlpha");
const globalCompositeOperation$0 = Symbol("PaintRenderingContext2D.globalCompositeOperation");
const imageSmoothingEnabled$0 = Symbol("PaintRenderingContext2D.imageSmoothingEnabled");
const imageSmoothingQuality$0 = Symbol("PaintRenderingContext2D.imageSmoothingQuality");
const lineCap$0 = Symbol("PaintRenderingContext2D.lineCap");
const lineDashOffset$ = Symbol("PaintRenderingContext2D.lineDashOffset");
const lineJoin$0 = Symbol("PaintRenderingContext2D.lineJoin");
const lineWidth$0 = Symbol("PaintRenderingContext2D.lineWidth");
const miterLimit$0 = Symbol("PaintRenderingContext2D.miterLimit");
const shadowBlur$0 = Symbol("PaintRenderingContext2D.shadowBlur");
const shadowColor$0 = Symbol("PaintRenderingContext2D.shadowColor");
const shadowOffsetX$0 = Symbol("PaintRenderingContext2D.shadowOffsetX");
const shadowOffsetY$0 = Symbol("PaintRenderingContext2D.shadowOffsetY");
const strokeStyle$0 = Symbol("PaintRenderingContext2D.strokeStyle");
html$.PaintRenderingContext2D[dart.implements] = () => [html$._CanvasPath];
dart.setMethodSignature(html$.PaintRenderingContext2D, () => ({
  __proto__: dart.getMethods(html$.PaintRenderingContext2D.__proto__),
  [$beginPath]: dart.fnType(dart.void, []),
  [$clearRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$clip]: dart.fnType(dart.void, [], [dart.dynamic, core.String]),
  [$createLinearGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num]),
  [$createPattern]: dart.fnType(html$.CanvasPattern, [dart.dynamic, core.String]),
  [$createRadialGradient]: dart.fnType(html$.CanvasGradient, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$drawImage]: dart.fnType(dart.void, [dart.dynamic, core.num, core.num], [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$fill]: dart.fnType(dart.void, [], [dart.dynamic, core.String]),
  [$fillRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$getLineDash]: dart.fnType(core.List$(core.num), []),
  [$isPointInPath]: dart.fnType(core.bool, [dart.dynamic, core.num], [dart.dynamic, core.String]),
  [$isPointInStroke]: dart.fnType(core.bool, [dart.dynamic, core.num], [core.num]),
  [$resetTransform]: dart.fnType(dart.void, []),
  [$restore]: dart.fnType(dart.void, []),
  [$rotate]: dart.fnType(dart.void, [core.num]),
  [$save]: dart.fnType(dart.void, []),
  [$scale]: dart.fnType(dart.void, [core.num, core.num]),
  [$setLineDash]: dart.fnType(dart.void, [core.List$(core.num)]),
  [$setTransform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$stroke]: dart.fnType(dart.void, [], [html$.Path2D]),
  [$strokeRect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$transform]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$translate]: dart.fnType(dart.void, [core.num, core.num]),
  [$arc]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.bool]),
  [$arcTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num]),
  [$bezierCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$closePath]: dart.fnType(dart.void, []),
  [$ellipse]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.bool]),
  [$lineTo]: dart.fnType(dart.void, [core.num, core.num]),
  [$moveTo]: dart.fnType(dart.void, [core.num, core.num]),
  [$quadraticCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$rect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num])
}));
dart.setFieldSignature(html$.PaintRenderingContext2D, () => ({
  __proto__: dart.getFields(html$.PaintRenderingContext2D.__proto__),
  [$currentTransform]: dart.fieldType(svg$.Matrix),
  [$fillStyle]: dart.fieldType(core.Object),
  [$filter]: dart.fieldType(core.String),
  [$globalAlpha]: dart.fieldType(core.num),
  [$globalCompositeOperation]: dart.fieldType(core.String),
  [$imageSmoothingEnabled]: dart.fieldType(core.bool),
  [$imageSmoothingQuality]: dart.fieldType(core.String),
  [$lineCap]: dart.fieldType(core.String),
  [$lineDashOffset]: dart.fieldType(core.num),
  [$lineJoin]: dart.fieldType(core.String),
  [$lineWidth]: dart.fieldType(core.num),
  [$miterLimit]: dart.fieldType(core.num),
  [$shadowBlur]: dart.fieldType(core.num),
  [$shadowColor]: dart.fieldType(core.String),
  [$shadowOffsetX]: dart.fieldType(core.num),
  [$shadowOffsetY]: dart.fieldType(core.num),
  [$strokeStyle]: dart.fieldType(core.Object)
}));
dart.registerExtension("PaintRenderingContext2D", html$.PaintRenderingContext2D);
html$.PaintSize = class PaintSize extends _interceptors.Interceptor {
  get [$height]() {
    return this.height;
  }
  get [$width]() {
    return this.width;
  }
};
dart.addTypeTests(html$.PaintSize);
const height$8 = Symbol("PaintSize.height");
const width$8 = Symbol("PaintSize.width");
dart.setFieldSignature(html$.PaintSize, () => ({
  __proto__: dart.getFields(html$.PaintSize.__proto__),
  [$height]: dart.finalFieldType(core.num),
  [$width]: dart.finalFieldType(core.num)
}));
dart.registerExtension("PaintSize", html$.PaintSize);
html$.PaintWorkletGlobalScope = class PaintWorkletGlobalScope extends html$.WorkletGlobalScope {
  get [$devicePixelRatio]() {
    return this.devicePixelRatio;
  }
  [$registerPaint](...args) {
    return this.registerPaint.apply(this, args);
  }
};
dart.addTypeTests(html$.PaintWorkletGlobalScope);
const devicePixelRatio = Symbol("PaintWorkletGlobalScope.devicePixelRatio");
dart.setMethodSignature(html$.PaintWorkletGlobalScope, () => ({
  __proto__: dart.getMethods(html$.PaintWorkletGlobalScope.__proto__),
  [$registerPaint]: dart.fnType(dart.void, [core.String, core.Object])
}));
dart.setFieldSignature(html$.PaintWorkletGlobalScope, () => ({
  __proto__: dart.getFields(html$.PaintWorkletGlobalScope.__proto__),
  [$devicePixelRatio]: dart.finalFieldType(core.num)
}));
dart.registerExtension("PaintWorkletGlobalScope", html$.PaintWorkletGlobalScope);
html$.ParagraphElement = class ParagraphElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("p");
  }
};
(html$.ParagraphElement.created = function() {
  html$.ParagraphElement.__proto__.created.call(this);
}).prototype = html$.ParagraphElement.prototype;
dart.addTypeTests(html$.ParagraphElement);
dart.registerExtension("HTMLParagraphElement", html$.ParagraphElement);
html$.ParamElement = class ParamElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("param");
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
};
(html$.ParamElement.created = function() {
  this[name$28] = null;
  this[value$13] = null;
  html$.ParamElement.__proto__.created.call(this);
}).prototype = html$.ParamElement.prototype;
dart.addTypeTests(html$.ParamElement);
const name$28 = Symbol("ParamElement.name");
const value$13 = Symbol("ParamElement.value");
dart.setFieldSignature(html$.ParamElement, () => ({
  __proto__: dart.getFields(html$.ParamElement.__proto__),
  [$name]: dart.fieldType(core.String),
  [$value]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLParamElement", html$.ParamElement);
html$.ParentNode = class ParentNode extends _interceptors.Interceptor {};
dart.addTypeTests(html$.ParentNode);
dart.setFieldSignature(html$.ParentNode, () => ({
  __proto__: dart.getFields(html$.ParentNode.__proto__),
  [_childElementCount]: dart.finalFieldType(core.int),
  [_children]: dart.finalFieldType(ListOfNode()),
  [_firstElementChild]: dart.finalFieldType(html$.Element),
  [_lastElementChild]: dart.finalFieldType(html$.Element)
}));
html$.PasswordCredential = class PasswordCredential$ extends html$.Credential {
  static new(data_OR_form) {
    if (core.Map.is(data_OR_form)) {
      let data_1 = html_common.convertDartToNative_Dictionary(data_OR_form);
      return html$.PasswordCredential._create_1(data_1);
    }
    if (html$.FormElement.is(data_OR_form)) {
      return html$.PasswordCredential._create_2(data_OR_form);
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  static _create_1(data_OR_form) {
    return new PasswordCredential(data_OR_form);
  }
  static _create_2(data_OR_form) {
    return new PasswordCredential(data_OR_form);
  }
  get [$additionalData]() {
    return this.additionalData;
  }
  set [$additionalData](value) {
    this.additionalData = value;
  }
  get [$idName]() {
    return this.idName;
  }
  set [$idName](value) {
    this.idName = value;
  }
  get [$password]() {
    return this.password;
  }
  get [$passwordName]() {
    return this.passwordName;
  }
  set [$passwordName](value) {
    this.passwordName = value;
  }
  get [$iconUrl]() {
    return this.iconURL;
  }
  get [$name]() {
    return this.name;
  }
};
dart.addTypeTests(html$.PasswordCredential);
const additionalData = Symbol("PasswordCredential.additionalData");
const idName = Symbol("PasswordCredential.idName");
const password$1 = Symbol("PasswordCredential.password");
const passwordName = Symbol("PasswordCredential.passwordName");
const iconUrl$0 = Symbol("PasswordCredential.iconUrl");
const name$29 = Symbol("PasswordCredential.name");
html$.PasswordCredential[dart.implements] = () => [html$.CredentialUserData];
dart.setFieldSignature(html$.PasswordCredential, () => ({
  __proto__: dart.getFields(html$.PasswordCredential.__proto__),
  [$additionalData]: dart.fieldType(core.Object),
  [$idName]: dart.fieldType(core.String),
  [$password]: dart.finalFieldType(core.String),
  [$passwordName]: dart.fieldType(core.String),
  [$iconUrl]: dart.finalFieldType(core.String),
  [$name]: dart.finalFieldType(core.String)
}));
dart.registerExtension("PasswordCredential", html$.PasswordCredential);
html$.Path2D = class Path2D$ extends _interceptors.Interceptor {
  static new(path_OR_text) {
    if (path_OR_text === void 0) path_OR_text = null;
    if (path_OR_text == null) {
      return html$.Path2D._create_1();
    }
    if (html$.Path2D.is(path_OR_text)) {
      return html$.Path2D._create_2(path_OR_text);
    }
    if (typeof path_OR_text == 'string') {
      return html$.Path2D._create_3(path_OR_text);
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  static _create_1() {
    return new Path2D();
  }
  static _create_2(path_OR_text) {
    return new Path2D(path_OR_text);
  }
  static _create_3(path_OR_text) {
    return new Path2D(path_OR_text);
  }
  [$addPath](...args) {
    return this.addPath.apply(this, args);
  }
  [$arc](...args) {
    return this.arc.apply(this, args);
  }
  [$arcTo](...args) {
    return this.arcTo.apply(this, args);
  }
  [$bezierCurveTo](...args) {
    return this.bezierCurveTo.apply(this, args);
  }
  [$closePath](...args) {
    return this.closePath.apply(this, args);
  }
  [$ellipse](...args) {
    return this.ellipse.apply(this, args);
  }
  [$lineTo](...args) {
    return this.lineTo.apply(this, args);
  }
  [$moveTo](...args) {
    return this.moveTo.apply(this, args);
  }
  [$quadraticCurveTo](...args) {
    return this.quadraticCurveTo.apply(this, args);
  }
  [$rect](...args) {
    return this.rect.apply(this, args);
  }
};
dart.addTypeTests(html$.Path2D);
html$.Path2D[dart.implements] = () => [html$._CanvasPath];
dart.setMethodSignature(html$.Path2D, () => ({
  __proto__: dart.getMethods(html$.Path2D.__proto__),
  [$addPath]: dart.fnType(dart.void, [html$.Path2D], [svg$.Matrix]),
  [$arc]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.bool]),
  [$arcTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num]),
  [$bezierCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$closePath]: dart.fnType(dart.void, []),
  [$ellipse]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num, core.num, core.bool]),
  [$lineTo]: dart.fnType(dart.void, [core.num, core.num]),
  [$moveTo]: dart.fnType(dart.void, [core.num, core.num]),
  [$quadraticCurveTo]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$rect]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num])
}));
dart.registerExtension("Path2D", html$.Path2D);
html$.PaymentAddress = class PaymentAddress extends _interceptors.Interceptor {
  get [$addressLine]() {
    return this.addressLine;
  }
  get [$city]() {
    return this.city;
  }
  get [$country]() {
    return this.country;
  }
  get [$dependentLocality]() {
    return this.dependentLocality;
  }
  get [$languageCode]() {
    return this.languageCode;
  }
  get [$organization]() {
    return this.organization;
  }
  get [$phone]() {
    return this.phone;
  }
  get [$postalCode]() {
    return this.postalCode;
  }
  get [$recipient]() {
    return this.recipient;
  }
  get [$region]() {
    return this.region;
  }
  get [$sortingCode]() {
    return this.sortingCode;
  }
};
dart.addTypeTests(html$.PaymentAddress);
const addressLine = Symbol("PaymentAddress.addressLine");
const city = Symbol("PaymentAddress.city");
const country = Symbol("PaymentAddress.country");
const dependentLocality = Symbol("PaymentAddress.dependentLocality");
const languageCode = Symbol("PaymentAddress.languageCode");
const organization = Symbol("PaymentAddress.organization");
const phone = Symbol("PaymentAddress.phone");
const postalCode = Symbol("PaymentAddress.postalCode");
const recipient = Symbol("PaymentAddress.recipient");
const region$ = Symbol("PaymentAddress.region");
const sortingCode = Symbol("PaymentAddress.sortingCode");
dart.setFieldSignature(html$.PaymentAddress, () => ({
  __proto__: dart.getFields(html$.PaymentAddress.__proto__),
  [$addressLine]: dart.finalFieldType(ListOfString()),
  [$city]: dart.finalFieldType(core.String),
  [$country]: dart.finalFieldType(core.String),
  [$dependentLocality]: dart.finalFieldType(core.String),
  [$languageCode]: dart.finalFieldType(core.String),
  [$organization]: dart.finalFieldType(core.String),
  [$phone]: dart.finalFieldType(core.String),
  [$postalCode]: dart.finalFieldType(core.String),
  [$recipient]: dart.finalFieldType(core.String),
  [$region]: dart.finalFieldType(core.String),
  [$sortingCode]: dart.finalFieldType(core.String)
}));
dart.registerExtension("PaymentAddress", html$.PaymentAddress);
html$.PaymentInstruments = class PaymentInstruments extends _interceptors.Interceptor {
  [$clear]() {
    return html$.promiseToFuture(dart.dynamic, this.clear());
  }
  [$delete](instrumentKey) {
    return html$.promiseToFuture(core.bool, this.delete(instrumentKey));
  }
  [$get](instrumentKey) {
    return html$.promiseToFutureAsMap(this.get(instrumentKey));
  }
  [$has](instrumentKey) {
    return html$.promiseToFuture(dart.dynamic, this.has(instrumentKey));
  }
  [$keys]() {
    return html$.promiseToFuture(ListOfString(), this.keys());
  }
  [$set](instrumentKey, details) {
    let details_dict = html_common.convertDartToNative_Dictionary(details);
    return html$.promiseToFuture(dart.dynamic, this.set(instrumentKey, details_dict));
  }
};
dart.addTypeTests(html$.PaymentInstruments);
dart.setMethodSignature(html$.PaymentInstruments, () => ({
  __proto__: dart.getMethods(html$.PaymentInstruments.__proto__),
  [$clear]: dart.fnType(async.Future, []),
  [$delete]: dart.fnType(async.Future$(core.bool), [core.String]),
  [$get]: dart.fnType(async.Future$(core.Map$(core.String, dart.dynamic)), [core.String]),
  [$has]: dart.fnType(async.Future, [core.String]),
  [$keys]: dart.fnType(async.Future$(core.List$(core.String)), []),
  [$set]: dart.fnType(async.Future, [core.String, core.Map])
}));
dart.registerExtension("PaymentInstruments", html$.PaymentInstruments);
html$.PaymentManager = class PaymentManager extends _interceptors.Interceptor {
  get [$instruments]() {
    return this.instruments;
  }
  get [$userHint]() {
    return this.userHint;
  }
  set [$userHint](value) {
    this.userHint = value;
  }
};
dart.addTypeTests(html$.PaymentManager);
const instruments = Symbol("PaymentManager.instruments");
const userHint = Symbol("PaymentManager.userHint");
dart.setFieldSignature(html$.PaymentManager, () => ({
  __proto__: dart.getFields(html$.PaymentManager.__proto__),
  [$instruments]: dart.finalFieldType(html$.PaymentInstruments),
  [$userHint]: dart.fieldType(core.String)
}));
dart.registerExtension("PaymentManager", html$.PaymentManager);
html$.PaymentRequest = class PaymentRequest$ extends html$.EventTarget {
  static new(methodData, details, options) {
    if (options === void 0) options = null;
    let methodData_1 = [];
    for (let i of methodData) {
      methodData_1[$add](html_common.convertDartToNative_Dictionary(i));
    }
    if (options != null) {
      let details_1 = html_common.convertDartToNative_Dictionary(details);
      let options_2 = html_common.convertDartToNative_Dictionary(options);
      return html$.PaymentRequest._create_1(methodData_1, details_1, options_2);
    }
    let details_1 = html_common.convertDartToNative_Dictionary(details);
    return html$.PaymentRequest._create_2(methodData_1, details_1);
  }
  static _create_1(methodData, details, options) {
    return new PaymentRequest(methodData, details, options);
  }
  static _create_2(methodData, details) {
    return new PaymentRequest(methodData, details);
  }
  get [$id]() {
    return this.id;
  }
  get [$shippingAddress]() {
    return this.shippingAddress;
  }
  get [$shippingOption]() {
    return this.shippingOption;
  }
  get [$shippingType]() {
    return this.shippingType;
  }
  [$abort]() {
    return html$.promiseToFuture(dart.dynamic, this.abort());
  }
  [$canMakePayment]() {
    return html$.promiseToFuture(core.bool, this.canMakePayment());
  }
  [$show]() {
    return html$.promiseToFuture(html$.PaymentResponse, this.show());
  }
};
dart.addTypeTests(html$.PaymentRequest);
const id$9 = Symbol("PaymentRequest.id");
const shippingAddress = Symbol("PaymentRequest.shippingAddress");
const shippingOption = Symbol("PaymentRequest.shippingOption");
const shippingType = Symbol("PaymentRequest.shippingType");
dart.setMethodSignature(html$.PaymentRequest, () => ({
  __proto__: dart.getMethods(html$.PaymentRequest.__proto__),
  [$abort]: dart.fnType(async.Future, []),
  [$canMakePayment]: dart.fnType(async.Future$(core.bool), []),
  [$show]: dart.fnType(async.Future$(html$.PaymentResponse), [])
}));
dart.setFieldSignature(html$.PaymentRequest, () => ({
  __proto__: dart.getFields(html$.PaymentRequest.__proto__),
  [$id]: dart.finalFieldType(core.String),
  [$shippingAddress]: dart.finalFieldType(html$.PaymentAddress),
  [$shippingOption]: dart.finalFieldType(core.String),
  [$shippingType]: dart.finalFieldType(core.String)
}));
dart.registerExtension("PaymentRequest", html$.PaymentRequest);
html$.PaymentRequestEvent = class PaymentRequestEvent$ extends html$.ExtendableEvent {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.PaymentRequestEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new PaymentRequestEvent(type, eventInitDict);
  }
  get [$instrumentKey]() {
    return this.instrumentKey;
  }
  get [$methodData]() {
    return this.methodData;
  }
  get [$modifiers]() {
    return this.modifiers;
  }
  get [$paymentRequestId]() {
    return this.paymentRequestId;
  }
  get [$paymentRequestOrigin]() {
    return this.paymentRequestOrigin;
  }
  get [$topLevelOrigin]() {
    return this.topLevelOrigin;
  }
  get [$total]() {
    return this.total;
  }
  [$openWindow](url) {
    return html$.promiseToFuture(html$.WindowClient, this.openWindow(url));
  }
  [$respondWith](...args) {
    return this.respondWith.apply(this, args);
  }
};
dart.addTypeTests(html$.PaymentRequestEvent);
const instrumentKey = Symbol("PaymentRequestEvent.instrumentKey");
const methodData$ = Symbol("PaymentRequestEvent.methodData");
const modifiers$ = Symbol("PaymentRequestEvent.modifiers");
const paymentRequestId = Symbol("PaymentRequestEvent.paymentRequestId");
const paymentRequestOrigin$ = Symbol("PaymentRequestEvent.paymentRequestOrigin");
const topLevelOrigin$ = Symbol("PaymentRequestEvent.topLevelOrigin");
const total = Symbol("PaymentRequestEvent.total");
dart.setMethodSignature(html$.PaymentRequestEvent, () => ({
  __proto__: dart.getMethods(html$.PaymentRequestEvent.__proto__),
  [$openWindow]: dart.fnType(async.Future$(html$.WindowClient), [core.String]),
  [$respondWith]: dart.fnType(dart.void, [async.Future])
}));
dart.setFieldSignature(html$.PaymentRequestEvent, () => ({
  __proto__: dart.getFields(html$.PaymentRequestEvent.__proto__),
  [$instrumentKey]: dart.finalFieldType(core.String),
  [$methodData]: dart.finalFieldType(core.List),
  [$modifiers]: dart.finalFieldType(core.List),
  [$paymentRequestId]: dart.finalFieldType(core.String),
  [$paymentRequestOrigin]: dart.finalFieldType(core.String),
  [$topLevelOrigin]: dart.finalFieldType(core.String),
  [$total]: dart.finalFieldType(core.Object)
}));
dart.registerExtension("PaymentRequestEvent", html$.PaymentRequestEvent);
html$.PaymentRequestUpdateEvent = class PaymentRequestUpdateEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.PaymentRequestUpdateEvent._create_1(type, eventInitDict_1);
    }
    return html$.PaymentRequestUpdateEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new PaymentRequestUpdateEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new PaymentRequestUpdateEvent(type);
  }
  [$updateWith](...args) {
    return this.updateWith.apply(this, args);
  }
};
dart.addTypeTests(html$.PaymentRequestUpdateEvent);
dart.setMethodSignature(html$.PaymentRequestUpdateEvent, () => ({
  __proto__: dart.getMethods(html$.PaymentRequestUpdateEvent.__proto__),
  [$updateWith]: dart.fnType(dart.void, [async.Future])
}));
dart.registerExtension("PaymentRequestUpdateEvent", html$.PaymentRequestUpdateEvent);
html$.PaymentResponse = class PaymentResponse extends _interceptors.Interceptor {
  get [$details]() {
    return this.details;
  }
  get [$methodName]() {
    return this.methodName;
  }
  get [$payerEmail]() {
    return this.payerEmail;
  }
  get [$payerName]() {
    return this.payerName;
  }
  get [$payerPhone]() {
    return this.payerPhone;
  }
  get [$requestId]() {
    return this.requestId;
  }
  get [$shippingAddress]() {
    return this.shippingAddress;
  }
  get [$shippingOption]() {
    return this.shippingOption;
  }
  [$complete](paymentResult) {
    if (paymentResult === void 0) paymentResult = null;
    return html$.promiseToFuture(dart.dynamic, this.complete(paymentResult));
  }
};
dart.addTypeTests(html$.PaymentResponse);
const details$ = Symbol("PaymentResponse.details");
const methodName = Symbol("PaymentResponse.methodName");
const payerEmail = Symbol("PaymentResponse.payerEmail");
const payerName = Symbol("PaymentResponse.payerName");
const payerPhone = Symbol("PaymentResponse.payerPhone");
const requestId = Symbol("PaymentResponse.requestId");
const shippingAddress$ = Symbol("PaymentResponse.shippingAddress");
const shippingOption$ = Symbol("PaymentResponse.shippingOption");
dart.setMethodSignature(html$.PaymentResponse, () => ({
  __proto__: dart.getMethods(html$.PaymentResponse.__proto__),
  [$complete]: dart.fnType(async.Future, [], [core.String])
}));
dart.setFieldSignature(html$.PaymentResponse, () => ({
  __proto__: dart.getFields(html$.PaymentResponse.__proto__),
  [$details]: dart.finalFieldType(core.Object),
  [$methodName]: dart.finalFieldType(core.String),
  [$payerEmail]: dart.finalFieldType(core.String),
  [$payerName]: dart.finalFieldType(core.String),
  [$payerPhone]: dart.finalFieldType(core.String),
  [$requestId]: dart.finalFieldType(core.String),
  [$shippingAddress]: dart.finalFieldType(html$.PaymentAddress),
  [$shippingOption]: dart.finalFieldType(core.String)
}));
dart.registerExtension("PaymentResponse", html$.PaymentResponse);
html$.Performance = class Performance extends html$.EventTarget {
  static get supported() {
    return !!window.performance;
  }
  get [$memory]() {
    return this.memory;
  }
  get [$navigation]() {
    return this.navigation;
  }
  get [$timeOrigin]() {
    return this.timeOrigin;
  }
  get [$timing]() {
    return this.timing;
  }
  [$clearMarks](...args) {
    return this.clearMarks.apply(this, args);
  }
  [$clearMeasures](...args) {
    return this.clearMeasures.apply(this, args);
  }
  [$clearResourceTimings](...args) {
    return this.clearResourceTimings.apply(this, args);
  }
  [$getEntries](...args) {
    return this.getEntries.apply(this, args);
  }
  [$getEntriesByName](...args) {
    return this.getEntriesByName.apply(this, args);
  }
  [$getEntriesByType](...args) {
    return this.getEntriesByType.apply(this, args);
  }
  [$mark](...args) {
    return this.mark.apply(this, args);
  }
  [$measure](...args) {
    return this.measure.apply(this, args);
  }
  [$now](...args) {
    return this.now.apply(this, args);
  }
  [$setResourceTimingBufferSize](...args) {
    return this.setResourceTimingBufferSize.apply(this, args);
  }
};
dart.addTypeTests(html$.Performance);
const memory = Symbol("Performance.memory");
const navigation = Symbol("Performance.navigation");
const timeOrigin = Symbol("Performance.timeOrigin");
const timing$ = Symbol("Performance.timing");
dart.setMethodSignature(html$.Performance, () => ({
  __proto__: dart.getMethods(html$.Performance.__proto__),
  [$clearMarks]: dart.fnType(dart.void, [core.String]),
  [$clearMeasures]: dart.fnType(dart.void, [core.String]),
  [$clearResourceTimings]: dart.fnType(dart.void, []),
  [$getEntries]: dart.fnType(core.List$(html$.PerformanceEntry), []),
  [$getEntriesByName]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String, core.String]),
  [$getEntriesByType]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String]),
  [$mark]: dart.fnType(dart.void, [core.String]),
  [$measure]: dart.fnType(dart.void, [core.String, core.String, core.String]),
  [$now]: dart.fnType(core.double, []),
  [$setResourceTimingBufferSize]: dart.fnType(dart.void, [core.int])
}));
dart.setFieldSignature(html$.Performance, () => ({
  __proto__: dart.getFields(html$.Performance.__proto__),
  [$memory]: dart.finalFieldType(html$.MemoryInfo),
  [$navigation]: dart.finalFieldType(html$.PerformanceNavigation),
  [$timeOrigin]: dart.finalFieldType(core.num),
  [$timing]: dart.finalFieldType(html$.PerformanceTiming)
}));
dart.registerExtension("Performance", html$.Performance);
html$.PerformanceEntry = class PerformanceEntry extends _interceptors.Interceptor {
  get [$duration]() {
    return this.duration;
  }
  get [$entryType]() {
    return this.entryType;
  }
  get [$name]() {
    return this.name;
  }
  get [$startTime]() {
    return this.startTime;
  }
};
dart.addTypeTests(html$.PerformanceEntry);
const duration$2 = Symbol("PerformanceEntry.duration");
const entryType = Symbol("PerformanceEntry.entryType");
const name$30 = Symbol("PerformanceEntry.name");
const startTime$ = Symbol("PerformanceEntry.startTime");
dart.setFieldSignature(html$.PerformanceEntry, () => ({
  __proto__: dart.getFields(html$.PerformanceEntry.__proto__),
  [$duration]: dart.finalFieldType(core.num),
  [$entryType]: dart.finalFieldType(core.String),
  [$name]: dart.finalFieldType(core.String),
  [$startTime]: dart.finalFieldType(core.num)
}));
dart.registerExtension("PerformanceEntry", html$.PerformanceEntry);
html$.PerformanceLongTaskTiming = class PerformanceLongTaskTiming extends html$.PerformanceEntry {
  get [$attribution]() {
    return this.attribution;
  }
};
dart.addTypeTests(html$.PerformanceLongTaskTiming);
const attribution = Symbol("PerformanceLongTaskTiming.attribution");
dart.setFieldSignature(html$.PerformanceLongTaskTiming, () => ({
  __proto__: dart.getFields(html$.PerformanceLongTaskTiming.__proto__),
  [$attribution]: dart.finalFieldType(ListOfTaskAttributionTiming())
}));
dart.registerExtension("PerformanceLongTaskTiming", html$.PerformanceLongTaskTiming);
html$.PerformanceMark = class PerformanceMark extends html$.PerformanceEntry {};
dart.addTypeTests(html$.PerformanceMark);
dart.registerExtension("PerformanceMark", html$.PerformanceMark);
html$.PerformanceMeasure = class PerformanceMeasure extends html$.PerformanceEntry {};
dart.addTypeTests(html$.PerformanceMeasure);
dart.registerExtension("PerformanceMeasure", html$.PerformanceMeasure);
html$.PerformanceNavigation = class PerformanceNavigation extends _interceptors.Interceptor {
  get [$redirectCount]() {
    return this.redirectCount;
  }
  get [$type]() {
    return this.type;
  }
};
dart.addTypeTests(html$.PerformanceNavigation);
const redirectCount = Symbol("PerformanceNavigation.redirectCount");
const type$24 = Symbol("PerformanceNavigation.type");
dart.setFieldSignature(html$.PerformanceNavigation, () => ({
  __proto__: dart.getFields(html$.PerformanceNavigation.__proto__),
  [$redirectCount]: dart.finalFieldType(core.int),
  [$type]: dart.finalFieldType(core.int)
}));
dart.defineLazy(html$.PerformanceNavigation, {
  /*html$.PerformanceNavigation.TYPE_BACK_FORWARD*/get TYPE_BACK_FORWARD() {
    return 2;
  },
  /*html$.PerformanceNavigation.TYPE_NAVIGATE*/get TYPE_NAVIGATE() {
    return 0;
  },
  /*html$.PerformanceNavigation.TYPE_RELOAD*/get TYPE_RELOAD() {
    return 1;
  },
  /*html$.PerformanceNavigation.TYPE_RESERVED*/get TYPE_RESERVED() {
    return 255;
  }
});
dart.registerExtension("PerformanceNavigation", html$.PerformanceNavigation);
html$.PerformanceResourceTiming = class PerformanceResourceTiming extends html$.PerformanceEntry {
  get [$connectEnd]() {
    return this.connectEnd;
  }
  get [$connectStart]() {
    return this.connectStart;
  }
  get [$decodedBodySize]() {
    return this.decodedBodySize;
  }
  get [$domainLookupEnd]() {
    return this.domainLookupEnd;
  }
  get [$domainLookupStart]() {
    return this.domainLookupStart;
  }
  get [$encodedBodySize]() {
    return this.encodedBodySize;
  }
  get [$fetchStart]() {
    return this.fetchStart;
  }
  get [$initiatorType]() {
    return this.initiatorType;
  }
  get [$nextHopProtocol]() {
    return this.nextHopProtocol;
  }
  get [$redirectEnd]() {
    return this.redirectEnd;
  }
  get [$redirectStart]() {
    return this.redirectStart;
  }
  get [$requestStart]() {
    return this.requestStart;
  }
  get [$responseEnd]() {
    return this.responseEnd;
  }
  get [$responseStart]() {
    return this.responseStart;
  }
  get [$secureConnectionStart]() {
    return this.secureConnectionStart;
  }
  get [$serverTiming]() {
    return this.serverTiming;
  }
  get [$transferSize]() {
    return this.transferSize;
  }
  get [$workerStart]() {
    return this.workerStart;
  }
};
dart.addTypeTests(html$.PerformanceResourceTiming);
const connectEnd = Symbol("PerformanceResourceTiming.connectEnd");
const connectStart = Symbol("PerformanceResourceTiming.connectStart");
const decodedBodySize = Symbol("PerformanceResourceTiming.decodedBodySize");
const domainLookupEnd = Symbol("PerformanceResourceTiming.domainLookupEnd");
const domainLookupStart = Symbol("PerformanceResourceTiming.domainLookupStart");
const encodedBodySize = Symbol("PerformanceResourceTiming.encodedBodySize");
const fetchStart = Symbol("PerformanceResourceTiming.fetchStart");
const initiatorType = Symbol("PerformanceResourceTiming.initiatorType");
const nextHopProtocol = Symbol("PerformanceResourceTiming.nextHopProtocol");
const redirectEnd = Symbol("PerformanceResourceTiming.redirectEnd");
const redirectStart = Symbol("PerformanceResourceTiming.redirectStart");
const requestStart = Symbol("PerformanceResourceTiming.requestStart");
const responseEnd = Symbol("PerformanceResourceTiming.responseEnd");
const responseStart = Symbol("PerformanceResourceTiming.responseStart");
const secureConnectionStart = Symbol("PerformanceResourceTiming.secureConnectionStart");
const serverTiming = Symbol("PerformanceResourceTiming.serverTiming");
const transferSize = Symbol("PerformanceResourceTiming.transferSize");
const workerStart = Symbol("PerformanceResourceTiming.workerStart");
dart.setFieldSignature(html$.PerformanceResourceTiming, () => ({
  __proto__: dart.getFields(html$.PerformanceResourceTiming.__proto__),
  [$connectEnd]: dart.finalFieldType(core.num),
  [$connectStart]: dart.finalFieldType(core.num),
  [$decodedBodySize]: dart.finalFieldType(core.int),
  [$domainLookupEnd]: dart.finalFieldType(core.num),
  [$domainLookupStart]: dart.finalFieldType(core.num),
  [$encodedBodySize]: dart.finalFieldType(core.int),
  [$fetchStart]: dart.finalFieldType(core.num),
  [$initiatorType]: dart.finalFieldType(core.String),
  [$nextHopProtocol]: dart.finalFieldType(core.String),
  [$redirectEnd]: dart.finalFieldType(core.num),
  [$redirectStart]: dart.finalFieldType(core.num),
  [$requestStart]: dart.finalFieldType(core.num),
  [$responseEnd]: dart.finalFieldType(core.num),
  [$responseStart]: dart.finalFieldType(core.num),
  [$secureConnectionStart]: dart.finalFieldType(core.num),
  [$serverTiming]: dart.finalFieldType(ListOfPerformanceServerTiming()),
  [$transferSize]: dart.finalFieldType(core.int),
  [$workerStart]: dart.finalFieldType(core.num)
}));
dart.registerExtension("PerformanceResourceTiming", html$.PerformanceResourceTiming);
html$.PerformanceNavigationTiming = class PerformanceNavigationTiming extends html$.PerformanceResourceTiming {
  get [$domComplete]() {
    return this.domComplete;
  }
  get [$domContentLoadedEventEnd]() {
    return this.domContentLoadedEventEnd;
  }
  get [$domContentLoadedEventStart]() {
    return this.domContentLoadedEventStart;
  }
  get [$domInteractive]() {
    return this.domInteractive;
  }
  get [$loadEventEnd]() {
    return this.loadEventEnd;
  }
  get [$loadEventStart]() {
    return this.loadEventStart;
  }
  get [$redirectCount]() {
    return this.redirectCount;
  }
  get [$type]() {
    return this.type;
  }
  get [$unloadEventEnd]() {
    return this.unloadEventEnd;
  }
  get [$unloadEventStart]() {
    return this.unloadEventStart;
  }
};
dart.addTypeTests(html$.PerformanceNavigationTiming);
const domComplete = Symbol("PerformanceNavigationTiming.domComplete");
const domContentLoadedEventEnd = Symbol("PerformanceNavigationTiming.domContentLoadedEventEnd");
const domContentLoadedEventStart = Symbol("PerformanceNavigationTiming.domContentLoadedEventStart");
const domInteractive = Symbol("PerformanceNavigationTiming.domInteractive");
const loadEventEnd = Symbol("PerformanceNavigationTiming.loadEventEnd");
const loadEventStart = Symbol("PerformanceNavigationTiming.loadEventStart");
const redirectCount$ = Symbol("PerformanceNavigationTiming.redirectCount");
const type$25 = Symbol("PerformanceNavigationTiming.type");
const unloadEventEnd = Symbol("PerformanceNavigationTiming.unloadEventEnd");
const unloadEventStart = Symbol("PerformanceNavigationTiming.unloadEventStart");
dart.setFieldSignature(html$.PerformanceNavigationTiming, () => ({
  __proto__: dart.getFields(html$.PerformanceNavigationTiming.__proto__),
  [$domComplete]: dart.finalFieldType(core.num),
  [$domContentLoadedEventEnd]: dart.finalFieldType(core.num),
  [$domContentLoadedEventStart]: dart.finalFieldType(core.num),
  [$domInteractive]: dart.finalFieldType(core.num),
  [$loadEventEnd]: dart.finalFieldType(core.num),
  [$loadEventStart]: dart.finalFieldType(core.num),
  [$redirectCount]: dart.finalFieldType(core.int),
  [$type]: dart.finalFieldType(core.String),
  [$unloadEventEnd]: dart.finalFieldType(core.num),
  [$unloadEventStart]: dart.finalFieldType(core.num)
}));
dart.registerExtension("PerformanceNavigationTiming", html$.PerformanceNavigationTiming);
html$.PerformanceObserver = class PerformanceObserver$ extends _interceptors.Interceptor {
  static new(callback) {
    let callback_1 = _js_helper.convertDartClosureToJS(PerformanceObserverEntryListAndPerformanceObserverTovoid(), callback, 2);
    return html$.PerformanceObserver._create_1(callback_1);
  }
  static _create_1(callback) {
    return new PerformanceObserver(callback);
  }
  [$disconnect](...args) {
    return this.disconnect.apply(this, args);
  }
  [$observe](options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    this[_observe_1$](options_1);
    return;
  }
  [_observe_1$](...args) {
    return this.observe.apply(this, args);
  }
};
dart.addTypeTests(html$.PerformanceObserver);
dart.setMethodSignature(html$.PerformanceObserver, () => ({
  __proto__: dart.getMethods(html$.PerformanceObserver.__proto__),
  [$disconnect]: dart.fnType(dart.void, []),
  [$observe]: dart.fnType(dart.void, [core.Map]),
  [_observe_1$]: dart.fnType(dart.void, [dart.dynamic])
}));
dart.registerExtension("PerformanceObserver", html$.PerformanceObserver);
html$.PerformanceObserverEntryList = class PerformanceObserverEntryList extends _interceptors.Interceptor {
  [$getEntries](...args) {
    return this.getEntries.apply(this, args);
  }
  [$getEntriesByName](...args) {
    return this.getEntriesByName.apply(this, args);
  }
  [$getEntriesByType](...args) {
    return this.getEntriesByType.apply(this, args);
  }
};
dart.addTypeTests(html$.PerformanceObserverEntryList);
dart.setMethodSignature(html$.PerformanceObserverEntryList, () => ({
  __proto__: dart.getMethods(html$.PerformanceObserverEntryList.__proto__),
  [$getEntries]: dart.fnType(core.List$(html$.PerformanceEntry), []),
  [$getEntriesByName]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String, core.String]),
  [$getEntriesByType]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String])
}));
dart.registerExtension("PerformanceObserverEntryList", html$.PerformanceObserverEntryList);
html$.PerformancePaintTiming = class PerformancePaintTiming extends html$.PerformanceEntry {};
dart.addTypeTests(html$.PerformancePaintTiming);
dart.registerExtension("PerformancePaintTiming", html$.PerformancePaintTiming);
html$.PerformanceServerTiming = class PerformanceServerTiming extends _interceptors.Interceptor {
  get [$description]() {
    return this.description;
  }
  get [$duration]() {
    return this.duration;
  }
  get [$name]() {
    return this.name;
  }
};
dart.addTypeTests(html$.PerformanceServerTiming);
const description$0 = Symbol("PerformanceServerTiming.description");
const duration$3 = Symbol("PerformanceServerTiming.duration");
const name$31 = Symbol("PerformanceServerTiming.name");
dart.setFieldSignature(html$.PerformanceServerTiming, () => ({
  __proto__: dart.getFields(html$.PerformanceServerTiming.__proto__),
  [$description]: dart.finalFieldType(core.String),
  [$duration]: dart.finalFieldType(core.num),
  [$name]: dart.finalFieldType(core.String)
}));
dart.registerExtension("PerformanceServerTiming", html$.PerformanceServerTiming);
html$.PerformanceTiming = class PerformanceTiming extends _interceptors.Interceptor {
  get [$connectEnd]() {
    return this.connectEnd;
  }
  get [$connectStart]() {
    return this.connectStart;
  }
  get [$domComplete]() {
    return this.domComplete;
  }
  get [$domContentLoadedEventEnd]() {
    return this.domContentLoadedEventEnd;
  }
  get [$domContentLoadedEventStart]() {
    return this.domContentLoadedEventStart;
  }
  get [$domInteractive]() {
    return this.domInteractive;
  }
  get [$domLoading]() {
    return this.domLoading;
  }
  get [$domainLookupEnd]() {
    return this.domainLookupEnd;
  }
  get [$domainLookupStart]() {
    return this.domainLookupStart;
  }
  get [$fetchStart]() {
    return this.fetchStart;
  }
  get [$loadEventEnd]() {
    return this.loadEventEnd;
  }
  get [$loadEventStart]() {
    return this.loadEventStart;
  }
  get [$navigationStart]() {
    return this.navigationStart;
  }
  get [$redirectEnd]() {
    return this.redirectEnd;
  }
  get [$redirectStart]() {
    return this.redirectStart;
  }
  get [$requestStart]() {
    return this.requestStart;
  }
  get [$responseEnd]() {
    return this.responseEnd;
  }
  get [$responseStart]() {
    return this.responseStart;
  }
  get [$secureConnectionStart]() {
    return this.secureConnectionStart;
  }
  get [$unloadEventEnd]() {
    return this.unloadEventEnd;
  }
  get [$unloadEventStart]() {
    return this.unloadEventStart;
  }
};
dart.addTypeTests(html$.PerformanceTiming);
const connectEnd$ = Symbol("PerformanceTiming.connectEnd");
const connectStart$ = Symbol("PerformanceTiming.connectStart");
const domComplete$ = Symbol("PerformanceTiming.domComplete");
const domContentLoadedEventEnd$ = Symbol("PerformanceTiming.domContentLoadedEventEnd");
const domContentLoadedEventStart$ = Symbol("PerformanceTiming.domContentLoadedEventStart");
const domInteractive$ = Symbol("PerformanceTiming.domInteractive");
const domLoading = Symbol("PerformanceTiming.domLoading");
const domainLookupEnd$ = Symbol("PerformanceTiming.domainLookupEnd");
const domainLookupStart$ = Symbol("PerformanceTiming.domainLookupStart");
const fetchStart$ = Symbol("PerformanceTiming.fetchStart");
const loadEventEnd$ = Symbol("PerformanceTiming.loadEventEnd");
const loadEventStart$ = Symbol("PerformanceTiming.loadEventStart");
const navigationStart = Symbol("PerformanceTiming.navigationStart");
const redirectEnd$ = Symbol("PerformanceTiming.redirectEnd");
const redirectStart$ = Symbol("PerformanceTiming.redirectStart");
const requestStart$ = Symbol("PerformanceTiming.requestStart");
const responseEnd$ = Symbol("PerformanceTiming.responseEnd");
const responseStart$ = Symbol("PerformanceTiming.responseStart");
const secureConnectionStart$ = Symbol("PerformanceTiming.secureConnectionStart");
const unloadEventEnd$ = Symbol("PerformanceTiming.unloadEventEnd");
const unloadEventStart$ = Symbol("PerformanceTiming.unloadEventStart");
dart.setFieldSignature(html$.PerformanceTiming, () => ({
  __proto__: dart.getFields(html$.PerformanceTiming.__proto__),
  [$connectEnd]: dart.finalFieldType(core.int),
  [$connectStart]: dart.finalFieldType(core.int),
  [$domComplete]: dart.finalFieldType(core.int),
  [$domContentLoadedEventEnd]: dart.finalFieldType(core.int),
  [$domContentLoadedEventStart]: dart.finalFieldType(core.int),
  [$domInteractive]: dart.finalFieldType(core.int),
  [$domLoading]: dart.finalFieldType(core.int),
  [$domainLookupEnd]: dart.finalFieldType(core.int),
  [$domainLookupStart]: dart.finalFieldType(core.int),
  [$fetchStart]: dart.finalFieldType(core.int),
  [$loadEventEnd]: dart.finalFieldType(core.int),
  [$loadEventStart]: dart.finalFieldType(core.int),
  [$navigationStart]: dart.finalFieldType(core.int),
  [$redirectEnd]: dart.finalFieldType(core.int),
  [$redirectStart]: dart.finalFieldType(core.int),
  [$requestStart]: dart.finalFieldType(core.int),
  [$responseEnd]: dart.finalFieldType(core.int),
  [$responseStart]: dart.finalFieldType(core.int),
  [$secureConnectionStart]: dart.finalFieldType(core.int),
  [$unloadEventEnd]: dart.finalFieldType(core.int),
  [$unloadEventStart]: dart.finalFieldType(core.int)
}));
dart.registerExtension("PerformanceTiming", html$.PerformanceTiming);
html$.PermissionStatus = class PermissionStatus extends html$.EventTarget {
  get [$state]() {
    return this.state;
  }
  get [$onChange]() {
    return html$.PermissionStatus.changeEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.PermissionStatus);
const state$2 = Symbol("PermissionStatus.state");
dart.setGetterSignature(html$.PermissionStatus, () => ({
  __proto__: dart.getGetters(html$.PermissionStatus.__proto__),
  [$onChange]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.PermissionStatus, () => ({
  __proto__: dart.getFields(html$.PermissionStatus.__proto__),
  [$state]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.PermissionStatus, {
  /*html$.PermissionStatus.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  }
});
dart.registerExtension("PermissionStatus", html$.PermissionStatus);
html$.Permissions = class Permissions extends _interceptors.Interceptor {
  [$query](permission) {
    let permission_dict = html_common.convertDartToNative_Dictionary(permission);
    return html$.promiseToFuture(html$.PermissionStatus, this.query(permission_dict));
  }
  [$request](permissions) {
    let permissions_dict = html_common.convertDartToNative_Dictionary(permissions);
    return html$.promiseToFuture(html$.PermissionStatus, this.request(permissions_dict));
  }
  [$requestAll](permissions) {
    return html$.promiseToFuture(html$.PermissionStatus, this.requestAll(permissions));
  }
  [$revoke](permission) {
    let permission_dict = html_common.convertDartToNative_Dictionary(permission);
    return html$.promiseToFuture(html$.PermissionStatus, this.revoke(permission_dict));
  }
};
dart.addTypeTests(html$.Permissions);
dart.setMethodSignature(html$.Permissions, () => ({
  __proto__: dart.getMethods(html$.Permissions.__proto__),
  [$query]: dart.fnType(async.Future$(html$.PermissionStatus), [core.Map]),
  [$request]: dart.fnType(async.Future$(html$.PermissionStatus), [core.Map]),
  [$requestAll]: dart.fnType(async.Future$(html$.PermissionStatus), [core.List$(core.Map)]),
  [$revoke]: dart.fnType(async.Future$(html$.PermissionStatus), [core.Map])
}));
dart.registerExtension("Permissions", html$.Permissions);
html$.PhotoCapabilities = class PhotoCapabilities extends _interceptors.Interceptor {
  get [$fillLightMode]() {
    return this.fillLightMode;
  }
  get [$imageHeight]() {
    return this.imageHeight;
  }
  get [$imageWidth]() {
    return this.imageWidth;
  }
  get [$redEyeReduction]() {
    return this.redEyeReduction;
  }
};
dart.addTypeTests(html$.PhotoCapabilities);
const fillLightMode = Symbol("PhotoCapabilities.fillLightMode");
const imageHeight = Symbol("PhotoCapabilities.imageHeight");
const imageWidth = Symbol("PhotoCapabilities.imageWidth");
const redEyeReduction = Symbol("PhotoCapabilities.redEyeReduction");
dart.setFieldSignature(html$.PhotoCapabilities, () => ({
  __proto__: dart.getFields(html$.PhotoCapabilities.__proto__),
  [$fillLightMode]: dart.finalFieldType(core.List),
  [$imageHeight]: dart.finalFieldType(html$.MediaSettingsRange),
  [$imageWidth]: dart.finalFieldType(html$.MediaSettingsRange),
  [$redEyeReduction]: dart.finalFieldType(core.String)
}));
dart.registerExtension("PhotoCapabilities", html$.PhotoCapabilities);
html$.PictureElement = class PictureElement extends html$.HtmlElement {};
(html$.PictureElement.created = function() {
  html$.PictureElement.__proto__.created.call(this);
}).prototype = html$.PictureElement.prototype;
dart.addTypeTests(html$.PictureElement);
dart.registerExtension("HTMLPictureElement", html$.PictureElement);
html$.Plugin = class Plugin extends _interceptors.Interceptor {
  get [$description]() {
    return this.description;
  }
  get [$filename]() {
    return this.filename;
  }
  get [$length]() {
    return this.length;
  }
  get [$name]() {
    return this.name;
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
};
dart.addTypeTests(html$.Plugin);
const description$1 = Symbol("Plugin.description");
const filename$ = Symbol("Plugin.filename");
const length$11 = Symbol("Plugin.length");
const name$32 = Symbol("Plugin.name");
dart.setMethodSignature(html$.Plugin, () => ({
  __proto__: dart.getMethods(html$.Plugin.__proto__),
  [$item]: dart.fnType(html$.MimeType, [core.int]),
  [$namedItem]: dart.fnType(html$.MimeType, [core.String])
}));
dart.setFieldSignature(html$.Plugin, () => ({
  __proto__: dart.getFields(html$.Plugin.__proto__),
  [$description]: dart.finalFieldType(core.String),
  [$filename]: dart.finalFieldType(core.String),
  [$length]: dart.finalFieldType(core.int),
  [$name]: dart.finalFieldType(core.String)
}));
dart.registerExtension("Plugin", html$.Plugin);
const Interceptor_ListMixin$$4 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$4.new = function() {
  Interceptor_ListMixin$$4.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$4.prototype;
dart.applyMixin(Interceptor_ListMixin$$4, collection.ListMixin$(html$.Plugin));
const Interceptor_ImmutableListMixin$$4 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$4 {};
(Interceptor_ImmutableListMixin$$4.new = function() {
  Interceptor_ImmutableListMixin$$4.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$4.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$4, html$.ImmutableListMixin$(html$.Plugin));
html$.PluginArray = class PluginArray extends Interceptor_ImmutableListMixin$$4 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.Plugin._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
  [$refresh](...args) {
    return this.refresh.apply(this, args);
  }
};
html$.PluginArray.prototype[dart.isList] = true;
dart.addTypeTests(html$.PluginArray);
html$.PluginArray[dart.implements] = () => [JavaScriptIndexingBehaviorOfPlugin(), ListOfPlugin()];
dart.setMethodSignature(html$.PluginArray, () => ({
  __proto__: dart.getMethods(html$.PluginArray.__proto__),
  [$_get]: dart.fnType(html$.Plugin, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.Plugin, [core.int]),
  [$item]: dart.fnType(html$.Plugin, [core.int]),
  [$namedItem]: dart.fnType(html$.Plugin, [core.String]),
  [$refresh]: dart.fnType(dart.void, [core.bool])
}));
dart.setGetterSignature(html$.PluginArray, () => ({
  __proto__: dart.getGetters(html$.PluginArray.__proto__),
  [$length]: core.int,
  [$first]: html$.Plugin,
  [$last]: html$.Plugin,
  [$single]: html$.Plugin
}));
dart.setSetterSignature(html$.PluginArray, () => ({
  __proto__: dart.getSetters(html$.PluginArray.__proto__),
  [$length]: core.int
}));
dart.registerExtension("PluginArray", html$.PluginArray);
html$.PointerEvent = class PointerEvent$ extends html$.MouseEvent {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.PointerEvent._create_1(type, eventInitDict_1);
    }
    return html$.PointerEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new PointerEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new PointerEvent(type);
  }
  get [$height]() {
    return this.height;
  }
  get [$isPrimary]() {
    return this.isPrimary;
  }
  get [$pointerId]() {
    return this.pointerId;
  }
  get [$pointerType]() {
    return this.pointerType;
  }
  get [$pressure]() {
    return this.pressure;
  }
  get [$tangentialPressure]() {
    return this.tangentialPressure;
  }
  get [$tiltX]() {
    return this.tiltX;
  }
  get [$tiltY]() {
    return this.tiltY;
  }
  get [$twist]() {
    return this.twist;
  }
  get [$width]() {
    return this.width;
  }
  [$getCoalescedEvents](...args) {
    return this.getCoalescedEvents.apply(this, args);
  }
};
dart.addTypeTests(html$.PointerEvent);
const height$9 = Symbol("PointerEvent.height");
const isPrimary = Symbol("PointerEvent.isPrimary");
const pointerId = Symbol("PointerEvent.pointerId");
const pointerType = Symbol("PointerEvent.pointerType");
const pressure = Symbol("PointerEvent.pressure");
const tangentialPressure = Symbol("PointerEvent.tangentialPressure");
const tiltX = Symbol("PointerEvent.tiltX");
const tiltY = Symbol("PointerEvent.tiltY");
const twist = Symbol("PointerEvent.twist");
const width$9 = Symbol("PointerEvent.width");
dart.setMethodSignature(html$.PointerEvent, () => ({
  __proto__: dart.getMethods(html$.PointerEvent.__proto__),
  [$getCoalescedEvents]: dart.fnType(core.List$(html$.PointerEvent), [])
}));
dart.setFieldSignature(html$.PointerEvent, () => ({
  __proto__: dart.getFields(html$.PointerEvent.__proto__),
  [$height]: dart.finalFieldType(core.num),
  [$isPrimary]: dart.finalFieldType(core.bool),
  [$pointerId]: dart.finalFieldType(core.int),
  [$pointerType]: dart.finalFieldType(core.String),
  [$pressure]: dart.finalFieldType(core.num),
  [$tangentialPressure]: dart.finalFieldType(core.num),
  [$tiltX]: dart.finalFieldType(core.int),
  [$tiltY]: dart.finalFieldType(core.int),
  [$twist]: dart.finalFieldType(core.int),
  [$width]: dart.finalFieldType(core.num)
}));
dart.registerExtension("PointerEvent", html$.PointerEvent);
html$.PopStateEvent = class PopStateEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.PopStateEvent._create_1(type, eventInitDict_1);
    }
    return html$.PopStateEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new PopStateEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new PopStateEvent(type);
  }
  get [$state]() {
    return html_common.convertNativeToDart_SerializedScriptValue(this[_get_state]);
  }
  get [_get_state]() {
    return this.state;
  }
};
dart.addTypeTests(html$.PopStateEvent);
dart.setGetterSignature(html$.PopStateEvent, () => ({
  __proto__: dart.getGetters(html$.PopStateEvent.__proto__),
  [$state]: dart.dynamic
}));
dart.setFieldSignature(html$.PopStateEvent, () => ({
  __proto__: dart.getFields(html$.PopStateEvent.__proto__),
  [_get_state]: dart.finalFieldType(dart.dynamic)
}));
dart.registerExtension("PopStateEvent", html$.PopStateEvent);
html$.PositionError = class PositionError extends _interceptors.Interceptor {
  get [$code]() {
    return this.code;
  }
  get [$message]() {
    return this.message;
  }
};
dart.addTypeTests(html$.PositionError);
const code$1 = Symbol("PositionError.code");
const message$25 = Symbol("PositionError.message");
dart.setFieldSignature(html$.PositionError, () => ({
  __proto__: dart.getFields(html$.PositionError.__proto__),
  [$code]: dart.finalFieldType(core.int),
  [$message]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.PositionError, {
  /*html$.PositionError.PERMISSION_DENIED*/get PERMISSION_DENIED() {
    return 1;
  },
  /*html$.PositionError.POSITION_UNAVAILABLE*/get POSITION_UNAVAILABLE() {
    return 2;
  },
  /*html$.PositionError.TIMEOUT*/get TIMEOUT() {
    return 3;
  }
});
dart.registerExtension("PositionError", html$.PositionError);
html$.PreElement = class PreElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("pre");
  }
};
(html$.PreElement.created = function() {
  html$.PreElement.__proto__.created.call(this);
}).prototype = html$.PreElement.prototype;
dart.addTypeTests(html$.PreElement);
dart.registerExtension("HTMLPreElement", html$.PreElement);
html$.Presentation = class Presentation extends _interceptors.Interceptor {
  get [$defaultRequest]() {
    return this.defaultRequest;
  }
  set [$defaultRequest](value) {
    this.defaultRequest = value;
  }
  get [$receiver]() {
    return this.receiver;
  }
};
dart.addTypeTests(html$.Presentation);
const defaultRequest = Symbol("Presentation.defaultRequest");
const receiver = Symbol("Presentation.receiver");
dart.setFieldSignature(html$.Presentation, () => ({
  __proto__: dart.getFields(html$.Presentation.__proto__),
  [$defaultRequest]: dart.fieldType(html$.PresentationRequest),
  [$receiver]: dart.finalFieldType(html$.PresentationReceiver)
}));
dart.registerExtension("Presentation", html$.Presentation);
html$.PresentationAvailability = class PresentationAvailability extends html$.EventTarget {
  get [$value]() {
    return this.value;
  }
  get [$onChange]() {
    return html$.PresentationAvailability.changeEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.PresentationAvailability);
const value$14 = Symbol("PresentationAvailability.value");
dart.setGetterSignature(html$.PresentationAvailability, () => ({
  __proto__: dart.getGetters(html$.PresentationAvailability.__proto__),
  [$onChange]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.PresentationAvailability, () => ({
  __proto__: dart.getFields(html$.PresentationAvailability.__proto__),
  [$value]: dart.finalFieldType(core.bool)
}));
dart.defineLazy(html$.PresentationAvailability, {
  /*html$.PresentationAvailability.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  }
});
dart.registerExtension("PresentationAvailability", html$.PresentationAvailability);
html$.PresentationConnection = class PresentationConnection extends html$.EventTarget {
  get [$binaryType]() {
    return this.binaryType;
  }
  set [$binaryType](value) {
    this.binaryType = value;
  }
  get [$id]() {
    return this.id;
  }
  get [$state]() {
    return this.state;
  }
  get [$url]() {
    return this.url;
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [$send](...args) {
    return this.send.apply(this, args);
  }
  [$terminate](...args) {
    return this.terminate.apply(this, args);
  }
  get [$onMessage]() {
    return html$.PresentationConnection.messageEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.PresentationConnection);
const binaryType = Symbol("PresentationConnection.binaryType");
const id$10 = Symbol("PresentationConnection.id");
const state$3 = Symbol("PresentationConnection.state");
const url$2 = Symbol("PresentationConnection.url");
dart.setMethodSignature(html$.PresentationConnection, () => ({
  __proto__: dart.getMethods(html$.PresentationConnection.__proto__),
  [$close]: dart.fnType(dart.void, []),
  [$send]: dart.fnType(dart.void, [dart.dynamic]),
  [$terminate]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.PresentationConnection, () => ({
  __proto__: dart.getGetters(html$.PresentationConnection.__proto__),
  [$onMessage]: async.Stream$(html$.MessageEvent)
}));
dart.setFieldSignature(html$.PresentationConnection, () => ({
  __proto__: dart.getFields(html$.PresentationConnection.__proto__),
  [$binaryType]: dart.fieldType(core.String),
  [$id]: dart.finalFieldType(core.String),
  [$state]: dart.finalFieldType(core.String),
  [$url]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.PresentationConnection, {
  /*html$.PresentationConnection.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  }
});
dart.registerExtension("PresentationConnection", html$.PresentationConnection);
html$.PresentationConnectionAvailableEvent = class PresentationConnectionAvailableEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.PresentationConnectionAvailableEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new PresentationConnectionAvailableEvent(type, eventInitDict);
  }
  get [$connection]() {
    return this.connection;
  }
};
dart.addTypeTests(html$.PresentationConnectionAvailableEvent);
const connection$0 = Symbol("PresentationConnectionAvailableEvent.connection");
dart.setFieldSignature(html$.PresentationConnectionAvailableEvent, () => ({
  __proto__: dart.getFields(html$.PresentationConnectionAvailableEvent.__proto__),
  [$connection]: dart.finalFieldType(html$.PresentationConnection)
}));
dart.registerExtension("PresentationConnectionAvailableEvent", html$.PresentationConnectionAvailableEvent);
html$.PresentationConnectionCloseEvent = class PresentationConnectionCloseEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.PresentationConnectionCloseEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new PresentationConnectionCloseEvent(type, eventInitDict);
  }
  get [$message]() {
    return this.message;
  }
  get [$reason]() {
    return this.reason;
  }
};
dart.addTypeTests(html$.PresentationConnectionCloseEvent);
const message$26 = Symbol("PresentationConnectionCloseEvent.message");
const reason$0 = Symbol("PresentationConnectionCloseEvent.reason");
dart.setFieldSignature(html$.PresentationConnectionCloseEvent, () => ({
  __proto__: dart.getFields(html$.PresentationConnectionCloseEvent.__proto__),
  [$message]: dart.finalFieldType(core.String),
  [$reason]: dart.finalFieldType(core.String)
}));
dart.registerExtension("PresentationConnectionCloseEvent", html$.PresentationConnectionCloseEvent);
html$.PresentationConnectionList = class PresentationConnectionList extends html$.EventTarget {
  get [$connections]() {
    return this.connections;
  }
};
dart.addTypeTests(html$.PresentationConnectionList);
const connections = Symbol("PresentationConnectionList.connections");
dart.setFieldSignature(html$.PresentationConnectionList, () => ({
  __proto__: dart.getFields(html$.PresentationConnectionList.__proto__),
  [$connections]: dart.finalFieldType(ListOfPresentationConnection())
}));
dart.registerExtension("PresentationConnectionList", html$.PresentationConnectionList);
html$.PresentationReceiver = class PresentationReceiver extends _interceptors.Interceptor {
  get [$connectionList]() {
    return html$.promiseToFuture(html$.PresentationConnectionList, this.connectionList);
  }
};
dart.addTypeTests(html$.PresentationReceiver);
dart.setGetterSignature(html$.PresentationReceiver, () => ({
  __proto__: dart.getGetters(html$.PresentationReceiver.__proto__),
  [$connectionList]: async.Future$(html$.PresentationConnectionList)
}));
dart.registerExtension("PresentationReceiver", html$.PresentationReceiver);
html$.PresentationRequest = class PresentationRequest$ extends html$.EventTarget {
  static new(url_OR_urls) {
    if (typeof url_OR_urls == 'string') {
      return html$.PresentationRequest._create_1(url_OR_urls);
    }
    if (ListOfString().is(url_OR_urls)) {
      let urls_1 = html_common.convertDartToNative_StringArray(url_OR_urls);
      return html$.PresentationRequest._create_2(urls_1);
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  static _create_1(url_OR_urls) {
    return new PresentationRequest(url_OR_urls);
  }
  static _create_2(url_OR_urls) {
    return new PresentationRequest(url_OR_urls);
  }
  [$getAvailability]() {
    return html$.promiseToFuture(html$.PresentationAvailability, this.getAvailability());
  }
  [$reconnect](id) {
    return html$.promiseToFuture(html$.PresentationConnection, this.reconnect(id));
  }
  [$start]() {
    return html$.promiseToFuture(html$.PresentationConnection, this.start());
  }
};
dart.addTypeTests(html$.PresentationRequest);
dart.setMethodSignature(html$.PresentationRequest, () => ({
  __proto__: dart.getMethods(html$.PresentationRequest.__proto__),
  [$getAvailability]: dart.fnType(async.Future$(html$.PresentationAvailability), []),
  [$reconnect]: dart.fnType(async.Future$(html$.PresentationConnection), [core.String]),
  [$start]: dart.fnType(async.Future$(html$.PresentationConnection), [])
}));
dart.registerExtension("PresentationRequest", html$.PresentationRequest);
html$.ProcessingInstruction = class ProcessingInstruction extends html$.CharacterData {
  get [$sheet]() {
    return this.sheet;
  }
  get [$target]() {
    return this.target;
  }
};
dart.addTypeTests(html$.ProcessingInstruction);
const sheet$ = Symbol("ProcessingInstruction.sheet");
const target$5 = Symbol("ProcessingInstruction.target");
dart.setFieldSignature(html$.ProcessingInstruction, () => ({
  __proto__: dart.getFields(html$.ProcessingInstruction.__proto__),
  [$sheet]: dart.finalFieldType(html$.StyleSheet),
  [$target]: dart.finalFieldType(core.String)
}));
dart.registerExtension("ProcessingInstruction", html$.ProcessingInstruction);
html$.ProgressElement = class ProgressElement extends html$.HtmlElement {
  static new() {
    return html$.ProgressElement._check(html$.document[$createElement]("progress"));
  }
  static get supported() {
    return html$.Element.isTagSupported("progress");
  }
  get [$labels]() {
    return this.labels;
  }
  get [$max]() {
    return this.max;
  }
  set [$max](value) {
    this.max = value;
  }
  get [$position]() {
    return this.position;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
};
(html$.ProgressElement.created = function() {
  this[labels$2] = null;
  this[max$3] = null;
  this[position$0] = null;
  this[value$15] = null;
  html$.ProgressElement.__proto__.created.call(this);
}).prototype = html$.ProgressElement.prototype;
dart.addTypeTests(html$.ProgressElement);
const labels$2 = Symbol("ProgressElement.labels");
const max$3 = Symbol("ProgressElement.max");
const position$0 = Symbol("ProgressElement.position");
const value$15 = Symbol("ProgressElement.value");
dart.setFieldSignature(html$.ProgressElement, () => ({
  __proto__: dart.getFields(html$.ProgressElement.__proto__),
  [$labels]: dart.finalFieldType(ListOfNode()),
  [$max]: dart.fieldType(core.num),
  [$position]: dart.finalFieldType(core.num),
  [$value]: dart.fieldType(core.num)
}));
dart.registerExtension("HTMLProgressElement", html$.ProgressElement);
html$.ProgressEvent = class ProgressEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.ProgressEvent._create_1(type, eventInitDict_1);
    }
    return html$.ProgressEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new ProgressEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new ProgressEvent(type);
  }
  get [$lengthComputable]() {
    return this.lengthComputable;
  }
  get [$loaded]() {
    return this.loaded;
  }
  get [$total]() {
    return this.total;
  }
};
dart.addTypeTests(html$.ProgressEvent);
const lengthComputable = Symbol("ProgressEvent.lengthComputable");
const loaded = Symbol("ProgressEvent.loaded");
const total$ = Symbol("ProgressEvent.total");
dart.setFieldSignature(html$.ProgressEvent, () => ({
  __proto__: dart.getFields(html$.ProgressEvent.__proto__),
  [$lengthComputable]: dart.finalFieldType(core.bool),
  [$loaded]: dart.finalFieldType(core.int),
  [$total]: dart.finalFieldType(core.int)
}));
dart.registerExtension("ProgressEvent", html$.ProgressEvent);
html$.PromiseRejectionEvent = class PromiseRejectionEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.PromiseRejectionEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new PromiseRejectionEvent(type, eventInitDict);
  }
  get [$promise]() {
    return html$.promiseToFuture(dart.dynamic, this.promise);
  }
  get [$reason]() {
    return this.reason;
  }
};
dart.addTypeTests(html$.PromiseRejectionEvent);
const reason$1 = Symbol("PromiseRejectionEvent.reason");
dart.setGetterSignature(html$.PromiseRejectionEvent, () => ({
  __proto__: dart.getGetters(html$.PromiseRejectionEvent.__proto__),
  [$promise]: async.Future
}));
dart.setFieldSignature(html$.PromiseRejectionEvent, () => ({
  __proto__: dart.getFields(html$.PromiseRejectionEvent.__proto__),
  [$reason]: dart.finalFieldType(core.Object)
}));
dart.registerExtension("PromiseRejectionEvent", html$.PromiseRejectionEvent);
html$.PublicKeyCredential = class PublicKeyCredential extends html$.Credential {
  get [$rawId]() {
    return this.rawId;
  }
  get [$response]() {
    return this.response;
  }
};
dart.addTypeTests(html$.PublicKeyCredential);
const rawId = Symbol("PublicKeyCredential.rawId");
const response$ = Symbol("PublicKeyCredential.response");
dart.setFieldSignature(html$.PublicKeyCredential, () => ({
  __proto__: dart.getFields(html$.PublicKeyCredential.__proto__),
  [$rawId]: dart.finalFieldType(typed_data.ByteBuffer),
  [$response]: dart.finalFieldType(html$.AuthenticatorResponse)
}));
dart.registerExtension("PublicKeyCredential", html$.PublicKeyCredential);
html$.PushEvent = class PushEvent$ extends html$.ExtendableEvent {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.PushEvent._create_1(type, eventInitDict_1);
    }
    return html$.PushEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new PushEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new PushEvent(type);
  }
  get [$data]() {
    return this.data;
  }
};
dart.addTypeTests(html$.PushEvent);
const data$7 = Symbol("PushEvent.data");
dart.setFieldSignature(html$.PushEvent, () => ({
  __proto__: dart.getFields(html$.PushEvent.__proto__),
  [$data]: dart.finalFieldType(html$.PushMessageData)
}));
dart.registerExtension("PushEvent", html$.PushEvent);
html$.PushManager = class PushManager extends _interceptors.Interceptor {
  [$getSubscription]() {
    return html$.promiseToFuture(html$.PushSubscription, this.getSubscription());
  }
  [$permissionState](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.permissionState(options_dict));
  }
  [$subscribe](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(html$.PushSubscription, this.subscribe(options_dict));
  }
};
dart.addTypeTests(html$.PushManager);
dart.setMethodSignature(html$.PushManager, () => ({
  __proto__: dart.getMethods(html$.PushManager.__proto__),
  [$getSubscription]: dart.fnType(async.Future$(html$.PushSubscription), []),
  [$permissionState]: dart.fnType(async.Future, [], [core.Map]),
  [$subscribe]: dart.fnType(async.Future$(html$.PushSubscription), [], [core.Map])
}));
dart.defineLazy(html$.PushManager, {
  /*html$.PushManager.supportedContentEncodings*/get supportedContentEncodings() {
    return null;
  }
});
dart.registerExtension("PushManager", html$.PushManager);
html$.PushMessageData = class PushMessageData extends _interceptors.Interceptor {
  [$arrayBuffer](...args) {
    return this.arrayBuffer.apply(this, args);
  }
  [$blob](...args) {
    return this.blob.apply(this, args);
  }
  [$json](...args) {
    return this.json.apply(this, args);
  }
  [$text](...args) {
    return this.text.apply(this, args);
  }
};
dart.addTypeTests(html$.PushMessageData);
dart.setMethodSignature(html$.PushMessageData, () => ({
  __proto__: dart.getMethods(html$.PushMessageData.__proto__),
  [$arrayBuffer]: dart.fnType(typed_data.ByteBuffer, []),
  [$blob]: dart.fnType(html$.Blob, []),
  [$json]: dart.fnType(core.Object, []),
  [$text]: dart.fnType(core.String, [])
}));
dart.registerExtension("PushMessageData", html$.PushMessageData);
html$.PushSubscription = class PushSubscription extends _interceptors.Interceptor {
  get [$endpoint]() {
    return this.endpoint;
  }
  get [$expirationTime]() {
    return this.expirationTime;
  }
  get [$options]() {
    return this.options;
  }
  [$getKey](...args) {
    return this.getKey.apply(this, args);
  }
  [$unsubscribe]() {
    return html$.promiseToFuture(core.bool, this.unsubscribe());
  }
};
dart.addTypeTests(html$.PushSubscription);
const endpoint = Symbol("PushSubscription.endpoint");
const expirationTime = Symbol("PushSubscription.expirationTime");
const options$0 = Symbol("PushSubscription.options");
dart.setMethodSignature(html$.PushSubscription, () => ({
  __proto__: dart.getMethods(html$.PushSubscription.__proto__),
  [$getKey]: dart.fnType(typed_data.ByteBuffer, [core.String]),
  [$unsubscribe]: dart.fnType(async.Future$(core.bool), [])
}));
dart.setFieldSignature(html$.PushSubscription, () => ({
  __proto__: dart.getFields(html$.PushSubscription.__proto__),
  [$endpoint]: dart.finalFieldType(core.String),
  [$expirationTime]: dart.finalFieldType(core.int),
  [$options]: dart.finalFieldType(html$.PushSubscriptionOptions)
}));
dart.registerExtension("PushSubscription", html$.PushSubscription);
html$.PushSubscriptionOptions = class PushSubscriptionOptions extends _interceptors.Interceptor {
  get [$applicationServerKey]() {
    return this.applicationServerKey;
  }
  get [$userVisibleOnly]() {
    return this.userVisibleOnly;
  }
};
dart.addTypeTests(html$.PushSubscriptionOptions);
const applicationServerKey = Symbol("PushSubscriptionOptions.applicationServerKey");
const userVisibleOnly = Symbol("PushSubscriptionOptions.userVisibleOnly");
dart.setFieldSignature(html$.PushSubscriptionOptions, () => ({
  __proto__: dart.getFields(html$.PushSubscriptionOptions.__proto__),
  [$applicationServerKey]: dart.finalFieldType(typed_data.ByteBuffer),
  [$userVisibleOnly]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("PushSubscriptionOptions", html$.PushSubscriptionOptions);
html$.QuoteElement = class QuoteElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("q");
  }
  get [$cite]() {
    return this.cite;
  }
  set [$cite](value) {
    this.cite = value;
  }
};
(html$.QuoteElement.created = function() {
  this[cite$] = null;
  html$.QuoteElement.__proto__.created.call(this);
}).prototype = html$.QuoteElement.prototype;
dart.addTypeTests(html$.QuoteElement);
const cite$ = Symbol("QuoteElement.cite");
dart.setFieldSignature(html$.QuoteElement, () => ({
  __proto__: dart.getFields(html$.QuoteElement.__proto__),
  [$cite]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLQuoteElement", html$.QuoteElement);
html$.Range = class Range extends _interceptors.Interceptor {
  static new() {
    return html$.document.createRange();
  }
  static fromPoint(point) {
    return html$.document[_caretRangeFromPoint](dart.asInt(point.x), dart.asInt(point.y));
  }
  get [$collapsed]() {
    return this.collapsed;
  }
  get [$commonAncestorContainer]() {
    return this.commonAncestorContainer;
  }
  get [$endContainer]() {
    return this.endContainer;
  }
  get [$endOffset]() {
    return this.endOffset;
  }
  get [$startContainer]() {
    return this.startContainer;
  }
  get [$startOffset]() {
    return this.startOffset;
  }
  [$cloneContents](...args) {
    return this.cloneContents.apply(this, args);
  }
  [$cloneRange](...args) {
    return this.cloneRange.apply(this, args);
  }
  [$collapse](...args) {
    return this.collapse.apply(this, args);
  }
  [$compareBoundaryPoints](...args) {
    return this.compareBoundaryPoints.apply(this, args);
  }
  [$comparePoint](...args) {
    return this.comparePoint.apply(this, args);
  }
  [$createContextualFragment](...args) {
    return this.createContextualFragment.apply(this, args);
  }
  [$deleteContents](...args) {
    return this.deleteContents.apply(this, args);
  }
  [$detach](...args) {
    return this.detach.apply(this, args);
  }
  [$expand](...args) {
    return this.expand.apply(this, args);
  }
  [$extractContents](...args) {
    return this.extractContents.apply(this, args);
  }
  [$getBoundingClientRect](...args) {
    return this.getBoundingClientRect.apply(this, args);
  }
  [_getClientRects](...args) {
    return this.getClientRects.apply(this, args);
  }
  [$insertNode](...args) {
    return this.insertNode.apply(this, args);
  }
  [$isPointInRange](...args) {
    return this.isPointInRange.apply(this, args);
  }
  [$selectNode](...args) {
    return this.selectNode.apply(this, args);
  }
  [$selectNodeContents](...args) {
    return this.selectNodeContents.apply(this, args);
  }
  [$setEnd](...args) {
    return this.setEnd.apply(this, args);
  }
  [$setEndAfter](...args) {
    return this.setEndAfter.apply(this, args);
  }
  [$setEndBefore](...args) {
    return this.setEndBefore.apply(this, args);
  }
  [$setStart](...args) {
    return this.setStart.apply(this, args);
  }
  [$setStartAfter](...args) {
    return this.setStartAfter.apply(this, args);
  }
  [$setStartBefore](...args) {
    return this.setStartBefore.apply(this, args);
  }
  [$surroundContents](...args) {
    return this.surroundContents.apply(this, args);
  }
  [$getClientRects]() {
    let value = this[_getClientRects]();
    let jsProto = value.prototype;
    if (jsProto == null) {
      value.prototype = Object.create(null);
    }
    _js_helper.applyExtension("DOMRectList", value);
    return value;
  }
  static get supportsCreateContextualFragment() {
    return "createContextualFragment" in window.Range.prototype;
  }
};
dart.addTypeTests(html$.Range);
const collapsed = Symbol("Range.collapsed");
const commonAncestorContainer = Symbol("Range.commonAncestorContainer");
const endContainer = Symbol("Range.endContainer");
const endOffset = Symbol("Range.endOffset");
const startContainer = Symbol("Range.startContainer");
const startOffset = Symbol("Range.startOffset");
dart.setMethodSignature(html$.Range, () => ({
  __proto__: dart.getMethods(html$.Range.__proto__),
  [$cloneContents]: dart.fnType(html$.DocumentFragment, []),
  [$cloneRange]: dart.fnType(html$.Range, []),
  [$collapse]: dart.fnType(dart.void, [], [core.bool]),
  [$compareBoundaryPoints]: dart.fnType(core.int, [core.int, html$.Range]),
  [$comparePoint]: dart.fnType(core.int, [html$.Node, core.int]),
  [$createContextualFragment]: dart.fnType(html$.DocumentFragment, [core.String]),
  [$deleteContents]: dart.fnType(dart.void, []),
  [$detach]: dart.fnType(dart.void, []),
  [$expand]: dart.fnType(dart.void, [core.String]),
  [$extractContents]: dart.fnType(html$.DocumentFragment, []),
  [$getBoundingClientRect]: dart.fnType(math.Rectangle$(core.num), []),
  [_getClientRects]: dart.fnType(core.List$(math.Rectangle$(core.num)), []),
  [$insertNode]: dart.fnType(dart.void, [html$.Node]),
  [$isPointInRange]: dart.fnType(core.bool, [html$.Node, core.int]),
  [$selectNode]: dart.fnType(dart.void, [html$.Node]),
  [$selectNodeContents]: dart.fnType(dart.void, [html$.Node]),
  [$setEnd]: dart.fnType(dart.void, [html$.Node, core.int]),
  [$setEndAfter]: dart.fnType(dart.void, [html$.Node]),
  [$setEndBefore]: dart.fnType(dart.void, [html$.Node]),
  [$setStart]: dart.fnType(dart.void, [html$.Node, core.int]),
  [$setStartAfter]: dart.fnType(dart.void, [html$.Node]),
  [$setStartBefore]: dart.fnType(dart.void, [html$.Node]),
  [$surroundContents]: dart.fnType(dart.void, [html$.Node]),
  [$getClientRects]: dart.fnType(core.List$(math.Rectangle$(core.num)), [])
}));
dart.setFieldSignature(html$.Range, () => ({
  __proto__: dart.getFields(html$.Range.__proto__),
  [$collapsed]: dart.finalFieldType(core.bool),
  [$commonAncestorContainer]: dart.finalFieldType(html$.Node),
  [$endContainer]: dart.finalFieldType(html$.Node),
  [$endOffset]: dart.finalFieldType(core.int),
  [$startContainer]: dart.finalFieldType(html$.Node),
  [$startOffset]: dart.finalFieldType(core.int)
}));
dart.defineLazy(html$.Range, {
  /*html$.Range.END_TO_END*/get END_TO_END() {
    return 2;
  },
  /*html$.Range.END_TO_START*/get END_TO_START() {
    return 3;
  },
  /*html$.Range.START_TO_END*/get START_TO_END() {
    return 1;
  },
  /*html$.Range.START_TO_START*/get START_TO_START() {
    return 0;
  }
});
dart.registerExtension("Range", html$.Range);
html$.RelatedApplication = class RelatedApplication extends _interceptors.Interceptor {
  get [$id]() {
    return this.id;
  }
  get [$platform]() {
    return this.platform;
  }
  get [$url]() {
    return this.url;
  }
};
dart.addTypeTests(html$.RelatedApplication);
const id$11 = Symbol("RelatedApplication.id");
const platform$0 = Symbol("RelatedApplication.platform");
const url$3 = Symbol("RelatedApplication.url");
dart.setFieldSignature(html$.RelatedApplication, () => ({
  __proto__: dart.getFields(html$.RelatedApplication.__proto__),
  [$id]: dart.finalFieldType(core.String),
  [$platform]: dart.finalFieldType(core.String),
  [$url]: dart.finalFieldType(core.String)
}));
dart.registerExtension("RelatedApplication", html$.RelatedApplication);
html$.RelativeOrientationSensor = class RelativeOrientationSensor$ extends html$.OrientationSensor {
  static new(sensorOptions) {
    if (sensorOptions === void 0) sensorOptions = null;
    if (sensorOptions != null) {
      let sensorOptions_1 = html_common.convertDartToNative_Dictionary(sensorOptions);
      return html$.RelativeOrientationSensor._create_1(sensorOptions_1);
    }
    return html$.RelativeOrientationSensor._create_2();
  }
  static _create_1(sensorOptions) {
    return new RelativeOrientationSensor(sensorOptions);
  }
  static _create_2() {
    return new RelativeOrientationSensor();
  }
};
dart.addTypeTests(html$.RelativeOrientationSensor);
dart.registerExtension("RelativeOrientationSensor", html$.RelativeOrientationSensor);
html$.RemotePlayback = class RemotePlayback extends html$.EventTarget {
  get [$state]() {
    return this.state;
  }
  [$cancelWatchAvailability](id) {
    if (id === void 0) id = null;
    return html$.promiseToFuture(dart.dynamic, this.cancelWatchAvailability(id));
  }
  [$prompt]() {
    return html$.promiseToFuture(dart.dynamic, this.prompt());
  }
  [$watchAvailability](callback) {
    return html$.promiseToFuture(core.int, this.watchAvailability(callback));
  }
};
dart.addTypeTests(html$.RemotePlayback);
const state$4 = Symbol("RemotePlayback.state");
dart.setMethodSignature(html$.RemotePlayback, () => ({
  __proto__: dart.getMethods(html$.RemotePlayback.__proto__),
  [$cancelWatchAvailability]: dart.fnType(async.Future, [], [core.int]),
  [$prompt]: dart.fnType(async.Future, []),
  [$watchAvailability]: dart.fnType(async.Future$(core.int), [dart.fnType(dart.void, [core.bool])])
}));
dart.setFieldSignature(html$.RemotePlayback, () => ({
  __proto__: dart.getFields(html$.RemotePlayback.__proto__),
  [$state]: dart.finalFieldType(core.String)
}));
dart.registerExtension("RemotePlayback", html$.RemotePlayback);
html$.ReportingObserver = class ReportingObserver$ extends _interceptors.Interceptor {
  static new(callback) {
    let callback_1 = _js_helper.convertDartClosureToJS(ListAndReportingObserverTovoid(), callback, 2);
    return html$.ReportingObserver._create_1(callback_1);
  }
  static _create_1(callback) {
    return new ReportingObserver(callback);
  }
  [$disconnect](...args) {
    return this.disconnect.apply(this, args);
  }
  [$observe](...args) {
    return this.observe.apply(this, args);
  }
};
dart.addTypeTests(html$.ReportingObserver);
dart.setMethodSignature(html$.ReportingObserver, () => ({
  __proto__: dart.getMethods(html$.ReportingObserver.__proto__),
  [$disconnect]: dart.fnType(dart.void, []),
  [$observe]: dart.fnType(dart.void, [])
}));
dart.registerExtension("ReportingObserver", html$.ReportingObserver);
html$.ResizeObserver = class ResizeObserver$ extends _interceptors.Interceptor {
  static new(callback) {
    let callback_1 = _js_helper.convertDartClosureToJS(ListOfResizeObserverEntryAndResizeObserverTovoid(), callback, 2);
    return html$.ResizeObserver._create_1(callback_1);
  }
  static _create_1(callback) {
    return new ResizeObserver(callback);
  }
  [$disconnect](...args) {
    return this.disconnect.apply(this, args);
  }
  [$observe](...args) {
    return this.observe.apply(this, args);
  }
  [$unobserve](...args) {
    return this.unobserve.apply(this, args);
  }
};
dart.addTypeTests(html$.ResizeObserver);
dart.setMethodSignature(html$.ResizeObserver, () => ({
  __proto__: dart.getMethods(html$.ResizeObserver.__proto__),
  [$disconnect]: dart.fnType(dart.void, []),
  [$observe]: dart.fnType(dart.void, [html$.Element]),
  [$unobserve]: dart.fnType(dart.void, [html$.Element])
}));
dart.registerExtension("ResizeObserver", html$.ResizeObserver);
html$.ResizeObserverEntry = class ResizeObserverEntry extends _interceptors.Interceptor {
  get [$contentRect]() {
    return this.contentRect;
  }
  get [$target]() {
    return this.target;
  }
};
dart.addTypeTests(html$.ResizeObserverEntry);
const contentRect = Symbol("ResizeObserverEntry.contentRect");
const target$6 = Symbol("ResizeObserverEntry.target");
dart.setFieldSignature(html$.ResizeObserverEntry, () => ({
  __proto__: dart.getFields(html$.ResizeObserverEntry.__proto__),
  [$contentRect]: dart.finalFieldType(html$.DomRectReadOnly),
  [$target]: dart.finalFieldType(html$.Element)
}));
dart.registerExtension("ResizeObserverEntry", html$.ResizeObserverEntry);
html$.RtcCertificate = class RtcCertificate extends _interceptors.Interceptor {
  get [$expires]() {
    return this.expires;
  }
  [$getFingerprints](...args) {
    return this.getFingerprints.apply(this, args);
  }
};
dart.addTypeTests(html$.RtcCertificate);
const expires = Symbol("RtcCertificate.expires");
dart.setMethodSignature(html$.RtcCertificate, () => ({
  __proto__: dart.getMethods(html$.RtcCertificate.__proto__),
  [$getFingerprints]: dart.fnType(core.List$(core.Map), [])
}));
dart.setFieldSignature(html$.RtcCertificate, () => ({
  __proto__: dart.getFields(html$.RtcCertificate.__proto__),
  [$expires]: dart.finalFieldType(core.int)
}));
dart.registerExtension("RTCCertificate", html$.RtcCertificate);
html$.RtcDataChannel = class RtcDataChannel extends html$.EventTarget {
  get [$binaryType]() {
    return this.binaryType;
  }
  set [$binaryType](value) {
    this.binaryType = value;
  }
  get [$bufferedAmount]() {
    return this.bufferedAmount;
  }
  get [$bufferedAmountLowThreshold]() {
    return this.bufferedAmountLowThreshold;
  }
  set [$bufferedAmountLowThreshold](value) {
    this.bufferedAmountLowThreshold = value;
  }
  get [$id]() {
    return this.id;
  }
  get [$label]() {
    return this.label;
  }
  get [$maxRetransmitTime]() {
    return this.maxRetransmitTime;
  }
  get [$maxRetransmits]() {
    return this.maxRetransmits;
  }
  get [$negotiated]() {
    return this.negotiated;
  }
  get [$ordered]() {
    return this.ordered;
  }
  get [$protocol]() {
    return this.protocol;
  }
  get [$readyState]() {
    return this.readyState;
  }
  get [$reliable]() {
    return this.reliable;
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [$send](...args) {
    return this.send.apply(this, args);
  }
  [$sendBlob](...args) {
    return this.send.apply(this, args);
  }
  [$sendByteBuffer](...args) {
    return this.send.apply(this, args);
  }
  [$sendString](...args) {
    return this.send.apply(this, args);
  }
  [$sendTypedData](...args) {
    return this.send.apply(this, args);
  }
  get [$onClose]() {
    return html$.RtcDataChannel.closeEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.RtcDataChannel.errorEvent.forTarget(this);
  }
  get [$onMessage]() {
    return html$.RtcDataChannel.messageEvent.forTarget(this);
  }
  get [$onOpen]() {
    return html$.RtcDataChannel.openEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.RtcDataChannel);
const binaryType$ = Symbol("RtcDataChannel.binaryType");
const bufferedAmount = Symbol("RtcDataChannel.bufferedAmount");
const bufferedAmountLowThreshold = Symbol("RtcDataChannel.bufferedAmountLowThreshold");
const id$12 = Symbol("RtcDataChannel.id");
const label$3 = Symbol("RtcDataChannel.label");
const maxRetransmitTime = Symbol("RtcDataChannel.maxRetransmitTime");
const maxRetransmits = Symbol("RtcDataChannel.maxRetransmits");
const negotiated = Symbol("RtcDataChannel.negotiated");
const ordered = Symbol("RtcDataChannel.ordered");
const protocol$3 = Symbol("RtcDataChannel.protocol");
const readyState$7 = Symbol("RtcDataChannel.readyState");
const reliable = Symbol("RtcDataChannel.reliable");
dart.setMethodSignature(html$.RtcDataChannel, () => ({
  __proto__: dart.getMethods(html$.RtcDataChannel.__proto__),
  [$close]: dart.fnType(dart.void, []),
  [$send]: dart.fnType(dart.void, [dart.dynamic]),
  [$sendBlob]: dart.fnType(dart.void, [html$.Blob]),
  [$sendByteBuffer]: dart.fnType(dart.void, [typed_data.ByteBuffer]),
  [$sendString]: dart.fnType(dart.void, [core.String]),
  [$sendTypedData]: dart.fnType(dart.void, [typed_data.TypedData])
}));
dart.setGetterSignature(html$.RtcDataChannel, () => ({
  __proto__: dart.getGetters(html$.RtcDataChannel.__proto__),
  [$onClose]: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.Event),
  [$onMessage]: async.Stream$(html$.MessageEvent),
  [$onOpen]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.RtcDataChannel, () => ({
  __proto__: dart.getFields(html$.RtcDataChannel.__proto__),
  [$binaryType]: dart.fieldType(core.String),
  [$bufferedAmount]: dart.finalFieldType(core.int),
  [$bufferedAmountLowThreshold]: dart.fieldType(core.int),
  [$id]: dart.finalFieldType(core.int),
  [$label]: dart.finalFieldType(core.String),
  [$maxRetransmitTime]: dart.finalFieldType(core.int),
  [$maxRetransmits]: dart.finalFieldType(core.int),
  [$negotiated]: dart.finalFieldType(core.bool),
  [$ordered]: dart.finalFieldType(core.bool),
  [$protocol]: dart.finalFieldType(core.String),
  [$readyState]: dart.finalFieldType(core.String),
  [$reliable]: dart.finalFieldType(core.bool)
}));
dart.defineLazy(html$.RtcDataChannel, {
  /*html$.RtcDataChannel.closeEvent*/get closeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("close"));
  },
  /*html$.RtcDataChannel.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.RtcDataChannel.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  },
  /*html$.RtcDataChannel.openEvent*/get openEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("open"));
  }
});
dart.registerExtension("RTCDataChannel", html$.RtcDataChannel);
dart.registerExtension("DataChannel", html$.RtcDataChannel);
html$.RtcDataChannelEvent = class RtcDataChannelEvent extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.RtcDataChannelEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new RTCDataChannelEvent(type, eventInitDict);
  }
  get [$channel]() {
    return this.channel;
  }
};
dart.addTypeTests(html$.RtcDataChannelEvent);
const channel = Symbol("RtcDataChannelEvent.channel");
dart.setFieldSignature(html$.RtcDataChannelEvent, () => ({
  __proto__: dart.getFields(html$.RtcDataChannelEvent.__proto__),
  [$channel]: dart.finalFieldType(html$.RtcDataChannel)
}));
dart.registerExtension("RTCDataChannelEvent", html$.RtcDataChannelEvent);
html$.RtcDtmfSender = class RtcDtmfSender extends html$.EventTarget {
  get [$canInsertDtmf]() {
    return this.canInsertDTMF;
  }
  get [$duration]() {
    return this.duration;
  }
  get [$interToneGap]() {
    return this.interToneGap;
  }
  get [$toneBuffer]() {
    return this.toneBuffer;
  }
  get [$track]() {
    return this.track;
  }
  [$insertDtmf](...args) {
    return this.insertDTMF.apply(this, args);
  }
  get [$onToneChange]() {
    return html$.RtcDtmfSender.toneChangeEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.RtcDtmfSender);
const canInsertDtmf = Symbol("RtcDtmfSender.canInsertDtmf");
const duration$4 = Symbol("RtcDtmfSender.duration");
const interToneGap = Symbol("RtcDtmfSender.interToneGap");
const toneBuffer = Symbol("RtcDtmfSender.toneBuffer");
const track$0 = Symbol("RtcDtmfSender.track");
dart.setMethodSignature(html$.RtcDtmfSender, () => ({
  __proto__: dart.getMethods(html$.RtcDtmfSender.__proto__),
  [$insertDtmf]: dart.fnType(dart.void, [core.String], [core.int, core.int])
}));
dart.setGetterSignature(html$.RtcDtmfSender, () => ({
  __proto__: dart.getGetters(html$.RtcDtmfSender.__proto__),
  [$onToneChange]: async.Stream$(html$.RtcDtmfToneChangeEvent)
}));
dart.setFieldSignature(html$.RtcDtmfSender, () => ({
  __proto__: dart.getFields(html$.RtcDtmfSender.__proto__),
  [$canInsertDtmf]: dart.finalFieldType(core.bool),
  [$duration]: dart.finalFieldType(core.int),
  [$interToneGap]: dart.finalFieldType(core.int),
  [$toneBuffer]: dart.finalFieldType(core.String),
  [$track]: dart.finalFieldType(html$.MediaStreamTrack)
}));
dart.defineLazy(html$.RtcDtmfSender, {
  /*html$.RtcDtmfSender.toneChangeEvent*/get toneChangeEvent() {
    return dart.const(new (EventStreamProviderOfRtcDtmfToneChangeEvent()).new("tonechange"));
  }
});
dart.registerExtension("RTCDTMFSender", html$.RtcDtmfSender);
html$.RtcDtmfToneChangeEvent = class RtcDtmfToneChangeEvent extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.RtcDtmfToneChangeEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new RTCDTMFToneChangeEvent(type, eventInitDict);
  }
  get [$tone]() {
    return this.tone;
  }
};
dart.addTypeTests(html$.RtcDtmfToneChangeEvent);
const tone = Symbol("RtcDtmfToneChangeEvent.tone");
dart.setFieldSignature(html$.RtcDtmfToneChangeEvent, () => ({
  __proto__: dart.getFields(html$.RtcDtmfToneChangeEvent.__proto__),
  [$tone]: dart.finalFieldType(core.String)
}));
dart.registerExtension("RTCDTMFToneChangeEvent", html$.RtcDtmfToneChangeEvent);
html$.RtcIceCandidate = class RtcIceCandidate extends _interceptors.Interceptor {
  static new(dictionary) {
    let constructorName = window[dart.test(html_common.Device.isFirefox) ? dart.str(html_common.Device.propertyPrefix) + "RTCIceCandidate" : "RTCIceCandidate"];
    return new constructorName(html_common.convertDartToNative_SerializedScriptValue(dictionary));
  }
  get [$candidate]() {
    return this.candidate;
  }
  set [$candidate](value) {
    this.candidate = value;
  }
  get [$sdpMLineIndex]() {
    return this.sdpMLineIndex;
  }
  set [$sdpMLineIndex](value) {
    this.sdpMLineIndex = value;
  }
  get [$sdpMid]() {
    return this.sdpMid;
  }
  set [$sdpMid](value) {
    this.sdpMid = value;
  }
};
dart.addTypeTests(html$.RtcIceCandidate);
const candidate = Symbol("RtcIceCandidate.candidate");
const sdpMLineIndex = Symbol("RtcIceCandidate.sdpMLineIndex");
const sdpMid = Symbol("RtcIceCandidate.sdpMid");
dart.setFieldSignature(html$.RtcIceCandidate, () => ({
  __proto__: dart.getFields(html$.RtcIceCandidate.__proto__),
  [$candidate]: dart.fieldType(core.String),
  [$sdpMLineIndex]: dart.fieldType(core.int),
  [$sdpMid]: dart.fieldType(core.String)
}));
dart.registerExtension("RTCIceCandidate", html$.RtcIceCandidate);
dart.registerExtension("mozRTCIceCandidate", html$.RtcIceCandidate);
const _get_timestamp = Symbol('_get_timestamp');
html$.RtcLegacyStatsReport = class RtcLegacyStatsReport extends _interceptors.Interceptor {
  get [$id]() {
    return this.id;
  }
  get [$timestamp]() {
    return html_common.convertNativeToDart_DateTime(this[_get_timestamp]);
  }
  get [_get_timestamp]() {
    return this.timestamp;
  }
  get [$type]() {
    return this.type;
  }
  [$names](...args) {
    return this.names.apply(this, args);
  }
  [$stat](...args) {
    return this.stat.apply(this, args);
  }
};
dart.addTypeTests(html$.RtcLegacyStatsReport);
const id$13 = Symbol("RtcLegacyStatsReport.id");
const type$26 = Symbol("RtcLegacyStatsReport.type");
dart.setMethodSignature(html$.RtcLegacyStatsReport, () => ({
  __proto__: dart.getMethods(html$.RtcLegacyStatsReport.__proto__),
  [$names]: dart.fnType(core.List$(core.String), []),
  [$stat]: dart.fnType(core.String, [core.String])
}));
dart.setGetterSignature(html$.RtcLegacyStatsReport, () => ({
  __proto__: dart.getGetters(html$.RtcLegacyStatsReport.__proto__),
  [$timestamp]: core.DateTime
}));
dart.setFieldSignature(html$.RtcLegacyStatsReport, () => ({
  __proto__: dart.getFields(html$.RtcLegacyStatsReport.__proto__),
  [$id]: dart.finalFieldType(core.String),
  [_get_timestamp]: dart.finalFieldType(dart.dynamic),
  [$type]: dart.finalFieldType(core.String)
}));
dart.registerExtension("RTCLegacyStatsReport", html$.RtcLegacyStatsReport);
const _getStats = Symbol('_getStats');
const _addStream_1 = Symbol('_addStream_1');
const _addStream_2 = Symbol('_addStream_2');
const _createDataChannel_1 = Symbol('_createDataChannel_1');
const _createDataChannel_2 = Symbol('_createDataChannel_2');
const _setConfiguration_1 = Symbol('_setConfiguration_1');
html$.RtcPeerConnection = class RtcPeerConnection extends html$.EventTarget {
  static new(rtcIceServers, mediaConstraints) {
    if (mediaConstraints === void 0) mediaConstraints = null;
    let constructorName = window[dart.str(html_common.Device.propertyPrefix) + "RTCPeerConnection"];
    if (mediaConstraints != null) {
      return new constructorName(html_common.convertDartToNative_SerializedScriptValue(rtcIceServers), html_common.convertDartToNative_SerializedScriptValue(mediaConstraints));
    } else {
      return new constructorName(html_common.convertDartToNative_SerializedScriptValue(rtcIceServers));
    }
  }
  static get supported() {
    try {
      html$.RtcPeerConnection.new(new _js_helper.LinkedMap.from(["iceServers", JSArrayOfMapOfString$String().of([new (IdentityMapOfString$String()).from(["url", "stun:localhost"])])]));
      return true;
    } catch (e) {
      let _ = dart.getThrown(e);
      return false;
    }
    return false;
  }
  [$getLegacyStats](selector) {
    if (selector === void 0) selector = null;
    let completer = CompleterOfRtcStatsResponse().new();
    this[_getStats](dart.fn(value => {
      completer.complete(value);
    }, RtcStatsResponseToNull()), selector);
    return completer.future;
  }
  [_getStats](...args) {
    return this.getStats.apply(this, args);
  }
  static generateCertificate(keygenAlgorithm) {
    return generateCertificate(keygenAlgorithm);
  }
  get [$iceConnectionState]() {
    return this.iceConnectionState;
  }
  get [$iceGatheringState]() {
    return this.iceGatheringState;
  }
  get [$localDescription]() {
    return this.localDescription;
  }
  get [$remoteDescription]() {
    return this.remoteDescription;
  }
  get [$signalingState]() {
    return this.signalingState;
  }
  [$addIceCandidate](candidate, successCallback, failureCallback) {
    if (successCallback === void 0) successCallback = null;
    if (failureCallback === void 0) failureCallback = null;
    return html$.promiseToFuture(dart.dynamic, this.addIceCandidate(candidate, successCallback, failureCallback));
  }
  [$addStream](stream, mediaConstraints) {
    if (mediaConstraints === void 0) mediaConstraints = null;
    if (mediaConstraints != null) {
      let mediaConstraints_1 = html_common.convertDartToNative_Dictionary(mediaConstraints);
      this[_addStream_1](stream, mediaConstraints_1);
      return;
    }
    this[_addStream_2](stream);
    return;
  }
  [_addStream_1](...args) {
    return this.addStream.apply(this, args);
  }
  [_addStream_2](...args) {
    return this.addStream.apply(this, args);
  }
  [$addTrack](...args) {
    return this.addTrack.apply(this, args);
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [$createAnswer](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(html$.RtcSessionDescription, this.createAnswer(options_dict));
  }
  [$createDtmfSender](...args) {
    return this.createDTMFSender.apply(this, args);
  }
  [$createDataChannel](label, dataChannelDict) {
    if (dataChannelDict === void 0) dataChannelDict = null;
    if (dataChannelDict != null) {
      let dataChannelDict_1 = html_common.convertDartToNative_Dictionary(dataChannelDict);
      return this[_createDataChannel_1](label, dataChannelDict_1);
    }
    return this[_createDataChannel_2](label);
  }
  [_createDataChannel_1](...args) {
    return this.createDataChannel.apply(this, args);
  }
  [_createDataChannel_2](...args) {
    return this.createDataChannel.apply(this, args);
  }
  [$createOffer](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(html$.RtcSessionDescription, this.createOffer(options_dict));
  }
  [$getLocalStreams](...args) {
    return this.getLocalStreams.apply(this, args);
  }
  [$getReceivers](...args) {
    return this.getReceivers.apply(this, args);
  }
  [$getRemoteStreams](...args) {
    return this.getRemoteStreams.apply(this, args);
  }
  [$getSenders](...args) {
    return this.getSenders.apply(this, args);
  }
  [$getStats]() {
    return html$.promiseToFuture(html$.RtcStatsReport, this.getStats());
  }
  [$removeStream](...args) {
    return this.removeStream.apply(this, args);
  }
  [$removeTrack](...args) {
    return this.removeTrack.apply(this, args);
  }
  [$setConfiguration](configuration) {
    let configuration_1 = html_common.convertDartToNative_Dictionary(configuration);
    this[_setConfiguration_1](configuration_1);
    return;
  }
  [_setConfiguration_1](...args) {
    return this.setConfiguration.apply(this, args);
  }
  [$setLocalDescription](description) {
    let description_dict = html_common.convertDartToNative_Dictionary(description);
    return html$.promiseToFuture(dart.dynamic, this.setLocalDescription(description_dict));
  }
  [$setRemoteDescription](description) {
    let description_dict = html_common.convertDartToNative_Dictionary(description);
    return html$.promiseToFuture(dart.dynamic, this.setRemoteDescription(description_dict));
  }
  get [$onAddStream]() {
    return html$.RtcPeerConnection.addStreamEvent.forTarget(this);
  }
  get [$onDataChannel]() {
    return html$.RtcPeerConnection.dataChannelEvent.forTarget(this);
  }
  get [$onIceCandidate]() {
    return html$.RtcPeerConnection.iceCandidateEvent.forTarget(this);
  }
  get [$onIceConnectionStateChange]() {
    return html$.RtcPeerConnection.iceConnectionStateChangeEvent.forTarget(this);
  }
  get [$onNegotiationNeeded]() {
    return html$.RtcPeerConnection.negotiationNeededEvent.forTarget(this);
  }
  get [$onRemoveStream]() {
    return html$.RtcPeerConnection.removeStreamEvent.forTarget(this);
  }
  get [$onSignalingStateChange]() {
    return html$.RtcPeerConnection.signalingStateChangeEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.RtcPeerConnection);
const iceConnectionState = Symbol("RtcPeerConnection.iceConnectionState");
const iceGatheringState = Symbol("RtcPeerConnection.iceGatheringState");
const localDescription = Symbol("RtcPeerConnection.localDescription");
const remoteDescription = Symbol("RtcPeerConnection.remoteDescription");
const signalingState = Symbol("RtcPeerConnection.signalingState");
dart.setMethodSignature(html$.RtcPeerConnection, () => ({
  __proto__: dart.getMethods(html$.RtcPeerConnection.__proto__),
  [$getLegacyStats]: dart.fnType(async.Future$(html$.RtcStatsResponse), [], [html$.MediaStreamTrack]),
  [_getStats]: dart.fnType(async.Future, [], [dart.fnType(dart.void, [html$.RtcStatsResponse]), html$.MediaStreamTrack]),
  [$addIceCandidate]: dart.fnType(async.Future, [core.Object], [dart.fnType(dart.void, []), dart.fnType(dart.void, [html$.DomException])]),
  [$addStream]: dart.fnType(dart.void, [html$.MediaStream], [core.Map]),
  [_addStream_1]: dart.fnType(dart.void, [html$.MediaStream, dart.dynamic]),
  [_addStream_2]: dart.fnType(dart.void, [html$.MediaStream]),
  [$addTrack]: dart.fnType(html$.RtcRtpSender, [html$.MediaStreamTrack, html$.MediaStream]),
  [$close]: dart.fnType(dart.void, []),
  [$createAnswer]: dart.fnType(async.Future$(html$.RtcSessionDescription), [], [core.Map]),
  [$createDtmfSender]: dart.fnType(html$.RtcDtmfSender, [html$.MediaStreamTrack]),
  [$createDataChannel]: dart.fnType(html$.RtcDataChannel, [core.String], [core.Map]),
  [_createDataChannel_1]: dart.fnType(html$.RtcDataChannel, [dart.dynamic, dart.dynamic]),
  [_createDataChannel_2]: dart.fnType(html$.RtcDataChannel, [dart.dynamic]),
  [$createOffer]: dart.fnType(async.Future$(html$.RtcSessionDescription), [], [core.Map]),
  [$getLocalStreams]: dart.fnType(core.List$(html$.MediaStream), []),
  [$getReceivers]: dart.fnType(core.List$(html$.RtcRtpReceiver), []),
  [$getRemoteStreams]: dart.fnType(core.List$(html$.MediaStream), []),
  [$getSenders]: dart.fnType(core.List$(html$.RtcRtpSender), []),
  [$getStats]: dart.fnType(async.Future$(html$.RtcStatsReport), []),
  [$removeStream]: dart.fnType(dart.void, [html$.MediaStream]),
  [$removeTrack]: dart.fnType(dart.void, [html$.RtcRtpSender]),
  [$setConfiguration]: dart.fnType(dart.void, [core.Map]),
  [_setConfiguration_1]: dart.fnType(dart.void, [dart.dynamic]),
  [$setLocalDescription]: dart.fnType(async.Future, [core.Map]),
  [$setRemoteDescription]: dart.fnType(async.Future, [core.Map])
}));
dart.setGetterSignature(html$.RtcPeerConnection, () => ({
  __proto__: dart.getGetters(html$.RtcPeerConnection.__proto__),
  [$onAddStream]: async.Stream$(html$.MediaStreamEvent),
  [$onDataChannel]: async.Stream$(html$.RtcDataChannelEvent),
  [$onIceCandidate]: async.Stream$(html$.RtcPeerConnectionIceEvent),
  [$onIceConnectionStateChange]: async.Stream$(html$.Event),
  [$onNegotiationNeeded]: async.Stream$(html$.Event),
  [$onRemoveStream]: async.Stream$(html$.MediaStreamEvent),
  [$onSignalingStateChange]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.RtcPeerConnection, () => ({
  __proto__: dart.getFields(html$.RtcPeerConnection.__proto__),
  [$iceConnectionState]: dart.finalFieldType(core.String),
  [$iceGatheringState]: dart.finalFieldType(core.String),
  [$localDescription]: dart.finalFieldType(html$.RtcSessionDescription),
  [$remoteDescription]: dart.finalFieldType(html$.RtcSessionDescription),
  [$signalingState]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.RtcPeerConnection, {
  /*html$.RtcPeerConnection.addStreamEvent*/get addStreamEvent() {
    return dart.const(new (EventStreamProviderOfMediaStreamEvent()).new("addstream"));
  },
  /*html$.RtcPeerConnection.dataChannelEvent*/get dataChannelEvent() {
    return dart.const(new (EventStreamProviderOfRtcDataChannelEvent()).new("datachannel"));
  },
  /*html$.RtcPeerConnection.iceCandidateEvent*/get iceCandidateEvent() {
    return dart.const(new (EventStreamProviderOfRtcPeerConnectionIceEvent()).new("icecandidate"));
  },
  /*html$.RtcPeerConnection.iceConnectionStateChangeEvent*/get iceConnectionStateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("iceconnectionstatechange"));
  },
  /*html$.RtcPeerConnection.negotiationNeededEvent*/get negotiationNeededEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("negotiationneeded"));
  },
  /*html$.RtcPeerConnection.removeStreamEvent*/get removeStreamEvent() {
    return dart.const(new (EventStreamProviderOfMediaStreamEvent()).new("removestream"));
  },
  /*html$.RtcPeerConnection.signalingStateChangeEvent*/get signalingStateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("signalingstatechange"));
  }
});
dart.registerExtension("RTCPeerConnection", html$.RtcPeerConnection);
dart.registerExtension("webkitRTCPeerConnection", html$.RtcPeerConnection);
dart.registerExtension("mozRTCPeerConnection", html$.RtcPeerConnection);
html$.RtcPeerConnectionIceEvent = class RtcPeerConnectionIceEvent extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.RtcPeerConnectionIceEvent._create_1(type, eventInitDict_1);
    }
    return html$.RtcPeerConnectionIceEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new RTCPeerConnectionIceEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new RTCPeerConnectionIceEvent(type);
  }
  get [$candidate]() {
    return this.candidate;
  }
};
dart.addTypeTests(html$.RtcPeerConnectionIceEvent);
const candidate$ = Symbol("RtcPeerConnectionIceEvent.candidate");
dart.setFieldSignature(html$.RtcPeerConnectionIceEvent, () => ({
  __proto__: dart.getFields(html$.RtcPeerConnectionIceEvent.__proto__),
  [$candidate]: dart.finalFieldType(html$.RtcIceCandidate)
}));
dart.registerExtension("RTCPeerConnectionIceEvent", html$.RtcPeerConnectionIceEvent);
html$.RtcRtpContributingSource = class RtcRtpContributingSource extends _interceptors.Interceptor {
  get [$source]() {
    return this.source;
  }
  get [$timestamp]() {
    return this.timestamp;
  }
};
dart.addTypeTests(html$.RtcRtpContributingSource);
const source$2 = Symbol("RtcRtpContributingSource.source");
const timestamp$2 = Symbol("RtcRtpContributingSource.timestamp");
dart.setFieldSignature(html$.RtcRtpContributingSource, () => ({
  __proto__: dart.getFields(html$.RtcRtpContributingSource.__proto__),
  [$source]: dart.finalFieldType(core.int),
  [$timestamp]: dart.finalFieldType(core.num)
}));
dart.registerExtension("RTCRtpContributingSource", html$.RtcRtpContributingSource);
html$.RtcRtpReceiver = class RtcRtpReceiver extends _interceptors.Interceptor {
  get [$track]() {
    return this.track;
  }
  [$getContributingSources](...args) {
    return this.getContributingSources.apply(this, args);
  }
};
dart.addTypeTests(html$.RtcRtpReceiver);
const track$1 = Symbol("RtcRtpReceiver.track");
dart.setMethodSignature(html$.RtcRtpReceiver, () => ({
  __proto__: dart.getMethods(html$.RtcRtpReceiver.__proto__),
  [$getContributingSources]: dart.fnType(core.List$(html$.RtcRtpContributingSource), [])
}));
dart.setFieldSignature(html$.RtcRtpReceiver, () => ({
  __proto__: dart.getFields(html$.RtcRtpReceiver.__proto__),
  [$track]: dart.finalFieldType(html$.MediaStreamTrack)
}));
dart.registerExtension("RTCRtpReceiver", html$.RtcRtpReceiver);
html$.RtcRtpSender = class RtcRtpSender extends _interceptors.Interceptor {
  get [$track]() {
    return this.track;
  }
};
dart.addTypeTests(html$.RtcRtpSender);
const track$2 = Symbol("RtcRtpSender.track");
dart.setFieldSignature(html$.RtcRtpSender, () => ({
  __proto__: dart.getFields(html$.RtcRtpSender.__proto__),
  [$track]: dart.finalFieldType(html$.MediaStreamTrack)
}));
dart.registerExtension("RTCRtpSender", html$.RtcRtpSender);
html$.RtcSessionDescription = class RtcSessionDescription extends _interceptors.Interceptor {
  static new(dictionary) {
    let constructorName = window[dart.test(html_common.Device.isFirefox) ? dart.str(html_common.Device.propertyPrefix) + "RTCSessionDescription" : "RTCSessionDescription"];
    return new constructorName(html_common.convertDartToNative_SerializedScriptValue(dictionary));
  }
  get [$sdp]() {
    return this.sdp;
  }
  set [$sdp](value) {
    this.sdp = value;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
};
dart.addTypeTests(html$.RtcSessionDescription);
const sdp = Symbol("RtcSessionDescription.sdp");
const type$27 = Symbol("RtcSessionDescription.type");
dart.setFieldSignature(html$.RtcSessionDescription, () => ({
  __proto__: dart.getFields(html$.RtcSessionDescription.__proto__),
  [$sdp]: dart.fieldType(core.String),
  [$type]: dart.fieldType(core.String)
}));
dart.registerExtension("RTCSessionDescription", html$.RtcSessionDescription);
dart.registerExtension("mozRTCSessionDescription", html$.RtcSessionDescription);
const Interceptor_MapMixin$$0 = class Interceptor_MapMixin extends _interceptors.Interceptor {};
(Interceptor_MapMixin$$0.new = function() {
  Interceptor_MapMixin$$0.__proto__.new.call(this);
}).prototype = Interceptor_MapMixin$$0.prototype;
dart.applyMixin(Interceptor_MapMixin$$0, collection.MapMixin$(core.String, dart.dynamic));
html$.RtcStatsReport = class RtcStatsReport extends Interceptor_MapMixin$$0 {
  [_getItem](key) {
    return html_common.convertNativeToDart_Dictionary(this.get(key));
  }
  [$addAll](other) {
    MapOfString$dynamic()._check(other);
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$containsValue](value) {
    return this[$values][$any](dart.fn(e => dart.equals(e, value), MapTobool()));
  }
  [$containsKey](key) {
    return this[_getItem](core.String._check(key)) != null;
  }
  [$_get](key) {
    return this[_getItem](core.String._check(key));
  }
  [$forEach](f) {
    let entries = this.entries();
    while (true) {
      let entry = entries.next();
      if (entry.done) return;
      f(entry.value[0], html_common.convertNativeToDart_Dictionary(entry.value[1]));
    }
  }
  get [$keys]() {
    let keys = JSArrayOfString().of([]);
    this[$forEach](dart.fn((k, v) => keys[$add](k), StringAnddynamicTovoid()));
    return keys;
  }
  get [$values]() {
    let values = JSArrayOfMap().of([]);
    this[$forEach](dart.fn((k, v) => values[$add](core.Map._check(v)), StringAnddynamicTovoid()));
    return values;
  }
  get [$length]() {
    return this.size;
  }
  get [$isEmpty]() {
    return this[$length] === 0;
  }
  get [$isNotEmpty]() {
    return !dart.test(this[$isEmpty]);
  }
  [$_set](key, value) {
    core.String._check(key);
    dart.throw(new core.UnsupportedError.new("Not supported"));
    return value;
  }
  [$putIfAbsent](key, ifAbsent) {
    core.String._check(key);
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$remove](key) {
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$clear]() {
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
};
dart.addTypeTests(html$.RtcStatsReport);
dart.setMethodSignature(html$.RtcStatsReport, () => ({
  __proto__: dart.getMethods(html$.RtcStatsReport.__proto__),
  [_getItem]: dart.fnType(core.Map, [core.String]),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  [$containsValue]: dart.fnType(core.bool, [dart.dynamic]),
  [$containsKey]: dart.fnType(core.bool, [dart.dynamic]),
  [$_get]: dart.fnType(core.Map, [dart.dynamic]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
  [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
  [$putIfAbsent]: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
  [$remove]: dart.fnType(core.String, [dart.dynamic]),
  [$clear]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.RtcStatsReport, () => ({
  __proto__: dart.getGetters(html$.RtcStatsReport.__proto__),
  [$keys]: core.Iterable$(core.String),
  [$values]: core.Iterable$(core.Map),
  [$length]: core.int,
  [$isEmpty]: core.bool,
  [$isNotEmpty]: core.bool
}));
dart.registerExtension("RTCStatsReport", html$.RtcStatsReport);
html$.RtcStatsResponse = class RtcStatsResponse extends _interceptors.Interceptor {
  [$namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
  [$result](...args) {
    return this.result.apply(this, args);
  }
};
dart.addTypeTests(html$.RtcStatsResponse);
dart.setMethodSignature(html$.RtcStatsResponse, () => ({
  __proto__: dart.getMethods(html$.RtcStatsResponse.__proto__),
  [$namedItem]: dart.fnType(html$.RtcLegacyStatsReport, [core.String]),
  [$result]: dart.fnType(core.List$(html$.RtcLegacyStatsReport), [])
}));
dart.registerExtension("RTCStatsResponse", html$.RtcStatsResponse);
html$.RtcTrackEvent = class RtcTrackEvent extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.RtcTrackEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new RTCTrackEvent(type, eventInitDict);
  }
  get [$receiver]() {
    return this.receiver;
  }
  get [$streams]() {
    return this.streams;
  }
  get [$track]() {
    return this.track;
  }
};
dart.addTypeTests(html$.RtcTrackEvent);
const receiver$ = Symbol("RtcTrackEvent.receiver");
const streams = Symbol("RtcTrackEvent.streams");
const track$3 = Symbol("RtcTrackEvent.track");
dart.setFieldSignature(html$.RtcTrackEvent, () => ({
  __proto__: dart.getFields(html$.RtcTrackEvent.__proto__),
  [$receiver]: dart.finalFieldType(html$.RtcRtpReceiver),
  [$streams]: dart.finalFieldType(ListOfMediaStream()),
  [$track]: dart.finalFieldType(html$.MediaStreamTrack)
}));
dart.registerExtension("RTCTrackEvent", html$.RtcTrackEvent);
const _availLeft = Symbol('_availLeft');
const _availTop = Symbol('_availTop');
const _availWidth = Symbol('_availWidth');
const _availHeight = Symbol('_availHeight');
html$.Screen = class Screen extends _interceptors.Interceptor {
  get [$available]() {
    return new (RectangleOfnum()).new(this[_availLeft], this[_availTop], this[_availWidth], this[_availHeight]);
  }
  get [_availHeight]() {
    return this.availHeight;
  }
  get [_availLeft]() {
    return this.availLeft;
  }
  get [_availTop]() {
    return this.availTop;
  }
  get [_availWidth]() {
    return this.availWidth;
  }
  get [$colorDepth]() {
    return this.colorDepth;
  }
  get [$height]() {
    return this.height;
  }
  get [$keepAwake]() {
    return this.keepAwake;
  }
  set [$keepAwake](value) {
    this.keepAwake = value;
  }
  get [$orientation]() {
    return this.orientation;
  }
  get [$pixelDepth]() {
    return this.pixelDepth;
  }
  get [$width]() {
    return this.width;
  }
};
dart.addTypeTests(html$.Screen);
const colorDepth = Symbol("Screen.colorDepth");
const height$10 = Symbol("Screen.height");
const keepAwake = Symbol("Screen.keepAwake");
const orientation$0 = Symbol("Screen.orientation");
const pixelDepth = Symbol("Screen.pixelDepth");
const width$10 = Symbol("Screen.width");
dart.setGetterSignature(html$.Screen, () => ({
  __proto__: dart.getGetters(html$.Screen.__proto__),
  [$available]: math.Rectangle$(core.num)
}));
dart.setFieldSignature(html$.Screen, () => ({
  __proto__: dart.getFields(html$.Screen.__proto__),
  [_availHeight]: dart.finalFieldType(core.int),
  [_availLeft]: dart.finalFieldType(core.int),
  [_availTop]: dart.finalFieldType(core.int),
  [_availWidth]: dart.finalFieldType(core.int),
  [$colorDepth]: dart.finalFieldType(core.int),
  [$height]: dart.finalFieldType(core.int),
  [$keepAwake]: dart.fieldType(core.bool),
  [$orientation]: dart.finalFieldType(html$.ScreenOrientation),
  [$pixelDepth]: dart.finalFieldType(core.int),
  [$width]: dart.finalFieldType(core.int)
}));
dart.registerExtension("Screen", html$.Screen);
html$.ScreenOrientation = class ScreenOrientation extends html$.EventTarget {
  get [$angle]() {
    return this.angle;
  }
  get [$type]() {
    return this.type;
  }
  [$lock](orientation) {
    return html$.promiseToFuture(dart.dynamic, this.lock(orientation));
  }
  [$unlock](...args) {
    return this.unlock.apply(this, args);
  }
  get [$onChange]() {
    return html$.ScreenOrientation.changeEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.ScreenOrientation);
const angle$ = Symbol("ScreenOrientation.angle");
const type$28 = Symbol("ScreenOrientation.type");
dart.setMethodSignature(html$.ScreenOrientation, () => ({
  __proto__: dart.getMethods(html$.ScreenOrientation.__proto__),
  [$lock]: dart.fnType(async.Future, [core.String]),
  [$unlock]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.ScreenOrientation, () => ({
  __proto__: dart.getGetters(html$.ScreenOrientation.__proto__),
  [$onChange]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.ScreenOrientation, () => ({
  __proto__: dart.getFields(html$.ScreenOrientation.__proto__),
  [$angle]: dart.finalFieldType(core.int),
  [$type]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.ScreenOrientation, {
  /*html$.ScreenOrientation.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  }
});
dart.registerExtension("ScreenOrientation", html$.ScreenOrientation);
html$.ScriptElement = class ScriptElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("script");
  }
  get [$async]() {
    return this.async;
  }
  set [$async](value) {
    this.async = value;
  }
  get [$charset]() {
    return this.charset;
  }
  set [$charset](value) {
    this.charset = value;
  }
  get [$crossOrigin]() {
    return this.crossOrigin;
  }
  set [$crossOrigin](value) {
    this.crossOrigin = value;
  }
  get [$defer]() {
    return this.defer;
  }
  set [$defer](value) {
    this.defer = value;
  }
  get [$integrity]() {
    return this.integrity;
  }
  set [$integrity](value) {
    this.integrity = value;
  }
  get [$noModule]() {
    return this.noModule;
  }
  set [$noModule](value) {
    this.noModule = value;
  }
  get [$src]() {
    return this.src;
  }
  set [$src](value) {
    this.src = value;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
};
(html$.ScriptElement.created = function() {
  this[async$0] = null;
  this[charset] = null;
  this[crossOrigin$1] = null;
  this[defer] = null;
  this[integrity$] = null;
  this[noModule] = null;
  this[src$4] = null;
  this[type$29] = null;
  html$.ScriptElement.__proto__.created.call(this);
}).prototype = html$.ScriptElement.prototype;
dart.addTypeTests(html$.ScriptElement);
const async$0 = Symbol("ScriptElement.async");
const charset = Symbol("ScriptElement.charset");
const crossOrigin$1 = Symbol("ScriptElement.crossOrigin");
const defer = Symbol("ScriptElement.defer");
const integrity$ = Symbol("ScriptElement.integrity");
const noModule = Symbol("ScriptElement.noModule");
const src$4 = Symbol("ScriptElement.src");
const type$29 = Symbol("ScriptElement.type");
dart.setFieldSignature(html$.ScriptElement, () => ({
  __proto__: dart.getFields(html$.ScriptElement.__proto__),
  [$async]: dart.fieldType(core.bool),
  [$charset]: dart.fieldType(core.String),
  [$crossOrigin]: dart.fieldType(core.String),
  [$defer]: dart.fieldType(core.bool),
  [$integrity]: dart.fieldType(core.String),
  [$noModule]: dart.fieldType(core.bool),
  [$src]: dart.fieldType(core.String),
  [$type]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLScriptElement", html$.ScriptElement);
html$.ScrollState = class ScrollState$ extends _interceptors.Interceptor {
  static new(scrollStateInit) {
    if (scrollStateInit === void 0) scrollStateInit = null;
    if (scrollStateInit != null) {
      let scrollStateInit_1 = html_common.convertDartToNative_Dictionary(scrollStateInit);
      return html$.ScrollState._create_1(scrollStateInit_1);
    }
    return html$.ScrollState._create_2();
  }
  static _create_1(scrollStateInit) {
    return new ScrollState(scrollStateInit);
  }
  static _create_2() {
    return new ScrollState();
  }
  get [$deltaGranularity]() {
    return this.deltaGranularity;
  }
  get [$deltaX]() {
    return this.deltaX;
  }
  get [$deltaY]() {
    return this.deltaY;
  }
  get [$fromUserInput]() {
    return this.fromUserInput;
  }
  get [$inInertialPhase]() {
    return this.inInertialPhase;
  }
  get [$isBeginning]() {
    return this.isBeginning;
  }
  get [$isDirectManipulation]() {
    return this.isDirectManipulation;
  }
  get [$isEnding]() {
    return this.isEnding;
  }
  get [$positionX]() {
    return this.positionX;
  }
  get [$positionY]() {
    return this.positionY;
  }
  get [$velocityX]() {
    return this.velocityX;
  }
  get [$velocityY]() {
    return this.velocityY;
  }
  [$consumeDelta](...args) {
    return this.consumeDelta.apply(this, args);
  }
  [$distributeToScrollChainDescendant](...args) {
    return this.distributeToScrollChainDescendant.apply(this, args);
  }
};
dart.addTypeTests(html$.ScrollState);
const deltaGranularity = Symbol("ScrollState.deltaGranularity");
const deltaX = Symbol("ScrollState.deltaX");
const deltaY = Symbol("ScrollState.deltaY");
const fromUserInput = Symbol("ScrollState.fromUserInput");
const inInertialPhase = Symbol("ScrollState.inInertialPhase");
const isBeginning = Symbol("ScrollState.isBeginning");
const isDirectManipulation = Symbol("ScrollState.isDirectManipulation");
const isEnding = Symbol("ScrollState.isEnding");
const positionX = Symbol("ScrollState.positionX");
const positionY = Symbol("ScrollState.positionY");
const velocityX = Symbol("ScrollState.velocityX");
const velocityY = Symbol("ScrollState.velocityY");
dart.setMethodSignature(html$.ScrollState, () => ({
  __proto__: dart.getMethods(html$.ScrollState.__proto__),
  [$consumeDelta]: dart.fnType(dart.void, [core.num, core.num]),
  [$distributeToScrollChainDescendant]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(html$.ScrollState, () => ({
  __proto__: dart.getFields(html$.ScrollState.__proto__),
  [$deltaGranularity]: dart.finalFieldType(core.num),
  [$deltaX]: dart.finalFieldType(core.num),
  [$deltaY]: dart.finalFieldType(core.num),
  [$fromUserInput]: dart.finalFieldType(core.bool),
  [$inInertialPhase]: dart.finalFieldType(core.bool),
  [$isBeginning]: dart.finalFieldType(core.bool),
  [$isDirectManipulation]: dart.finalFieldType(core.bool),
  [$isEnding]: dart.finalFieldType(core.bool),
  [$positionX]: dart.finalFieldType(core.int),
  [$positionY]: dart.finalFieldType(core.int),
  [$velocityX]: dart.finalFieldType(core.num),
  [$velocityY]: dart.finalFieldType(core.num)
}));
dart.registerExtension("ScrollState", html$.ScrollState);
html$.ScrollTimeline = class ScrollTimeline$ extends html$.AnimationTimeline {
  static new(options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return html$.ScrollTimeline._create_1(options_1);
    }
    return html$.ScrollTimeline._create_2();
  }
  static _create_1(options) {
    return new ScrollTimeline(options);
  }
  static _create_2() {
    return new ScrollTimeline();
  }
  get [$orientation]() {
    return this.orientation;
  }
  get [$scrollSource]() {
    return this.scrollSource;
  }
  get [$timeRange]() {
    return this.timeRange;
  }
};
dart.addTypeTests(html$.ScrollTimeline);
const orientation$1 = Symbol("ScrollTimeline.orientation");
const scrollSource = Symbol("ScrollTimeline.scrollSource");
const timeRange = Symbol("ScrollTimeline.timeRange");
dart.setFieldSignature(html$.ScrollTimeline, () => ({
  __proto__: dart.getFields(html$.ScrollTimeline.__proto__),
  [$orientation]: dart.finalFieldType(core.String),
  [$scrollSource]: dart.finalFieldType(html$.Element),
  [$timeRange]: dart.finalFieldType(core.Object)
}));
dart.registerExtension("ScrollTimeline", html$.ScrollTimeline);
html$.SecurityPolicyViolationEvent = class SecurityPolicyViolationEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.SecurityPolicyViolationEvent._create_1(type, eventInitDict_1);
    }
    return html$.SecurityPolicyViolationEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new SecurityPolicyViolationEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new SecurityPolicyViolationEvent(type);
  }
  get [$blockedUri]() {
    return this.blockedURI;
  }
  get [$columnNumber]() {
    return this.columnNumber;
  }
  get [$disposition]() {
    return this.disposition;
  }
  get [$documentUri]() {
    return this.documentURI;
  }
  get [$effectiveDirective]() {
    return this.effectiveDirective;
  }
  get [$lineNumber]() {
    return this.lineNumber;
  }
  get [$originalPolicy]() {
    return this.originalPolicy;
  }
  get [$referrer]() {
    return this.referrer;
  }
  get [$sample]() {
    return this.sample;
  }
  get [$sourceFile]() {
    return this.sourceFile;
  }
  get [$statusCode]() {
    return this.statusCode;
  }
  get [$violatedDirective]() {
    return this.violatedDirective;
  }
};
dart.addTypeTests(html$.SecurityPolicyViolationEvent);
const blockedUri = Symbol("SecurityPolicyViolationEvent.blockedUri");
const columnNumber = Symbol("SecurityPolicyViolationEvent.columnNumber");
const disposition = Symbol("SecurityPolicyViolationEvent.disposition");
const documentUri = Symbol("SecurityPolicyViolationEvent.documentUri");
const effectiveDirective = Symbol("SecurityPolicyViolationEvent.effectiveDirective");
const lineNumber$0 = Symbol("SecurityPolicyViolationEvent.lineNumber");
const originalPolicy = Symbol("SecurityPolicyViolationEvent.originalPolicy");
const referrer = Symbol("SecurityPolicyViolationEvent.referrer");
const sample = Symbol("SecurityPolicyViolationEvent.sample");
const sourceFile$0 = Symbol("SecurityPolicyViolationEvent.sourceFile");
const statusCode = Symbol("SecurityPolicyViolationEvent.statusCode");
const violatedDirective = Symbol("SecurityPolicyViolationEvent.violatedDirective");
dart.setFieldSignature(html$.SecurityPolicyViolationEvent, () => ({
  __proto__: dart.getFields(html$.SecurityPolicyViolationEvent.__proto__),
  [$blockedUri]: dart.finalFieldType(core.String),
  [$columnNumber]: dart.finalFieldType(core.int),
  [$disposition]: dart.finalFieldType(core.String),
  [$documentUri]: dart.finalFieldType(core.String),
  [$effectiveDirective]: dart.finalFieldType(core.String),
  [$lineNumber]: dart.finalFieldType(core.int),
  [$originalPolicy]: dart.finalFieldType(core.String),
  [$referrer]: dart.finalFieldType(core.String),
  [$sample]: dart.finalFieldType(core.String),
  [$sourceFile]: dart.finalFieldType(core.String),
  [$statusCode]: dart.finalFieldType(core.int),
  [$violatedDirective]: dart.finalFieldType(core.String)
}));
dart.registerExtension("SecurityPolicyViolationEvent", html$.SecurityPolicyViolationEvent);
html$.SelectElement = class SelectElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("select");
  }
  get [$autofocus]() {
    return this.autofocus;
  }
  set [$autofocus](value) {
    this.autofocus = value;
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$form]() {
    return this.form;
  }
  get [$labels]() {
    return this.labels;
  }
  get [$length]() {
    return this.length;
  }
  set [$length](value) {
    this.length = value;
  }
  get [$multiple]() {
    return this.multiple;
  }
  set [$multiple](value) {
    this.multiple = value;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$required]() {
    return this.required;
  }
  set [$required](value) {
    this.required = value;
  }
  get [$selectedIndex]() {
    return this.selectedIndex;
  }
  set [$selectedIndex](value) {
    this.selectedIndex = value;
  }
  get [$size]() {
    return this.size;
  }
  set [$size](value) {
    this.size = value;
  }
  get [$type]() {
    return this.type;
  }
  get [$validationMessage]() {
    return this.validationMessage;
  }
  get [$validity]() {
    return this.validity;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
  get [$willValidate]() {
    return this.willValidate;
  }
  [__setter__](...args) {
    return this.__setter__.apply(this, args);
  }
  [$add](...args) {
    return this.add.apply(this, args);
  }
  [$checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$namedItem](...args) {
    return this.namedItem.apply(this, args);
  }
  [$reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [$setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
  get [$options]() {
    let options = this[$querySelectorAll](html$.OptionElement, "option");
    return new (UnmodifiableListViewOfOptionElement()).new(IterableOfOptionElement()._check(dart.dsend(options, 'toList', [])));
  }
  get [$selectedOptions]() {
    if (dart.test(this.multiple)) {
      let options = this[$options][$where](dart.fn(o => o.selected, OptionElementTobool()))[$toList]();
      return new (UnmodifiableListViewOfOptionElement()).new(options);
    } else {
      return JSArrayOfOptionElement().of([this[$options][$_get](this.selectedIndex)]);
    }
  }
};
(html$.SelectElement.created = function() {
  this[autofocus$2] = null;
  this[disabled$7] = null;
  this[form$6] = null;
  this[labels$3] = null;
  this[length$12] = null;
  this[multiple$1] = null;
  this[name$33] = null;
  this[required$11] = null;
  this[selectedIndex] = null;
  this[size$5] = null;
  this[type$30] = null;
  this[validationMessage$3] = null;
  this[validity$3] = null;
  this[value$16] = null;
  this[willValidate$3] = null;
  html$.SelectElement.__proto__.created.call(this);
}).prototype = html$.SelectElement.prototype;
dart.addTypeTests(html$.SelectElement);
const autofocus$2 = Symbol("SelectElement.autofocus");
const disabled$7 = Symbol("SelectElement.disabled");
const form$6 = Symbol("SelectElement.form");
const labels$3 = Symbol("SelectElement.labels");
const length$12 = Symbol("SelectElement.length");
const multiple$1 = Symbol("SelectElement.multiple");
const name$33 = Symbol("SelectElement.name");
const required$11 = Symbol("SelectElement.required");
const selectedIndex = Symbol("SelectElement.selectedIndex");
const size$5 = Symbol("SelectElement.size");
const type$30 = Symbol("SelectElement.type");
const validationMessage$3 = Symbol("SelectElement.validationMessage");
const validity$3 = Symbol("SelectElement.validity");
const value$16 = Symbol("SelectElement.value");
const willValidate$3 = Symbol("SelectElement.willValidate");
dart.setMethodSignature(html$.SelectElement, () => ({
  __proto__: dart.getMethods(html$.SelectElement.__proto__),
  [__setter__]: dart.fnType(dart.void, [core.int, html$.OptionElement]),
  [$add]: dart.fnType(dart.void, [core.Object, core.Object]),
  [$checkValidity]: dart.fnType(core.bool, []),
  [$item]: dart.fnType(html$.Element, [core.int]),
  [$namedItem]: dart.fnType(html$.OptionElement, [core.String]),
  [$reportValidity]: dart.fnType(core.bool, []),
  [$setCustomValidity]: dart.fnType(dart.void, [core.String])
}));
dart.setGetterSignature(html$.SelectElement, () => ({
  __proto__: dart.getGetters(html$.SelectElement.__proto__),
  [$options]: core.List$(html$.OptionElement),
  [$selectedOptions]: core.List$(html$.OptionElement)
}));
dart.setFieldSignature(html$.SelectElement, () => ({
  __proto__: dart.getFields(html$.SelectElement.__proto__),
  [$autofocus]: dart.fieldType(core.bool),
  [$disabled]: dart.fieldType(core.bool),
  [$form]: dart.finalFieldType(html$.FormElement),
  [$labels]: dart.finalFieldType(ListOfNode()),
  [$length]: dart.fieldType(core.int),
  [$multiple]: dart.fieldType(core.bool),
  [$name]: dart.fieldType(core.String),
  [$required]: dart.fieldType(core.bool),
  [$selectedIndex]: dart.fieldType(core.int),
  [$size]: dart.fieldType(core.int),
  [$type]: dart.finalFieldType(core.String),
  [$validationMessage]: dart.finalFieldType(core.String),
  [$validity]: dart.finalFieldType(html$.ValidityState),
  [$value]: dart.fieldType(core.String),
  [$willValidate]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("HTMLSelectElement", html$.SelectElement);
html$.Selection = class Selection extends _interceptors.Interceptor {
  get [$anchorNode]() {
    return this.anchorNode;
  }
  get [$anchorOffset]() {
    return this.anchorOffset;
  }
  get [$baseNode]() {
    return this.baseNode;
  }
  get [$baseOffset]() {
    return this.baseOffset;
  }
  get [$extentNode]() {
    return this.extentNode;
  }
  get [$extentOffset]() {
    return this.extentOffset;
  }
  get [$focusNode]() {
    return this.focusNode;
  }
  get [$focusOffset]() {
    return this.focusOffset;
  }
  get [$isCollapsed]() {
    return this.isCollapsed;
  }
  get [$rangeCount]() {
    return this.rangeCount;
  }
  get [$type]() {
    return this.type;
  }
  [$addRange](...args) {
    return this.addRange.apply(this, args);
  }
  [$collapse](...args) {
    return this.collapse.apply(this, args);
  }
  [$collapseToEnd](...args) {
    return this.collapseToEnd.apply(this, args);
  }
  [$collapseToStart](...args) {
    return this.collapseToStart.apply(this, args);
  }
  [$containsNode](...args) {
    return this.containsNode.apply(this, args);
  }
  [$deleteFromDocument](...args) {
    return this.deleteFromDocument.apply(this, args);
  }
  [$empty](...args) {
    return this.empty.apply(this, args);
  }
  [$extend](...args) {
    return this.extend.apply(this, args);
  }
  [$getRangeAt](...args) {
    return this.getRangeAt.apply(this, args);
  }
  [$modify](...args) {
    return this.modify.apply(this, args);
  }
  [$removeAllRanges](...args) {
    return this.removeAllRanges.apply(this, args);
  }
  [$removeRange](...args) {
    return this.removeRange.apply(this, args);
  }
  [$selectAllChildren](...args) {
    return this.selectAllChildren.apply(this, args);
  }
  [$setBaseAndExtent](...args) {
    return this.setBaseAndExtent.apply(this, args);
  }
  [$setPosition](...args) {
    return this.setPosition.apply(this, args);
  }
};
dart.addTypeTests(html$.Selection);
const anchorNode = Symbol("Selection.anchorNode");
const anchorOffset = Symbol("Selection.anchorOffset");
const baseNode = Symbol("Selection.baseNode");
const baseOffset = Symbol("Selection.baseOffset");
const extentNode = Symbol("Selection.extentNode");
const extentOffset = Symbol("Selection.extentOffset");
const focusNode = Symbol("Selection.focusNode");
const focusOffset = Symbol("Selection.focusOffset");
const isCollapsed = Symbol("Selection.isCollapsed");
const rangeCount = Symbol("Selection.rangeCount");
const type$31 = Symbol("Selection.type");
dart.setMethodSignature(html$.Selection, () => ({
  __proto__: dart.getMethods(html$.Selection.__proto__),
  [$addRange]: dart.fnType(dart.void, [html$.Range]),
  [$collapse]: dart.fnType(dart.void, [html$.Node], [core.int]),
  [$collapseToEnd]: dart.fnType(dart.void, []),
  [$collapseToStart]: dart.fnType(dart.void, []),
  [$containsNode]: dart.fnType(core.bool, [html$.Node], [core.bool]),
  [$deleteFromDocument]: dart.fnType(dart.void, []),
  [$empty]: dart.fnType(dart.void, []),
  [$extend]: dart.fnType(dart.void, [html$.Node], [core.int]),
  [$getRangeAt]: dart.fnType(html$.Range, [core.int]),
  [$modify]: dart.fnType(dart.void, [core.String, core.String, core.String]),
  [$removeAllRanges]: dart.fnType(dart.void, []),
  [$removeRange]: dart.fnType(dart.void, [html$.Range]),
  [$selectAllChildren]: dart.fnType(dart.void, [html$.Node]),
  [$setBaseAndExtent]: dart.fnType(dart.void, [html$.Node, core.int, html$.Node, core.int]),
  [$setPosition]: dart.fnType(dart.void, [html$.Node], [core.int])
}));
dart.setFieldSignature(html$.Selection, () => ({
  __proto__: dart.getFields(html$.Selection.__proto__),
  [$anchorNode]: dart.finalFieldType(html$.Node),
  [$anchorOffset]: dart.finalFieldType(core.int),
  [$baseNode]: dart.finalFieldType(html$.Node),
  [$baseOffset]: dart.finalFieldType(core.int),
  [$extentNode]: dart.finalFieldType(html$.Node),
  [$extentOffset]: dart.finalFieldType(core.int),
  [$focusNode]: dart.finalFieldType(html$.Node),
  [$focusOffset]: dart.finalFieldType(core.int),
  [$isCollapsed]: dart.finalFieldType(core.bool),
  [$rangeCount]: dart.finalFieldType(core.int),
  [$type]: dart.finalFieldType(core.String)
}));
dart.registerExtension("Selection", html$.Selection);
html$.SensorErrorEvent = class SensorErrorEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.SensorErrorEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new SensorErrorEvent(type, eventInitDict);
  }
  get [$error]() {
    return this.error;
  }
};
dart.addTypeTests(html$.SensorErrorEvent);
const error$5 = Symbol("SensorErrorEvent.error");
dart.setFieldSignature(html$.SensorErrorEvent, () => ({
  __proto__: dart.getFields(html$.SensorErrorEvent.__proto__),
  [$error]: dart.finalFieldType(html$.DomException)
}));
dart.registerExtension("SensorErrorEvent", html$.SensorErrorEvent);
html$.ServiceWorker = class ServiceWorker extends html$.EventTarget {
  get [$scriptUrl]() {
    return this.scriptURL;
  }
  get [$state]() {
    return this.state;
  }
  [$postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  get [$onError]() {
    return html$.ServiceWorker.errorEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.ServiceWorker);
const scriptUrl = Symbol("ServiceWorker.scriptUrl");
const state$5 = Symbol("ServiceWorker.state");
html$.ServiceWorker[dart.implements] = () => [html$.AbstractWorker];
dart.setMethodSignature(html$.ServiceWorker, () => ({
  __proto__: dart.getMethods(html$.ServiceWorker.__proto__),
  [$postMessage]: dart.fnType(dart.void, [dart.dynamic], [core.List$(core.Object)]),
  [_postMessage_1]: dart.fnType(dart.void, [dart.dynamic, core.List$(core.Object)]),
  [_postMessage_2]: dart.fnType(dart.void, [dart.dynamic])
}));
dart.setGetterSignature(html$.ServiceWorker, () => ({
  __proto__: dart.getGetters(html$.ServiceWorker.__proto__),
  [$onError]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.ServiceWorker, () => ({
  __proto__: dart.getFields(html$.ServiceWorker.__proto__),
  [$scriptUrl]: dart.finalFieldType(core.String),
  [$state]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.ServiceWorker, {
  /*html$.ServiceWorker.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  }
});
dart.registerExtension("ServiceWorker", html$.ServiceWorker);
html$.ServiceWorkerContainer = class ServiceWorkerContainer extends html$.EventTarget {
  get [$controller]() {
    return this.controller;
  }
  get [$ready]() {
    return html$.promiseToFuture(html$.ServiceWorkerRegistration, this.ready);
  }
  [$getRegistration](documentURL) {
    if (documentURL === void 0) documentURL = null;
    return html$.promiseToFuture(html$.ServiceWorkerRegistration, this.getRegistration(documentURL));
  }
  [$getRegistrations]() {
    return html$.promiseToFuture(ListOfServiceWorkerRegistration(), this.getRegistrations());
  }
  [$register](url, options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(html$.ServiceWorkerRegistration, this.register(url, options_dict));
  }
  get [$onMessage]() {
    return html$.ServiceWorkerContainer.messageEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.ServiceWorkerContainer);
const controller = Symbol("ServiceWorkerContainer.controller");
dart.setMethodSignature(html$.ServiceWorkerContainer, () => ({
  __proto__: dart.getMethods(html$.ServiceWorkerContainer.__proto__),
  [$getRegistration]: dart.fnType(async.Future$(html$.ServiceWorkerRegistration), [], [core.String]),
  [$getRegistrations]: dart.fnType(async.Future$(core.List$(html$.ServiceWorkerRegistration)), []),
  [$register]: dart.fnType(async.Future$(html$.ServiceWorkerRegistration), [core.String], [core.Map])
}));
dart.setGetterSignature(html$.ServiceWorkerContainer, () => ({
  __proto__: dart.getGetters(html$.ServiceWorkerContainer.__proto__),
  [$ready]: async.Future$(html$.ServiceWorkerRegistration),
  [$onMessage]: async.Stream$(html$.MessageEvent)
}));
dart.setFieldSignature(html$.ServiceWorkerContainer, () => ({
  __proto__: dart.getFields(html$.ServiceWorkerContainer.__proto__),
  [$controller]: dart.finalFieldType(html$.ServiceWorker)
}));
dart.defineLazy(html$.ServiceWorkerContainer, {
  /*html$.ServiceWorkerContainer.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  }
});
dart.registerExtension("ServiceWorkerContainer", html$.ServiceWorkerContainer);
html$.ServiceWorkerGlobalScope = class ServiceWorkerGlobalScope extends html$.WorkerGlobalScope {
  get [$clients]() {
    return this.clients;
  }
  get [$registration]() {
    return this.registration;
  }
  [$skipWaiting]() {
    return html$.promiseToFuture(dart.dynamic, this.skipWaiting());
  }
  get [$onActivate]() {
    return html$.ServiceWorkerGlobalScope.activateEvent.forTarget(this);
  }
  get [$onFetch]() {
    return html$.ServiceWorkerGlobalScope.fetchEvent.forTarget(this);
  }
  get [$onForeignfetch]() {
    return html$.ServiceWorkerGlobalScope.foreignfetchEvent.forTarget(this);
  }
  get [$onInstall]() {
    return html$.ServiceWorkerGlobalScope.installEvent.forTarget(this);
  }
  get [$onMessage]() {
    return html$.ServiceWorkerGlobalScope.messageEvent.forTarget(this);
  }
  static get instance() {
    return html$.ServiceWorkerGlobalScope.as(html$._workerSelf);
  }
};
dart.addTypeTests(html$.ServiceWorkerGlobalScope);
const clients = Symbol("ServiceWorkerGlobalScope.clients");
const registration = Symbol("ServiceWorkerGlobalScope.registration");
dart.setMethodSignature(html$.ServiceWorkerGlobalScope, () => ({
  __proto__: dart.getMethods(html$.ServiceWorkerGlobalScope.__proto__),
  [$skipWaiting]: dart.fnType(async.Future, [])
}));
dart.setGetterSignature(html$.ServiceWorkerGlobalScope, () => ({
  __proto__: dart.getGetters(html$.ServiceWorkerGlobalScope.__proto__),
  [$onActivate]: async.Stream$(html$.Event),
  [$onFetch]: async.Stream$(html$.Event),
  [$onForeignfetch]: async.Stream$(html$.ForeignFetchEvent),
  [$onInstall]: async.Stream$(html$.Event),
  [$onMessage]: async.Stream$(html$.MessageEvent)
}));
dart.setFieldSignature(html$.ServiceWorkerGlobalScope, () => ({
  __proto__: dart.getFields(html$.ServiceWorkerGlobalScope.__proto__),
  [$clients]: dart.finalFieldType(html$.Clients),
  [$registration]: dart.finalFieldType(html$.ServiceWorkerRegistration)
}));
dart.defineLazy(html$.ServiceWorkerGlobalScope, {
  /*html$.ServiceWorkerGlobalScope.activateEvent*/get activateEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("activate"));
  },
  /*html$.ServiceWorkerGlobalScope.fetchEvent*/get fetchEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("fetch"));
  },
  /*html$.ServiceWorkerGlobalScope.foreignfetchEvent*/get foreignfetchEvent() {
    return dart.const(new (EventStreamProviderOfForeignFetchEvent()).new("foreignfetch"));
  },
  /*html$.ServiceWorkerGlobalScope.installEvent*/get installEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("install"));
  },
  /*html$.ServiceWorkerGlobalScope.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  }
});
dart.registerExtension("ServiceWorkerGlobalScope", html$.ServiceWorkerGlobalScope);
html$.ServiceWorkerRegistration = class ServiceWorkerRegistration extends html$.EventTarget {
  get [$active]() {
    return this.active;
  }
  get [$backgroundFetch]() {
    return this.backgroundFetch;
  }
  get [$installing]() {
    return this.installing;
  }
  get [$navigationPreload]() {
    return this.navigationPreload;
  }
  get [$paymentManager]() {
    return this.paymentManager;
  }
  get [$pushManager]() {
    return this.pushManager;
  }
  get [$scope]() {
    return this.scope;
  }
  get [$sync]() {
    return this.sync;
  }
  get [$waiting]() {
    return this.waiting;
  }
  [$getNotifications](filter) {
    if (filter === void 0) filter = null;
    let filter_dict = null;
    if (filter != null) {
      filter_dict = html_common.convertDartToNative_Dictionary(filter);
    }
    return html$.promiseToFuture(ListOfNotification(), this.getNotifications(filter_dict));
  }
  [$showNotification](title, options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.showNotification(title, options_dict));
  }
  [$unregister]() {
    return html$.promiseToFuture(core.bool, this.unregister());
  }
  [$update]() {
    return html$.promiseToFuture(dart.dynamic, this.update());
  }
};
dart.addTypeTests(html$.ServiceWorkerRegistration);
const active$ = Symbol("ServiceWorkerRegistration.active");
const backgroundFetch = Symbol("ServiceWorkerRegistration.backgroundFetch");
const installing = Symbol("ServiceWorkerRegistration.installing");
const navigationPreload = Symbol("ServiceWorkerRegistration.navigationPreload");
const paymentManager = Symbol("ServiceWorkerRegistration.paymentManager");
const pushManager = Symbol("ServiceWorkerRegistration.pushManager");
const scope$ = Symbol("ServiceWorkerRegistration.scope");
const sync = Symbol("ServiceWorkerRegistration.sync");
const waiting = Symbol("ServiceWorkerRegistration.waiting");
dart.setMethodSignature(html$.ServiceWorkerRegistration, () => ({
  __proto__: dart.getMethods(html$.ServiceWorkerRegistration.__proto__),
  [$getNotifications]: dart.fnType(async.Future$(core.List$(html$.Notification)), [], [core.Map]),
  [$showNotification]: dart.fnType(async.Future, [core.String], [core.Map]),
  [$unregister]: dart.fnType(async.Future$(core.bool), []),
  [$update]: dart.fnType(async.Future, [])
}));
dart.setFieldSignature(html$.ServiceWorkerRegistration, () => ({
  __proto__: dart.getFields(html$.ServiceWorkerRegistration.__proto__),
  [$active]: dart.finalFieldType(html$.ServiceWorker),
  [$backgroundFetch]: dart.finalFieldType(html$.BackgroundFetchManager),
  [$installing]: dart.finalFieldType(html$.ServiceWorker),
  [$navigationPreload]: dart.finalFieldType(html$.NavigationPreloadManager),
  [$paymentManager]: dart.finalFieldType(html$.PaymentManager),
  [$pushManager]: dart.finalFieldType(html$.PushManager),
  [$scope]: dart.finalFieldType(core.String),
  [$sync]: dart.finalFieldType(html$.SyncManager),
  [$waiting]: dart.finalFieldType(html$.ServiceWorker)
}));
dart.registerExtension("ServiceWorkerRegistration", html$.ServiceWorkerRegistration);
html$.ShadowElement = class ShadowElement extends html$.HtmlElement {
  static new() {
    return html$.ShadowElement._check(html$.document[$createElement]("shadow"));
  }
  static get supported() {
    return html$.Element.isTagSupported("shadow");
  }
  [$getDistributedNodes](...args) {
    return this.getDistributedNodes.apply(this, args);
  }
};
(html$.ShadowElement.created = function() {
  html$.ShadowElement.__proto__.created.call(this);
}).prototype = html$.ShadowElement.prototype;
dart.addTypeTests(html$.ShadowElement);
dart.setMethodSignature(html$.ShadowElement, () => ({
  __proto__: dart.getMethods(html$.ShadowElement.__proto__),
  [$getDistributedNodes]: dart.fnType(core.List$(html$.Node), [])
}));
dart.registerExtension("HTMLShadowElement", html$.ShadowElement);
html$.ShadowRoot = class ShadowRoot extends html$.DocumentFragment {
  get [$delegatesFocus]() {
    return this.delegatesFocus;
  }
  get [$host]() {
    return this.host;
  }
  get [$innerHtml]() {
    return this.innerHTML;
  }
  set [$innerHtml](value) {
    this.innerHTML = value;
  }
  get [$mode]() {
    return this.mode;
  }
  get [$olderShadowRoot]() {
    return this.olderShadowRoot;
  }
  get [$activeElement]() {
    return this.activeElement;
  }
  get [$fullscreenElement]() {
    return this.fullscreenElement;
  }
  get [$pointerLockElement]() {
    return this.pointerLockElement;
  }
  get [$styleSheets]() {
    return this.styleSheets;
  }
  [$elementFromPoint](...args) {
    return this.elementFromPoint.apply(this, args);
  }
  [$elementsFromPoint](...args) {
    return this.elementsFromPoint.apply(this, args);
  }
  [$getSelection](...args) {
    return this.getSelection.apply(this, args);
  }
  static get supported() {
    return !!(Element.prototype.createShadowRoot || Element.prototype.webkitCreateShadowRoot);
  }
  static _shadowRootDeprecationReport() {
    if (!dart.test(html$.ShadowRoot._shadowRootDeprecationReported)) {
      html$.window[$console].warn("ShadowRoot.resetStyleInheritance and ShadowRoot.applyAuthorStyles now deprecated in dart:html.\nPlease remove them from your code.\n");
      html$.ShadowRoot._shadowRootDeprecationReported = true;
    }
  }
  get [$resetStyleInheritance]() {
    html$.ShadowRoot._shadowRootDeprecationReport();
    return false;
  }
  set [$resetStyleInheritance](value) {
    html$.ShadowRoot._shadowRootDeprecationReport();
  }
  get [$applyAuthorStyles]() {
    html$.ShadowRoot._shadowRootDeprecationReport();
    return false;
  }
  set [$applyAuthorStyles](value) {
    html$.ShadowRoot._shadowRootDeprecationReport();
  }
};
dart.addTypeTests(html$.ShadowRoot);
const delegatesFocus = Symbol("ShadowRoot.delegatesFocus");
const host$2 = Symbol("ShadowRoot.host");
const innerHtml = Symbol("ShadowRoot.innerHtml");
const mode$1 = Symbol("ShadowRoot.mode");
const olderShadowRoot = Symbol("ShadowRoot.olderShadowRoot");
const activeElement$0 = Symbol("ShadowRoot.activeElement");
const fullscreenElement$0 = Symbol("ShadowRoot.fullscreenElement");
const pointerLockElement$0 = Symbol("ShadowRoot.pointerLockElement");
const styleSheets$ = Symbol("ShadowRoot.styleSheets");
html$.ShadowRoot[dart.implements] = () => [html$.DocumentOrShadowRoot];
dart.setMethodSignature(html$.ShadowRoot, () => ({
  __proto__: dart.getMethods(html$.ShadowRoot.__proto__),
  [$elementFromPoint]: dart.fnType(html$.Element, [core.int, core.int]),
  [$elementsFromPoint]: dart.fnType(core.List$(html$.Element), [core.int, core.int]),
  [$getSelection]: dart.fnType(html$.Selection, [])
}));
dart.setGetterSignature(html$.ShadowRoot, () => ({
  __proto__: dart.getGetters(html$.ShadowRoot.__proto__),
  [$resetStyleInheritance]: core.bool,
  [$applyAuthorStyles]: core.bool
}));
dart.setSetterSignature(html$.ShadowRoot, () => ({
  __proto__: dart.getSetters(html$.ShadowRoot.__proto__),
  [$resetStyleInheritance]: core.bool,
  [$applyAuthorStyles]: core.bool
}));
dart.setFieldSignature(html$.ShadowRoot, () => ({
  __proto__: dart.getFields(html$.ShadowRoot.__proto__),
  [$delegatesFocus]: dart.finalFieldType(core.bool),
  [$host]: dart.finalFieldType(html$.Element),
  [$innerHtml]: dart.fieldType(core.String),
  [$mode]: dart.finalFieldType(core.String),
  [$olderShadowRoot]: dart.finalFieldType(html$.ShadowRoot),
  [$activeElement]: dart.finalFieldType(html$.Element),
  [$fullscreenElement]: dart.finalFieldType(html$.Element),
  [$pointerLockElement]: dart.finalFieldType(html$.Element),
  [$styleSheets]: dart.finalFieldType(ListOfStyleSheet())
}));
dart.defineLazy(html$.ShadowRoot, {
  /*html$.ShadowRoot._shadowRootDeprecationReported*/get _shadowRootDeprecationReported() {
    return false;
  },
  set _shadowRootDeprecationReported(_) {}
});
dart.registerExtension("ShadowRoot", html$.ShadowRoot);
html$.SharedArrayBuffer = class SharedArrayBuffer extends _interceptors.Interceptor {
  get [$byteLength]() {
    return this.byteLength;
  }
};
dart.addTypeTests(html$.SharedArrayBuffer);
const byteLength = Symbol("SharedArrayBuffer.byteLength");
dart.setFieldSignature(html$.SharedArrayBuffer, () => ({
  __proto__: dart.getFields(html$.SharedArrayBuffer.__proto__),
  [$byteLength]: dart.finalFieldType(core.int)
}));
dart.registerExtension("SharedArrayBuffer", html$.SharedArrayBuffer);
html$.SharedWorker = class SharedWorker$ extends html$.EventTarget {
  static new(scriptURL, name) {
    if (name === void 0) name = null;
    if (name != null) {
      return html$.SharedWorker._create_1(scriptURL, name);
    }
    return html$.SharedWorker._create_2(scriptURL);
  }
  static _create_1(scriptURL, name) {
    return new SharedWorker(scriptURL, name);
  }
  static _create_2(scriptURL) {
    return new SharedWorker(scriptURL);
  }
  get [$port]() {
    return this.port;
  }
  get [$onError]() {
    return html$.SharedWorker.errorEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.SharedWorker);
const port$5 = Symbol("SharedWorker.port");
html$.SharedWorker[dart.implements] = () => [html$.AbstractWorker];
dart.setGetterSignature(html$.SharedWorker, () => ({
  __proto__: dart.getGetters(html$.SharedWorker.__proto__),
  [$onError]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.SharedWorker, () => ({
  __proto__: dart.getFields(html$.SharedWorker.__proto__),
  [$port]: dart.finalFieldType(html$.MessagePort)
}));
dart.defineLazy(html$.SharedWorker, {
  /*html$.SharedWorker.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  }
});
dart.registerExtension("SharedWorker", html$.SharedWorker);
html$.SharedWorkerGlobalScope = class SharedWorkerGlobalScope extends html$.WorkerGlobalScope {
  get [$name]() {
    return this.name;
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [_webkitRequestFileSystem](...args) {
    return this.webkitRequestFileSystem.apply(this, args);
  }
  [$requestFileSystemSync](...args) {
    return this.webkitRequestFileSystemSync.apply(this, args);
  }
  [$resolveLocalFileSystemSyncUrl](...args) {
    return this.webkitResolveLocalFileSystemSyncURL.apply(this, args);
  }
  [_webkitResolveLocalFileSystemUrl](...args) {
    return this.webkitResolveLocalFileSystemURL.apply(this, args);
  }
  get [$onConnect]() {
    return html$.SharedWorkerGlobalScope.connectEvent.forTarget(this);
  }
  static get instance() {
    return html$.SharedWorkerGlobalScope.as(html$._workerSelf);
  }
};
dart.addTypeTests(html$.SharedWorkerGlobalScope);
const name$34 = Symbol("SharedWorkerGlobalScope.name");
dart.setMethodSignature(html$.SharedWorkerGlobalScope, () => ({
  __proto__: dart.getMethods(html$.SharedWorkerGlobalScope.__proto__),
  [$close]: dart.fnType(dart.void, []),
  [_webkitRequestFileSystem]: dart.fnType(dart.void, [core.int, core.int], [dart.fnType(dart.void, [html$.FileSystem]), dart.fnType(dart.void, [html$.DomException])]),
  [$requestFileSystemSync]: dart.fnType(html$._DOMFileSystemSync, [core.int, core.int]),
  [$resolveLocalFileSystemSyncUrl]: dart.fnType(html$._EntrySync, [core.String]),
  [_webkitResolveLocalFileSystemUrl]: dart.fnType(dart.void, [core.String, dart.fnType(dart.void, [html$.Entry])], [dart.fnType(dart.void, [html$.DomException])])
}));
dart.setGetterSignature(html$.SharedWorkerGlobalScope, () => ({
  __proto__: dart.getGetters(html$.SharedWorkerGlobalScope.__proto__),
  [$onConnect]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.SharedWorkerGlobalScope, () => ({
  __proto__: dart.getFields(html$.SharedWorkerGlobalScope.__proto__),
  [$name]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.SharedWorkerGlobalScope, {
  /*html$.SharedWorkerGlobalScope.connectEvent*/get connectEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("connect"));
  },
  /*html$.SharedWorkerGlobalScope.PERSISTENT*/get PERSISTENT() {
    return 1;
  },
  /*html$.SharedWorkerGlobalScope.TEMPORARY*/get TEMPORARY() {
    return 0;
  }
});
dart.registerExtension("SharedWorkerGlobalScope", html$.SharedWorkerGlobalScope);
const _assignedNodes_1 = Symbol('_assignedNodes_1');
const _assignedNodes_2 = Symbol('_assignedNodes_2');
html$.SlotElement = class SlotElement extends html$.HtmlElement {
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  [$assignedNodes](options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_assignedNodes_1](options_1);
    }
    return this[_assignedNodes_2]();
  }
  [_assignedNodes_1](...args) {
    return this.assignedNodes.apply(this, args);
  }
  [_assignedNodes_2](...args) {
    return this.assignedNodes.apply(this, args);
  }
};
(html$.SlotElement.created = function() {
  this[name$35] = null;
  html$.SlotElement.__proto__.created.call(this);
}).prototype = html$.SlotElement.prototype;
dart.addTypeTests(html$.SlotElement);
const name$35 = Symbol("SlotElement.name");
dart.setMethodSignature(html$.SlotElement, () => ({
  __proto__: dart.getMethods(html$.SlotElement.__proto__),
  [$assignedNodes]: dart.fnType(core.List$(html$.Node), [], [core.Map]),
  [_assignedNodes_1]: dart.fnType(core.List$(html$.Node), [dart.dynamic]),
  [_assignedNodes_2]: dart.fnType(core.List$(html$.Node), [])
}));
dart.setFieldSignature(html$.SlotElement, () => ({
  __proto__: dart.getFields(html$.SlotElement.__proto__),
  [$name]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLSlotElement", html$.SlotElement);
html$.SourceBuffer = class SourceBuffer extends html$.EventTarget {
  get [$appendWindowEnd]() {
    return this.appendWindowEnd;
  }
  set [$appendWindowEnd](value) {
    this.appendWindowEnd = value;
  }
  get [$appendWindowStart]() {
    return this.appendWindowStart;
  }
  set [$appendWindowStart](value) {
    this.appendWindowStart = value;
  }
  get [$audioTracks]() {
    return this.audioTracks;
  }
  get [$buffered]() {
    return this.buffered;
  }
  get [$mode]() {
    return this.mode;
  }
  set [$mode](value) {
    this.mode = value;
  }
  get [$timestampOffset]() {
    return this.timestampOffset;
  }
  set [$timestampOffset](value) {
    this.timestampOffset = value;
  }
  get [$trackDefaults]() {
    return this.trackDefaults;
  }
  set [$trackDefaults](value) {
    this.trackDefaults = value;
  }
  get [$updating]() {
    return this.updating;
  }
  get [$videoTracks]() {
    return this.videoTracks;
  }
  [$abort](...args) {
    return this.abort.apply(this, args);
  }
  [$appendBuffer](...args) {
    return this.appendBuffer.apply(this, args);
  }
  [$appendTypedData](...args) {
    return this.appendBuffer.apply(this, args);
  }
  [$remove](...args) {
    return this.remove.apply(this, args);
  }
  get [$onAbort]() {
    return html$.SourceBuffer.abortEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.SourceBuffer.errorEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.SourceBuffer);
const appendWindowEnd = Symbol("SourceBuffer.appendWindowEnd");
const appendWindowStart = Symbol("SourceBuffer.appendWindowStart");
const audioTracks$ = Symbol("SourceBuffer.audioTracks");
const buffered$ = Symbol("SourceBuffer.buffered");
const mode$2 = Symbol("SourceBuffer.mode");
const timestampOffset = Symbol("SourceBuffer.timestampOffset");
const trackDefaults = Symbol("SourceBuffer.trackDefaults");
const updating = Symbol("SourceBuffer.updating");
const videoTracks$ = Symbol("SourceBuffer.videoTracks");
dart.setMethodSignature(html$.SourceBuffer, () => ({
  __proto__: dart.getMethods(html$.SourceBuffer.__proto__),
  [$abort]: dart.fnType(dart.void, []),
  [$appendBuffer]: dart.fnType(dart.void, [typed_data.ByteBuffer]),
  [$appendTypedData]: dart.fnType(dart.void, [typed_data.TypedData]),
  [$remove]: dart.fnType(dart.void, [core.num, core.num])
}));
dart.setGetterSignature(html$.SourceBuffer, () => ({
  __proto__: dart.getGetters(html$.SourceBuffer.__proto__),
  [$onAbort]: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.SourceBuffer, () => ({
  __proto__: dart.getFields(html$.SourceBuffer.__proto__),
  [$appendWindowEnd]: dart.fieldType(core.num),
  [$appendWindowStart]: dart.fieldType(core.num),
  [$audioTracks]: dart.finalFieldType(web_audio.AudioTrackList),
  [$buffered]: dart.finalFieldType(html$.TimeRanges),
  [$mode]: dart.fieldType(core.String),
  [$timestampOffset]: dart.fieldType(core.num),
  [$trackDefaults]: dart.fieldType(html$.TrackDefaultList),
  [$updating]: dart.finalFieldType(core.bool),
  [$videoTracks]: dart.finalFieldType(html$.VideoTrackList)
}));
dart.defineLazy(html$.SourceBuffer, {
  /*html$.SourceBuffer.abortEvent*/get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
  },
  /*html$.SourceBuffer.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  }
});
dart.registerExtension("SourceBuffer", html$.SourceBuffer);
const EventTarget_ListMixin$ = class EventTarget_ListMixin extends html$.EventTarget {};
(EventTarget_ListMixin$._created = function() {
  EventTarget_ListMixin$.__proto__._created.call(this);
}).prototype = EventTarget_ListMixin$.prototype;
(EventTarget_ListMixin$.__ = function() {
  EventTarget_ListMixin$.__proto__.__.call(this);
}).prototype = EventTarget_ListMixin$.prototype;
dart.applyMixin(EventTarget_ListMixin$, collection.ListMixin$(html$.SourceBuffer));
const EventTarget_ImmutableListMixin$ = class EventTarget_ImmutableListMixin extends EventTarget_ListMixin$ {};
(EventTarget_ImmutableListMixin$._created = function() {
  EventTarget_ImmutableListMixin$.__proto__._created.call(this);
}).prototype = EventTarget_ImmutableListMixin$.prototype;
(EventTarget_ImmutableListMixin$.__ = function() {
  EventTarget_ImmutableListMixin$.__proto__.__.call(this);
}).prototype = EventTarget_ImmutableListMixin$.prototype;
dart.applyMixin(EventTarget_ImmutableListMixin$, html$.ImmutableListMixin$(html$.SourceBuffer));
html$.SourceBufferList = class SourceBufferList extends EventTarget_ImmutableListMixin$ {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.SourceBuffer._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
html$.SourceBufferList.prototype[dart.isList] = true;
dart.addTypeTests(html$.SourceBufferList);
html$.SourceBufferList[dart.implements] = () => [JavaScriptIndexingBehaviorOfSourceBuffer(), ListOfSourceBuffer()];
dart.setMethodSignature(html$.SourceBufferList, () => ({
  __proto__: dart.getMethods(html$.SourceBufferList.__proto__),
  [$_get]: dart.fnType(html$.SourceBuffer, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.SourceBuffer, [core.int]),
  [$item]: dart.fnType(html$.SourceBuffer, [core.int])
}));
dart.setGetterSignature(html$.SourceBufferList, () => ({
  __proto__: dart.getGetters(html$.SourceBufferList.__proto__),
  [$length]: core.int,
  [$first]: html$.SourceBuffer,
  [$last]: html$.SourceBuffer,
  [$single]: html$.SourceBuffer
}));
dart.setSetterSignature(html$.SourceBufferList, () => ({
  __proto__: dart.getSetters(html$.SourceBufferList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("SourceBufferList", html$.SourceBufferList);
html$.SourceElement = class SourceElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("source");
  }
  get [$media]() {
    return this.media;
  }
  set [$media](value) {
    this.media = value;
  }
  get [$sizes]() {
    return this.sizes;
  }
  set [$sizes](value) {
    this.sizes = value;
  }
  get [$src]() {
    return this.src;
  }
  set [$src](value) {
    this.src = value;
  }
  get [$srcset]() {
    return this.srcset;
  }
  set [$srcset](value) {
    this.srcset = value;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
};
(html$.SourceElement.created = function() {
  this[media$4] = null;
  this[sizes$0] = null;
  this[src$5] = null;
  this[srcset$] = null;
  this[type$32] = null;
  html$.SourceElement.__proto__.created.call(this);
}).prototype = html$.SourceElement.prototype;
dart.addTypeTests(html$.SourceElement);
const media$4 = Symbol("SourceElement.media");
const sizes$0 = Symbol("SourceElement.sizes");
const src$5 = Symbol("SourceElement.src");
const srcset$ = Symbol("SourceElement.srcset");
const type$32 = Symbol("SourceElement.type");
dart.setFieldSignature(html$.SourceElement, () => ({
  __proto__: dart.getFields(html$.SourceElement.__proto__),
  [$media]: dart.fieldType(core.String),
  [$sizes]: dart.fieldType(core.String),
  [$src]: dart.fieldType(core.String),
  [$srcset]: dart.fieldType(core.String),
  [$type]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLSourceElement", html$.SourceElement);
html$.SpanElement = class SpanElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("span");
  }
};
(html$.SpanElement.created = function() {
  html$.SpanElement.__proto__.created.call(this);
}).prototype = html$.SpanElement.prototype;
dart.addTypeTests(html$.SpanElement);
dart.registerExtension("HTMLSpanElement", html$.SpanElement);
html$.SpeechGrammar = class SpeechGrammar$ extends _interceptors.Interceptor {
  static new() {
    return html$.SpeechGrammar._create_1();
  }
  static _create_1() {
    return new SpeechGrammar();
  }
  get [$src]() {
    return this.src;
  }
  set [$src](value) {
    this.src = value;
  }
  get [$weight]() {
    return this.weight;
  }
  set [$weight](value) {
    this.weight = value;
  }
};
dart.addTypeTests(html$.SpeechGrammar);
const src$6 = Symbol("SpeechGrammar.src");
const weight$ = Symbol("SpeechGrammar.weight");
dart.setFieldSignature(html$.SpeechGrammar, () => ({
  __proto__: dart.getFields(html$.SpeechGrammar.__proto__),
  [$src]: dart.fieldType(core.String),
  [$weight]: dart.fieldType(core.num)
}));
dart.registerExtension("SpeechGrammar", html$.SpeechGrammar);
const Interceptor_ListMixin$$5 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$5.new = function() {
  Interceptor_ListMixin$$5.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$5.prototype;
dart.applyMixin(Interceptor_ListMixin$$5, collection.ListMixin$(html$.SpeechGrammar));
const Interceptor_ImmutableListMixin$$5 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$5 {};
(Interceptor_ImmutableListMixin$$5.new = function() {
  Interceptor_ImmutableListMixin$$5.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$5.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$5, html$.ImmutableListMixin$(html$.SpeechGrammar));
html$.SpeechGrammarList = class SpeechGrammarList$ extends Interceptor_ImmutableListMixin$$5 {
  static new() {
    return html$.SpeechGrammarList._create_1();
  }
  static _create_1() {
    return new SpeechGrammarList();
  }
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.SpeechGrammar._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$addFromString](...args) {
    return this.addFromString.apply(this, args);
  }
  [$addFromUri](...args) {
    return this.addFromUri.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
html$.SpeechGrammarList.prototype[dart.isList] = true;
dart.addTypeTests(html$.SpeechGrammarList);
html$.SpeechGrammarList[dart.implements] = () => [JavaScriptIndexingBehaviorOfSpeechGrammar(), ListOfSpeechGrammar()];
dart.setMethodSignature(html$.SpeechGrammarList, () => ({
  __proto__: dart.getMethods(html$.SpeechGrammarList.__proto__),
  [$_get]: dart.fnType(html$.SpeechGrammar, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.SpeechGrammar, [core.int]),
  [$addFromString]: dart.fnType(dart.void, [core.String], [core.num]),
  [$addFromUri]: dart.fnType(dart.void, [core.String], [core.num]),
  [$item]: dart.fnType(html$.SpeechGrammar, [core.int])
}));
dart.setGetterSignature(html$.SpeechGrammarList, () => ({
  __proto__: dart.getGetters(html$.SpeechGrammarList.__proto__),
  [$length]: core.int,
  [$first]: html$.SpeechGrammar,
  [$last]: html$.SpeechGrammar,
  [$single]: html$.SpeechGrammar
}));
dart.setSetterSignature(html$.SpeechGrammarList, () => ({
  __proto__: dart.getSetters(html$.SpeechGrammarList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("SpeechGrammarList", html$.SpeechGrammarList);
html$.SpeechRecognition = class SpeechRecognition extends html$.EventTarget {
  static get supported() {
    return !!(window.SpeechRecognition || window.webkitSpeechRecognition);
  }
  get [$audioTrack]() {
    return this.audioTrack;
  }
  set [$audioTrack](value) {
    this.audioTrack = value;
  }
  get [$continuous]() {
    return this.continuous;
  }
  set [$continuous](value) {
    this.continuous = value;
  }
  get [$grammars]() {
    return this.grammars;
  }
  set [$grammars](value) {
    this.grammars = value;
  }
  get [$interimResults]() {
    return this.interimResults;
  }
  set [$interimResults](value) {
    this.interimResults = value;
  }
  get [$lang]() {
    return this.lang;
  }
  set [$lang](value) {
    this.lang = value;
  }
  get [$maxAlternatives]() {
    return this.maxAlternatives;
  }
  set [$maxAlternatives](value) {
    this.maxAlternatives = value;
  }
  [$abort](...args) {
    return this.abort.apply(this, args);
  }
  [$start](...args) {
    return this.start.apply(this, args);
  }
  [$stop](...args) {
    return this.stop.apply(this, args);
  }
  get [$onAudioEnd]() {
    return html$.SpeechRecognition.audioEndEvent.forTarget(this);
  }
  get [$onAudioStart]() {
    return html$.SpeechRecognition.audioStartEvent.forTarget(this);
  }
  get [$onEnd]() {
    return html$.SpeechRecognition.endEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.SpeechRecognition.errorEvent.forTarget(this);
  }
  get [$onNoMatch]() {
    return html$.SpeechRecognition.noMatchEvent.forTarget(this);
  }
  get [$onResult]() {
    return html$.SpeechRecognition.resultEvent.forTarget(this);
  }
  get [$onSoundEnd]() {
    return html$.SpeechRecognition.soundEndEvent.forTarget(this);
  }
  get [$onSoundStart]() {
    return html$.SpeechRecognition.soundStartEvent.forTarget(this);
  }
  get [$onSpeechEnd]() {
    return html$.SpeechRecognition.speechEndEvent.forTarget(this);
  }
  get [$onSpeechStart]() {
    return html$.SpeechRecognition.speechStartEvent.forTarget(this);
  }
  get [$onStart]() {
    return html$.SpeechRecognition.startEvent.forTarget(this);
  }
  static new() {
    return new (window.SpeechRecognition || window.webkitSpeechRecognition)();
  }
};
dart.addTypeTests(html$.SpeechRecognition);
const audioTrack = Symbol("SpeechRecognition.audioTrack");
const continuous = Symbol("SpeechRecognition.continuous");
const grammars = Symbol("SpeechRecognition.grammars");
const interimResults = Symbol("SpeechRecognition.interimResults");
const lang$0 = Symbol("SpeechRecognition.lang");
const maxAlternatives = Symbol("SpeechRecognition.maxAlternatives");
dart.setMethodSignature(html$.SpeechRecognition, () => ({
  __proto__: dart.getMethods(html$.SpeechRecognition.__proto__),
  [$abort]: dart.fnType(dart.void, []),
  [$start]: dart.fnType(dart.void, []),
  [$stop]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.SpeechRecognition, () => ({
  __proto__: dart.getGetters(html$.SpeechRecognition.__proto__),
  [$onAudioEnd]: async.Stream$(html$.Event),
  [$onAudioStart]: async.Stream$(html$.Event),
  [$onEnd]: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.SpeechRecognitionError),
  [$onNoMatch]: async.Stream$(html$.SpeechRecognitionEvent),
  [$onResult]: async.Stream$(html$.SpeechRecognitionEvent),
  [$onSoundEnd]: async.Stream$(html$.Event),
  [$onSoundStart]: async.Stream$(html$.Event),
  [$onSpeechEnd]: async.Stream$(html$.Event),
  [$onSpeechStart]: async.Stream$(html$.Event),
  [$onStart]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.SpeechRecognition, () => ({
  __proto__: dart.getFields(html$.SpeechRecognition.__proto__),
  [$audioTrack]: dart.fieldType(html$.MediaStreamTrack),
  [$continuous]: dart.fieldType(core.bool),
  [$grammars]: dart.fieldType(html$.SpeechGrammarList),
  [$interimResults]: dart.fieldType(core.bool),
  [$lang]: dart.fieldType(core.String),
  [$maxAlternatives]: dart.fieldType(core.int)
}));
dart.defineLazy(html$.SpeechRecognition, {
  /*html$.SpeechRecognition.audioEndEvent*/get audioEndEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("audioend"));
  },
  /*html$.SpeechRecognition.audioStartEvent*/get audioStartEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("audiostart"));
  },
  /*html$.SpeechRecognition.endEvent*/get endEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("end"));
  },
  /*html$.SpeechRecognition.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfSpeechRecognitionError()).new("error"));
  },
  /*html$.SpeechRecognition.noMatchEvent*/get noMatchEvent() {
    return dart.const(new (EventStreamProviderOfSpeechRecognitionEvent()).new("nomatch"));
  },
  /*html$.SpeechRecognition.resultEvent*/get resultEvent() {
    return dart.const(new (EventStreamProviderOfSpeechRecognitionEvent()).new("result"));
  },
  /*html$.SpeechRecognition.soundEndEvent*/get soundEndEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("soundend"));
  },
  /*html$.SpeechRecognition.soundStartEvent*/get soundStartEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("soundstart"));
  },
  /*html$.SpeechRecognition.speechEndEvent*/get speechEndEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("speechend"));
  },
  /*html$.SpeechRecognition.speechStartEvent*/get speechStartEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("speechstart"));
  },
  /*html$.SpeechRecognition.startEvent*/get startEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("start"));
  }
});
dart.registerExtension("SpeechRecognition", html$.SpeechRecognition);
html$.SpeechRecognitionAlternative = class SpeechRecognitionAlternative extends _interceptors.Interceptor {
  get [$confidence]() {
    return this.confidence;
  }
  get [$transcript]() {
    return this.transcript;
  }
};
dart.addTypeTests(html$.SpeechRecognitionAlternative);
const confidence = Symbol("SpeechRecognitionAlternative.confidence");
const transcript = Symbol("SpeechRecognitionAlternative.transcript");
dart.setFieldSignature(html$.SpeechRecognitionAlternative, () => ({
  __proto__: dart.getFields(html$.SpeechRecognitionAlternative.__proto__),
  [$confidence]: dart.finalFieldType(core.num),
  [$transcript]: dart.finalFieldType(core.String)
}));
dart.registerExtension("SpeechRecognitionAlternative", html$.SpeechRecognitionAlternative);
html$.SpeechRecognitionError = class SpeechRecognitionError$ extends html$.Event {
  static new(type, initDict) {
    if (initDict === void 0) initDict = null;
    if (initDict != null) {
      let initDict_1 = html_common.convertDartToNative_Dictionary(initDict);
      return html$.SpeechRecognitionError._create_1(type, initDict_1);
    }
    return html$.SpeechRecognitionError._create_2(type);
  }
  static _create_1(type, initDict) {
    return new SpeechRecognitionError(type, initDict);
  }
  static _create_2(type) {
    return new SpeechRecognitionError(type);
  }
  get [$error]() {
    return this.error;
  }
  get [$message]() {
    return this.message;
  }
};
dart.addTypeTests(html$.SpeechRecognitionError);
const error$6 = Symbol("SpeechRecognitionError.error");
const message$27 = Symbol("SpeechRecognitionError.message");
dart.setFieldSignature(html$.SpeechRecognitionError, () => ({
  __proto__: dart.getFields(html$.SpeechRecognitionError.__proto__),
  [$error]: dart.finalFieldType(core.String),
  [$message]: dart.finalFieldType(core.String)
}));
dart.registerExtension("SpeechRecognitionError", html$.SpeechRecognitionError);
html$.SpeechRecognitionEvent = class SpeechRecognitionEvent$ extends html$.Event {
  static new(type, initDict) {
    if (initDict === void 0) initDict = null;
    if (initDict != null) {
      let initDict_1 = html_common.convertDartToNative_Dictionary(initDict);
      return html$.SpeechRecognitionEvent._create_1(type, initDict_1);
    }
    return html$.SpeechRecognitionEvent._create_2(type);
  }
  static _create_1(type, initDict) {
    return new SpeechRecognitionEvent(type, initDict);
  }
  static _create_2(type) {
    return new SpeechRecognitionEvent(type);
  }
  get [$emma]() {
    return this.emma;
  }
  get [$interpretation]() {
    return this.interpretation;
  }
  get [$resultIndex]() {
    return this.resultIndex;
  }
  get [$results]() {
    return this.results;
  }
};
dart.addTypeTests(html$.SpeechRecognitionEvent);
const emma = Symbol("SpeechRecognitionEvent.emma");
const interpretation = Symbol("SpeechRecognitionEvent.interpretation");
const resultIndex = Symbol("SpeechRecognitionEvent.resultIndex");
const results = Symbol("SpeechRecognitionEvent.results");
dart.setFieldSignature(html$.SpeechRecognitionEvent, () => ({
  __proto__: dart.getFields(html$.SpeechRecognitionEvent.__proto__),
  [$emma]: dart.finalFieldType(html$.Document),
  [$interpretation]: dart.finalFieldType(html$.Document),
  [$resultIndex]: dart.finalFieldType(core.int),
  [$results]: dart.finalFieldType(ListOfSpeechRecognitionResult())
}));
dart.registerExtension("SpeechRecognitionEvent", html$.SpeechRecognitionEvent);
html$.SpeechRecognitionResult = class SpeechRecognitionResult extends _interceptors.Interceptor {
  get [$isFinal]() {
    return this.isFinal;
  }
  get [$length]() {
    return this.length;
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
dart.addTypeTests(html$.SpeechRecognitionResult);
const isFinal = Symbol("SpeechRecognitionResult.isFinal");
const length$13 = Symbol("SpeechRecognitionResult.length");
dart.setMethodSignature(html$.SpeechRecognitionResult, () => ({
  __proto__: dart.getMethods(html$.SpeechRecognitionResult.__proto__),
  [$item]: dart.fnType(html$.SpeechRecognitionAlternative, [core.int])
}));
dart.setFieldSignature(html$.SpeechRecognitionResult, () => ({
  __proto__: dart.getFields(html$.SpeechRecognitionResult.__proto__),
  [$isFinal]: dart.finalFieldType(core.bool),
  [$length]: dart.finalFieldType(core.int)
}));
dart.registerExtension("SpeechRecognitionResult", html$.SpeechRecognitionResult);
const _getVoices = Symbol('_getVoices');
html$.SpeechSynthesis = class SpeechSynthesis extends html$.EventTarget {
  [$getVoices]() {
    let voices = this[_getVoices]();
    if (dart.notNull(voices[$length]) > 0) _js_helper.applyExtension("SpeechSynthesisVoice", voices[$_get](0));
    return voices;
  }
  get [$paused]() {
    return this.paused;
  }
  get [$pending]() {
    return this.pending;
  }
  get [$speaking]() {
    return this.speaking;
  }
  [$cancel](...args) {
    return this.cancel.apply(this, args);
  }
  [_getVoices](...args) {
    return this.getVoices.apply(this, args);
  }
  [$pause](...args) {
    return this.pause.apply(this, args);
  }
  [$resume](...args) {
    return this.resume.apply(this, args);
  }
  [$speak](...args) {
    return this.speak.apply(this, args);
  }
};
dart.addTypeTests(html$.SpeechSynthesis);
const paused$ = Symbol("SpeechSynthesis.paused");
const pending = Symbol("SpeechSynthesis.pending");
const speaking = Symbol("SpeechSynthesis.speaking");
dart.setMethodSignature(html$.SpeechSynthesis, () => ({
  __proto__: dart.getMethods(html$.SpeechSynthesis.__proto__),
  [$getVoices]: dart.fnType(core.List$(html$.SpeechSynthesisVoice), []),
  [$cancel]: dart.fnType(dart.void, []),
  [_getVoices]: dart.fnType(core.List$(html$.SpeechSynthesisVoice), []),
  [$pause]: dart.fnType(dart.void, []),
  [$resume]: dart.fnType(dart.void, []),
  [$speak]: dart.fnType(dart.void, [html$.SpeechSynthesisUtterance])
}));
dart.setFieldSignature(html$.SpeechSynthesis, () => ({
  __proto__: dart.getFields(html$.SpeechSynthesis.__proto__),
  [$paused]: dart.finalFieldType(core.bool),
  [$pending]: dart.finalFieldType(core.bool),
  [$speaking]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("SpeechSynthesis", html$.SpeechSynthesis);
html$.SpeechSynthesisEvent = class SpeechSynthesisEvent extends html$.Event {
  get [$charIndex]() {
    return this.charIndex;
  }
  get [$elapsedTime]() {
    return this.elapsedTime;
  }
  get [$name]() {
    return this.name;
  }
  get [$utterance]() {
    return this.utterance;
  }
};
dart.addTypeTests(html$.SpeechSynthesisEvent);
const charIndex = Symbol("SpeechSynthesisEvent.charIndex");
const elapsedTime$ = Symbol("SpeechSynthesisEvent.elapsedTime");
const name$36 = Symbol("SpeechSynthesisEvent.name");
const utterance = Symbol("SpeechSynthesisEvent.utterance");
dart.setFieldSignature(html$.SpeechSynthesisEvent, () => ({
  __proto__: dart.getFields(html$.SpeechSynthesisEvent.__proto__),
  [$charIndex]: dart.finalFieldType(core.int),
  [$elapsedTime]: dart.finalFieldType(core.num),
  [$name]: dart.finalFieldType(core.String),
  [$utterance]: dart.finalFieldType(html$.SpeechSynthesisUtterance)
}));
dart.registerExtension("SpeechSynthesisEvent", html$.SpeechSynthesisEvent);
html$.SpeechSynthesisUtterance = class SpeechSynthesisUtterance$ extends html$.EventTarget {
  static new(text) {
    if (text === void 0) text = null;
    if (text != null) {
      return html$.SpeechSynthesisUtterance._create_1(text);
    }
    return html$.SpeechSynthesisUtterance._create_2();
  }
  static _create_1(text) {
    return new SpeechSynthesisUtterance(text);
  }
  static _create_2() {
    return new SpeechSynthesisUtterance();
  }
  get [$lang]() {
    return this.lang;
  }
  set [$lang](value) {
    this.lang = value;
  }
  get [$pitch]() {
    return this.pitch;
  }
  set [$pitch](value) {
    this.pitch = value;
  }
  get [$rate]() {
    return this.rate;
  }
  set [$rate](value) {
    this.rate = value;
  }
  get [$text]() {
    return this.text;
  }
  set [$text](value) {
    this.text = value;
  }
  get [$voice]() {
    return this.voice;
  }
  set [$voice](value) {
    this.voice = value;
  }
  get [$volume]() {
    return this.volume;
  }
  set [$volume](value) {
    this.volume = value;
  }
  get [$onBoundary]() {
    return html$.SpeechSynthesisUtterance.boundaryEvent.forTarget(this);
  }
  get [$onEnd]() {
    return html$.SpeechSynthesisUtterance.endEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.SpeechSynthesisUtterance.errorEvent.forTarget(this);
  }
  get [$onMark]() {
    return html$.SpeechSynthesisUtterance.markEvent.forTarget(this);
  }
  get [$onPause]() {
    return html$.SpeechSynthesisUtterance.pauseEvent.forTarget(this);
  }
  get [$onResume]() {
    return html$.SpeechSynthesisUtterance.resumeEvent.forTarget(this);
  }
  get [$onStart]() {
    return html$.SpeechSynthesisUtterance.startEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.SpeechSynthesisUtterance);
const lang$1 = Symbol("SpeechSynthesisUtterance.lang");
const pitch = Symbol("SpeechSynthesisUtterance.pitch");
const rate = Symbol("SpeechSynthesisUtterance.rate");
const text$0 = Symbol("SpeechSynthesisUtterance.text");
const voice = Symbol("SpeechSynthesisUtterance.voice");
const volume$ = Symbol("SpeechSynthesisUtterance.volume");
dart.setGetterSignature(html$.SpeechSynthesisUtterance, () => ({
  __proto__: dart.getGetters(html$.SpeechSynthesisUtterance.__proto__),
  [$onBoundary]: async.Stream$(html$.SpeechSynthesisEvent),
  [$onEnd]: async.Stream$(html$.SpeechSynthesisEvent),
  [$onError]: async.Stream$(html$.Event),
  [$onMark]: async.Stream$(html$.SpeechSynthesisEvent),
  [$onPause]: async.Stream$(html$.Event),
  [$onResume]: async.Stream$(html$.SpeechSynthesisEvent),
  [$onStart]: async.Stream$(html$.SpeechSynthesisEvent)
}));
dart.setFieldSignature(html$.SpeechSynthesisUtterance, () => ({
  __proto__: dart.getFields(html$.SpeechSynthesisUtterance.__proto__),
  [$lang]: dart.fieldType(core.String),
  [$pitch]: dart.fieldType(core.num),
  [$rate]: dart.fieldType(core.num),
  [$text]: dart.fieldType(core.String),
  [$voice]: dart.fieldType(html$.SpeechSynthesisVoice),
  [$volume]: dart.fieldType(core.num)
}));
dart.defineLazy(html$.SpeechSynthesisUtterance, {
  /*html$.SpeechSynthesisUtterance.boundaryEvent*/get boundaryEvent() {
    return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent()).new("boundary"));
  },
  /*html$.SpeechSynthesisUtterance.endEvent*/get endEvent() {
    return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent()).new("end"));
  },
  /*html$.SpeechSynthesisUtterance.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.SpeechSynthesisUtterance.markEvent*/get markEvent() {
    return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent()).new("mark"));
  },
  /*html$.SpeechSynthesisUtterance.pauseEvent*/get pauseEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("pause"));
  },
  /*html$.SpeechSynthesisUtterance.resumeEvent*/get resumeEvent() {
    return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent()).new("resume"));
  },
  /*html$.SpeechSynthesisUtterance.startEvent*/get startEvent() {
    return dart.const(new (EventStreamProviderOfSpeechSynthesisEvent()).new("start"));
  }
});
dart.registerExtension("SpeechSynthesisUtterance", html$.SpeechSynthesisUtterance);
html$.SpeechSynthesisVoice = class SpeechSynthesisVoice extends _interceptors.Interceptor {
  get [$defaultValue]() {
    return this.default;
  }
  get [$lang]() {
    return this.lang;
  }
  get [$localService]() {
    return this.localService;
  }
  get [$name]() {
    return this.name;
  }
  get [$voiceUri]() {
    return this.voiceURI;
  }
};
dart.addTypeTests(html$.SpeechSynthesisVoice);
const defaultValue$0 = Symbol("SpeechSynthesisVoice.defaultValue");
const lang$2 = Symbol("SpeechSynthesisVoice.lang");
const localService = Symbol("SpeechSynthesisVoice.localService");
const name$37 = Symbol("SpeechSynthesisVoice.name");
const voiceUri = Symbol("SpeechSynthesisVoice.voiceUri");
dart.setFieldSignature(html$.SpeechSynthesisVoice, () => ({
  __proto__: dart.getFields(html$.SpeechSynthesisVoice.__proto__),
  [$defaultValue]: dart.finalFieldType(core.bool),
  [$lang]: dart.finalFieldType(core.String),
  [$localService]: dart.finalFieldType(core.bool),
  [$name]: dart.finalFieldType(core.String),
  [$voiceUri]: dart.finalFieldType(core.String)
}));
dart.registerExtension("SpeechSynthesisVoice", html$.SpeechSynthesisVoice);
html$.StaticRange = class StaticRange extends _interceptors.Interceptor {
  get [$collapsed]() {
    return this.collapsed;
  }
  get [$endContainer]() {
    return this.endContainer;
  }
  get [$endOffset]() {
    return this.endOffset;
  }
  get [$startContainer]() {
    return this.startContainer;
  }
  get [$startOffset]() {
    return this.startOffset;
  }
};
dart.addTypeTests(html$.StaticRange);
const collapsed$ = Symbol("StaticRange.collapsed");
const endContainer$ = Symbol("StaticRange.endContainer");
const endOffset$ = Symbol("StaticRange.endOffset");
const startContainer$ = Symbol("StaticRange.startContainer");
const startOffset$ = Symbol("StaticRange.startOffset");
dart.setFieldSignature(html$.StaticRange, () => ({
  __proto__: dart.getFields(html$.StaticRange.__proto__),
  [$collapsed]: dart.finalFieldType(core.bool),
  [$endContainer]: dart.finalFieldType(html$.Node),
  [$endOffset]: dart.finalFieldType(core.int),
  [$startContainer]: dart.finalFieldType(html$.Node),
  [$startOffset]: dart.finalFieldType(core.int)
}));
dart.registerExtension("StaticRange", html$.StaticRange);
const _setItem = Symbol('_setItem');
const _removeItem = Symbol('_removeItem');
const _key = Symbol('_key');
const _length$2 = Symbol('_length');
const Interceptor_MapMixin$$1 = class Interceptor_MapMixin extends _interceptors.Interceptor {};
(Interceptor_MapMixin$$1.new = function() {
  Interceptor_MapMixin$$1.__proto__.new.call(this);
}).prototype = Interceptor_MapMixin$$1.prototype;
dart.applyMixin(Interceptor_MapMixin$$1, collection.MapMixin$(core.String, core.String));
html$.Storage = class Storage extends Interceptor_MapMixin$$1 {
  [$addAll](other) {
    MapOfString$String()._check(other);
    other[$forEach](dart.fn((k, v) => {
      this[$_set](k, v);
    }, StringAndStringToNull()));
  }
  [$containsValue](value) {
    return this[$values][$any](dart.fn(e => core.identical(e, value), StringTobool()));
  }
  [$containsKey](key) {
    return this[_getItem](core.String._check(key)) != null;
  }
  [$_get](key) {
    return this[_getItem](core.String._check(key));
  }
  [$_set](key, value) {
    core.String._check(key);
    core.String._check(value);
    this[_setItem](key, value);
    return value;
  }
  [$putIfAbsent](key, ifAbsent) {
    core.String._check(key);
    VoidToString()._check(ifAbsent);
    if (!dart.test(this[$containsKey](key))) this[$_set](key, ifAbsent());
    return this[$_get](key);
  }
  [$remove](key) {
    let value = this[$_get](key);
    this[_removeItem](core.String._check(key));
    return value;
  }
  [$clear]() {
    return this[_clear$0]();
  }
  [$forEach](f) {
    for (let i = 0; true; i++) {
      let key = this[_key](i);
      if (key == null) return;
      f(key, this[$_get](key));
    }
  }
  get [$keys]() {
    let keys = JSArrayOfString().of([]);
    this[$forEach](dart.fn((k, v) => keys[$add](k), StringAndStringTovoid()));
    return keys;
  }
  get [$values]() {
    let values = JSArrayOfString().of([]);
    this[$forEach](dart.fn((k, v) => values[$add](v), StringAndStringTovoid()));
    return values;
  }
  get [$length]() {
    return this[_length$2];
  }
  get [$isEmpty]() {
    return this[_key](0) == null;
  }
  get [$isNotEmpty]() {
    return !dart.test(this[$isEmpty]);
  }
  get [_length$2]() {
    return this.length;
  }
  [_clear$0](...args) {
    return this.clear.apply(this, args);
  }
  [_getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [_key](...args) {
    return this.key.apply(this, args);
  }
  [_removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [_setItem](...args) {
    return this.setItem.apply(this, args);
  }
};
dart.addTypeTests(html$.Storage);
dart.setMethodSignature(html$.Storage, () => ({
  __proto__: dart.getMethods(html$.Storage.__proto__),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  [$containsValue]: dart.fnType(core.bool, [core.Object]),
  [$containsKey]: dart.fnType(core.bool, [core.Object]),
  [$_get]: dart.fnType(core.String, [core.Object]),
  [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
  [$putIfAbsent]: dart.fnType(core.String, [core.Object, core.Object]),
  [$remove]: dart.fnType(core.String, [core.Object]),
  [$clear]: dart.fnType(dart.void, []),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.String])]),
  [_clear$0]: dart.fnType(dart.void, []),
  [_getItem]: dart.fnType(core.String, [core.String]),
  [_key]: dart.fnType(core.String, [core.int]),
  [_removeItem]: dart.fnType(dart.void, [core.String]),
  [_setItem]: dart.fnType(dart.void, [core.String, core.String])
}));
dart.setGetterSignature(html$.Storage, () => ({
  __proto__: dart.getGetters(html$.Storage.__proto__),
  [$keys]: core.Iterable$(core.String),
  [$values]: core.Iterable$(core.String),
  [$length]: core.int,
  [$isEmpty]: core.bool,
  [$isNotEmpty]: core.bool
}));
dart.setFieldSignature(html$.Storage, () => ({
  __proto__: dart.getFields(html$.Storage.__proto__),
  [_length$2]: dart.finalFieldType(core.int)
}));
dart.registerExtension("Storage", html$.Storage);
const _initStorageEvent = Symbol('_initStorageEvent');
html$.StorageEvent = class StorageEvent$ extends html$.Event {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
    let key = opts && 'key' in opts ? opts.key : null;
    let oldValue = opts && 'oldValue' in opts ? opts.oldValue : null;
    let newValue = opts && 'newValue' in opts ? opts.newValue : null;
    let url = opts && 'url' in opts ? opts.url : null;
    let storageArea = opts && 'storageArea' in opts ? opts.storageArea : null;
    let e = html$.StorageEvent._check(html$.document[_createEvent]("StorageEvent"));
    e[_initStorageEvent](type, canBubble, cancelable, key, oldValue, newValue, url, storageArea);
    return e;
  }
  static __(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.StorageEvent._create_1(type, eventInitDict_1);
    }
    return html$.StorageEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new StorageEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new StorageEvent(type);
  }
  get [$key]() {
    return this.key;
  }
  get [$newValue]() {
    return this.newValue;
  }
  get [$oldValue]() {
    return this.oldValue;
  }
  get [$storageArea]() {
    return this.storageArea;
  }
  get [$url]() {
    return this.url;
  }
  [_initStorageEvent](...args) {
    return this.initStorageEvent.apply(this, args);
  }
};
dart.addTypeTests(html$.StorageEvent);
const key$1 = Symbol("StorageEvent.key");
const newValue$ = Symbol("StorageEvent.newValue");
const oldValue$ = Symbol("StorageEvent.oldValue");
const storageArea = Symbol("StorageEvent.storageArea");
const url$4 = Symbol("StorageEvent.url");
dart.setMethodSignature(html$.StorageEvent, () => ({
  __proto__: dart.getMethods(html$.StorageEvent.__proto__),
  [_initStorageEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, core.String, core.String, core.String, core.String, html$.Storage])
}));
dart.setFieldSignature(html$.StorageEvent, () => ({
  __proto__: dart.getFields(html$.StorageEvent.__proto__),
  [$key]: dart.finalFieldType(core.String),
  [$newValue]: dart.finalFieldType(core.String),
  [$oldValue]: dart.finalFieldType(core.String),
  [$storageArea]: dart.finalFieldType(html$.Storage),
  [$url]: dart.finalFieldType(core.String)
}));
dart.registerExtension("StorageEvent", html$.StorageEvent);
html$.StorageManager = class StorageManager extends _interceptors.Interceptor {
  [$estimate]() {
    return html$.promiseToFutureAsMap(this.estimate());
  }
  [$persist]() {
    return html$.promiseToFuture(core.bool, this.persist());
  }
  [$persisted]() {
    return html$.promiseToFuture(core.bool, this.persisted());
  }
};
dart.addTypeTests(html$.StorageManager);
dart.setMethodSignature(html$.StorageManager, () => ({
  __proto__: dart.getMethods(html$.StorageManager.__proto__),
  [$estimate]: dart.fnType(async.Future$(core.Map$(core.String, dart.dynamic)), []),
  [$persist]: dart.fnType(async.Future$(core.bool), []),
  [$persisted]: dart.fnType(async.Future$(core.bool), [])
}));
dart.registerExtension("StorageManager", html$.StorageManager);
html$.StyleElement = class StyleElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("style");
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$media]() {
    return this.media;
  }
  set [$media](value) {
    this.media = value;
  }
  get [$sheet]() {
    return this.sheet;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
};
(html$.StyleElement.created = function() {
  this[disabled$8] = null;
  this[media$5] = null;
  this[sheet$0] = null;
  this[type$33] = null;
  html$.StyleElement.__proto__.created.call(this);
}).prototype = html$.StyleElement.prototype;
dart.addTypeTests(html$.StyleElement);
const disabled$8 = Symbol("StyleElement.disabled");
const media$5 = Symbol("StyleElement.media");
const sheet$0 = Symbol("StyleElement.sheet");
const type$33 = Symbol("StyleElement.type");
dart.setFieldSignature(html$.StyleElement, () => ({
  __proto__: dart.getFields(html$.StyleElement.__proto__),
  [$disabled]: dart.fieldType(core.bool),
  [$media]: dart.fieldType(core.String),
  [$sheet]: dart.finalFieldType(html$.StyleSheet),
  [$type]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLStyleElement", html$.StyleElement);
html$.StyleMedia = class StyleMedia extends _interceptors.Interceptor {
  get [$type]() {
    return this.type;
  }
  [$matchMedium](...args) {
    return this.matchMedium.apply(this, args);
  }
};
dart.addTypeTests(html$.StyleMedia);
const type$34 = Symbol("StyleMedia.type");
dart.setMethodSignature(html$.StyleMedia, () => ({
  __proto__: dart.getMethods(html$.StyleMedia.__proto__),
  [$matchMedium]: dart.fnType(core.bool, [core.String])
}));
dart.setFieldSignature(html$.StyleMedia, () => ({
  __proto__: dart.getFields(html$.StyleMedia.__proto__),
  [$type]: dart.finalFieldType(core.String)
}));
dart.registerExtension("StyleMedia", html$.StyleMedia);
html$.StylePropertyMapReadonly = class StylePropertyMapReadonly extends _interceptors.Interceptor {
  [$get](...args) {
    return this.get.apply(this, args);
  }
  [$getAll](...args) {
    return this.getAll.apply(this, args);
  }
  [$getProperties](...args) {
    return this.getProperties.apply(this, args);
  }
  [$has](...args) {
    return this.has.apply(this, args);
  }
};
dart.addTypeTests(html$.StylePropertyMapReadonly);
dart.setMethodSignature(html$.StylePropertyMapReadonly, () => ({
  __proto__: dart.getMethods(html$.StylePropertyMapReadonly.__proto__),
  [$get]: dart.fnType(html$.CssStyleValue, [core.String]),
  [$getAll]: dart.fnType(core.List$(html$.CssStyleValue), [core.String]),
  [$getProperties]: dart.fnType(core.List$(core.String), []),
  [$has]: dart.fnType(core.bool, [core.String])
}));
dart.registerExtension("StylePropertyMapReadonly", html$.StylePropertyMapReadonly);
html$.StylePropertyMap = class StylePropertyMap extends html$.StylePropertyMapReadonly {
  [$append](...args) {
    return this.append.apply(this, args);
  }
  [$delete](...args) {
    return this.delete.apply(this, args);
  }
  [$set](...args) {
    return this.set.apply(this, args);
  }
};
dart.addTypeTests(html$.StylePropertyMap);
dart.setMethodSignature(html$.StylePropertyMap, () => ({
  __proto__: dart.getMethods(html$.StylePropertyMap.__proto__),
  [$append]: dart.fnType(dart.void, [core.String, core.Object]),
  [$delete]: dart.fnType(dart.void, [core.String]),
  [$set]: dart.fnType(dart.void, [core.String, core.Object])
}));
dart.registerExtension("StylePropertyMap", html$.StylePropertyMap);
html$.SyncEvent = class SyncEvent$ extends html$.ExtendableEvent {
  static new(type, init) {
    let init_1 = html_common.convertDartToNative_Dictionary(init);
    return html$.SyncEvent._create_1(type, init_1);
  }
  static _create_1(type, init) {
    return new SyncEvent(type, init);
  }
  get [$lastChance]() {
    return this.lastChance;
  }
  get [$tag]() {
    return this.tag;
  }
};
dart.addTypeTests(html$.SyncEvent);
const lastChance = Symbol("SyncEvent.lastChance");
const tag$ = Symbol("SyncEvent.tag");
dart.setFieldSignature(html$.SyncEvent, () => ({
  __proto__: dart.getFields(html$.SyncEvent.__proto__),
  [$lastChance]: dart.finalFieldType(core.bool),
  [$tag]: dart.finalFieldType(core.String)
}));
dart.registerExtension("SyncEvent", html$.SyncEvent);
html$.SyncManager = class SyncManager extends _interceptors.Interceptor {
  [$getTags]() {
    return html$.promiseToFuture(ListOfString(), this.getTags());
  }
  [$register](tag) {
    return html$.promiseToFuture(dart.dynamic, this.register(tag));
  }
};
dart.addTypeTests(html$.SyncManager);
dart.setMethodSignature(html$.SyncManager, () => ({
  __proto__: dart.getMethods(html$.SyncManager.__proto__),
  [$getTags]: dart.fnType(async.Future$(core.List$(core.String)), []),
  [$register]: dart.fnType(async.Future, [core.String])
}));
dart.registerExtension("SyncManager", html$.SyncManager);
html$.TableCaptionElement = class TableCaptionElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("caption");
  }
};
(html$.TableCaptionElement.created = function() {
  html$.TableCaptionElement.__proto__.created.call(this);
}).prototype = html$.TableCaptionElement.prototype;
dart.addTypeTests(html$.TableCaptionElement);
dart.registerExtension("HTMLTableCaptionElement", html$.TableCaptionElement);
html$.TableCellElement = class TableCellElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("td");
  }
  get [$cellIndex]() {
    return this.cellIndex;
  }
  get [$colSpan]() {
    return this.colSpan;
  }
  set [$colSpan](value) {
    this.colSpan = value;
  }
  get [$headers]() {
    return this.headers;
  }
  set [$headers](value) {
    this.headers = value;
  }
  get [$rowSpan]() {
    return this.rowSpan;
  }
  set [$rowSpan](value) {
    this.rowSpan = value;
  }
};
(html$.TableCellElement.created = function() {
  this[cellIndex] = null;
  this[colSpan$] = null;
  this[headers] = null;
  this[rowSpan$] = null;
  html$.TableCellElement.__proto__.created.call(this);
}).prototype = html$.TableCellElement.prototype;
dart.addTypeTests(html$.TableCellElement);
const cellIndex = Symbol("TableCellElement.cellIndex");
const colSpan$ = Symbol("TableCellElement.colSpan");
const headers = Symbol("TableCellElement.headers");
const rowSpan$ = Symbol("TableCellElement.rowSpan");
dart.setFieldSignature(html$.TableCellElement, () => ({
  __proto__: dart.getFields(html$.TableCellElement.__proto__),
  [$cellIndex]: dart.finalFieldType(core.int),
  [$colSpan]: dart.fieldType(core.int),
  [$headers]: dart.fieldType(core.String),
  [$rowSpan]: dart.fieldType(core.int)
}));
dart.registerExtension("HTMLTableCellElement", html$.TableCellElement);
dart.registerExtension("HTMLTableDataCellElement", html$.TableCellElement);
dart.registerExtension("HTMLTableHeaderCellElement", html$.TableCellElement);
html$.TableColElement = class TableColElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("col");
  }
  get [$span]() {
    return this.span;
  }
  set [$span](value) {
    this.span = value;
  }
};
(html$.TableColElement.created = function() {
  this[span] = null;
  html$.TableColElement.__proto__.created.call(this);
}).prototype = html$.TableColElement.prototype;
dart.addTypeTests(html$.TableColElement);
const span = Symbol("TableColElement.span");
dart.setFieldSignature(html$.TableColElement, () => ({
  __proto__: dart.getFields(html$.TableColElement.__proto__),
  [$span]: dart.fieldType(core.int)
}));
dart.registerExtension("HTMLTableColElement", html$.TableColElement);
const _rows = Symbol('_rows');
const _tBodies = Symbol('_tBodies');
const _createCaption = Symbol('_createCaption');
const _createTBody = Symbol('_createTBody');
const _createTFoot = Symbol('_createTFoot');
const _createTHead = Symbol('_createTHead');
const _insertRow = Symbol('_insertRow');
const _nativeCreateTBody = Symbol('_nativeCreateTBody');
html$.TableElement = class TableElement extends html$.HtmlElement {
  get [$tBodies]() {
    return new (_WrappedListOfTableSectionElement()).new(this[_tBodies]);
  }
  get [$rows]() {
    return new (_WrappedListOfTableRowElement()).new(this[_rows]);
  }
  [$addRow]() {
    return this[$insertRow](-1);
  }
  [$createCaption]() {
    return this[_createCaption]();
  }
  [$createTBody]() {
    return this[_createTBody]();
  }
  [$createTFoot]() {
    return this[_createTFoot]();
  }
  [$createTHead]() {
    return this[_createTHead]();
  }
  [$insertRow](index) {
    return this[_insertRow](index);
  }
  [_createTBody]() {
    if (!!this.createTBody) {
      return this[_nativeCreateTBody]();
    }
    let tbody = html$.Element.tag("tbody");
    this[$children][$add](tbody);
    return html$.TableSectionElement._check(tbody);
  }
  [_nativeCreateTBody](...args) {
    return this.createTBody.apply(this, args);
  }
  [$createFragment](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (dart.test(html$.Range.supportsCreateContextualFragment)) {
      return super[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    }
    let contextualHtml = "<table>" + dart.str(html) + "</table>";
    let table = html$.Element.html(contextualHtml, {validator: validator, treeSanitizer: treeSanitizer});
    let fragment = html$.DocumentFragment.new();
    fragment[$nodes][$addAll](table[$nodes]);
    return fragment;
  }
  static new() {
    return html$.document.createElement("table");
  }
  get [$caption]() {
    return this.caption;
  }
  set [$caption](value) {
    this.caption = value;
  }
  get [_rows]() {
    return this.rows;
  }
  get [_tBodies]() {
    return this.tBodies;
  }
  get [$tFoot]() {
    return this.tFoot;
  }
  set [$tFoot](value) {
    this.tFoot = value;
  }
  get [$tHead]() {
    return this.tHead;
  }
  set [$tHead](value) {
    this.tHead = value;
  }
  [_createCaption](...args) {
    return this.createCaption.apply(this, args);
  }
  [_createTFoot](...args) {
    return this.createTFoot.apply(this, args);
  }
  [_createTHead](...args) {
    return this.createTHead.apply(this, args);
  }
  [$deleteCaption](...args) {
    return this.deleteCaption.apply(this, args);
  }
  [$deleteRow](...args) {
    return this.deleteRow.apply(this, args);
  }
  [$deleteTFoot](...args) {
    return this.deleteTFoot.apply(this, args);
  }
  [$deleteTHead](...args) {
    return this.deleteTHead.apply(this, args);
  }
  [_insertRow](...args) {
    return this.insertRow.apply(this, args);
  }
};
(html$.TableElement.created = function() {
  this[caption] = null;
  this[_rows] = null;
  this[_tBodies] = null;
  this[tFoot] = null;
  this[tHead] = null;
  html$.TableElement.__proto__.created.call(this);
}).prototype = html$.TableElement.prototype;
dart.addTypeTests(html$.TableElement);
const caption = Symbol("TableElement.caption");
const tFoot = Symbol("TableElement.tFoot");
const tHead = Symbol("TableElement.tHead");
dart.setMethodSignature(html$.TableElement, () => ({
  __proto__: dart.getMethods(html$.TableElement.__proto__),
  [$addRow]: dart.fnType(html$.TableRowElement, []),
  [$createCaption]: dart.fnType(html$.TableCaptionElement, []),
  [$createTBody]: dart.fnType(html$.TableSectionElement, []),
  [$createTFoot]: dart.fnType(html$.TableSectionElement, []),
  [$createTHead]: dart.fnType(html$.TableSectionElement, []),
  [$insertRow]: dart.fnType(html$.TableRowElement, [core.int]),
  [_createTBody]: dart.fnType(html$.TableSectionElement, []),
  [_nativeCreateTBody]: dart.fnType(html$.TableSectionElement, []),
  [_createCaption]: dart.fnType(html$.TableCaptionElement, []),
  [_createTFoot]: dart.fnType(html$.TableSectionElement, []),
  [_createTHead]: dart.fnType(html$.TableSectionElement, []),
  [$deleteCaption]: dart.fnType(dart.void, []),
  [$deleteRow]: dart.fnType(dart.void, [core.int]),
  [$deleteTFoot]: dart.fnType(dart.void, []),
  [$deleteTHead]: dart.fnType(dart.void, []),
  [_insertRow]: dart.fnType(html$.TableRowElement, [], [core.int])
}));
dart.setGetterSignature(html$.TableElement, () => ({
  __proto__: dart.getGetters(html$.TableElement.__proto__),
  [$tBodies]: core.List$(html$.TableSectionElement),
  [$rows]: core.List$(html$.TableRowElement)
}));
dart.setFieldSignature(html$.TableElement, () => ({
  __proto__: dart.getFields(html$.TableElement.__proto__),
  [$caption]: dart.fieldType(html$.TableCaptionElement),
  [_rows]: dart.finalFieldType(ListOfNode()),
  [_tBodies]: dart.finalFieldType(ListOfNode()),
  [$tFoot]: dart.fieldType(html$.TableSectionElement),
  [$tHead]: dart.fieldType(html$.TableSectionElement)
}));
dart.registerExtension("HTMLTableElement", html$.TableElement);
const _cells = Symbol('_cells');
const _insertCell = Symbol('_insertCell');
html$.TableRowElement = class TableRowElement extends html$.HtmlElement {
  get [$cells]() {
    return new (_WrappedListOfTableCellElement()).new(this[_cells]);
  }
  [$addCell]() {
    return this[$insertCell](-1);
  }
  [$insertCell](index) {
    return html$.TableCellElement._check(this[_insertCell](index));
  }
  [$createFragment](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (dart.test(html$.Range.supportsCreateContextualFragment)) {
      return super[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    }
    let fragment = html$.DocumentFragment.new();
    let section = html$.TableElement.new()[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer})[$nodes][$single];
    let row = section[$nodes][$single];
    fragment[$nodes][$addAll](row[$nodes]);
    return fragment;
  }
  static new() {
    return html$.document.createElement("tr");
  }
  get [_cells]() {
    return this.cells;
  }
  get [$rowIndex]() {
    return this.rowIndex;
  }
  get [$sectionRowIndex]() {
    return this.sectionRowIndex;
  }
  [$deleteCell](...args) {
    return this.deleteCell.apply(this, args);
  }
  [_insertCell](...args) {
    return this.insertCell.apply(this, args);
  }
};
(html$.TableRowElement.created = function() {
  this[_cells] = null;
  this[rowIndex$] = null;
  this[sectionRowIndex] = null;
  html$.TableRowElement.__proto__.created.call(this);
}).prototype = html$.TableRowElement.prototype;
dart.addTypeTests(html$.TableRowElement);
const rowIndex$ = Symbol("TableRowElement.rowIndex");
const sectionRowIndex = Symbol("TableRowElement.sectionRowIndex");
dart.setMethodSignature(html$.TableRowElement, () => ({
  __proto__: dart.getMethods(html$.TableRowElement.__proto__),
  [$addCell]: dart.fnType(html$.TableCellElement, []),
  [$insertCell]: dart.fnType(html$.TableCellElement, [core.int]),
  [$deleteCell]: dart.fnType(dart.void, [core.int]),
  [_insertCell]: dart.fnType(html$.HtmlElement, [], [core.int])
}));
dart.setGetterSignature(html$.TableRowElement, () => ({
  __proto__: dart.getGetters(html$.TableRowElement.__proto__),
  [$cells]: core.List$(html$.TableCellElement)
}));
dart.setFieldSignature(html$.TableRowElement, () => ({
  __proto__: dart.getFields(html$.TableRowElement.__proto__),
  [_cells]: dart.finalFieldType(ListOfNode()),
  [$rowIndex]: dart.finalFieldType(core.int),
  [$sectionRowIndex]: dart.finalFieldType(core.int)
}));
dart.registerExtension("HTMLTableRowElement", html$.TableRowElement);
html$.TableSectionElement = class TableSectionElement extends html$.HtmlElement {
  get [$rows]() {
    return new (_WrappedListOfTableRowElement()).new(this[_rows]);
  }
  [$addRow]() {
    return this[$insertRow](-1);
  }
  [$insertRow](index) {
    return html$.TableRowElement._check(this[_insertRow](index));
  }
  [$createFragment](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (dart.test(html$.Range.supportsCreateContextualFragment)) {
      return super[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    }
    let fragment = html$.DocumentFragment.new();
    let section = html$.TableElement.new()[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer})[$nodes][$single];
    fragment[$nodes][$addAll](section[$nodes]);
    return fragment;
  }
  get [_rows]() {
    return this.rows;
  }
  [$deleteRow](...args) {
    return this.deleteRow.apply(this, args);
  }
  [_insertRow](...args) {
    return this.insertRow.apply(this, args);
  }
};
(html$.TableSectionElement.created = function() {
  this[_rows] = null;
  html$.TableSectionElement.__proto__.created.call(this);
}).prototype = html$.TableSectionElement.prototype;
dart.addTypeTests(html$.TableSectionElement);
dart.setMethodSignature(html$.TableSectionElement, () => ({
  __proto__: dart.getMethods(html$.TableSectionElement.__proto__),
  [$addRow]: dart.fnType(html$.TableRowElement, []),
  [$insertRow]: dart.fnType(html$.TableRowElement, [core.int]),
  [$deleteRow]: dart.fnType(dart.void, [core.int]),
  [_insertRow]: dart.fnType(html$.HtmlElement, [], [core.int])
}));
dart.setGetterSignature(html$.TableSectionElement, () => ({
  __proto__: dart.getGetters(html$.TableSectionElement.__proto__),
  [$rows]: core.List$(html$.TableRowElement)
}));
dart.setFieldSignature(html$.TableSectionElement, () => ({
  __proto__: dart.getFields(html$.TableSectionElement.__proto__),
  [_rows]: dart.finalFieldType(ListOfNode())
}));
dart.registerExtension("HTMLTableSectionElement", html$.TableSectionElement);
html$.TaskAttributionTiming = class TaskAttributionTiming extends html$.PerformanceEntry {
  get [$containerId]() {
    return this.containerId;
  }
  get [$containerName]() {
    return this.containerName;
  }
  get [$containerSrc]() {
    return this.containerSrc;
  }
  get [$containerType]() {
    return this.containerType;
  }
  get [$scriptUrl]() {
    return this.scriptURL;
  }
};
dart.addTypeTests(html$.TaskAttributionTiming);
const containerId = Symbol("TaskAttributionTiming.containerId");
const containerName = Symbol("TaskAttributionTiming.containerName");
const containerSrc = Symbol("TaskAttributionTiming.containerSrc");
const containerType = Symbol("TaskAttributionTiming.containerType");
const scriptUrl$ = Symbol("TaskAttributionTiming.scriptUrl");
dart.setFieldSignature(html$.TaskAttributionTiming, () => ({
  __proto__: dart.getFields(html$.TaskAttributionTiming.__proto__),
  [$containerId]: dart.finalFieldType(core.String),
  [$containerName]: dart.finalFieldType(core.String),
  [$containerSrc]: dart.finalFieldType(core.String),
  [$containerType]: dart.finalFieldType(core.String),
  [$scriptUrl]: dart.finalFieldType(core.String)
}));
dart.registerExtension("TaskAttributionTiming", html$.TaskAttributionTiming);
html$.TemplateElement = class TemplateElement extends html$.HtmlElement {
  static new() {
    return html$.TemplateElement._check(html$.document[$createElement]("template"));
  }
  static get supported() {
    return html$.Element.isTagSupported("template");
  }
  get [$content]() {
    return this.content;
  }
  [$setInnerHtml](html, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    this[$text] = null;
    let fragment = this[$createFragment](html, {validator: validator, treeSanitizer: treeSanitizer});
    this.content[$append](fragment);
  }
};
(html$.TemplateElement.created = function() {
  this[content$] = null;
  html$.TemplateElement.__proto__.created.call(this);
}).prototype = html$.TemplateElement.prototype;
dart.addTypeTests(html$.TemplateElement);
const content$ = Symbol("TemplateElement.content");
dart.setFieldSignature(html$.TemplateElement, () => ({
  __proto__: dart.getFields(html$.TemplateElement.__proto__),
  [$content]: dart.finalFieldType(html$.DocumentFragment)
}));
dart.registerExtension("HTMLTemplateElement", html$.TemplateElement);
html$.TextAreaElement = class TextAreaElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("textarea");
  }
  get [$autocapitalize]() {
    return this.autocapitalize;
  }
  set [$autocapitalize](value) {
    this.autocapitalize = value;
  }
  get [$autofocus]() {
    return this.autofocus;
  }
  set [$autofocus](value) {
    this.autofocus = value;
  }
  get [$cols]() {
    return this.cols;
  }
  set [$cols](value) {
    this.cols = value;
  }
  get [$defaultValue]() {
    return this.defaultValue;
  }
  set [$defaultValue](value) {
    this.defaultValue = value;
  }
  get [$dirName]() {
    return this.dirName;
  }
  set [$dirName](value) {
    this.dirName = value;
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$form]() {
    return this.form;
  }
  get [$labels]() {
    return this.labels;
  }
  get [$maxLength]() {
    return this.maxLength;
  }
  set [$maxLength](value) {
    this.maxLength = value;
  }
  get [$minLength]() {
    return this.minLength;
  }
  set [$minLength](value) {
    this.minLength = value;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$placeholder]() {
    return this.placeholder;
  }
  set [$placeholder](value) {
    this.placeholder = value;
  }
  get [$readOnly]() {
    return this.readOnly;
  }
  set [$readOnly](value) {
    this.readOnly = value;
  }
  get [$required]() {
    return this.required;
  }
  set [$required](value) {
    this.required = value;
  }
  get [$rows]() {
    return this.rows;
  }
  set [$rows](value) {
    this.rows = value;
  }
  get [$selectionDirection]() {
    return this.selectionDirection;
  }
  set [$selectionDirection](value) {
    this.selectionDirection = value;
  }
  get [$selectionEnd]() {
    return this.selectionEnd;
  }
  set [$selectionEnd](value) {
    this.selectionEnd = value;
  }
  get [$selectionStart]() {
    return this.selectionStart;
  }
  set [$selectionStart](value) {
    this.selectionStart = value;
  }
  get [$textLength]() {
    return this.textLength;
  }
  get [$type]() {
    return this.type;
  }
  get [$validationMessage]() {
    return this.validationMessage;
  }
  get [$validity]() {
    return this.validity;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
  get [$willValidate]() {
    return this.willValidate;
  }
  get [$wrap]() {
    return this.wrap;
  }
  set [$wrap](value) {
    this.wrap = value;
  }
  [$checkValidity](...args) {
    return this.checkValidity.apply(this, args);
  }
  [$reportValidity](...args) {
    return this.reportValidity.apply(this, args);
  }
  [$select](...args) {
    return this.select.apply(this, args);
  }
  [$setCustomValidity](...args) {
    return this.setCustomValidity.apply(this, args);
  }
  [$setRangeText](...args) {
    return this.setRangeText.apply(this, args);
  }
  [$setSelectionRange](...args) {
    return this.setSelectionRange.apply(this, args);
  }
};
(html$.TextAreaElement.created = function() {
  this[autocapitalize$] = null;
  this[autofocus$3] = null;
  this[cols] = null;
  this[defaultValue$1] = null;
  this[dirName$1] = null;
  this[disabled$9] = null;
  this[form$7] = null;
  this[labels$4] = null;
  this[maxLength$1] = null;
  this[minLength$] = null;
  this[name$38] = null;
  this[placeholder$3] = null;
  this[readOnly$8] = null;
  this[required$12] = null;
  this[rows] = null;
  this[selectionDirection$0] = null;
  this[selectionEnd$0] = null;
  this[selectionStart$0] = null;
  this[textLength] = null;
  this[type$35] = null;
  this[validationMessage$4] = null;
  this[validity$4] = null;
  this[value$17] = null;
  this[willValidate$4] = null;
  this[wrap] = null;
  html$.TextAreaElement.__proto__.created.call(this);
}).prototype = html$.TextAreaElement.prototype;
dart.addTypeTests(html$.TextAreaElement);
const autocapitalize$ = Symbol("TextAreaElement.autocapitalize");
const autofocus$3 = Symbol("TextAreaElement.autofocus");
const cols = Symbol("TextAreaElement.cols");
const defaultValue$1 = Symbol("TextAreaElement.defaultValue");
const dirName$1 = Symbol("TextAreaElement.dirName");
const disabled$9 = Symbol("TextAreaElement.disabled");
const form$7 = Symbol("TextAreaElement.form");
const labels$4 = Symbol("TextAreaElement.labels");
const maxLength$1 = Symbol("TextAreaElement.maxLength");
const minLength$ = Symbol("TextAreaElement.minLength");
const name$38 = Symbol("TextAreaElement.name");
const placeholder$3 = Symbol("TextAreaElement.placeholder");
const readOnly$8 = Symbol("TextAreaElement.readOnly");
const required$12 = Symbol("TextAreaElement.required");
const rows = Symbol("TextAreaElement.rows");
const selectionDirection$0 = Symbol("TextAreaElement.selectionDirection");
const selectionEnd$0 = Symbol("TextAreaElement.selectionEnd");
const selectionStart$0 = Symbol("TextAreaElement.selectionStart");
const textLength = Symbol("TextAreaElement.textLength");
const type$35 = Symbol("TextAreaElement.type");
const validationMessage$4 = Symbol("TextAreaElement.validationMessage");
const validity$4 = Symbol("TextAreaElement.validity");
const value$17 = Symbol("TextAreaElement.value");
const willValidate$4 = Symbol("TextAreaElement.willValidate");
const wrap = Symbol("TextAreaElement.wrap");
dart.setMethodSignature(html$.TextAreaElement, () => ({
  __proto__: dart.getMethods(html$.TextAreaElement.__proto__),
  [$checkValidity]: dart.fnType(core.bool, []),
  [$reportValidity]: dart.fnType(core.bool, []),
  [$select]: dart.fnType(dart.void, []),
  [$setCustomValidity]: dart.fnType(dart.void, [core.String]),
  [$setRangeText]: dart.fnType(dart.void, [core.String], {start: core.int, end: core.int, selectionMode: core.String}),
  [$setSelectionRange]: dart.fnType(dart.void, [core.int, core.int], [core.String])
}));
dart.setFieldSignature(html$.TextAreaElement, () => ({
  __proto__: dart.getFields(html$.TextAreaElement.__proto__),
  [$autocapitalize]: dart.fieldType(core.String),
  [$autofocus]: dart.fieldType(core.bool),
  [$cols]: dart.fieldType(core.int),
  [$defaultValue]: dart.fieldType(core.String),
  [$dirName]: dart.fieldType(core.String),
  [$disabled]: dart.fieldType(core.bool),
  [$form]: dart.finalFieldType(html$.FormElement),
  [$labels]: dart.finalFieldType(ListOfNode()),
  [$maxLength]: dart.fieldType(core.int),
  [$minLength]: dart.fieldType(core.int),
  [$name]: dart.fieldType(core.String),
  [$placeholder]: dart.fieldType(core.String),
  [$readOnly]: dart.fieldType(core.bool),
  [$required]: dart.fieldType(core.bool),
  [$rows]: dart.fieldType(core.int),
  [$selectionDirection]: dart.fieldType(core.String),
  [$selectionEnd]: dart.fieldType(core.int),
  [$selectionStart]: dart.fieldType(core.int),
  [$textLength]: dart.finalFieldType(core.int),
  [$type]: dart.finalFieldType(core.String),
  [$validationMessage]: dart.finalFieldType(core.String),
  [$validity]: dart.finalFieldType(html$.ValidityState),
  [$value]: dart.fieldType(core.String),
  [$willValidate]: dart.finalFieldType(core.bool),
  [$wrap]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLTextAreaElement", html$.TextAreaElement);
html$.TextDetector = class TextDetector$ extends _interceptors.Interceptor {
  static new() {
    return html$.TextDetector._create_1();
  }
  static _create_1() {
    return new TextDetector();
  }
  [$detect](image) {
    return html$.promiseToFuture(ListOfDetectedText(), this.detect(image));
  }
};
dart.addTypeTests(html$.TextDetector);
dart.setMethodSignature(html$.TextDetector, () => ({
  __proto__: dart.getMethods(html$.TextDetector.__proto__),
  [$detect]: dart.fnType(async.Future$(core.List$(html$.DetectedText)), [dart.dynamic])
}));
dart.registerExtension("TextDetector", html$.TextDetector);
const _initTextEvent = Symbol('_initTextEvent');
html$.TextEvent = class TextEvent extends html$.UIEvent {
  static new(type, opts) {
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : false;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : false;
    let view = opts && 'view' in opts ? opts.view : null;
    let data = opts && 'data' in opts ? opts.data : null;
    if (view == null) {
      view = html$.window;
    }
    let e = html$.TextEvent._check(html$.document[_createEvent]("TextEvent"));
    e[_initTextEvent](type, canBubble, cancelable, view, data);
    return e;
  }
  get [$data]() {
    return this.data;
  }
  [_initTextEvent](...args) {
    return this.initTextEvent.apply(this, args);
  }
};
dart.addTypeTests(html$.TextEvent);
const data$8 = Symbol("TextEvent.data");
dart.setMethodSignature(html$.TextEvent, () => ({
  __proto__: dart.getMethods(html$.TextEvent.__proto__),
  [_initTextEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.String])
}));
dart.setFieldSignature(html$.TextEvent, () => ({
  __proto__: dart.getFields(html$.TextEvent.__proto__),
  [$data]: dart.finalFieldType(core.String)
}));
dart.registerExtension("TextEvent", html$.TextEvent);
html$.TextMetrics = class TextMetrics extends _interceptors.Interceptor {
  get [$actualBoundingBoxAscent]() {
    return this.actualBoundingBoxAscent;
  }
  get [$actualBoundingBoxDescent]() {
    return this.actualBoundingBoxDescent;
  }
  get [$actualBoundingBoxLeft]() {
    return this.actualBoundingBoxLeft;
  }
  get [$actualBoundingBoxRight]() {
    return this.actualBoundingBoxRight;
  }
  get [$alphabeticBaseline]() {
    return this.alphabeticBaseline;
  }
  get [$emHeightAscent]() {
    return this.emHeightAscent;
  }
  get [$emHeightDescent]() {
    return this.emHeightDescent;
  }
  get [$fontBoundingBoxAscent]() {
    return this.fontBoundingBoxAscent;
  }
  get [$fontBoundingBoxDescent]() {
    return this.fontBoundingBoxDescent;
  }
  get [$hangingBaseline]() {
    return this.hangingBaseline;
  }
  get [$ideographicBaseline]() {
    return this.ideographicBaseline;
  }
  get [$width]() {
    return this.width;
  }
};
dart.addTypeTests(html$.TextMetrics);
const actualBoundingBoxAscent = Symbol("TextMetrics.actualBoundingBoxAscent");
const actualBoundingBoxDescent = Symbol("TextMetrics.actualBoundingBoxDescent");
const actualBoundingBoxLeft = Symbol("TextMetrics.actualBoundingBoxLeft");
const actualBoundingBoxRight = Symbol("TextMetrics.actualBoundingBoxRight");
const alphabeticBaseline = Symbol("TextMetrics.alphabeticBaseline");
const emHeightAscent = Symbol("TextMetrics.emHeightAscent");
const emHeightDescent = Symbol("TextMetrics.emHeightDescent");
const fontBoundingBoxAscent = Symbol("TextMetrics.fontBoundingBoxAscent");
const fontBoundingBoxDescent = Symbol("TextMetrics.fontBoundingBoxDescent");
const hangingBaseline = Symbol("TextMetrics.hangingBaseline");
const ideographicBaseline = Symbol("TextMetrics.ideographicBaseline");
const width$11 = Symbol("TextMetrics.width");
dart.setFieldSignature(html$.TextMetrics, () => ({
  __proto__: dart.getFields(html$.TextMetrics.__proto__),
  [$actualBoundingBoxAscent]: dart.finalFieldType(core.num),
  [$actualBoundingBoxDescent]: dart.finalFieldType(core.num),
  [$actualBoundingBoxLeft]: dart.finalFieldType(core.num),
  [$actualBoundingBoxRight]: dart.finalFieldType(core.num),
  [$alphabeticBaseline]: dart.finalFieldType(core.num),
  [$emHeightAscent]: dart.finalFieldType(core.num),
  [$emHeightDescent]: dart.finalFieldType(core.num),
  [$fontBoundingBoxAscent]: dart.finalFieldType(core.num),
  [$fontBoundingBoxDescent]: dart.finalFieldType(core.num),
  [$hangingBaseline]: dart.finalFieldType(core.num),
  [$ideographicBaseline]: dart.finalFieldType(core.num),
  [$width]: dart.finalFieldType(core.num)
}));
dart.registerExtension("TextMetrics", html$.TextMetrics);
html$.TextTrack = class TextTrack extends html$.EventTarget {
  get [$activeCues]() {
    return this.activeCues;
  }
  get [$cues]() {
    return this.cues;
  }
  get [$id]() {
    return this.id;
  }
  get [$kind]() {
    return this.kind;
  }
  get [$label]() {
    return this.label;
  }
  get [$language]() {
    return this.language;
  }
  get [$mode]() {
    return this.mode;
  }
  set [$mode](value) {
    this.mode = value;
  }
  [$addCue](...args) {
    return this.addCue.apply(this, args);
  }
  [$removeCue](...args) {
    return this.removeCue.apply(this, args);
  }
  get [$onCueChange]() {
    return html$.TextTrack.cueChangeEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.TextTrack);
const activeCues = Symbol("TextTrack.activeCues");
const cues = Symbol("TextTrack.cues");
const id$14 = Symbol("TextTrack.id");
const kind$1 = Symbol("TextTrack.kind");
const label$4 = Symbol("TextTrack.label");
const language$ = Symbol("TextTrack.language");
const mode$3 = Symbol("TextTrack.mode");
dart.setMethodSignature(html$.TextTrack, () => ({
  __proto__: dart.getMethods(html$.TextTrack.__proto__),
  [$addCue]: dart.fnType(dart.void, [html$.TextTrackCue]),
  [$removeCue]: dart.fnType(dart.void, [html$.TextTrackCue])
}));
dart.setGetterSignature(html$.TextTrack, () => ({
  __proto__: dart.getGetters(html$.TextTrack.__proto__),
  [$onCueChange]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.TextTrack, () => ({
  __proto__: dart.getFields(html$.TextTrack.__proto__),
  [$activeCues]: dart.finalFieldType(html$.TextTrackCueList),
  [$cues]: dart.finalFieldType(html$.TextTrackCueList),
  [$id]: dart.finalFieldType(core.String),
  [$kind]: dart.finalFieldType(core.String),
  [$label]: dart.finalFieldType(core.String),
  [$language]: dart.finalFieldType(core.String),
  [$mode]: dart.fieldType(core.String)
}));
dart.defineLazy(html$.TextTrack, {
  /*html$.TextTrack.cueChangeEvent*/get cueChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("cuechange"));
  }
});
dart.registerExtension("TextTrack", html$.TextTrack);
html$.TextTrackCue = class TextTrackCue extends html$.EventTarget {
  get [$endTime]() {
    return this.endTime;
  }
  set [$endTime](value) {
    this.endTime = value;
  }
  get [$id]() {
    return this.id;
  }
  set [$id](value) {
    this.id = value;
  }
  get [$pauseOnExit]() {
    return this.pauseOnExit;
  }
  set [$pauseOnExit](value) {
    this.pauseOnExit = value;
  }
  get [$startTime]() {
    return this.startTime;
  }
  set [$startTime](value) {
    this.startTime = value;
  }
  get [$track]() {
    return this.track;
  }
  get [$onEnter]() {
    return html$.TextTrackCue.enterEvent.forTarget(this);
  }
  get [$onExit]() {
    return html$.TextTrackCue.exitEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.TextTrackCue);
const endTime = Symbol("TextTrackCue.endTime");
const id$15 = Symbol("TextTrackCue.id");
const pauseOnExit = Symbol("TextTrackCue.pauseOnExit");
const startTime$0 = Symbol("TextTrackCue.startTime");
const track$4 = Symbol("TextTrackCue.track");
dart.setGetterSignature(html$.TextTrackCue, () => ({
  __proto__: dart.getGetters(html$.TextTrackCue.__proto__),
  [$onEnter]: async.Stream$(html$.Event),
  [$onExit]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.TextTrackCue, () => ({
  __proto__: dart.getFields(html$.TextTrackCue.__proto__),
  [$endTime]: dart.fieldType(core.num),
  [$id]: dart.fieldType(core.String),
  [$pauseOnExit]: dart.fieldType(core.bool),
  [$startTime]: dart.fieldType(core.num),
  [$track]: dart.finalFieldType(html$.TextTrack)
}));
dart.defineLazy(html$.TextTrackCue, {
  /*html$.TextTrackCue.enterEvent*/get enterEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("enter"));
  },
  /*html$.TextTrackCue.exitEvent*/get exitEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("exit"));
  }
});
dart.registerExtension("TextTrackCue", html$.TextTrackCue);
const Interceptor_ListMixin$$6 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$6.new = function() {
  Interceptor_ListMixin$$6.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$6.prototype;
dart.applyMixin(Interceptor_ListMixin$$6, collection.ListMixin$(html$.TextTrackCue));
const Interceptor_ImmutableListMixin$$6 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$6 {};
(Interceptor_ImmutableListMixin$$6.new = function() {
  Interceptor_ImmutableListMixin$$6.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$6.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$6, html$.ImmutableListMixin$(html$.TextTrackCue));
html$.TextTrackCueList = class TextTrackCueList extends Interceptor_ImmutableListMixin$$6 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.TextTrackCue._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [$getCueById](...args) {
    return this.getCueById.apply(this, args);
  }
};
html$.TextTrackCueList.prototype[dart.isList] = true;
dart.addTypeTests(html$.TextTrackCueList);
html$.TextTrackCueList[dart.implements] = () => [ListOfTextTrackCue(), JavaScriptIndexingBehaviorOfTextTrackCue()];
dart.setMethodSignature(html$.TextTrackCueList, () => ({
  __proto__: dart.getMethods(html$.TextTrackCueList.__proto__),
  [$_get]: dart.fnType(html$.TextTrackCue, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.TextTrackCue, [core.int]),
  [__getter__]: dart.fnType(html$.TextTrackCue, [core.int]),
  [$getCueById]: dart.fnType(html$.TextTrackCue, [core.String])
}));
dart.setGetterSignature(html$.TextTrackCueList, () => ({
  __proto__: dart.getGetters(html$.TextTrackCueList.__proto__),
  [$length]: core.int,
  [$first]: html$.TextTrackCue,
  [$last]: html$.TextTrackCue,
  [$single]: html$.TextTrackCue
}));
dart.setSetterSignature(html$.TextTrackCueList, () => ({
  __proto__: dart.getSetters(html$.TextTrackCueList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("TextTrackCueList", html$.TextTrackCueList);
const EventTarget_ListMixin$$ = class EventTarget_ListMixin extends html$.EventTarget {};
(EventTarget_ListMixin$$._created = function() {
  EventTarget_ListMixin$$.__proto__._created.call(this);
}).prototype = EventTarget_ListMixin$$.prototype;
(EventTarget_ListMixin$$.__ = function() {
  EventTarget_ListMixin$$.__proto__.__.call(this);
}).prototype = EventTarget_ListMixin$$.prototype;
dart.applyMixin(EventTarget_ListMixin$$, collection.ListMixin$(html$.TextTrack));
const EventTarget_ImmutableListMixin$$ = class EventTarget_ImmutableListMixin extends EventTarget_ListMixin$$ {};
(EventTarget_ImmutableListMixin$$._created = function() {
  EventTarget_ImmutableListMixin$$.__proto__._created.call(this);
}).prototype = EventTarget_ImmutableListMixin$$.prototype;
(EventTarget_ImmutableListMixin$$.__ = function() {
  EventTarget_ImmutableListMixin$$.__proto__.__.call(this);
}).prototype = EventTarget_ImmutableListMixin$$.prototype;
dart.applyMixin(EventTarget_ImmutableListMixin$$, html$.ImmutableListMixin$(html$.TextTrack));
html$.TextTrackList = class TextTrackList extends EventTarget_ImmutableListMixin$$ {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.TextTrack._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [$getTrackById](...args) {
    return this.getTrackById.apply(this, args);
  }
  get [$onAddTrack]() {
    return html$.TextTrackList.addTrackEvent.forTarget(this);
  }
  get [$onChange]() {
    return html$.TextTrackList.changeEvent.forTarget(this);
  }
};
html$.TextTrackList.prototype[dart.isList] = true;
dart.addTypeTests(html$.TextTrackList);
html$.TextTrackList[dart.implements] = () => [ListOfTextTrack(), JavaScriptIndexingBehaviorOfTextTrack()];
dart.setMethodSignature(html$.TextTrackList, () => ({
  __proto__: dart.getMethods(html$.TextTrackList.__proto__),
  [$_get]: dart.fnType(html$.TextTrack, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.TextTrack, [core.int]),
  [__getter__]: dart.fnType(html$.TextTrack, [core.int]),
  [$getTrackById]: dart.fnType(html$.TextTrack, [core.String])
}));
dart.setGetterSignature(html$.TextTrackList, () => ({
  __proto__: dart.getGetters(html$.TextTrackList.__proto__),
  [$length]: core.int,
  [$first]: html$.TextTrack,
  [$last]: html$.TextTrack,
  [$single]: html$.TextTrack,
  [$onAddTrack]: async.Stream$(html$.TrackEvent),
  [$onChange]: async.Stream$(html$.Event)
}));
dart.setSetterSignature(html$.TextTrackList, () => ({
  __proto__: dart.getSetters(html$.TextTrackList.__proto__),
  [$length]: core.int
}));
dart.defineLazy(html$.TextTrackList, {
  /*html$.TextTrackList.addTrackEvent*/get addTrackEvent() {
    return dart.const(new (EventStreamProviderOfTrackEvent()).new("addtrack"));
  },
  /*html$.TextTrackList.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  }
});
dart.registerExtension("TextTrackList", html$.TextTrackList);
html$.TimeElement = class TimeElement extends html$.HtmlElement {
  get [$dateTime]() {
    return this.dateTime;
  }
  set [$dateTime](value) {
    this.dateTime = value;
  }
};
(html$.TimeElement.created = function() {
  this[dateTime$] = null;
  html$.TimeElement.__proto__.created.call(this);
}).prototype = html$.TimeElement.prototype;
dart.addTypeTests(html$.TimeElement);
const dateTime$ = Symbol("TimeElement.dateTime");
dart.setFieldSignature(html$.TimeElement, () => ({
  __proto__: dart.getFields(html$.TimeElement.__proto__),
  [$dateTime]: dart.fieldType(core.String)
}));
dart.registerExtension("HTMLTimeElement", html$.TimeElement);
html$.TimeRanges = class TimeRanges extends _interceptors.Interceptor {
  get [$length]() {
    return this.length;
  }
  [$end](...args) {
    return this.end.apply(this, args);
  }
  [$start](...args) {
    return this.start.apply(this, args);
  }
};
dart.addTypeTests(html$.TimeRanges);
const length$14 = Symbol("TimeRanges.length");
dart.setMethodSignature(html$.TimeRanges, () => ({
  __proto__: dart.getMethods(html$.TimeRanges.__proto__),
  [$end]: dart.fnType(core.double, [core.int]),
  [$start]: dart.fnType(core.double, [core.int])
}));
dart.setFieldSignature(html$.TimeRanges, () => ({
  __proto__: dart.getFields(html$.TimeRanges.__proto__),
  [$length]: dart.finalFieldType(core.int)
}));
dart.registerExtension("TimeRanges", html$.TimeRanges);
html$.TitleElement = class TitleElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("title");
  }
};
(html$.TitleElement.created = function() {
  html$.TitleElement.__proto__.created.call(this);
}).prototype = html$.TitleElement.prototype;
dart.addTypeTests(html$.TitleElement);
dart.registerExtension("HTMLTitleElement", html$.TitleElement);
const _radiusX = Symbol('_radiusX');
const _radiusY = Symbol('_radiusY');
const __clientX = Symbol('__clientX');
const __clientY = Symbol('__clientY');
const __screenX = Symbol('__screenX');
const __screenY = Symbol('__screenY');
const __pageX = Symbol('__pageX');
const __pageY = Symbol('__pageY');
const __radiusX = Symbol('__radiusX');
const __radiusY = Symbol('__radiusY');
html$.Touch = class Touch$ extends _interceptors.Interceptor {
  static new(initDict) {
    let initDict_1 = html_common.convertDartToNative_Dictionary(initDict);
    return html$.Touch._create_1(initDict_1);
  }
  static _create_1(initDict) {
    return new Touch(initDict);
  }
  get [_clientX]() {
    return this.clientX;
  }
  get [_clientY]() {
    return this.clientY;
  }
  get [$force]() {
    return this.force;
  }
  get [$identifier]() {
    return this.identifier;
  }
  get [_pageX]() {
    return this.pageX;
  }
  get [_pageY]() {
    return this.pageY;
  }
  get [_radiusX]() {
    return this.radiusX;
  }
  get [_radiusY]() {
    return this.radiusY;
  }
  get [$region]() {
    return this.region;
  }
  get [$rotationAngle]() {
    return this.rotationAngle;
  }
  get [_screenX]() {
    return this.screenX;
  }
  get [_screenY]() {
    return this.screenY;
  }
  get [$target]() {
    return html$._convertNativeToDart_EventTarget(this[_get_target]);
  }
  get [_get_target]() {
    return this.target;
  }
  get [__clientX]() {
    return this.clientX[$round]();
  }
  get [__clientY]() {
    return this.clientY[$round]();
  }
  get [__screenX]() {
    return this.screenX[$round]();
  }
  get [__screenY]() {
    return this.screenY[$round]();
  }
  get [__pageX]() {
    return this.pageX[$round]();
  }
  get [__pageY]() {
    return this.pageY[$round]();
  }
  get [__radiusX]() {
    return this.radiusX[$round]();
  }
  get [__radiusY]() {
    return this.radiusY[$round]();
  }
  get [$client]() {
    return new (PointOfnum()).new(this[__clientX], this[__clientY]);
  }
  get [$page]() {
    return new (PointOfnum()).new(this[__pageX], this[__pageY]);
  }
  get [$screen]() {
    return new (PointOfnum()).new(this[__screenX], this[__screenY]);
  }
  get [$radiusX]() {
    return this[__radiusX];
  }
  get [$radiusY]() {
    return this[__radiusY];
  }
};
dart.addTypeTests(html$.Touch);
const force = Symbol("Touch.force");
const identifier = Symbol("Touch.identifier");
const region$0 = Symbol("Touch.region");
const rotationAngle = Symbol("Touch.rotationAngle");
dart.setGetterSignature(html$.Touch, () => ({
  __proto__: dart.getGetters(html$.Touch.__proto__),
  [$target]: html$.EventTarget,
  [__clientX]: core.int,
  [__clientY]: core.int,
  [__screenX]: core.int,
  [__screenY]: core.int,
  [__pageX]: core.int,
  [__pageY]: core.int,
  [__radiusX]: core.int,
  [__radiusY]: core.int,
  [$client]: math.Point$(core.num),
  [$page]: math.Point$(core.num),
  [$screen]: math.Point$(core.num),
  [$radiusX]: core.int,
  [$radiusY]: core.int
}));
dart.setFieldSignature(html$.Touch, () => ({
  __proto__: dart.getFields(html$.Touch.__proto__),
  [_clientX]: dart.finalFieldType(core.num),
  [_clientY]: dart.finalFieldType(core.num),
  [$force]: dart.finalFieldType(core.num),
  [$identifier]: dart.finalFieldType(core.int),
  [_pageX]: dart.finalFieldType(core.num),
  [_pageY]: dart.finalFieldType(core.num),
  [_radiusX]: dart.finalFieldType(core.num),
  [_radiusY]: dart.finalFieldType(core.num),
  [$region]: dart.finalFieldType(core.String),
  [$rotationAngle]: dart.finalFieldType(core.num),
  [_screenX]: dart.finalFieldType(core.num),
  [_screenY]: dart.finalFieldType(core.num),
  [_get_target]: dart.finalFieldType(dart.dynamic)
}));
dart.registerExtension("Touch", html$.Touch);
html$.TouchEvent = class TouchEvent$ extends html$.UIEvent {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.TouchEvent._create_1(type, eventInitDict_1);
    }
    return html$.TouchEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new TouchEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new TouchEvent(type);
  }
  get [$altKey]() {
    return this.altKey;
  }
  get [$changedTouches]() {
    return this.changedTouches;
  }
  get [$ctrlKey]() {
    return this.ctrlKey;
  }
  get [$metaKey]() {
    return this.metaKey;
  }
  get [$shiftKey]() {
    return this.shiftKey;
  }
  get [$targetTouches]() {
    return this.targetTouches;
  }
  get [$touches]() {
    return this.touches;
  }
  static get supported() {
    return html_common.Device.isEventTypeSupported("TouchEvent");
  }
};
dart.addTypeTests(html$.TouchEvent);
const altKey$0 = Symbol("TouchEvent.altKey");
const changedTouches = Symbol("TouchEvent.changedTouches");
const ctrlKey$0 = Symbol("TouchEvent.ctrlKey");
const metaKey$0 = Symbol("TouchEvent.metaKey");
const shiftKey$0 = Symbol("TouchEvent.shiftKey");
const targetTouches = Symbol("TouchEvent.targetTouches");
const touches = Symbol("TouchEvent.touches");
dart.setFieldSignature(html$.TouchEvent, () => ({
  __proto__: dart.getFields(html$.TouchEvent.__proto__),
  [$altKey]: dart.finalFieldType(core.bool),
  [$changedTouches]: dart.finalFieldType(html$.TouchList),
  [$ctrlKey]: dart.finalFieldType(core.bool),
  [$metaKey]: dart.finalFieldType(core.bool),
  [$shiftKey]: dart.finalFieldType(core.bool),
  [$targetTouches]: dart.finalFieldType(html$.TouchList),
  [$touches]: dart.finalFieldType(html$.TouchList)
}));
dart.registerExtension("TouchEvent", html$.TouchEvent);
const Interceptor_ListMixin$$7 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$7.new = function() {
  Interceptor_ListMixin$$7.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$7.prototype;
dart.applyMixin(Interceptor_ListMixin$$7, collection.ListMixin$(html$.Touch));
const Interceptor_ImmutableListMixin$$7 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$7 {};
(Interceptor_ImmutableListMixin$$7.new = function() {
  Interceptor_ImmutableListMixin$$7.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$7.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$7, html$.ImmutableListMixin$(html$.Touch));
html$.TouchList = class TouchList extends Interceptor_ImmutableListMixin$$7 {
  static new() {
    return null;
  }
  static get supported() {
    return !!document.createTouchList;
  }
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.Touch._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
html$.TouchList.prototype[dart.isList] = true;
dart.addTypeTests(html$.TouchList);
html$.TouchList[dart.implements] = () => [JavaScriptIndexingBehaviorOfTouch(), ListOfTouch()];
dart.setMethodSignature(html$.TouchList, () => ({
  __proto__: dart.getMethods(html$.TouchList.__proto__),
  [$_get]: dart.fnType(html$.Touch, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.Touch, [core.int]),
  [$item]: dart.fnType(html$.Touch, [core.int])
}));
dart.setGetterSignature(html$.TouchList, () => ({
  __proto__: dart.getGetters(html$.TouchList.__proto__),
  [$length]: core.int,
  [$first]: html$.Touch,
  [$last]: html$.Touch,
  [$single]: html$.Touch
}));
dart.setSetterSignature(html$.TouchList, () => ({
  __proto__: dart.getSetters(html$.TouchList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("TouchList", html$.TouchList);
html$.TrackDefault = class TrackDefault$ extends _interceptors.Interceptor {
  static new(type, language, label, kinds, byteStreamTrackID) {
    if (byteStreamTrackID === void 0) byteStreamTrackID = null;
    if (byteStreamTrackID != null) {
      let kinds_1 = html_common.convertDartToNative_StringArray(kinds);
      return html$.TrackDefault._create_1(type, language, label, kinds_1, byteStreamTrackID);
    }
    let kinds_1 = html_common.convertDartToNative_StringArray(kinds);
    return html$.TrackDefault._create_2(type, language, label, kinds_1);
  }
  static _create_1(type, language, label, kinds, byteStreamTrackID) {
    return new TrackDefault(type, language, label, kinds, byteStreamTrackID);
  }
  static _create_2(type, language, label, kinds) {
    return new TrackDefault(type, language, label, kinds);
  }
  get [$byteStreamTrackID]() {
    return this.byteStreamTrackID;
  }
  get [$kinds]() {
    return this.kinds;
  }
  get [$label]() {
    return this.label;
  }
  get [$language]() {
    return this.language;
  }
  get [$type]() {
    return this.type;
  }
};
dart.addTypeTests(html$.TrackDefault);
const byteStreamTrackID = Symbol("TrackDefault.byteStreamTrackID");
const kinds = Symbol("TrackDefault.kinds");
const label$5 = Symbol("TrackDefault.label");
const language$0 = Symbol("TrackDefault.language");
const type$36 = Symbol("TrackDefault.type");
dart.setFieldSignature(html$.TrackDefault, () => ({
  __proto__: dart.getFields(html$.TrackDefault.__proto__),
  [$byteStreamTrackID]: dart.finalFieldType(core.String),
  [$kinds]: dart.finalFieldType(core.Object),
  [$label]: dart.finalFieldType(core.String),
  [$language]: dart.finalFieldType(core.String),
  [$type]: dart.finalFieldType(core.String)
}));
dart.registerExtension("TrackDefault", html$.TrackDefault);
html$.TrackDefaultList = class TrackDefaultList$ extends _interceptors.Interceptor {
  static new(trackDefaults) {
    if (trackDefaults === void 0) trackDefaults = null;
    if (trackDefaults != null) {
      return html$.TrackDefaultList._create_1(trackDefaults);
    }
    return html$.TrackDefaultList._create_2();
  }
  static _create_1(trackDefaults) {
    return new TrackDefaultList(trackDefaults);
  }
  static _create_2() {
    return new TrackDefaultList();
  }
  get [$length]() {
    return this.length;
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
dart.addTypeTests(html$.TrackDefaultList);
const length$15 = Symbol("TrackDefaultList.length");
dart.setMethodSignature(html$.TrackDefaultList, () => ({
  __proto__: dart.getMethods(html$.TrackDefaultList.__proto__),
  [$item]: dart.fnType(html$.TrackDefault, [core.int])
}));
dart.setFieldSignature(html$.TrackDefaultList, () => ({
  __proto__: dart.getFields(html$.TrackDefaultList.__proto__),
  [$length]: dart.finalFieldType(core.int)
}));
dart.registerExtension("TrackDefaultList", html$.TrackDefaultList);
html$.TrackElement = class TrackElement extends html$.HtmlElement {
  static new() {
    return html$.TrackElement._check(html$.document[$createElement]("track"));
  }
  static get supported() {
    return html$.Element.isTagSupported("track");
  }
  get [$defaultValue]() {
    return this.default;
  }
  set [$defaultValue](value) {
    this.default = value;
  }
  get [$kind]() {
    return this.kind;
  }
  set [$kind](value) {
    this.kind = value;
  }
  get [$label]() {
    return this.label;
  }
  set [$label](value) {
    this.label = value;
  }
  get [$readyState]() {
    return this.readyState;
  }
  get [$src]() {
    return this.src;
  }
  set [$src](value) {
    this.src = value;
  }
  get [$srclang]() {
    return this.srclang;
  }
  set [$srclang](value) {
    this.srclang = value;
  }
  get [$track]() {
    return this.track;
  }
};
(html$.TrackElement.created = function() {
  this[defaultValue$2] = null;
  this[kind$2] = null;
  this[label$6] = null;
  this[readyState$8] = null;
  this[src$7] = null;
  this[srclang] = null;
  this[track$5] = null;
  html$.TrackElement.__proto__.created.call(this);
}).prototype = html$.TrackElement.prototype;
dart.addTypeTests(html$.TrackElement);
const defaultValue$2 = Symbol("TrackElement.defaultValue");
const kind$2 = Symbol("TrackElement.kind");
const label$6 = Symbol("TrackElement.label");
const readyState$8 = Symbol("TrackElement.readyState");
const src$7 = Symbol("TrackElement.src");
const srclang = Symbol("TrackElement.srclang");
const track$5 = Symbol("TrackElement.track");
dart.setFieldSignature(html$.TrackElement, () => ({
  __proto__: dart.getFields(html$.TrackElement.__proto__),
  [$defaultValue]: dart.fieldType(core.bool),
  [$kind]: dart.fieldType(core.String),
  [$label]: dart.fieldType(core.String),
  [$readyState]: dart.finalFieldType(core.int),
  [$src]: dart.fieldType(core.String),
  [$srclang]: dart.fieldType(core.String),
  [$track]: dart.finalFieldType(html$.TextTrack)
}));
dart.defineLazy(html$.TrackElement, {
  /*html$.TrackElement.ERROR*/get ERROR() {
    return 3;
  },
  /*html$.TrackElement.LOADED*/get LOADED() {
    return 2;
  },
  /*html$.TrackElement.LOADING*/get LOADING() {
    return 1;
  },
  /*html$.TrackElement.NONE*/get NONE() {
    return 0;
  }
});
dart.registerExtension("HTMLTrackElement", html$.TrackElement);
html$.TrackEvent = class TrackEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.TrackEvent._create_1(type, eventInitDict_1);
    }
    return html$.TrackEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new TrackEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new TrackEvent(type);
  }
  get [$track]() {
    return this.track;
  }
};
dart.addTypeTests(html$.TrackEvent);
const track$6 = Symbol("TrackEvent.track");
dart.setFieldSignature(html$.TrackEvent, () => ({
  __proto__: dart.getFields(html$.TrackEvent.__proto__),
  [$track]: dart.finalFieldType(core.Object)
}));
dart.registerExtension("TrackEvent", html$.TrackEvent);
html$.TransitionEvent = class TransitionEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.TransitionEvent._create_1(type, eventInitDict_1);
    }
    return html$.TransitionEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new TransitionEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new TransitionEvent(type);
  }
  get [$elapsedTime]() {
    return this.elapsedTime;
  }
  get [$propertyName]() {
    return this.propertyName;
  }
  get [$pseudoElement]() {
    return this.pseudoElement;
  }
};
dart.addTypeTests(html$.TransitionEvent);
const elapsedTime$0 = Symbol("TransitionEvent.elapsedTime");
const propertyName = Symbol("TransitionEvent.propertyName");
const pseudoElement = Symbol("TransitionEvent.pseudoElement");
dart.setFieldSignature(html$.TransitionEvent, () => ({
  __proto__: dart.getFields(html$.TransitionEvent.__proto__),
  [$elapsedTime]: dart.finalFieldType(core.num),
  [$propertyName]: dart.finalFieldType(core.String),
  [$pseudoElement]: dart.finalFieldType(core.String)
}));
dart.registerExtension("TransitionEvent", html$.TransitionEvent);
dart.registerExtension("WebKitTransitionEvent", html$.TransitionEvent);
html$.TreeWalker = class TreeWalker extends _interceptors.Interceptor {
  static new(root, whatToShow) {
    return html$.document[_createTreeWalker](root, whatToShow, null);
  }
  get [$currentNode]() {
    return this.currentNode;
  }
  set [$currentNode](value) {
    this.currentNode = value;
  }
  get [$filter]() {
    return this.filter;
  }
  get [$root]() {
    return this.root;
  }
  get [$whatToShow]() {
    return this.whatToShow;
  }
  [$firstChild](...args) {
    return this.firstChild.apply(this, args);
  }
  [$lastChild](...args) {
    return this.lastChild.apply(this, args);
  }
  [$nextNode](...args) {
    return this.nextNode.apply(this, args);
  }
  [$nextSibling](...args) {
    return this.nextSibling.apply(this, args);
  }
  [$parentNode](...args) {
    return this.parentNode.apply(this, args);
  }
  [$previousNode](...args) {
    return this.previousNode.apply(this, args);
  }
  [$previousSibling](...args) {
    return this.previousSibling.apply(this, args);
  }
};
dart.addTypeTests(html$.TreeWalker);
const currentNode = Symbol("TreeWalker.currentNode");
const filter$1 = Symbol("TreeWalker.filter");
const root$1 = Symbol("TreeWalker.root");
const whatToShow$ = Symbol("TreeWalker.whatToShow");
dart.setMethodSignature(html$.TreeWalker, () => ({
  __proto__: dart.getMethods(html$.TreeWalker.__proto__),
  [$firstChild]: dart.fnType(html$.Node, []),
  [$lastChild]: dart.fnType(html$.Node, []),
  [$nextNode]: dart.fnType(html$.Node, []),
  [$nextSibling]: dart.fnType(html$.Node, []),
  [$parentNode]: dart.fnType(html$.Node, []),
  [$previousNode]: dart.fnType(html$.Node, []),
  [$previousSibling]: dart.fnType(html$.Node, [])
}));
dart.setFieldSignature(html$.TreeWalker, () => ({
  __proto__: dart.getFields(html$.TreeWalker.__proto__),
  [$currentNode]: dart.fieldType(html$.Node),
  [$filter]: dart.finalFieldType(html$.NodeFilter),
  [$root]: dart.finalFieldType(html$.Node),
  [$whatToShow]: dart.finalFieldType(core.int)
}));
dart.registerExtension("TreeWalker", html$.TreeWalker);
html$.TrustedHtml = class TrustedHtml extends _interceptors.Interceptor {};
dart.addTypeTests(html$.TrustedHtml);
dart.registerExtension("TrustedHTML", html$.TrustedHtml);
html$.TrustedScriptUrl = class TrustedScriptUrl extends _interceptors.Interceptor {};
dart.addTypeTests(html$.TrustedScriptUrl);
dart.registerExtension("TrustedScriptURL", html$.TrustedScriptUrl);
html$.TrustedUrl = class TrustedUrl extends _interceptors.Interceptor {};
dart.addTypeTests(html$.TrustedUrl);
dart.registerExtension("TrustedURL", html$.TrustedUrl);
html$.UListElement = class UListElement extends html$.HtmlElement {
  static new() {
    return html$.document.createElement("ul");
  }
};
(html$.UListElement.created = function() {
  html$.UListElement.__proto__.created.call(this);
}).prototype = html$.UListElement.prototype;
dart.addTypeTests(html$.UListElement);
dart.registerExtension("HTMLUListElement", html$.UListElement);
html$.UnderlyingSourceBase = class UnderlyingSourceBase extends _interceptors.Interceptor {
  [$cancel](reason) {
    return html$.promiseToFuture(dart.dynamic, this.cancel(reason));
  }
  [$notifyLockAcquired](...args) {
    return this.notifyLockAcquired.apply(this, args);
  }
  [$notifyLockReleased](...args) {
    return this.notifyLockReleased.apply(this, args);
  }
  [$pull]() {
    return html$.promiseToFuture(dart.dynamic, this.pull());
  }
  [$start](stream) {
    return html$.promiseToFuture(dart.dynamic, this.start(stream));
  }
};
dart.addTypeTests(html$.UnderlyingSourceBase);
dart.setMethodSignature(html$.UnderlyingSourceBase, () => ({
  __proto__: dart.getMethods(html$.UnderlyingSourceBase.__proto__),
  [$cancel]: dart.fnType(async.Future, [core.Object]),
  [$notifyLockAcquired]: dart.fnType(dart.void, []),
  [$notifyLockReleased]: dart.fnType(dart.void, []),
  [$pull]: dart.fnType(async.Future, []),
  [$start]: dart.fnType(async.Future, [core.Object])
}));
dart.registerExtension("UnderlyingSourceBase", html$.UnderlyingSourceBase);
html$.UnknownElement = class UnknownElement extends html$.HtmlElement {};
(html$.UnknownElement.created = function() {
  html$.UnknownElement.__proto__.created.call(this);
}).prototype = html$.UnknownElement.prototype;
dart.addTypeTests(html$.UnknownElement);
dart.registerExtension("HTMLUnknownElement", html$.UnknownElement);
html$.Url = class Url extends _interceptors.Interceptor {
  static createObjectUrl(blob_OR_source_OR_stream) {
    return (self.URL || self.webkitURL).createObjectURL(blob_OR_source_OR_stream);
  }
  static createObjectUrlFromSource(source) {
    return (self.URL || self.webkitURL).createObjectURL(source);
  }
  static createObjectUrlFromStream(stream) {
    return (self.URL || self.webkitURL).createObjectURL(stream);
  }
  static createObjectUrlFromBlob(blob) {
    return (self.URL || self.webkitURL).createObjectURL(blob);
  }
  static revokeObjectUrl(url) {
    return (self.URL || self.webkitURL).revokeObjectURL(url);
  }
  [$toString]() {
    return String(this);
  }
  get [$hash]() {
    return this.hash;
  }
  set [$hash](value) {
    this.hash = value;
  }
  get [$host]() {
    return this.host;
  }
  set [$host](value) {
    this.host = value;
  }
  get [$hostname]() {
    return this.hostname;
  }
  set [$hostname](value) {
    this.hostname = value;
  }
  get [$href]() {
    return this.href;
  }
  set [$href](value) {
    this.href = value;
  }
  get [$origin]() {
    return this.origin;
  }
  get [$password]() {
    return this.password;
  }
  set [$password](value) {
    this.password = value;
  }
  get [$pathname]() {
    return this.pathname;
  }
  set [$pathname](value) {
    this.pathname = value;
  }
  get [$port]() {
    return this.port;
  }
  set [$port](value) {
    this.port = value;
  }
  get [$protocol]() {
    return this.protocol;
  }
  set [$protocol](value) {
    this.protocol = value;
  }
  get [$search]() {
    return this.search;
  }
  set [$search](value) {
    this.search = value;
  }
  get [$searchParams]() {
    return this.searchParams;
  }
  get [$username]() {
    return this.username;
  }
  set [$username](value) {
    this.username = value;
  }
};
dart.addTypeTests(html$.Url);
const hash$2 = Symbol("Url.hash");
const host$3 = Symbol("Url.host");
const hostname$2 = Symbol("Url.hostname");
const href$6 = Symbol("Url.href");
const origin$6 = Symbol("Url.origin");
const password$2 = Symbol("Url.password");
const pathname$2 = Symbol("Url.pathname");
const port$6 = Symbol("Url.port");
const protocol$4 = Symbol("Url.protocol");
const search$2 = Symbol("Url.search");
const searchParams = Symbol("Url.searchParams");
const username$1 = Symbol("Url.username");
dart.setFieldSignature(html$.Url, () => ({
  __proto__: dart.getFields(html$.Url.__proto__),
  [$hash]: dart.fieldType(core.String),
  [$host]: dart.fieldType(core.String),
  [$hostname]: dart.fieldType(core.String),
  [$href]: dart.fieldType(core.String),
  [$origin]: dart.finalFieldType(core.String),
  [$password]: dart.fieldType(core.String),
  [$pathname]: dart.fieldType(core.String),
  [$port]: dart.fieldType(core.String),
  [$protocol]: dart.fieldType(core.String),
  [$search]: dart.fieldType(core.String),
  [$searchParams]: dart.finalFieldType(html$.UrlSearchParams),
  [$username]: dart.fieldType(core.String)
}));
dart.registerExtension("URL", html$.Url);
html$.UrlSearchParams = class UrlSearchParams extends _interceptors.Interceptor {
  static new(init) {
    if (init === void 0) init = null;
    if (init != null) {
      return html$.UrlSearchParams._create_1(init);
    }
    return html$.UrlSearchParams._create_2();
  }
  static _create_1(init) {
    return new URLSearchParams(init);
  }
  static _create_2() {
    return new URLSearchParams();
  }
  [$append](...args) {
    return this.append.apply(this, args);
  }
  [$delete](...args) {
    return this.delete.apply(this, args);
  }
  [$get](...args) {
    return this.get.apply(this, args);
  }
  [$getAll](...args) {
    return this.getAll.apply(this, args);
  }
  [$has](...args) {
    return this.has.apply(this, args);
  }
  [$set](...args) {
    return this.set.apply(this, args);
  }
  [$sort](...args) {
    return this.sort.apply(this, args);
  }
};
dart.addTypeTests(html$.UrlSearchParams);
dart.setMethodSignature(html$.UrlSearchParams, () => ({
  __proto__: dart.getMethods(html$.UrlSearchParams.__proto__),
  [$append]: dart.fnType(dart.void, [core.String, core.String]),
  [$delete]: dart.fnType(dart.void, [core.String]),
  [$get]: dart.fnType(core.String, [core.String]),
  [$getAll]: dart.fnType(core.List$(core.String), [core.String]),
  [$has]: dart.fnType(core.bool, [core.String]),
  [$set]: dart.fnType(dart.void, [core.String, core.String]),
  [$sort]: dart.fnType(dart.void, [])
}));
dart.registerExtension("URLSearchParams", html$.UrlSearchParams);
html$.UrlUtilsReadOnly = class UrlUtilsReadOnly extends _interceptors.Interceptor {
  get hash() {
    return this[hash$3];
  }
  set hash(value) {
    super.hash = value;
  }
  get host() {
    return this[host$4];
  }
  set host(value) {
    super.host = value;
  }
  get hostname() {
    return this[hostname$3];
  }
  set hostname(value) {
    super.hostname = value;
  }
  get href() {
    return this[href$7];
  }
  set href(value) {
    super.href = value;
  }
  get origin() {
    return this[origin$7];
  }
  set origin(value) {
    super.origin = value;
  }
  get pathname() {
    return this[pathname$3];
  }
  set pathname(value) {
    super.pathname = value;
  }
  get port() {
    return this[port$7];
  }
  set port(value) {
    super.port = value;
  }
  get protocol() {
    return this[protocol$5];
  }
  set protocol(value) {
    super.protocol = value;
  }
  get search() {
    return this[search$3];
  }
  set search(value) {
    super.search = value;
  }
};
dart.addTypeTests(html$.UrlUtilsReadOnly);
const hash$3 = Symbol("UrlUtilsReadOnly.hash");
const host$4 = Symbol("UrlUtilsReadOnly.host");
const hostname$3 = Symbol("UrlUtilsReadOnly.hostname");
const href$7 = Symbol("UrlUtilsReadOnly.href");
const origin$7 = Symbol("UrlUtilsReadOnly.origin");
const pathname$3 = Symbol("UrlUtilsReadOnly.pathname");
const port$7 = Symbol("UrlUtilsReadOnly.port");
const protocol$5 = Symbol("UrlUtilsReadOnly.protocol");
const search$3 = Symbol("UrlUtilsReadOnly.search");
dart.setFieldSignature(html$.UrlUtilsReadOnly, () => ({
  __proto__: dart.getFields(html$.UrlUtilsReadOnly.__proto__),
  hash: dart.finalFieldType(core.String),
  host: dart.finalFieldType(core.String),
  hostname: dart.finalFieldType(core.String),
  href: dart.finalFieldType(core.String),
  origin: dart.finalFieldType(core.String),
  pathname: dart.finalFieldType(core.String),
  port: dart.finalFieldType(core.String),
  protocol: dart.finalFieldType(core.String),
  search: dart.finalFieldType(core.String)
}));
dart.defineExtensionAccessors(html$.UrlUtilsReadOnly, [
  'hash',
  'host',
  'hostname',
  'href',
  'origin',
  'pathname',
  'port',
  'protocol',
  'search'
]);
html$.VR = class VR extends html$.EventTarget {
  [$getDevices]() {
    return html$.promiseToFuture(dart.dynamic, this.getDevices());
  }
};
dart.addTypeTests(html$.VR);
dart.setMethodSignature(html$.VR, () => ({
  __proto__: dart.getMethods(html$.VR.__proto__),
  [$getDevices]: dart.fnType(async.Future, [])
}));
dart.registerExtension("VR", html$.VR);
html$.VRCoordinateSystem = class VRCoordinateSystem extends _interceptors.Interceptor {
  [$getTransformTo](...args) {
    return this.getTransformTo.apply(this, args);
  }
};
dart.addTypeTests(html$.VRCoordinateSystem);
dart.setMethodSignature(html$.VRCoordinateSystem, () => ({
  __proto__: dart.getMethods(html$.VRCoordinateSystem.__proto__),
  [$getTransformTo]: dart.fnType(typed_data.Float32List, [html$.VRCoordinateSystem])
}));
dart.registerExtension("VRCoordinateSystem", html$.VRCoordinateSystem);
html$.VRDevice = class VRDevice extends html$.EventTarget {
  get [$deviceName]() {
    return this.deviceName;
  }
  get [$isExternal]() {
    return this.isExternal;
  }
  [$requestSession](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.requestSession(options_dict));
  }
  [$supportsSession](options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.supportsSession(options_dict));
  }
};
dart.addTypeTests(html$.VRDevice);
const deviceName = Symbol("VRDevice.deviceName");
const isExternal = Symbol("VRDevice.isExternal");
dart.setMethodSignature(html$.VRDevice, () => ({
  __proto__: dart.getMethods(html$.VRDevice.__proto__),
  [$requestSession]: dart.fnType(async.Future, [], [core.Map]),
  [$supportsSession]: dart.fnType(async.Future, [], [core.Map])
}));
dart.setFieldSignature(html$.VRDevice, () => ({
  __proto__: dart.getFields(html$.VRDevice.__proto__),
  [$deviceName]: dart.finalFieldType(core.String),
  [$isExternal]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("VRDevice", html$.VRDevice);
html$.VRDeviceEvent = class VRDeviceEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.VRDeviceEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new VRDeviceEvent(type, eventInitDict);
  }
  get [$device]() {
    return this.device;
  }
};
dart.addTypeTests(html$.VRDeviceEvent);
const device = Symbol("VRDeviceEvent.device");
dart.setFieldSignature(html$.VRDeviceEvent, () => ({
  __proto__: dart.getFields(html$.VRDeviceEvent.__proto__),
  [$device]: dart.finalFieldType(html$.VRDevice)
}));
dart.registerExtension("VRDeviceEvent", html$.VRDeviceEvent);
html$.VRDisplay = class VRDisplay extends html$.EventTarget {
  get [$capabilities]() {
    return this.capabilities;
  }
  get [$depthFar]() {
    return this.depthFar;
  }
  set [$depthFar](value) {
    this.depthFar = value;
  }
  get [$depthNear]() {
    return this.depthNear;
  }
  set [$depthNear](value) {
    this.depthNear = value;
  }
  get [$displayId]() {
    return this.displayId;
  }
  get [$displayName]() {
    return this.displayName;
  }
  get [$isPresenting]() {
    return this.isPresenting;
  }
  get [$stageParameters]() {
    return this.stageParameters;
  }
  [$cancelAnimationFrame](...args) {
    return this.cancelAnimationFrame.apply(this, args);
  }
  [$exitPresent]() {
    return html$.promiseToFuture(dart.dynamic, this.exitPresent());
  }
  [$getEyeParameters](...args) {
    return this.getEyeParameters.apply(this, args);
  }
  [$getFrameData](...args) {
    return this.getFrameData.apply(this, args);
  }
  [$getLayers](...args) {
    return this.getLayers.apply(this, args);
  }
  [$requestAnimationFrame](...args) {
    return this.requestAnimationFrame.apply(this, args);
  }
  [$requestPresent](layers) {
    return html$.promiseToFuture(dart.dynamic, this.requestPresent(layers));
  }
  [$submitFrame](...args) {
    return this.submitFrame.apply(this, args);
  }
};
dart.addTypeTests(html$.VRDisplay);
const capabilities = Symbol("VRDisplay.capabilities");
const depthFar = Symbol("VRDisplay.depthFar");
const depthNear = Symbol("VRDisplay.depthNear");
const displayId$ = Symbol("VRDisplay.displayId");
const displayName = Symbol("VRDisplay.displayName");
const isPresenting = Symbol("VRDisplay.isPresenting");
const stageParameters = Symbol("VRDisplay.stageParameters");
dart.setMethodSignature(html$.VRDisplay, () => ({
  __proto__: dart.getMethods(html$.VRDisplay.__proto__),
  [$cancelAnimationFrame]: dart.fnType(dart.void, [core.int]),
  [$exitPresent]: dart.fnType(async.Future, []),
  [$getEyeParameters]: dart.fnType(html$.VREyeParameters, [core.String]),
  [$getFrameData]: dart.fnType(core.bool, [html$.VRFrameData]),
  [$getLayers]: dart.fnType(core.List$(core.Map), []),
  [$requestAnimationFrame]: dart.fnType(core.int, [dart.fnType(dart.void, [core.num])]),
  [$requestPresent]: dart.fnType(async.Future, [core.List$(core.Map)]),
  [$submitFrame]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(html$.VRDisplay, () => ({
  __proto__: dart.getFields(html$.VRDisplay.__proto__),
  [$capabilities]: dart.finalFieldType(html$.VRDisplayCapabilities),
  [$depthFar]: dart.fieldType(core.num),
  [$depthNear]: dart.fieldType(core.num),
  [$displayId]: dart.finalFieldType(core.int),
  [$displayName]: dart.finalFieldType(core.String),
  [$isPresenting]: dart.finalFieldType(core.bool),
  [$stageParameters]: dart.finalFieldType(html$.VRStageParameters)
}));
dart.registerExtension("VRDisplay", html$.VRDisplay);
html$.VRDisplayCapabilities = class VRDisplayCapabilities extends _interceptors.Interceptor {
  get [$canPresent]() {
    return this.canPresent;
  }
  get [$hasExternalDisplay]() {
    return this.hasExternalDisplay;
  }
  get [$hasPosition]() {
    return this.hasPosition;
  }
  get [$maxLayers]() {
    return this.maxLayers;
  }
};
dart.addTypeTests(html$.VRDisplayCapabilities);
const canPresent = Symbol("VRDisplayCapabilities.canPresent");
const hasExternalDisplay = Symbol("VRDisplayCapabilities.hasExternalDisplay");
const hasPosition$ = Symbol("VRDisplayCapabilities.hasPosition");
const maxLayers = Symbol("VRDisplayCapabilities.maxLayers");
dart.setFieldSignature(html$.VRDisplayCapabilities, () => ({
  __proto__: dart.getFields(html$.VRDisplayCapabilities.__proto__),
  [$canPresent]: dart.finalFieldType(core.bool),
  [$hasExternalDisplay]: dart.finalFieldType(core.bool),
  [$hasPosition]: dart.finalFieldType(core.bool),
  [$maxLayers]: dart.finalFieldType(core.int)
}));
dart.registerExtension("VRDisplayCapabilities", html$.VRDisplayCapabilities);
html$.VRDisplayEvent = class VRDisplayEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.VRDisplayEvent._create_1(type, eventInitDict_1);
    }
    return html$.VRDisplayEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new VRDisplayEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new VRDisplayEvent(type);
  }
  get [$display]() {
    return this.display;
  }
  get [$reason]() {
    return this.reason;
  }
};
dart.addTypeTests(html$.VRDisplayEvent);
const display$ = Symbol("VRDisplayEvent.display");
const reason$2 = Symbol("VRDisplayEvent.reason");
dart.setFieldSignature(html$.VRDisplayEvent, () => ({
  __proto__: dart.getFields(html$.VRDisplayEvent.__proto__),
  [$display]: dart.finalFieldType(html$.VRDisplay),
  [$reason]: dart.finalFieldType(core.String)
}));
dart.registerExtension("VRDisplayEvent", html$.VRDisplayEvent);
html$.VREyeParameters = class VREyeParameters extends _interceptors.Interceptor {
  get [$offset]() {
    return this.offset;
  }
  get [$renderHeight]() {
    return this.renderHeight;
  }
  get [$renderWidth]() {
    return this.renderWidth;
  }
};
dart.addTypeTests(html$.VREyeParameters);
const offset = Symbol("VREyeParameters.offset");
const renderHeight = Symbol("VREyeParameters.renderHeight");
const renderWidth = Symbol("VREyeParameters.renderWidth");
dart.setFieldSignature(html$.VREyeParameters, () => ({
  __proto__: dart.getFields(html$.VREyeParameters.__proto__),
  [$offset]: dart.finalFieldType(typed_data.Float32List),
  [$renderHeight]: dart.finalFieldType(core.int),
  [$renderWidth]: dart.finalFieldType(core.int)
}));
dart.registerExtension("VREyeParameters", html$.VREyeParameters);
html$.VRFrameData = class VRFrameData$ extends _interceptors.Interceptor {
  static new() {
    return html$.VRFrameData._create_1();
  }
  static _create_1() {
    return new VRFrameData();
  }
  get [$leftProjectionMatrix]() {
    return this.leftProjectionMatrix;
  }
  get [$leftViewMatrix]() {
    return this.leftViewMatrix;
  }
  get [$pose]() {
    return this.pose;
  }
  get [$rightProjectionMatrix]() {
    return this.rightProjectionMatrix;
  }
  get [$rightViewMatrix]() {
    return this.rightViewMatrix;
  }
};
dart.addTypeTests(html$.VRFrameData);
const leftProjectionMatrix = Symbol("VRFrameData.leftProjectionMatrix");
const leftViewMatrix = Symbol("VRFrameData.leftViewMatrix");
const pose$ = Symbol("VRFrameData.pose");
const rightProjectionMatrix = Symbol("VRFrameData.rightProjectionMatrix");
const rightViewMatrix = Symbol("VRFrameData.rightViewMatrix");
dart.setFieldSignature(html$.VRFrameData, () => ({
  __proto__: dart.getFields(html$.VRFrameData.__proto__),
  [$leftProjectionMatrix]: dart.finalFieldType(typed_data.Float32List),
  [$leftViewMatrix]: dart.finalFieldType(typed_data.Float32List),
  [$pose]: dart.finalFieldType(html$.VRPose),
  [$rightProjectionMatrix]: dart.finalFieldType(typed_data.Float32List),
  [$rightViewMatrix]: dart.finalFieldType(typed_data.Float32List)
}));
dart.registerExtension("VRFrameData", html$.VRFrameData);
html$.VRFrameOfReference = class VRFrameOfReference extends html$.VRCoordinateSystem {
  get [$bounds]() {
    return this.bounds;
  }
  get [$emulatedHeight]() {
    return this.emulatedHeight;
  }
};
dart.addTypeTests(html$.VRFrameOfReference);
const bounds = Symbol("VRFrameOfReference.bounds");
const emulatedHeight = Symbol("VRFrameOfReference.emulatedHeight");
dart.setFieldSignature(html$.VRFrameOfReference, () => ({
  __proto__: dart.getFields(html$.VRFrameOfReference.__proto__),
  [$bounds]: dart.finalFieldType(html$.VRStageBounds),
  [$emulatedHeight]: dart.finalFieldType(core.num)
}));
dart.registerExtension("VRFrameOfReference", html$.VRFrameOfReference);
html$.VRPose = class VRPose extends _interceptors.Interceptor {
  get [$angularAcceleration]() {
    return this.angularAcceleration;
  }
  get [$angularVelocity]() {
    return this.angularVelocity;
  }
  get [$linearAcceleration]() {
    return this.linearAcceleration;
  }
  get [$linearVelocity]() {
    return this.linearVelocity;
  }
  get [$orientation]() {
    return this.orientation;
  }
  get [$position]() {
    return this.position;
  }
};
dart.addTypeTests(html$.VRPose);
const angularAcceleration$ = Symbol("VRPose.angularAcceleration");
const angularVelocity$ = Symbol("VRPose.angularVelocity");
const linearAcceleration$ = Symbol("VRPose.linearAcceleration");
const linearVelocity$ = Symbol("VRPose.linearVelocity");
const orientation$2 = Symbol("VRPose.orientation");
const position$1 = Symbol("VRPose.position");
dart.setFieldSignature(html$.VRPose, () => ({
  __proto__: dart.getFields(html$.VRPose.__proto__),
  [$angularAcceleration]: dart.finalFieldType(typed_data.Float32List),
  [$angularVelocity]: dart.finalFieldType(typed_data.Float32List),
  [$linearAcceleration]: dart.finalFieldType(typed_data.Float32List),
  [$linearVelocity]: dart.finalFieldType(typed_data.Float32List),
  [$orientation]: dart.finalFieldType(typed_data.Float32List),
  [$position]: dart.finalFieldType(typed_data.Float32List)
}));
dart.registerExtension("VRPose", html$.VRPose);
html$.VRSession = class VRSession extends html$.EventTarget {
  get [$depthFar]() {
    return this.depthFar;
  }
  set [$depthFar](value) {
    this.depthFar = value;
  }
  get [$depthNear]() {
    return this.depthNear;
  }
  set [$depthNear](value) {
    this.depthNear = value;
  }
  get [$device]() {
    return this.device;
  }
  get [$exclusive]() {
    return this.exclusive;
  }
  [$end]() {
    return html$.promiseToFuture(dart.dynamic, this.end());
  }
  [$requestFrameOfReference](type, options) {
    if (options === void 0) options = null;
    let options_dict = null;
    if (options != null) {
      options_dict = html_common.convertDartToNative_Dictionary(options);
    }
    return html$.promiseToFuture(dart.dynamic, this.requestFrameOfReference(type, options_dict));
  }
  get [$onBlur]() {
    return html$.VRSession.blurEvent.forTarget(this);
  }
  get [$onFocus]() {
    return html$.VRSession.focusEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.VRSession);
const depthFar$ = Symbol("VRSession.depthFar");
const depthNear$ = Symbol("VRSession.depthNear");
const device$ = Symbol("VRSession.device");
const exclusive = Symbol("VRSession.exclusive");
dart.setMethodSignature(html$.VRSession, () => ({
  __proto__: dart.getMethods(html$.VRSession.__proto__),
  [$end]: dart.fnType(async.Future, []),
  [$requestFrameOfReference]: dart.fnType(async.Future, [core.String], [core.Map])
}));
dart.setGetterSignature(html$.VRSession, () => ({
  __proto__: dart.getGetters(html$.VRSession.__proto__),
  [$onBlur]: async.Stream$(html$.Event),
  [$onFocus]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.VRSession, () => ({
  __proto__: dart.getFields(html$.VRSession.__proto__),
  [$depthFar]: dart.fieldType(core.num),
  [$depthNear]: dart.fieldType(core.num),
  [$device]: dart.finalFieldType(html$.VRDevice),
  [$exclusive]: dart.finalFieldType(core.bool)
}));
dart.defineLazy(html$.VRSession, {
  /*html$.VRSession.blurEvent*/get blurEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("blur"));
  },
  /*html$.VRSession.focusEvent*/get focusEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("focus"));
  }
});
dart.registerExtension("VRSession", html$.VRSession);
html$.VRSessionEvent = class VRSessionEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$.VRSessionEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new VRSessionEvent(type, eventInitDict);
  }
  get [$session]() {
    return this.session;
  }
};
dart.addTypeTests(html$.VRSessionEvent);
const session = Symbol("VRSessionEvent.session");
dart.setFieldSignature(html$.VRSessionEvent, () => ({
  __proto__: dart.getFields(html$.VRSessionEvent.__proto__),
  [$session]: dart.finalFieldType(html$.VRSession)
}));
dart.registerExtension("VRSessionEvent", html$.VRSessionEvent);
html$.VRStageBounds = class VRStageBounds extends _interceptors.Interceptor {
  get [$geometry]() {
    return this.geometry;
  }
};
dart.addTypeTests(html$.VRStageBounds);
const geometry = Symbol("VRStageBounds.geometry");
dart.setFieldSignature(html$.VRStageBounds, () => ({
  __proto__: dart.getFields(html$.VRStageBounds.__proto__),
  [$geometry]: dart.finalFieldType(ListOfVRStageBoundsPoint())
}));
dart.registerExtension("VRStageBounds", html$.VRStageBounds);
html$.VRStageBoundsPoint = class VRStageBoundsPoint extends _interceptors.Interceptor {
  get [$x]() {
    return this.x;
  }
  get [$z]() {
    return this.z;
  }
};
dart.addTypeTests(html$.VRStageBoundsPoint);
const x$6 = Symbol("VRStageBoundsPoint.x");
const z$5 = Symbol("VRStageBoundsPoint.z");
dart.setFieldSignature(html$.VRStageBoundsPoint, () => ({
  __proto__: dart.getFields(html$.VRStageBoundsPoint.__proto__),
  [$x]: dart.finalFieldType(core.num),
  [$z]: dart.finalFieldType(core.num)
}));
dart.registerExtension("VRStageBoundsPoint", html$.VRStageBoundsPoint);
html$.VRStageParameters = class VRStageParameters extends _interceptors.Interceptor {
  get [$sittingToStandingTransform]() {
    return this.sittingToStandingTransform;
  }
  get [$sizeX]() {
    return this.sizeX;
  }
  get [$sizeZ]() {
    return this.sizeZ;
  }
};
dart.addTypeTests(html$.VRStageParameters);
const sittingToStandingTransform = Symbol("VRStageParameters.sittingToStandingTransform");
const sizeX = Symbol("VRStageParameters.sizeX");
const sizeZ = Symbol("VRStageParameters.sizeZ");
dart.setFieldSignature(html$.VRStageParameters, () => ({
  __proto__: dart.getFields(html$.VRStageParameters.__proto__),
  [$sittingToStandingTransform]: dart.finalFieldType(typed_data.Float32List),
  [$sizeX]: dart.finalFieldType(core.num),
  [$sizeZ]: dart.finalFieldType(core.num)
}));
dart.registerExtension("VRStageParameters", html$.VRStageParameters);
html$.ValidityState = class ValidityState extends _interceptors.Interceptor {
  get [$badInput]() {
    return this.badInput;
  }
  get [$customError]() {
    return this.customError;
  }
  get [$patternMismatch]() {
    return this.patternMismatch;
  }
  get [$rangeOverflow]() {
    return this.rangeOverflow;
  }
  get [$rangeUnderflow]() {
    return this.rangeUnderflow;
  }
  get [$stepMismatch]() {
    return this.stepMismatch;
  }
  get [$tooLong]() {
    return this.tooLong;
  }
  get [$tooShort]() {
    return this.tooShort;
  }
  get [$typeMismatch]() {
    return this.typeMismatch;
  }
  get [$valid]() {
    return this.valid;
  }
  get [$valueMissing]() {
    return this.valueMissing;
  }
};
dart.addTypeTests(html$.ValidityState);
const badInput = Symbol("ValidityState.badInput");
const customError = Symbol("ValidityState.customError");
const patternMismatch = Symbol("ValidityState.patternMismatch");
const rangeOverflow = Symbol("ValidityState.rangeOverflow");
const rangeUnderflow = Symbol("ValidityState.rangeUnderflow");
const stepMismatch = Symbol("ValidityState.stepMismatch");
const tooLong = Symbol("ValidityState.tooLong");
const tooShort = Symbol("ValidityState.tooShort");
const typeMismatch = Symbol("ValidityState.typeMismatch");
const valid = Symbol("ValidityState.valid");
const valueMissing = Symbol("ValidityState.valueMissing");
dart.setFieldSignature(html$.ValidityState, () => ({
  __proto__: dart.getFields(html$.ValidityState.__proto__),
  [$badInput]: dart.finalFieldType(core.bool),
  [$customError]: dart.finalFieldType(core.bool),
  [$patternMismatch]: dart.finalFieldType(core.bool),
  [$rangeOverflow]: dart.finalFieldType(core.bool),
  [$rangeUnderflow]: dart.finalFieldType(core.bool),
  [$stepMismatch]: dart.finalFieldType(core.bool),
  [$tooLong]: dart.finalFieldType(core.bool),
  [$tooShort]: dart.finalFieldType(core.bool),
  [$typeMismatch]: dart.finalFieldType(core.bool),
  [$valid]: dart.finalFieldType(core.bool),
  [$valueMissing]: dart.finalFieldType(core.bool)
}));
dart.registerExtension("ValidityState", html$.ValidityState);
html$.VideoElement = class VideoElement extends html$.MediaElement {
  static new() {
    return html$.document.createElement("video");
  }
  get [$height]() {
    return this.height;
  }
  set [$height](value) {
    this.height = value;
  }
  get [$poster]() {
    return this.poster;
  }
  set [$poster](value) {
    this.poster = value;
  }
  get [$videoHeight]() {
    return this.videoHeight;
  }
  get [$videoWidth]() {
    return this.videoWidth;
  }
  get [$decodedFrameCount]() {
    return this.webkitDecodedFrameCount;
  }
  get [$droppedFrameCount]() {
    return this.webkitDroppedFrameCount;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
  [$getVideoPlaybackQuality](...args) {
    return this.getVideoPlaybackQuality.apply(this, args);
  }
  [$enterFullscreen](...args) {
    return this.webkitEnterFullscreen.apply(this, args);
  }
  [$exitFullscreen](...args) {
    return this.webkitExitFullscreen.apply(this, args);
  }
};
(html$.VideoElement.created = function() {
  this[height$11] = null;
  this[poster] = null;
  this[videoHeight] = null;
  this[videoWidth] = null;
  this[decodedFrameCount] = null;
  this[droppedFrameCount] = null;
  this[width$12] = null;
  html$.VideoElement.__proto__.created.call(this);
}).prototype = html$.VideoElement.prototype;
dart.addTypeTests(html$.VideoElement);
const height$11 = Symbol("VideoElement.height");
const poster = Symbol("VideoElement.poster");
const videoHeight = Symbol("VideoElement.videoHeight");
const videoWidth = Symbol("VideoElement.videoWidth");
const decodedFrameCount = Symbol("VideoElement.decodedFrameCount");
const droppedFrameCount = Symbol("VideoElement.droppedFrameCount");
const width$12 = Symbol("VideoElement.width");
html$.VideoElement[dart.implements] = () => [html$.CanvasImageSource];
dart.setMethodSignature(html$.VideoElement, () => ({
  __proto__: dart.getMethods(html$.VideoElement.__proto__),
  [$getVideoPlaybackQuality]: dart.fnType(html$.VideoPlaybackQuality, []),
  [$enterFullscreen]: dart.fnType(dart.void, []),
  [$exitFullscreen]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(html$.VideoElement, () => ({
  __proto__: dart.getFields(html$.VideoElement.__proto__),
  [$height]: dart.fieldType(core.int),
  [$poster]: dart.fieldType(core.String),
  [$videoHeight]: dart.finalFieldType(core.int),
  [$videoWidth]: dart.finalFieldType(core.int),
  [$decodedFrameCount]: dart.finalFieldType(core.int),
  [$droppedFrameCount]: dart.finalFieldType(core.int),
  [$width]: dart.fieldType(core.int)
}));
dart.registerExtension("HTMLVideoElement", html$.VideoElement);
html$.VideoPlaybackQuality = class VideoPlaybackQuality extends _interceptors.Interceptor {
  get [$corruptedVideoFrames]() {
    return this.corruptedVideoFrames;
  }
  get [$creationTime]() {
    return this.creationTime;
  }
  get [$droppedVideoFrames]() {
    return this.droppedVideoFrames;
  }
  get [$totalVideoFrames]() {
    return this.totalVideoFrames;
  }
};
dart.addTypeTests(html$.VideoPlaybackQuality);
const corruptedVideoFrames = Symbol("VideoPlaybackQuality.corruptedVideoFrames");
const creationTime = Symbol("VideoPlaybackQuality.creationTime");
const droppedVideoFrames = Symbol("VideoPlaybackQuality.droppedVideoFrames");
const totalVideoFrames = Symbol("VideoPlaybackQuality.totalVideoFrames");
dart.setFieldSignature(html$.VideoPlaybackQuality, () => ({
  __proto__: dart.getFields(html$.VideoPlaybackQuality.__proto__),
  [$corruptedVideoFrames]: dart.finalFieldType(core.int),
  [$creationTime]: dart.finalFieldType(core.num),
  [$droppedVideoFrames]: dart.finalFieldType(core.int),
  [$totalVideoFrames]: dart.finalFieldType(core.int)
}));
dart.registerExtension("VideoPlaybackQuality", html$.VideoPlaybackQuality);
html$.VideoTrack = class VideoTrack extends _interceptors.Interceptor {
  get [$id]() {
    return this.id;
  }
  get [$kind]() {
    return this.kind;
  }
  get [$label]() {
    return this.label;
  }
  get [$language]() {
    return this.language;
  }
  get [$selected]() {
    return this.selected;
  }
  set [$selected](value) {
    this.selected = value;
  }
  get [$sourceBuffer]() {
    return this.sourceBuffer;
  }
};
dart.addTypeTests(html$.VideoTrack);
const id$16 = Symbol("VideoTrack.id");
const kind$3 = Symbol("VideoTrack.kind");
const label$7 = Symbol("VideoTrack.label");
const language$1 = Symbol("VideoTrack.language");
const selected$0 = Symbol("VideoTrack.selected");
const sourceBuffer = Symbol("VideoTrack.sourceBuffer");
dart.setFieldSignature(html$.VideoTrack, () => ({
  __proto__: dart.getFields(html$.VideoTrack.__proto__),
  [$id]: dart.finalFieldType(core.String),
  [$kind]: dart.finalFieldType(core.String),
  [$label]: dart.finalFieldType(core.String),
  [$language]: dart.finalFieldType(core.String),
  [$selected]: dart.fieldType(core.bool),
  [$sourceBuffer]: dart.finalFieldType(html$.SourceBuffer)
}));
dart.registerExtension("VideoTrack", html$.VideoTrack);
html$.VideoTrackList = class VideoTrackList extends html$.EventTarget {
  get [$length]() {
    return this.length;
  }
  get [$selectedIndex]() {
    return this.selectedIndex;
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [$getTrackById](...args) {
    return this.getTrackById.apply(this, args);
  }
  get [$onChange]() {
    return html$.VideoTrackList.changeEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.VideoTrackList);
const length$16 = Symbol("VideoTrackList.length");
const selectedIndex$ = Symbol("VideoTrackList.selectedIndex");
dart.setMethodSignature(html$.VideoTrackList, () => ({
  __proto__: dart.getMethods(html$.VideoTrackList.__proto__),
  [__getter__]: dart.fnType(html$.VideoTrack, [core.int]),
  [$getTrackById]: dart.fnType(html$.VideoTrack, [core.String])
}));
dart.setGetterSignature(html$.VideoTrackList, () => ({
  __proto__: dart.getGetters(html$.VideoTrackList.__proto__),
  [$onChange]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.VideoTrackList, () => ({
  __proto__: dart.getFields(html$.VideoTrackList.__proto__),
  [$length]: dart.finalFieldType(core.int),
  [$selectedIndex]: dart.finalFieldType(core.int)
}));
dart.defineLazy(html$.VideoTrackList, {
  /*html$.VideoTrackList.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  }
});
dart.registerExtension("VideoTrackList", html$.VideoTrackList);
html$.VisualViewport = class VisualViewport extends html$.EventTarget {
  get [$height]() {
    return this.height;
  }
  get [$offsetLeft]() {
    return this.offsetLeft;
  }
  get [$offsetTop]() {
    return this.offsetTop;
  }
  get [$pageLeft]() {
    return this.pageLeft;
  }
  get [$pageTop]() {
    return this.pageTop;
  }
  get [$scale]() {
    return this.scale;
  }
  get [$width]() {
    return this.width;
  }
  get [$onResize]() {
    return html$.VisualViewport.resizeEvent.forTarget(this);
  }
  get [$onScroll]() {
    return html$.VisualViewport.scrollEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.VisualViewport);
const height$12 = Symbol("VisualViewport.height");
const offsetLeft = Symbol("VisualViewport.offsetLeft");
const offsetTop = Symbol("VisualViewport.offsetTop");
const pageLeft = Symbol("VisualViewport.pageLeft");
const pageTop = Symbol("VisualViewport.pageTop");
const scale = Symbol("VisualViewport.scale");
const width$13 = Symbol("VisualViewport.width");
dart.setGetterSignature(html$.VisualViewport, () => ({
  __proto__: dart.getGetters(html$.VisualViewport.__proto__),
  [$onResize]: async.Stream$(html$.Event),
  [$onScroll]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.VisualViewport, () => ({
  __proto__: dart.getFields(html$.VisualViewport.__proto__),
  [$height]: dart.finalFieldType(core.num),
  [$offsetLeft]: dart.finalFieldType(core.num),
  [$offsetTop]: dart.finalFieldType(core.num),
  [$pageLeft]: dart.finalFieldType(core.num),
  [$pageTop]: dart.finalFieldType(core.num),
  [$scale]: dart.finalFieldType(core.num),
  [$width]: dart.finalFieldType(core.num)
}));
dart.defineLazy(html$.VisualViewport, {
  /*html$.VisualViewport.resizeEvent*/get resizeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("resize"));
  },
  /*html$.VisualViewport.scrollEvent*/get scrollEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("scroll"));
  }
});
dart.registerExtension("VisualViewport", html$.VisualViewport);
html$.VttCue = class VttCue extends html$.TextTrackCue {
  static new(startTime, endTime, text) {
    return html$.VttCue._create_1(startTime, endTime, text);
  }
  static _create_1(startTime, endTime, text) {
    return new VTTCue(startTime, endTime, text);
  }
  get [$align]() {
    return this.align;
  }
  set [$align](value) {
    this.align = value;
  }
  get [$line]() {
    return this.line;
  }
  set [$line](value) {
    this.line = value;
  }
  get [$position]() {
    return this.position;
  }
  set [$position](value) {
    this.position = value;
  }
  get [$region]() {
    return this.region;
  }
  set [$region](value) {
    this.region = value;
  }
  get [$size]() {
    return this.size;
  }
  set [$size](value) {
    this.size = value;
  }
  get [$snapToLines]() {
    return this.snapToLines;
  }
  set [$snapToLines](value) {
    this.snapToLines = value;
  }
  get [$text]() {
    return this.text;
  }
  set [$text](value) {
    this.text = value;
  }
  get [$vertical]() {
    return this.vertical;
  }
  set [$vertical](value) {
    this.vertical = value;
  }
  [$getCueAsHtml](...args) {
    return this.getCueAsHTML.apply(this, args);
  }
};
dart.addTypeTests(html$.VttCue);
const align = Symbol("VttCue.align");
const line = Symbol("VttCue.line");
const position$2 = Symbol("VttCue.position");
const region$1 = Symbol("VttCue.region");
const size$6 = Symbol("VttCue.size");
const snapToLines = Symbol("VttCue.snapToLines");
const text$1 = Symbol("VttCue.text");
const vertical = Symbol("VttCue.vertical");
dart.setMethodSignature(html$.VttCue, () => ({
  __proto__: dart.getMethods(html$.VttCue.__proto__),
  [$getCueAsHtml]: dart.fnType(html$.DocumentFragment, [])
}));
dart.setFieldSignature(html$.VttCue, () => ({
  __proto__: dart.getFields(html$.VttCue.__proto__),
  [$align]: dart.fieldType(core.String),
  [$line]: dart.fieldType(core.Object),
  [$position]: dart.fieldType(core.Object),
  [$region]: dart.fieldType(html$.VttRegion),
  [$size]: dart.fieldType(core.num),
  [$snapToLines]: dart.fieldType(core.bool),
  [$text]: dart.fieldType(core.String),
  [$vertical]: dart.fieldType(core.String)
}));
dart.registerExtension("VTTCue", html$.VttCue);
html$.VttRegion = class VttRegion extends _interceptors.Interceptor {
  static new() {
    return html$.VttRegion._create_1();
  }
  static _create_1() {
    return new VTTRegion();
  }
  get [$id]() {
    return this.id;
  }
  set [$id](value) {
    this.id = value;
  }
  get [$lines]() {
    return this.lines;
  }
  set [$lines](value) {
    this.lines = value;
  }
  get [$regionAnchorX]() {
    return this.regionAnchorX;
  }
  set [$regionAnchorX](value) {
    this.regionAnchorX = value;
  }
  get [$regionAnchorY]() {
    return this.regionAnchorY;
  }
  set [$regionAnchorY](value) {
    this.regionAnchorY = value;
  }
  get [$scroll]() {
    return this.scroll;
  }
  set [$scroll](value) {
    this.scroll = value;
  }
  get [$viewportAnchorX]() {
    return this.viewportAnchorX;
  }
  set [$viewportAnchorX](value) {
    this.viewportAnchorX = value;
  }
  get [$viewportAnchorY]() {
    return this.viewportAnchorY;
  }
  set [$viewportAnchorY](value) {
    this.viewportAnchorY = value;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
};
dart.addTypeTests(html$.VttRegion);
const id$17 = Symbol("VttRegion.id");
const lines = Symbol("VttRegion.lines");
const regionAnchorX = Symbol("VttRegion.regionAnchorX");
const regionAnchorY = Symbol("VttRegion.regionAnchorY");
const scroll = Symbol("VttRegion.scroll");
const viewportAnchorX = Symbol("VttRegion.viewportAnchorX");
const viewportAnchorY = Symbol("VttRegion.viewportAnchorY");
const width$14 = Symbol("VttRegion.width");
dart.setFieldSignature(html$.VttRegion, () => ({
  __proto__: dart.getFields(html$.VttRegion.__proto__),
  [$id]: dart.fieldType(core.String),
  [$lines]: dart.fieldType(core.int),
  [$regionAnchorX]: dart.fieldType(core.num),
  [$regionAnchorY]: dart.fieldType(core.num),
  [$scroll]: dart.fieldType(core.String),
  [$viewportAnchorX]: dart.fieldType(core.num),
  [$viewportAnchorY]: dart.fieldType(core.num),
  [$width]: dart.fieldType(core.num)
}));
dart.registerExtension("VTTRegion", html$.VttRegion);
html$.WebSocket = class WebSocket$ extends html$.EventTarget {
  static new(url, protocols) {
    if (protocols === void 0) protocols = null;
    if (protocols != null) {
      return html$.WebSocket._create_1(url, protocols);
    }
    return html$.WebSocket._create_2(url);
  }
  static _create_1(url, protocols) {
    return new WebSocket(url, protocols);
  }
  static _create_2(url) {
    return new WebSocket(url);
  }
  static get supported() {
    return typeof window.WebSocket != "undefined";
  }
  get [$binaryType]() {
    return this.binaryType;
  }
  set [$binaryType](value) {
    this.binaryType = value;
  }
  get [$bufferedAmount]() {
    return this.bufferedAmount;
  }
  get [$extensions]() {
    return this.extensions;
  }
  get [$protocol]() {
    return this.protocol;
  }
  get [$readyState]() {
    return this.readyState;
  }
  get [$url]() {
    return this.url;
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [$send](...args) {
    return this.send.apply(this, args);
  }
  [$sendBlob](...args) {
    return this.send.apply(this, args);
  }
  [$sendByteBuffer](...args) {
    return this.send.apply(this, args);
  }
  [$sendString](...args) {
    return this.send.apply(this, args);
  }
  [$sendTypedData](...args) {
    return this.send.apply(this, args);
  }
  get [$onClose]() {
    return html$.WebSocket.closeEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.WebSocket.errorEvent.forTarget(this);
  }
  get [$onMessage]() {
    return html$.WebSocket.messageEvent.forTarget(this);
  }
  get [$onOpen]() {
    return html$.WebSocket.openEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.WebSocket);
const binaryType$0 = Symbol("WebSocket.binaryType");
const bufferedAmount$ = Symbol("WebSocket.bufferedAmount");
const extensions = Symbol("WebSocket.extensions");
const protocol$6 = Symbol("WebSocket.protocol");
const readyState$9 = Symbol("WebSocket.readyState");
const url$5 = Symbol("WebSocket.url");
dart.setMethodSignature(html$.WebSocket, () => ({
  __proto__: dart.getMethods(html$.WebSocket.__proto__),
  [$close]: dart.fnType(dart.void, [], [core.int, core.String]),
  [$send]: dart.fnType(dart.void, [dart.dynamic]),
  [$sendBlob]: dart.fnType(dart.void, [html$.Blob]),
  [$sendByteBuffer]: dart.fnType(dart.void, [typed_data.ByteBuffer]),
  [$sendString]: dart.fnType(dart.void, [core.String]),
  [$sendTypedData]: dart.fnType(dart.void, [typed_data.TypedData])
}));
dart.setGetterSignature(html$.WebSocket, () => ({
  __proto__: dart.getGetters(html$.WebSocket.__proto__),
  [$onClose]: async.Stream$(html$.CloseEvent),
  [$onError]: async.Stream$(html$.Event),
  [$onMessage]: async.Stream$(html$.MessageEvent),
  [$onOpen]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(html$.WebSocket, () => ({
  __proto__: dart.getFields(html$.WebSocket.__proto__),
  [$binaryType]: dart.fieldType(core.String),
  [$bufferedAmount]: dart.finalFieldType(core.int),
  [$extensions]: dart.finalFieldType(core.String),
  [$protocol]: dart.finalFieldType(core.String),
  [$readyState]: dart.finalFieldType(core.int),
  [$url]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.WebSocket, {
  /*html$.WebSocket.closeEvent*/get closeEvent() {
    return dart.const(new (EventStreamProviderOfCloseEvent()).new("close"));
  },
  /*html$.WebSocket.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.WebSocket.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  },
  /*html$.WebSocket.openEvent*/get openEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("open"));
  },
  /*html$.WebSocket.CLOSED*/get CLOSED() {
    return 3;
  },
  /*html$.WebSocket.CLOSING*/get CLOSING() {
    return 2;
  },
  /*html$.WebSocket.CONNECTING*/get CONNECTING() {
    return 0;
  },
  /*html$.WebSocket.OPEN*/get OPEN() {
    return 1;
  }
});
dart.registerExtension("WebSocket", html$.WebSocket);
const _deltaX = Symbol('_deltaX');
const _deltaY = Symbol('_deltaY');
const _wheelDelta = Symbol('_wheelDelta');
const _wheelDeltaX = Symbol('_wheelDeltaX');
const _hasInitMouseScrollEvent = Symbol('_hasInitMouseScrollEvent');
const _initMouseScrollEvent = Symbol('_initMouseScrollEvent');
const _hasInitWheelEvent = Symbol('_hasInitWheelEvent');
const _initWheelEvent = Symbol('_initWheelEvent');
html$.WheelEvent = class WheelEvent$ extends html$.MouseEvent {
  static new(type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let deltaX = opts && 'deltaX' in opts ? opts.deltaX : 0;
    let deltaY = opts && 'deltaY' in opts ? opts.deltaY : 0;
    let deltaZ = opts && 'deltaZ' in opts ? opts.deltaZ : 0;
    let deltaMode = opts && 'deltaMode' in opts ? opts.deltaMode : 0;
    let detail = opts && 'detail' in opts ? opts.detail : 0;
    let screenX = opts && 'screenX' in opts ? opts.screenX : 0;
    let screenY = opts && 'screenY' in opts ? opts.screenY : 0;
    let clientX = opts && 'clientX' in opts ? opts.clientX : 0;
    let clientY = opts && 'clientY' in opts ? opts.clientY : 0;
    let button = opts && 'button' in opts ? opts.button : 0;
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
    let altKey = opts && 'altKey' in opts ? opts.altKey : false;
    let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
    let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
    let relatedTarget = opts && 'relatedTarget' in opts ? opts.relatedTarget : null;
    let options = new (IdentityMapOfString$Object()).from(["view", view, "deltaMode", deltaMode, "deltaX", deltaX, "deltaY", deltaY, "deltaZ", deltaZ, "detail", detail, "screenX", screenX, "screenY", screenY, "clientX", clientX, "clientY", clientY, "button", button, "bubbles", canBubble, "cancelable", cancelable, "ctrlKey", ctrlKey, "altKey", altKey, "shiftKey", shiftKey, "metaKey", metaKey, "relatedTarget", relatedTarget]);
    if (view == null) {
      view = html$.window;
    }
    return new WheelEvent(type, html_common.convertDartToNative_Dictionary(options));
  }
  static __(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$.WheelEvent._create_1(type, eventInitDict_1);
    }
    return html$.WheelEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new WheelEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new WheelEvent(type);
  }
  get [_deltaX]() {
    return this.deltaX;
  }
  get [_deltaY]() {
    return this.deltaY;
  }
  get [$deltaZ]() {
    return this.deltaZ;
  }
  get [$deltaY]() {
    if (this.deltaY !== undefined) {
      return this[_deltaY];
    }
    dart.throw(new core.UnsupportedError.new("deltaY is not supported"));
  }
  get [$deltaX]() {
    if (this.deltaX !== undefined) {
      return this[_deltaX];
    }
    dart.throw(new core.UnsupportedError.new("deltaX is not supported"));
  }
  get [$deltaMode]() {
    if (!!this.deltaMode) {
      return this.deltaMode;
    }
    return 0;
  }
  get [_wheelDelta]() {
    return this.wheelDelta;
  }
  get [_wheelDeltaX]() {
    return this.wheelDeltaX;
  }
  get [_detail]() {
    return this.detail;
  }
  get [_hasInitMouseScrollEvent]() {
    return !!this.initMouseScrollEvent;
  }
  [_initMouseScrollEvent](...args) {
    return this.initMouseScrollEvent.apply(this, args);
  }
  get [_hasInitWheelEvent]() {
    return !!this.initWheelEvent;
  }
  [_initWheelEvent](...args) {
    return this.initWheelEvent.apply(this, args);
  }
};
dart.addTypeTests(html$.WheelEvent);
const deltaZ = Symbol("WheelEvent.deltaZ");
dart.setMethodSignature(html$.WheelEvent, () => ({
  __proto__: dart.getMethods(html$.WheelEvent.__proto__),
  [_initMouseScrollEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.int, core.int, core.int, core.int, core.int, core.bool, core.bool, core.bool, core.bool, core.int, html$.EventTarget, core.int]),
  [_initWheelEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.int, core.int, core.int, core.int, core.int, core.int, html$.EventTarget, core.String, core.int, core.int, core.int, core.int])
}));
dart.setGetterSignature(html$.WheelEvent, () => ({
  __proto__: dart.getGetters(html$.WheelEvent.__proto__),
  [$deltaY]: core.num,
  [$deltaX]: core.num,
  [$deltaMode]: core.int,
  [_wheelDelta]: core.num,
  [_wheelDeltaX]: core.num,
  [_detail]: core.num,
  [_hasInitMouseScrollEvent]: core.bool,
  [_hasInitWheelEvent]: core.bool
}));
dart.setFieldSignature(html$.WheelEvent, () => ({
  __proto__: dart.getFields(html$.WheelEvent.__proto__),
  [_deltaX]: dart.finalFieldType(core.num),
  [_deltaY]: dart.finalFieldType(core.num),
  [$deltaZ]: dart.finalFieldType(core.num)
}));
dart.defineLazy(html$.WheelEvent, {
  /*html$.WheelEvent.DOM_DELTA_LINE*/get DOM_DELTA_LINE() {
    return 1;
  },
  /*html$.WheelEvent.DOM_DELTA_PAGE*/get DOM_DELTA_PAGE() {
    return 2;
  },
  /*html$.WheelEvent.DOM_DELTA_PIXEL*/get DOM_DELTA_PIXEL() {
    return 0;
  }
});
dart.registerExtension("WheelEvent", html$.WheelEvent);
const _open2 = Symbol('_open2');
const _open3 = Symbol('_open3');
const _location = Symbol('_location');
const _ensureRequestAnimationFrame = Symbol('_ensureRequestAnimationFrame');
const _requestAnimationFrame = Symbol('_requestAnimationFrame');
const _cancelAnimationFrame = Symbol('_cancelAnimationFrame');
const _requestFileSystem = Symbol('_requestFileSystem');
const _get_opener = Symbol('_get_opener');
const _pageXOffset = Symbol('_pageXOffset');
const _pageYOffset = Symbol('_pageYOffset');
const _get_parent = Symbol('_get_parent');
const _get_self = Symbol('_get_self');
const _get_top = Symbol('_get_top');
const __getter___1 = Symbol('__getter___1');
const __getter___2 = Symbol('__getter___2');
const _openDatabase = Symbol('_openDatabase');
const _requestIdleCallback_1 = Symbol('_requestIdleCallback_1');
const _requestIdleCallback_2 = Symbol('_requestIdleCallback_2');
const _scroll_4 = Symbol('_scroll_4');
const _scroll_5 = Symbol('_scroll_5');
const _scrollBy_4 = Symbol('_scrollBy_4');
const _scrollBy_5 = Symbol('_scrollBy_5');
const _scrollTo_4 = Symbol('_scrollTo_4');
const _scrollTo_5 = Symbol('_scrollTo_5');
const __requestFileSystem = Symbol('__requestFileSystem');
const _resolveLocalFileSystemUrl = Symbol('_resolveLocalFileSystemUrl');
html$.Window = class Window extends html$.EventTarget {
  get [$animationFrame]() {
    let completer = CompleterOfnum().sync();
    this[$requestAnimationFrame](dart.fn(time => {
      completer.complete(time);
    }, numToNull()));
    return completer.future;
  }
  get [$document]() {
    return this.document;
  }
  [_open2](url, name) {
    return this.open(url, name);
  }
  [_open3](url, name, options) {
    return this.open(url, name, options);
  }
  [$open](url, name, options) {
    if (options === void 0) options = null;
    if (options == null) {
      return html$._DOMWindowCrossFrame._createSafe(this[_open2](url, name));
    } else {
      return html$._DOMWindowCrossFrame._createSafe(this[_open3](url, name, options));
    }
  }
  get [$location]() {
    return html$.Location._check(this[_location]);
  }
  set [$location](value) {
    this[_location] = value;
  }
  get [_location]() {
    return this.location;
  }
  set [_location](value) {
    this.location = value;
  }
  [$requestAnimationFrame](callback) {
    this[_ensureRequestAnimationFrame]();
    return this[_requestAnimationFrame](html$._wrapZone(core.num, callback));
  }
  [$cancelAnimationFrame](id) {
    this[_ensureRequestAnimationFrame]();
    this[_cancelAnimationFrame](id);
  }
  [_requestAnimationFrame](...args) {
    return this.requestAnimationFrame.apply(this, args);
  }
  [_cancelAnimationFrame](...args) {
    return this.cancelAnimationFrame.apply(this, args);
  }
  [_ensureRequestAnimationFrame]() {
    if (!!(this.requestAnimationFrame && this.cancelAnimationFrame)) return;
    (function($this) {
      var vendors = ['ms', 'moz', 'webkit', 'o'];
      for (var i = 0; i < vendors.length && !$this.requestAnimationFrame; ++i) {
        $this.requestAnimationFrame = $this[vendors[i] + 'RequestAnimationFrame'];
        $this.cancelAnimationFrame = $this[vendors[i] + 'CancelAnimationFrame'] || $this[vendors[i] + 'CancelRequestAnimationFrame'];
      }
      if ($this.requestAnimationFrame && $this.cancelAnimationFrame) return;
      $this.requestAnimationFrame = function(callback) {
        return window.setTimeout(function() {
          callback(Date.now());
        }, 16);
      };
      $this.cancelAnimationFrame = function(id) {
        clearTimeout(id);
      };
    })(this);
  }
  get [$indexedDB]() {
    return this.indexedDB || this.webkitIndexedDB || this.mozIndexedDB;
  }
  get [$console]() {
    return html$.Console._safeConsole;
  }
  [$requestFileSystem](size, opts) {
    let persistent = opts && 'persistent' in opts ? opts.persistent : false;
    return this[_requestFileSystem](dart.test(persistent) ? 1 : 0, size);
  }
  static get supportsPointConversions() {
    return html$.DomPoint.supported;
  }
  get [$animationWorklet]() {
    return this.animationWorklet;
  }
  get [$applicationCache]() {
    return this.applicationCache;
  }
  get [$audioWorklet]() {
    return this.audioWorklet;
  }
  get [$caches]() {
    return this.caches;
  }
  get [$closed]() {
    return this.closed;
  }
  get [$cookieStore]() {
    return this.cookieStore;
  }
  get [$crypto]() {
    return this.crypto;
  }
  get [$customElements]() {
    return this.customElements;
  }
  get [$defaultStatus]() {
    return this.defaultStatus;
  }
  set [$defaultStatus](value) {
    this.defaultStatus = value;
  }
  get [$defaultstatus]() {
    return this.defaultstatus;
  }
  set [$defaultstatus](value) {
    this.defaultstatus = value;
  }
  get [$devicePixelRatio]() {
    return this.devicePixelRatio;
  }
  get [$external]() {
    return this.external;
  }
  get [$history]() {
    return this.history;
  }
  get [$innerHeight]() {
    return this.innerHeight;
  }
  get [$innerWidth]() {
    return this.innerWidth;
  }
  get [$isSecureContext]() {
    return this.isSecureContext;
  }
  get [$localStorage]() {
    return this.localStorage;
  }
  get [$locationbar]() {
    return this.locationbar;
  }
  get [$menubar]() {
    return this.menubar;
  }
  get [$name]() {
    return this.name;
  }
  set [$name](value) {
    this.name = value;
  }
  get [$navigator]() {
    return this.navigator;
  }
  get [$offscreenBuffering]() {
    return this.offscreenBuffering;
  }
  get [$opener]() {
    return html$._convertNativeToDart_Window(this[_get_opener]);
  }
  get [_get_opener]() {
    return this.opener;
  }
  set [$opener](value) {
    this.opener = value;
  }
  get [$orientation]() {
    return this.orientation;
  }
  get [$origin]() {
    return this.origin;
  }
  get [$outerHeight]() {
    return this.outerHeight;
  }
  get [$outerWidth]() {
    return this.outerWidth;
  }
  get [_pageXOffset]() {
    return this.pageXOffset;
  }
  get [_pageYOffset]() {
    return this.pageYOffset;
  }
  get [$parent]() {
    return html$._convertNativeToDart_Window(this[_get_parent]);
  }
  get [_get_parent]() {
    return this.parent;
  }
  get [$performance]() {
    return this.performance;
  }
  get [$screen]() {
    return this.screen;
  }
  get [$screenLeft]() {
    return this.screenLeft;
  }
  get [$screenTop]() {
    return this.screenTop;
  }
  get [$screenX]() {
    return this.screenX;
  }
  get [$screenY]() {
    return this.screenY;
  }
  get [$scrollbars]() {
    return this.scrollbars;
  }
  get [$self]() {
    return html$._convertNativeToDart_Window(this[_get_self]);
  }
  get [_get_self]() {
    return this.self;
  }
  get [$sessionStorage]() {
    return this.sessionStorage;
  }
  get [$speechSynthesis]() {
    return this.speechSynthesis;
  }
  get [$status]() {
    return this.status;
  }
  set [$status](value) {
    this.status = value;
  }
  get [$statusbar]() {
    return this.statusbar;
  }
  get [$styleMedia]() {
    return this.styleMedia;
  }
  get [$toolbar]() {
    return this.toolbar;
  }
  get [$top]() {
    return html$._convertNativeToDart_Window(this[_get_top]);
  }
  get [_get_top]() {
    return this.top;
  }
  get [$visualViewport]() {
    return this.visualViewport;
  }
  get [$window]() {
    return html$._convertNativeToDart_Window(this[_get_window]);
  }
  get [_get_window]() {
    return this.window;
  }
  [__getter__](index_OR_name) {
    if (core.int.is(index_OR_name)) {
      return html$._convertNativeToDart_Window(this[__getter___1](index_OR_name));
    }
    if (typeof index_OR_name == 'string') {
      return html$._convertNativeToDart_Window(this[__getter___2](index_OR_name));
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [__getter___1](...args) {
    return this.__getter__.apply(this, args);
  }
  [__getter___2](...args) {
    return this.__getter__.apply(this, args);
  }
  [$alert](...args) {
    return this.alert.apply(this, args);
  }
  [$cancelIdleCallback](...args) {
    return this.cancelIdleCallback.apply(this, args);
  }
  [$close](...args) {
    return this.close.apply(this, args);
  }
  [$confirm](...args) {
    return this.confirm.apply(this, args);
  }
  [$fetch](input, init) {
    if (init === void 0) init = null;
    let init_dict = null;
    if (init != null) {
      init_dict = html_common.convertDartToNative_Dictionary(init);
    }
    return html$.promiseToFuture(dart.dynamic, this.fetch(input, init_dict));
  }
  [$find](...args) {
    return this.find.apply(this, args);
  }
  [_getComputedStyle](...args) {
    return this.getComputedStyle.apply(this, args);
  }
  [$getComputedStyleMap](...args) {
    return this.getComputedStyleMap.apply(this, args);
  }
  [$getMatchedCssRules](...args) {
    return this.getMatchedCSSRules.apply(this, args);
  }
  [$getSelection](...args) {
    return this.getSelection.apply(this, args);
  }
  [$matchMedia](...args) {
    return this.matchMedia.apply(this, args);
  }
  [$moveBy](...args) {
    return this.moveBy.apply(this, args);
  }
  [_moveTo](...args) {
    return this.moveTo.apply(this, args);
  }
  [_openDatabase](...args) {
    return this.openDatabase.apply(this, args);
  }
  [$postMessage](message, targetOrigin, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, targetOrigin, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1, targetOrigin);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  [$print](...args) {
    return this.print.apply(this, args);
  }
  [$requestIdleCallback](callback, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let callback_1 = _js_helper.convertDartClosureToJS(IdleDeadlineTovoid(), callback, 1);
      let options_2 = html_common.convertDartToNative_Dictionary(options);
      return this[_requestIdleCallback_1](callback_1, options_2);
    }
    let callback_1 = _js_helper.convertDartClosureToJS(IdleDeadlineTovoid(), callback, 1);
    return this[_requestIdleCallback_2](callback_1);
  }
  [_requestIdleCallback_1](...args) {
    return this.requestIdleCallback.apply(this, args);
  }
  [_requestIdleCallback_2](...args) {
    return this.requestIdleCallback.apply(this, args);
  }
  [$resizeBy](...args) {
    return this.resizeBy.apply(this, args);
  }
  [$resizeTo](...args) {
    return this.resizeTo.apply(this, args);
  }
  [$scroll](options_OR_x, y, scrollOptions) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (scrollOptions === void 0) scrollOptions = null;
    if (options_OR_x == null && y == null && scrollOptions == null) {
      this[_scroll_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null && scrollOptions == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scroll_2](options_1);
      return;
    }
    if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
      this[_scroll_3](options_OR_x, y);
      return;
    }
    if (core.int.is(y) && core.int.is(options_OR_x) && scrollOptions == null) {
      this[_scroll_4](options_OR_x, y);
      return;
    }
    if (scrollOptions != null && core.int.is(y) && core.int.is(options_OR_x)) {
      let scrollOptions_1 = html_common.convertDartToNative_Dictionary(scrollOptions);
      this[_scroll_5](options_OR_x, y, scrollOptions_1);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_scroll_1](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_2](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_3](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_4](...args) {
    return this.scroll.apply(this, args);
  }
  [_scroll_5](...args) {
    return this.scroll.apply(this, args);
  }
  [$scrollBy](options_OR_x, y, scrollOptions) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (scrollOptions === void 0) scrollOptions = null;
    if (options_OR_x == null && y == null && scrollOptions == null) {
      this[_scrollBy_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null && scrollOptions == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scrollBy_2](options_1);
      return;
    }
    if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
      this[_scrollBy_3](options_OR_x, y);
      return;
    }
    if (core.int.is(y) && core.int.is(options_OR_x) && scrollOptions == null) {
      this[_scrollBy_4](options_OR_x, y);
      return;
    }
    if (scrollOptions != null && core.int.is(y) && core.int.is(options_OR_x)) {
      let scrollOptions_1 = html_common.convertDartToNative_Dictionary(scrollOptions);
      this[_scrollBy_5](options_OR_x, y, scrollOptions_1);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_scrollBy_1](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_2](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_3](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_4](...args) {
    return this.scrollBy.apply(this, args);
  }
  [_scrollBy_5](...args) {
    return this.scrollBy.apply(this, args);
  }
  [$scrollTo](options_OR_x, y, scrollOptions) {
    if (options_OR_x === void 0) options_OR_x = null;
    if (y === void 0) y = null;
    if (scrollOptions === void 0) scrollOptions = null;
    if (options_OR_x == null && y == null && scrollOptions == null) {
      this[_scrollTo_1]();
      return;
    }
    if (core.Map.is(options_OR_x) && y == null && scrollOptions == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options_OR_x);
      this[_scrollTo_2](options_1);
      return;
    }
    if (typeof y == 'number' && typeof options_OR_x == 'number' && scrollOptions == null) {
      this[_scrollTo_3](options_OR_x, y);
      return;
    }
    if (core.int.is(y) && core.int.is(options_OR_x) && scrollOptions == null) {
      this[_scrollTo_4](options_OR_x, y);
      return;
    }
    if (scrollOptions != null && core.int.is(y) && core.int.is(options_OR_x)) {
      let scrollOptions_1 = html_common.convertDartToNative_Dictionary(scrollOptions);
      this[_scrollTo_5](options_OR_x, y, scrollOptions_1);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_scrollTo_1](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_2](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_3](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_4](...args) {
    return this.scrollTo.apply(this, args);
  }
  [_scrollTo_5](...args) {
    return this.scrollTo.apply(this, args);
  }
  [$stop](...args) {
    return this.stop.apply(this, args);
  }
  [__requestFileSystem](...args) {
    return this.webkitRequestFileSystem.apply(this, args);
  }
  [_requestFileSystem](type, size) {
    let completer = CompleterOfFileSystem().new();
    this[__requestFileSystem](type, size, dart.fn(value => {
      _js_helper.applyExtension("DOMFileSystem", value);
      _js_helper.applyExtension("DirectoryEntry", value.root);
      completer.complete(value);
    }, FileSystemToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
  [_resolveLocalFileSystemUrl](...args) {
    return this.webkitResolveLocalFileSystemURL.apply(this, args);
  }
  [$resolveLocalFileSystemUrl](url) {
    let completer = CompleterOfEntry().new();
    this[_resolveLocalFileSystemUrl](url, dart.fn(value => {
      completer.complete(value);
    }, EntryToNull()), dart.fn(error => {
      completer.completeError(error);
    }, DomExceptionToNull()));
    return completer.future;
  }
  [$atob](...args) {
    return this.atob.apply(this, args);
  }
  [$btoa](...args) {
    return this.btoa.apply(this, args);
  }
  [_setInterval_String](...args) {
    return this.setInterval.apply(this, args);
  }
  [_setTimeout_String](...args) {
    return this.setTimeout.apply(this, args);
  }
  [_clearInterval](...args) {
    return this.clearInterval.apply(this, args);
  }
  [_clearTimeout](...args) {
    return this.clearTimeout.apply(this, args);
  }
  [_setInterval](...args) {
    return this.setInterval.apply(this, args);
  }
  [_setTimeout](...args) {
    return this.setTimeout.apply(this, args);
  }
  get [$onContentLoaded]() {
    return html$.Window.contentLoadedEvent.forTarget(this);
  }
  get [$onAbort]() {
    return html$.Element.abortEvent.forTarget(this);
  }
  get [$onBlur]() {
    return html$.Element.blurEvent.forTarget(this);
  }
  get [$onCanPlay]() {
    return html$.Element.canPlayEvent.forTarget(this);
  }
  get [$onCanPlayThrough]() {
    return html$.Element.canPlayThroughEvent.forTarget(this);
  }
  get [$onChange]() {
    return html$.Element.changeEvent.forTarget(this);
  }
  get [$onClick]() {
    return html$.Element.clickEvent.forTarget(this);
  }
  get [$onContextMenu]() {
    return html$.Element.contextMenuEvent.forTarget(this);
  }
  get [$onDoubleClick]() {
    return html$.Element.doubleClickEvent.forTarget(this);
  }
  get [$onDeviceMotion]() {
    return html$.Window.deviceMotionEvent.forTarget(this);
  }
  get [$onDeviceOrientation]() {
    return html$.Window.deviceOrientationEvent.forTarget(this);
  }
  get [$onDrag]() {
    return html$.Element.dragEvent.forTarget(this);
  }
  get [$onDragEnd]() {
    return html$.Element.dragEndEvent.forTarget(this);
  }
  get [$onDragEnter]() {
    return html$.Element.dragEnterEvent.forTarget(this);
  }
  get [$onDragLeave]() {
    return html$.Element.dragLeaveEvent.forTarget(this);
  }
  get [$onDragOver]() {
    return html$.Element.dragOverEvent.forTarget(this);
  }
  get [$onDragStart]() {
    return html$.Element.dragStartEvent.forTarget(this);
  }
  get [$onDrop]() {
    return html$.Element.dropEvent.forTarget(this);
  }
  get [$onDurationChange]() {
    return html$.Element.durationChangeEvent.forTarget(this);
  }
  get [$onEmptied]() {
    return html$.Element.emptiedEvent.forTarget(this);
  }
  get [$onEnded]() {
    return html$.Element.endedEvent.forTarget(this);
  }
  get [$onError]() {
    return html$.Element.errorEvent.forTarget(this);
  }
  get [$onFocus]() {
    return html$.Element.focusEvent.forTarget(this);
  }
  get [$onHashChange]() {
    return html$.Window.hashChangeEvent.forTarget(this);
  }
  get [$onInput]() {
    return html$.Element.inputEvent.forTarget(this);
  }
  get [$onInvalid]() {
    return html$.Element.invalidEvent.forTarget(this);
  }
  get [$onKeyDown]() {
    return html$.Element.keyDownEvent.forTarget(this);
  }
  get [$onKeyPress]() {
    return html$.Element.keyPressEvent.forTarget(this);
  }
  get [$onKeyUp]() {
    return html$.Element.keyUpEvent.forTarget(this);
  }
  get [$onLoad]() {
    return html$.Element.loadEvent.forTarget(this);
  }
  get [$onLoadedData]() {
    return html$.Element.loadedDataEvent.forTarget(this);
  }
  get [$onLoadedMetadata]() {
    return html$.Element.loadedMetadataEvent.forTarget(this);
  }
  get [$onLoadStart]() {
    return html$.Window.loadStartEvent.forTarget(this);
  }
  get [$onMessage]() {
    return html$.Window.messageEvent.forTarget(this);
  }
  get [$onMouseDown]() {
    return html$.Element.mouseDownEvent.forTarget(this);
  }
  get [$onMouseEnter]() {
    return html$.Element.mouseEnterEvent.forTarget(this);
  }
  get [$onMouseLeave]() {
    return html$.Element.mouseLeaveEvent.forTarget(this);
  }
  get [$onMouseMove]() {
    return html$.Element.mouseMoveEvent.forTarget(this);
  }
  get [$onMouseOut]() {
    return html$.Element.mouseOutEvent.forTarget(this);
  }
  get [$onMouseOver]() {
    return html$.Element.mouseOverEvent.forTarget(this);
  }
  get [$onMouseUp]() {
    return html$.Element.mouseUpEvent.forTarget(this);
  }
  get [$onMouseWheel]() {
    return html$.Element.mouseWheelEvent.forTarget(this);
  }
  get [$onOffline]() {
    return html$.Window.offlineEvent.forTarget(this);
  }
  get [$onOnline]() {
    return html$.Window.onlineEvent.forTarget(this);
  }
  get [$onPageHide]() {
    return html$.Window.pageHideEvent.forTarget(this);
  }
  get [$onPageShow]() {
    return html$.Window.pageShowEvent.forTarget(this);
  }
  get [$onPause]() {
    return html$.Element.pauseEvent.forTarget(this);
  }
  get [$onPlay]() {
    return html$.Element.playEvent.forTarget(this);
  }
  get [$onPlaying]() {
    return html$.Element.playingEvent.forTarget(this);
  }
  get [$onPopState]() {
    return html$.Window.popStateEvent.forTarget(this);
  }
  get [$onProgress]() {
    return html$.Window.progressEvent.forTarget(this);
  }
  get [$onRateChange]() {
    return html$.Element.rateChangeEvent.forTarget(this);
  }
  get [$onReset]() {
    return html$.Element.resetEvent.forTarget(this);
  }
  get [$onResize]() {
    return html$.Element.resizeEvent.forTarget(this);
  }
  get [$onScroll]() {
    return html$.Element.scrollEvent.forTarget(this);
  }
  get [$onSearch]() {
    return html$.Element.searchEvent.forTarget(this);
  }
  get [$onSeeked]() {
    return html$.Element.seekedEvent.forTarget(this);
  }
  get [$onSeeking]() {
    return html$.Element.seekingEvent.forTarget(this);
  }
  get [$onSelect]() {
    return html$.Element.selectEvent.forTarget(this);
  }
  get [$onStalled]() {
    return html$.Element.stalledEvent.forTarget(this);
  }
  get [$onStorage]() {
    return html$.Window.storageEvent.forTarget(this);
  }
  get [$onSubmit]() {
    return html$.Element.submitEvent.forTarget(this);
  }
  get [$onSuspend]() {
    return html$.Element.suspendEvent.forTarget(this);
  }
  get [$onTimeUpdate]() {
    return html$.Element.timeUpdateEvent.forTarget(this);
  }
  get [$onTouchCancel]() {
    return html$.Element.touchCancelEvent.forTarget(this);
  }
  get [$onTouchEnd]() {
    return html$.Element.touchEndEvent.forTarget(this);
  }
  get [$onTouchMove]() {
    return html$.Element.touchMoveEvent.forTarget(this);
  }
  get [$onTouchStart]() {
    return html$.Element.touchStartEvent.forTarget(this);
  }
  get [$onTransitionEnd]() {
    return html$.Element.transitionEndEvent.forTarget(this);
  }
  get [$onUnload]() {
    return html$.Window.unloadEvent.forTarget(this);
  }
  get [$onVolumeChange]() {
    return html$.Element.volumeChangeEvent.forTarget(this);
  }
  get [$onWaiting]() {
    return html$.Element.waitingEvent.forTarget(this);
  }
  get [$onAnimationEnd]() {
    return html$.Window.animationEndEvent.forTarget(this);
  }
  get [$onAnimationIteration]() {
    return html$.Window.animationIterationEvent.forTarget(this);
  }
  get [$onAnimationStart]() {
    return html$.Window.animationStartEvent.forTarget(this);
  }
  get [$onBeforeUnload]() {
    return html$.Window.beforeUnloadEvent.forTarget(this);
  }
  get [$onWheel]() {
    return html$.Element.wheelEvent.forTarget(this);
  }
  [$moveTo](p) {
    this[_moveTo](dart.asInt(p.x), dart.asInt(p.y));
  }
  [$openDatabase](name, version, displayName, estimatedSize, creationCallback) {
    if (creationCallback === void 0) creationCallback = null;
    let db = null;
    if (creationCallback == null)
      db = this[_openDatabase](name, version, displayName, estimatedSize);
    else
      db = this[_openDatabase](name, version, displayName, estimatedSize, creationCallback);
    _js_helper.applyExtension("Database", db);
    return web_sql.SqlDatabase._check(db);
  }
  get [$pageXOffset]() {
    return this.pageXOffset[$round]();
  }
  get [$pageYOffset]() {
    return this.pageYOffset[$round]();
  }
  get [$scrollX]() {
    return "scrollX" in this ? this.scrollX[$round]() : this[$document].documentElement[$scrollLeft];
  }
  get [$scrollY]() {
    return "scrollY" in this ? this.scrollY[$round]() : this[$document].documentElement[$scrollTop];
  }
};
dart.addTypeTests(html$.Window);
const animationWorklet = Symbol("Window.animationWorklet");
const applicationCache = Symbol("Window.applicationCache");
const audioWorklet = Symbol("Window.audioWorklet");
const caches$ = Symbol("Window.caches");
const closed = Symbol("Window.closed");
const cookieStore = Symbol("Window.cookieStore");
const crypto$0 = Symbol("Window.crypto");
const customElements = Symbol("Window.customElements");
const defaultStatus = Symbol("Window.defaultStatus");
const defaultstatus = Symbol("Window.defaultstatus");
const devicePixelRatio$ = Symbol("Window.devicePixelRatio");
const external = Symbol("Window.external");
const history = Symbol("Window.history");
const innerHeight = Symbol("Window.innerHeight");
const innerWidth = Symbol("Window.innerWidth");
const isSecureContext$ = Symbol("Window.isSecureContext");
const localStorage = Symbol("Window.localStorage");
const locationbar = Symbol("Window.locationbar");
const menubar = Symbol("Window.menubar");
const name$39 = Symbol("Window.name");
const navigator$ = Symbol("Window.navigator");
const offscreenBuffering = Symbol("Window.offscreenBuffering");
const orientation$3 = Symbol("Window.orientation");
const origin$8 = Symbol("Window.origin");
const outerHeight = Symbol("Window.outerHeight");
const outerWidth = Symbol("Window.outerWidth");
const performance$ = Symbol("Window.performance");
const screen = Symbol("Window.screen");
const screenLeft = Symbol("Window.screenLeft");
const screenTop = Symbol("Window.screenTop");
const screenX = Symbol("Window.screenX");
const screenY = Symbol("Window.screenY");
const scrollbars = Symbol("Window.scrollbars");
const sessionStorage = Symbol("Window.sessionStorage");
const speechSynthesis = Symbol("Window.speechSynthesis");
const status$3 = Symbol("Window.status");
const statusbar = Symbol("Window.statusbar");
const styleMedia = Symbol("Window.styleMedia");
const toolbar = Symbol("Window.toolbar");
const visualViewport = Symbol("Window.visualViewport");
html$.Window[dart.implements] = () => [html$.WindowEventHandlers, html$.WindowBase, html$.GlobalEventHandlers, html$._WindowTimers, html$.WindowBase64];
dart.setMethodSignature(html$.Window, () => ({
  __proto__: dart.getMethods(html$.Window.__proto__),
  [_open2]: dart.fnType(html$.WindowBase, [dart.dynamic, dart.dynamic]),
  [_open3]: dart.fnType(html$.WindowBase, [dart.dynamic, dart.dynamic, dart.dynamic]),
  [$open]: dart.fnType(html$.WindowBase, [core.String, core.String], [core.String]),
  [$requestAnimationFrame]: dart.fnType(core.int, [dart.fnType(dart.void, [core.num])]),
  [$cancelAnimationFrame]: dart.fnType(dart.void, [core.int]),
  [_requestAnimationFrame]: dart.fnType(core.int, [dart.fnType(dart.void, [core.num])]),
  [_cancelAnimationFrame]: dart.fnType(dart.void, [core.int]),
  [_ensureRequestAnimationFrame]: dart.fnType(dart.dynamic, []),
  [$requestFileSystem]: dart.fnType(async.Future$(html$.FileSystem), [core.int], {persistent: core.bool}),
  [__getter__]: dart.fnType(html$.WindowBase, [dart.dynamic]),
  [__getter___1]: dart.fnType(dart.dynamic, [core.int]),
  [__getter___2]: dart.fnType(dart.dynamic, [core.String]),
  [$alert]: dart.fnType(dart.void, [], [core.String]),
  [$cancelIdleCallback]: dart.fnType(dart.void, [core.int]),
  [$close]: dart.fnType(dart.void, []),
  [$confirm]: dart.fnType(core.bool, [], [core.String]),
  [$fetch]: dart.fnType(async.Future, [dart.dynamic], [core.Map]),
  [$find]: dart.fnType(core.bool, [core.String, core.bool, core.bool, core.bool, core.bool, core.bool, core.bool]),
  [_getComputedStyle]: dart.fnType(html$.CssStyleDeclaration, [html$.Element], [core.String]),
  [$getComputedStyleMap]: dart.fnType(html$.StylePropertyMapReadonly, [html$.Element, core.String]),
  [$getMatchedCssRules]: dart.fnType(core.List$(html$.CssRule), [html$.Element, core.String]),
  [$getSelection]: dart.fnType(html$.Selection, []),
  [$matchMedia]: dart.fnType(html$.MediaQueryList, [core.String]),
  [$moveBy]: dart.fnType(dart.void, [core.int, core.int]),
  [_moveTo]: dart.fnType(dart.void, [core.int, core.int]),
  [_openDatabase]: dart.fnType(web_sql.SqlDatabase, [core.String, core.String, core.String, core.int], [dart.fnType(dart.void, [web_sql.SqlDatabase])]),
  [$postMessage]: dart.fnType(dart.void, [dart.dynamic, core.String], [core.List$(core.Object)]),
  [_postMessage_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, core.List$(core.Object)]),
  [_postMessage_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
  [$print]: dart.fnType(dart.void, []),
  [$requestIdleCallback]: dart.fnType(core.int, [dart.fnType(dart.void, [html$.IdleDeadline])], [core.Map]),
  [_requestIdleCallback_1]: dart.fnType(core.int, [dart.dynamic, dart.dynamic]),
  [_requestIdleCallback_2]: dart.fnType(core.int, [dart.dynamic]),
  [$resizeBy]: dart.fnType(dart.void, [core.int, core.int]),
  [$resizeTo]: dart.fnType(dart.void, [core.int, core.int]),
  [$scroll]: dart.fnType(dart.void, [], [dart.dynamic, dart.dynamic, core.Map]),
  [_scroll_1]: dart.fnType(dart.void, []),
  [_scroll_2]: dart.fnType(dart.void, [dart.dynamic]),
  [_scroll_3]: dart.fnType(dart.void, [core.num, core.num]),
  [_scroll_4]: dart.fnType(dart.void, [core.int, core.int]),
  [_scroll_5]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic]),
  [$scrollBy]: dart.fnType(dart.void, [], [dart.dynamic, dart.dynamic, core.Map]),
  [_scrollBy_1]: dart.fnType(dart.void, []),
  [_scrollBy_2]: dart.fnType(dart.void, [dart.dynamic]),
  [_scrollBy_3]: dart.fnType(dart.void, [core.num, core.num]),
  [_scrollBy_4]: dart.fnType(dart.void, [core.int, core.int]),
  [_scrollBy_5]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic]),
  [$scrollTo]: dart.fnType(dart.void, [], [dart.dynamic, dart.dynamic, core.Map]),
  [_scrollTo_1]: dart.fnType(dart.void, []),
  [_scrollTo_2]: dart.fnType(dart.void, [dart.dynamic]),
  [_scrollTo_3]: dart.fnType(dart.void, [core.num, core.num]),
  [_scrollTo_4]: dart.fnType(dart.void, [core.int, core.int]),
  [_scrollTo_5]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic]),
  [$stop]: dart.fnType(dart.void, []),
  [__requestFileSystem]: dart.fnType(dart.void, [core.int, core.int, dart.fnType(dart.void, [html$.FileSystem])], [dart.fnType(dart.void, [html$.DomException])]),
  [_requestFileSystem]: dart.fnType(async.Future$(html$.FileSystem), [core.int, core.int]),
  [_resolveLocalFileSystemUrl]: dart.fnType(dart.void, [core.String, dart.fnType(dart.void, [html$.Entry])], [dart.fnType(dart.void, [html$.DomException])]),
  [$resolveLocalFileSystemUrl]: dart.fnType(async.Future$(html$.Entry), [core.String]),
  [$atob]: dart.fnType(core.String, [core.String]),
  [$btoa]: dart.fnType(core.String, [core.String]),
  [_setInterval_String]: dart.fnType(core.int, [core.String], [core.int, core.Object]),
  [_setTimeout_String]: dart.fnType(core.int, [core.String], [core.int, core.Object]),
  [_clearInterval]: dart.fnType(dart.void, [], [core.int]),
  [_clearTimeout]: dart.fnType(dart.void, [], [core.int]),
  [_setInterval]: dart.fnType(core.int, [core.Object], [core.int]),
  [_setTimeout]: dart.fnType(core.int, [core.Object], [core.int]),
  [$moveTo]: dart.fnType(dart.void, [math.Point$(core.num)]),
  [$openDatabase]: dart.fnType(web_sql.SqlDatabase, [core.String, core.String, core.String, core.int], [dart.fnType(dart.void, [web_sql.SqlDatabase])])
}));
dart.setGetterSignature(html$.Window, () => ({
  __proto__: dart.getGetters(html$.Window.__proto__),
  [$animationFrame]: async.Future$(core.num),
  [$document]: html$.Document,
  [$location]: html$.Location,
  [_location]: dart.dynamic,
  [$indexedDB]: indexed_db.IdbFactory,
  [$console]: html$.Console,
  [$opener]: html$.WindowBase,
  [$parent]: html$.WindowBase,
  [$self]: html$.WindowBase,
  [$top]: html$.WindowBase,
  [$window]: html$.WindowBase,
  [$onContentLoaded]: async.Stream$(html$.Event),
  [$onAbort]: async.Stream$(html$.Event),
  [$onBlur]: async.Stream$(html$.Event),
  [$onCanPlay]: async.Stream$(html$.Event),
  [$onCanPlayThrough]: async.Stream$(html$.Event),
  [$onChange]: async.Stream$(html$.Event),
  [$onClick]: async.Stream$(html$.MouseEvent),
  [$onContextMenu]: async.Stream$(html$.MouseEvent),
  [$onDoubleClick]: async.Stream$(html$.Event),
  [$onDeviceMotion]: async.Stream$(html$.DeviceMotionEvent),
  [$onDeviceOrientation]: async.Stream$(html$.DeviceOrientationEvent),
  [$onDrag]: async.Stream$(html$.MouseEvent),
  [$onDragEnd]: async.Stream$(html$.MouseEvent),
  [$onDragEnter]: async.Stream$(html$.MouseEvent),
  [$onDragLeave]: async.Stream$(html$.MouseEvent),
  [$onDragOver]: async.Stream$(html$.MouseEvent),
  [$onDragStart]: async.Stream$(html$.MouseEvent),
  [$onDrop]: async.Stream$(html$.MouseEvent),
  [$onDurationChange]: async.Stream$(html$.Event),
  [$onEmptied]: async.Stream$(html$.Event),
  [$onEnded]: async.Stream$(html$.Event),
  [$onError]: async.Stream$(html$.Event),
  [$onFocus]: async.Stream$(html$.Event),
  [$onHashChange]: async.Stream$(html$.Event),
  [$onInput]: async.Stream$(html$.Event),
  [$onInvalid]: async.Stream$(html$.Event),
  [$onKeyDown]: async.Stream$(html$.KeyboardEvent),
  [$onKeyPress]: async.Stream$(html$.KeyboardEvent),
  [$onKeyUp]: async.Stream$(html$.KeyboardEvent),
  [$onLoad]: async.Stream$(html$.Event),
  [$onLoadedData]: async.Stream$(html$.Event),
  [$onLoadedMetadata]: async.Stream$(html$.Event),
  [$onLoadStart]: async.Stream$(html$.Event),
  [$onMessage]: async.Stream$(html$.MessageEvent),
  [$onMouseDown]: async.Stream$(html$.MouseEvent),
  [$onMouseEnter]: async.Stream$(html$.MouseEvent),
  [$onMouseLeave]: async.Stream$(html$.MouseEvent),
  [$onMouseMove]: async.Stream$(html$.MouseEvent),
  [$onMouseOut]: async.Stream$(html$.MouseEvent),
  [$onMouseOver]: async.Stream$(html$.MouseEvent),
  [$onMouseUp]: async.Stream$(html$.MouseEvent),
  [$onMouseWheel]: async.Stream$(html$.WheelEvent),
  [$onOffline]: async.Stream$(html$.Event),
  [$onOnline]: async.Stream$(html$.Event),
  [$onPageHide]: async.Stream$(html$.Event),
  [$onPageShow]: async.Stream$(html$.Event),
  [$onPause]: async.Stream$(html$.Event),
  [$onPlay]: async.Stream$(html$.Event),
  [$onPlaying]: async.Stream$(html$.Event),
  [$onPopState]: async.Stream$(html$.PopStateEvent),
  [$onProgress]: async.Stream$(html$.Event),
  [$onRateChange]: async.Stream$(html$.Event),
  [$onReset]: async.Stream$(html$.Event),
  [$onResize]: async.Stream$(html$.Event),
  [$onScroll]: async.Stream$(html$.Event),
  [$onSearch]: async.Stream$(html$.Event),
  [$onSeeked]: async.Stream$(html$.Event),
  [$onSeeking]: async.Stream$(html$.Event),
  [$onSelect]: async.Stream$(html$.Event),
  [$onStalled]: async.Stream$(html$.Event),
  [$onStorage]: async.Stream$(html$.StorageEvent),
  [$onSubmit]: async.Stream$(html$.Event),
  [$onSuspend]: async.Stream$(html$.Event),
  [$onTimeUpdate]: async.Stream$(html$.Event),
  [$onTouchCancel]: async.Stream$(html$.TouchEvent),
  [$onTouchEnd]: async.Stream$(html$.TouchEvent),
  [$onTouchMove]: async.Stream$(html$.TouchEvent),
  [$onTouchStart]: async.Stream$(html$.TouchEvent),
  [$onTransitionEnd]: async.Stream$(html$.TransitionEvent),
  [$onUnload]: async.Stream$(html$.Event),
  [$onVolumeChange]: async.Stream$(html$.Event),
  [$onWaiting]: async.Stream$(html$.Event),
  [$onAnimationEnd]: async.Stream$(html$.AnimationEvent),
  [$onAnimationIteration]: async.Stream$(html$.AnimationEvent),
  [$onAnimationStart]: async.Stream$(html$.AnimationEvent),
  [$onBeforeUnload]: async.Stream$(html$.Event),
  [$onWheel]: async.Stream$(html$.WheelEvent),
  [$pageXOffset]: core.int,
  [$pageYOffset]: core.int,
  [$scrollX]: core.int,
  [$scrollY]: core.int
}));
dart.setSetterSignature(html$.Window, () => ({
  __proto__: dart.getSetters(html$.Window.__proto__),
  [$location]: html$.LocationBase,
  [_location]: dart.dynamic,
  [$opener]: html$.Window
}));
dart.setFieldSignature(html$.Window, () => ({
  __proto__: dart.getFields(html$.Window.__proto__),
  [$animationWorklet]: dart.finalFieldType(html$._Worklet),
  [$applicationCache]: dart.finalFieldType(html$.ApplicationCache),
  [$audioWorklet]: dart.finalFieldType(html$._Worklet),
  [$caches]: dart.finalFieldType(html$.CacheStorage),
  [$closed]: dart.finalFieldType(core.bool),
  [$cookieStore]: dart.finalFieldType(html$.CookieStore),
  [$crypto]: dart.finalFieldType(html$.Crypto),
  [$customElements]: dart.finalFieldType(html$.CustomElementRegistry),
  [$defaultStatus]: dart.fieldType(core.String),
  [$defaultstatus]: dart.fieldType(core.String),
  [$devicePixelRatio]: dart.finalFieldType(core.num),
  [$external]: dart.finalFieldType(html$.External),
  [$history]: dart.finalFieldType(html$.History),
  [$innerHeight]: dart.finalFieldType(core.int),
  [$innerWidth]: dart.finalFieldType(core.int),
  [$isSecureContext]: dart.finalFieldType(core.bool),
  [$localStorage]: dart.finalFieldType(html$.Storage),
  [$locationbar]: dart.finalFieldType(html$.BarProp),
  [$menubar]: dart.finalFieldType(html$.BarProp),
  [$name]: dart.fieldType(core.String),
  [$navigator]: dart.finalFieldType(html$.Navigator),
  [$offscreenBuffering]: dart.finalFieldType(core.bool),
  [_get_opener]: dart.finalFieldType(dart.dynamic),
  [$orientation]: dart.finalFieldType(core.int),
  [$origin]: dart.finalFieldType(core.String),
  [$outerHeight]: dart.finalFieldType(core.int),
  [$outerWidth]: dart.finalFieldType(core.int),
  [_pageXOffset]: dart.finalFieldType(core.num),
  [_pageYOffset]: dart.finalFieldType(core.num),
  [_get_parent]: dart.finalFieldType(dart.dynamic),
  [$performance]: dart.finalFieldType(html$.Performance),
  [$screen]: dart.finalFieldType(html$.Screen),
  [$screenLeft]: dart.finalFieldType(core.int),
  [$screenTop]: dart.finalFieldType(core.int),
  [$screenX]: dart.finalFieldType(core.int),
  [$screenY]: dart.finalFieldType(core.int),
  [$scrollbars]: dart.finalFieldType(html$.BarProp),
  [_get_self]: dart.finalFieldType(dart.dynamic),
  [$sessionStorage]: dart.finalFieldType(html$.Storage),
  [$speechSynthesis]: dart.finalFieldType(html$.SpeechSynthesis),
  [$status]: dart.fieldType(core.String),
  [$statusbar]: dart.finalFieldType(html$.BarProp),
  [$styleMedia]: dart.finalFieldType(html$.StyleMedia),
  [$toolbar]: dart.finalFieldType(html$.BarProp),
  [_get_top]: dart.finalFieldType(dart.dynamic),
  [$visualViewport]: dart.finalFieldType(html$.VisualViewport),
  [_get_window]: dart.finalFieldType(dart.dynamic)
}));
dart.defineLazy(html$.Window, {
  /*html$.Window.contentLoadedEvent*/get contentLoadedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("DOMContentLoaded"));
  },
  /*html$.Window.deviceMotionEvent*/get deviceMotionEvent() {
    return dart.const(new (EventStreamProviderOfDeviceMotionEvent()).new("devicemotion"));
  },
  /*html$.Window.deviceOrientationEvent*/get deviceOrientationEvent() {
    return dart.const(new (EventStreamProviderOfDeviceOrientationEvent()).new("deviceorientation"));
  },
  /*html$.Window.hashChangeEvent*/get hashChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("hashchange"));
  },
  /*html$.Window.loadStartEvent*/get loadStartEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("loadstart"));
  },
  /*html$.Window.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  },
  /*html$.Window.offlineEvent*/get offlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("offline"));
  },
  /*html$.Window.onlineEvent*/get onlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("online"));
  },
  /*html$.Window.pageHideEvent*/get pageHideEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("pagehide"));
  },
  /*html$.Window.pageShowEvent*/get pageShowEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("pageshow"));
  },
  /*html$.Window.popStateEvent*/get popStateEvent() {
    return dart.const(new (EventStreamProviderOfPopStateEvent()).new("popstate"));
  },
  /*html$.Window.progressEvent*/get progressEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("progress"));
  },
  /*html$.Window.storageEvent*/get storageEvent() {
    return dart.const(new (EventStreamProviderOfStorageEvent()).new("storage"));
  },
  /*html$.Window.unloadEvent*/get unloadEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("unload"));
  },
  /*html$.Window.animationEndEvent*/get animationEndEvent() {
    return dart.const(new (EventStreamProviderOfAnimationEvent()).new("webkitAnimationEnd"));
  },
  /*html$.Window.animationIterationEvent*/get animationIterationEvent() {
    return dart.const(new (EventStreamProviderOfAnimationEvent()).new("webkitAnimationIteration"));
  },
  /*html$.Window.animationStartEvent*/get animationStartEvent() {
    return dart.const(new (EventStreamProviderOfAnimationEvent()).new("webkitAnimationStart"));
  },
  /*html$.Window.PERSISTENT*/get PERSISTENT() {
    return 1;
  },
  /*html$.Window.TEMPORARY*/get TEMPORARY() {
    return 0;
  },
  /*html$.Window.beforeUnloadEvent*/get beforeUnloadEvent() {
    return dart.const(new html$._BeforeUnloadEventStreamProvider.new("beforeunload"));
  }
});
dart.registerExtension("Window", html$.Window);
dart.registerExtension("DOMWindow", html$.Window);
const _returnValue = Symbol('_returnValue');
html$._WrappedEvent = class _WrappedEvent extends core.Object {
  get wrapped() {
    return this[wrapped$];
  }
  set wrapped(value) {
    super.wrapped = value;
  }
  get bubbles() {
    return this.wrapped.bubbles;
  }
  get cancelable() {
    return this.wrapped.cancelable;
  }
  get composed() {
    return this.wrapped.composed;
  }
  get currentTarget() {
    return this.wrapped[$currentTarget];
  }
  get defaultPrevented() {
    return this.wrapped.defaultPrevented;
  }
  get eventPhase() {
    return this.wrapped.eventPhase;
  }
  get isTrusted() {
    return this.wrapped.isTrusted;
  }
  get target() {
    return this.wrapped[$target];
  }
  get timeStamp() {
    return this.wrapped.timeStamp;
  }
  get type() {
    return this.wrapped.type;
  }
  [_initEvent](type, bubbles, cancelable) {
    if (bubbles === void 0) bubbles = null;
    if (cancelable === void 0) cancelable = null;
    dart.throw(new core.UnsupportedError.new("Cannot initialize this Event."));
  }
  preventDefault() {
    this.wrapped.preventDefault();
  }
  stopImmediatePropagation() {
    this.wrapped.stopImmediatePropagation();
  }
  stopPropagation() {
    this.wrapped.stopPropagation();
  }
  composedPath() {
    return this.wrapped.composedPath();
  }
  get matchingTarget() {
    if (this[_selector] == null) {
      dart.throw(new core.UnsupportedError.new("Cannot call matchingTarget if this Event did" + " not arise as a result of event delegation."));
    }
    let currentTarget = html$.Element._check(this.currentTarget);
    let target = html$.Element._check(this.target);
    let matchedTarget = null;
    do {
      if (dart.test(target[$matches](this[_selector]))) return target;
      target = target[$parent];
    } while (target != null && !dart.equals(target, currentTarget[$parent]));
    dart.throw(new core.StateError.new("No selector matched for populating matchedTarget."));
  }
  get path() {
    return ListOfNode()._check(this.wrapped[$path]);
  }
  get [_get_currentTarget]() {
    return this.wrapped[_get_currentTarget];
  }
  get [_get_target]() {
    return this.wrapped[_get_target];
  }
};
(html$._WrappedEvent.new = function(wrapped) {
  this[_selector] = null;
  this[wrapped$] = wrapped;
}).prototype = html$._WrappedEvent.prototype;
dart.addTypeTests(html$._WrappedEvent);
const wrapped$ = Symbol("_WrappedEvent.wrapped");
html$._WrappedEvent[dart.implements] = () => [html$.Event];
dart.setMethodSignature(html$._WrappedEvent, () => ({
  __proto__: dart.getMethods(html$._WrappedEvent.__proto__),
  [_initEvent]: dart.fnType(dart.void, [core.String], [core.bool, core.bool]),
  preventDefault: dart.fnType(dart.void, []),
  [$preventDefault]: dart.fnType(dart.void, []),
  stopImmediatePropagation: dart.fnType(dart.void, []),
  [$stopImmediatePropagation]: dart.fnType(dart.void, []),
  stopPropagation: dart.fnType(dart.void, []),
  [$stopPropagation]: dart.fnType(dart.void, []),
  composedPath: dart.fnType(core.List$(html$.EventTarget), []),
  [$composedPath]: dart.fnType(core.List$(html$.EventTarget), [])
}));
dart.setGetterSignature(html$._WrappedEvent, () => ({
  __proto__: dart.getGetters(html$._WrappedEvent.__proto__),
  bubbles: core.bool,
  [$bubbles]: core.bool,
  cancelable: core.bool,
  [$cancelable]: core.bool,
  composed: core.bool,
  [$composed]: core.bool,
  currentTarget: html$.EventTarget,
  [$currentTarget]: html$.EventTarget,
  defaultPrevented: core.bool,
  [$defaultPrevented]: core.bool,
  eventPhase: core.int,
  [$eventPhase]: core.int,
  isTrusted: core.bool,
  [$isTrusted]: core.bool,
  target: html$.EventTarget,
  [$target]: html$.EventTarget,
  timeStamp: core.double,
  [$timeStamp]: core.double,
  type: core.String,
  [$type]: core.String,
  matchingTarget: html$.Element,
  [$matchingTarget]: html$.Element,
  path: core.List$(html$.Node),
  [$path]: core.List$(html$.Node),
  [_get_currentTarget]: dart.dynamic,
  [_get_target]: dart.dynamic
}));
dart.setFieldSignature(html$._WrappedEvent, () => ({
  __proto__: dart.getFields(html$._WrappedEvent.__proto__),
  wrapped: dart.finalFieldType(html$.Event),
  [_selector]: dart.fieldType(core.String)
}));
dart.defineExtensionMethods(html$._WrappedEvent, ['preventDefault', 'stopImmediatePropagation', 'stopPropagation', 'composedPath']);
dart.defineExtensionAccessors(html$._WrappedEvent, [
  'bubbles',
  'cancelable',
  'composed',
  'currentTarget',
  'defaultPrevented',
  'eventPhase',
  'isTrusted',
  'target',
  'timeStamp',
  'type',
  'matchingTarget',
  'path'
]);
html$._BeforeUnloadEvent = class _BeforeUnloadEvent extends html$._WrappedEvent {
  get returnValue() {
    return this[_returnValue];
  }
  set returnValue(value) {
    this[_returnValue] = value;
    if ("returnValue" in this.wrapped) {
      this.wrapped.returnValue = value;
    }
  }
};
(html$._BeforeUnloadEvent.new = function(base) {
  this[_returnValue] = null;
  html$._BeforeUnloadEvent.__proto__.new.call(this, base);
}).prototype = html$._BeforeUnloadEvent.prototype;
dart.addTypeTests(html$._BeforeUnloadEvent);
html$._BeforeUnloadEvent[dart.implements] = () => [html$.BeforeUnloadEvent];
dart.setGetterSignature(html$._BeforeUnloadEvent, () => ({
  __proto__: dart.getGetters(html$._BeforeUnloadEvent.__proto__),
  returnValue: core.String,
  [$returnValue]: core.String
}));
dart.setSetterSignature(html$._BeforeUnloadEvent, () => ({
  __proto__: dart.getSetters(html$._BeforeUnloadEvent.__proto__),
  returnValue: core.String,
  [$returnValue]: core.String
}));
dart.setFieldSignature(html$._BeforeUnloadEvent, () => ({
  __proto__: dart.getFields(html$._BeforeUnloadEvent.__proto__),
  [_returnValue]: dart.fieldType(core.String)
}));
dart.defineExtensionAccessors(html$._BeforeUnloadEvent, ['returnValue']);
const _eventType = Symbol('_eventType');
html$._BeforeUnloadEventStreamProvider = class _BeforeUnloadEventStreamProvider extends core.Object {
  forTarget(e, opts) {
    let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
    let stream = new (_EventStreamOfBeforeUnloadEvent()).new(e, this[_eventType], useCapture);
    let controller = StreamControllerOfBeforeUnloadEvent().new({sync: true});
    stream.listen(dart.fn(event => {
      let wrapped = new html$._BeforeUnloadEvent.new(event);
      controller.add(wrapped);
    }, BeforeUnloadEventToNull()));
    return controller.stream;
  }
  getEventType(target) {
    return this[_eventType];
  }
  forElement(e, opts) {
    let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
    return new (_ElementEventStreamImplOfBeforeUnloadEvent()).new(e, this[_eventType], useCapture);
  }
  [_forElementList](e, opts) {
    let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
    return new (_ElementListEventStreamImplOfBeforeUnloadEvent()).new(e, this[_eventType], useCapture);
  }
};
(html$._BeforeUnloadEventStreamProvider.new = function(eventType) {
  this[_eventType] = eventType;
}).prototype = html$._BeforeUnloadEventStreamProvider.prototype;
dart.addTypeTests(html$._BeforeUnloadEventStreamProvider);
html$._BeforeUnloadEventStreamProvider[dart.implements] = () => [EventStreamProviderOfBeforeUnloadEvent()];
dart.setMethodSignature(html$._BeforeUnloadEventStreamProvider, () => ({
  __proto__: dart.getMethods(html$._BeforeUnloadEventStreamProvider.__proto__),
  forTarget: dart.fnType(async.Stream$(html$.BeforeUnloadEvent), [html$.EventTarget], {useCapture: core.bool}),
  getEventType: dart.fnType(core.String, [html$.EventTarget]),
  forElement: dart.fnType(html$.ElementStream$(html$.BeforeUnloadEvent), [html$.Element], {useCapture: core.bool}),
  [_forElementList]: dart.fnType(html$.ElementStream$(html$.BeforeUnloadEvent), [html$.ElementList$(html$.Element)], {useCapture: core.bool})
}));
dart.setFieldSignature(html$._BeforeUnloadEventStreamProvider, () => ({
  __proto__: dart.getFields(html$._BeforeUnloadEventStreamProvider.__proto__),
  [_eventType]: dart.finalFieldType(core.String)
}));
html$.WindowBase64 = class WindowBase64 extends _interceptors.Interceptor {};
dart.addTypeTests(html$.WindowBase64);
html$.WindowClient = class WindowClient extends html$.Client {
  get [$focused]() {
    return this.focused;
  }
  get [$visibilityState]() {
    return this.visibilityState;
  }
  [$focus]() {
    return html$.promiseToFuture(html$.WindowClient, this.focus());
  }
  [$navigate](url) {
    return html$.promiseToFuture(html$.WindowClient, this.navigate(url));
  }
};
dart.addTypeTests(html$.WindowClient);
const focused = Symbol("WindowClient.focused");
const visibilityState = Symbol("WindowClient.visibilityState");
dart.setMethodSignature(html$.WindowClient, () => ({
  __proto__: dart.getMethods(html$.WindowClient.__proto__),
  [$focus]: dart.fnType(async.Future$(html$.WindowClient), []),
  [$navigate]: dart.fnType(async.Future$(html$.WindowClient), [core.String])
}));
dart.setFieldSignature(html$.WindowClient, () => ({
  __proto__: dart.getFields(html$.WindowClient.__proto__),
  [$focused]: dart.finalFieldType(core.bool),
  [$visibilityState]: dart.finalFieldType(core.String)
}));
dart.registerExtension("WindowClient", html$.WindowClient);
html$.WindowEventHandlers = class WindowEventHandlers extends html$.EventTarget {
  get onHashChange() {
    return html$.WindowEventHandlers.hashChangeEvent.forTarget(this);
  }
  get onMessage() {
    return html$.WindowEventHandlers.messageEvent.forTarget(this);
  }
  get onOffline() {
    return html$.WindowEventHandlers.offlineEvent.forTarget(this);
  }
  get onOnline() {
    return html$.WindowEventHandlers.onlineEvent.forTarget(this);
  }
  get onPopState() {
    return html$.WindowEventHandlers.popStateEvent.forTarget(this);
  }
  get onStorage() {
    return html$.WindowEventHandlers.storageEvent.forTarget(this);
  }
  get onUnload() {
    return html$.WindowEventHandlers.unloadEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.WindowEventHandlers);
dart.setGetterSignature(html$.WindowEventHandlers, () => ({
  __proto__: dart.getGetters(html$.WindowEventHandlers.__proto__),
  onHashChange: async.Stream$(html$.Event),
  [$onHashChange]: async.Stream$(html$.Event),
  onMessage: async.Stream$(html$.MessageEvent),
  [$onMessage]: async.Stream$(html$.MessageEvent),
  onOffline: async.Stream$(html$.Event),
  [$onOffline]: async.Stream$(html$.Event),
  onOnline: async.Stream$(html$.Event),
  [$onOnline]: async.Stream$(html$.Event),
  onPopState: async.Stream$(html$.PopStateEvent),
  [$onPopState]: async.Stream$(html$.PopStateEvent),
  onStorage: async.Stream$(html$.StorageEvent),
  [$onStorage]: async.Stream$(html$.StorageEvent),
  onUnload: async.Stream$(html$.Event),
  [$onUnload]: async.Stream$(html$.Event)
}));
dart.defineExtensionAccessors(html$.WindowEventHandlers, [
  'onHashChange',
  'onMessage',
  'onOffline',
  'onOnline',
  'onPopState',
  'onStorage',
  'onUnload'
]);
dart.defineLazy(html$.WindowEventHandlers, {
  /*html$.WindowEventHandlers.hashChangeEvent*/get hashChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("hashchange"));
  },
  /*html$.WindowEventHandlers.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  },
  /*html$.WindowEventHandlers.offlineEvent*/get offlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("offline"));
  },
  /*html$.WindowEventHandlers.onlineEvent*/get onlineEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("online"));
  },
  /*html$.WindowEventHandlers.popStateEvent*/get popStateEvent() {
    return dart.const(new (EventStreamProviderOfPopStateEvent()).new("popstate"));
  },
  /*html$.WindowEventHandlers.storageEvent*/get storageEvent() {
    return dart.const(new (EventStreamProviderOfStorageEvent()).new("storage"));
  },
  /*html$.WindowEventHandlers.unloadEvent*/get unloadEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("unload"));
  }
});
html$.Worker = class Worker$ extends html$.EventTarget {
  static new(scriptUrl) {
    return html$.Worker._create_1(scriptUrl);
  }
  static _create_1(scriptUrl) {
    return new Worker(scriptUrl);
  }
  static get supported() {
    return typeof window.Worker != "undefined";
  }
  [$postMessage](message, transfer) {
    if (transfer === void 0) transfer = null;
    if (transfer != null) {
      let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
      this[_postMessage_1](message_1, transfer);
      return;
    }
    let message_1 = html_common.convertDartToNative_SerializedScriptValue(message);
    this[_postMessage_2](message_1);
    return;
  }
  [_postMessage_1](...args) {
    return this.postMessage.apply(this, args);
  }
  [_postMessage_2](...args) {
    return this.postMessage.apply(this, args);
  }
  [$terminate](...args) {
    return this.terminate.apply(this, args);
  }
  get [$onError]() {
    return html$.Worker.errorEvent.forTarget(this);
  }
  get [$onMessage]() {
    return html$.Worker.messageEvent.forTarget(this);
  }
};
dart.addTypeTests(html$.Worker);
html$.Worker[dart.implements] = () => [html$.AbstractWorker];
dart.setMethodSignature(html$.Worker, () => ({
  __proto__: dart.getMethods(html$.Worker.__proto__),
  [$postMessage]: dart.fnType(dart.void, [dart.dynamic], [core.List$(core.Object)]),
  [_postMessage_1]: dart.fnType(dart.void, [dart.dynamic, core.List$(core.Object)]),
  [_postMessage_2]: dart.fnType(dart.void, [dart.dynamic]),
  [$terminate]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(html$.Worker, () => ({
  __proto__: dart.getGetters(html$.Worker.__proto__),
  [$onError]: async.Stream$(html$.Event),
  [$onMessage]: async.Stream$(html$.MessageEvent)
}));
dart.defineLazy(html$.Worker, {
  /*html$.Worker.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*html$.Worker.messageEvent*/get messageEvent() {
    return dart.const(new (EventStreamProviderOfMessageEvent()).new("message"));
  }
});
dart.registerExtension("Worker", html$.Worker);
html$.WorkerPerformance = class WorkerPerformance extends html$.EventTarget {
  get [$memory]() {
    return this.memory;
  }
  get [$timeOrigin]() {
    return this.timeOrigin;
  }
  [$clearMarks](...args) {
    return this.clearMarks.apply(this, args);
  }
  [$clearMeasures](...args) {
    return this.clearMeasures.apply(this, args);
  }
  [$clearResourceTimings](...args) {
    return this.clearResourceTimings.apply(this, args);
  }
  [$getEntries](...args) {
    return this.getEntries.apply(this, args);
  }
  [$getEntriesByName](...args) {
    return this.getEntriesByName.apply(this, args);
  }
  [$getEntriesByType](...args) {
    return this.getEntriesByType.apply(this, args);
  }
  [$mark](...args) {
    return this.mark.apply(this, args);
  }
  [$measure](...args) {
    return this.measure.apply(this, args);
  }
  [$now](...args) {
    return this.now.apply(this, args);
  }
  [$setResourceTimingBufferSize](...args) {
    return this.setResourceTimingBufferSize.apply(this, args);
  }
};
dart.addTypeTests(html$.WorkerPerformance);
const memory$ = Symbol("WorkerPerformance.memory");
const timeOrigin$ = Symbol("WorkerPerformance.timeOrigin");
dart.setMethodSignature(html$.WorkerPerformance, () => ({
  __proto__: dart.getMethods(html$.WorkerPerformance.__proto__),
  [$clearMarks]: dart.fnType(dart.void, [core.String]),
  [$clearMeasures]: dart.fnType(dart.void, [core.String]),
  [$clearResourceTimings]: dart.fnType(dart.void, []),
  [$getEntries]: dart.fnType(core.List$(html$.PerformanceEntry), []),
  [$getEntriesByName]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String, core.String]),
  [$getEntriesByType]: dart.fnType(core.List$(html$.PerformanceEntry), [core.String]),
  [$mark]: dart.fnType(dart.void, [core.String]),
  [$measure]: dart.fnType(dart.void, [core.String, core.String, core.String]),
  [$now]: dart.fnType(core.double, []),
  [$setResourceTimingBufferSize]: dart.fnType(dart.void, [core.int])
}));
dart.setFieldSignature(html$.WorkerPerformance, () => ({
  __proto__: dart.getFields(html$.WorkerPerformance.__proto__),
  [$memory]: dart.finalFieldType(html$.MemoryInfo),
  [$timeOrigin]: dart.finalFieldType(core.num)
}));
dart.registerExtension("WorkerPerformance", html$.WorkerPerformance);
html$.WorkletAnimation = class WorkletAnimation$ extends _interceptors.Interceptor {
  static new(animatorName, effects, timelines, options) {
    let options_1 = html_common.convertDartToNative_SerializedScriptValue(options);
    return html$.WorkletAnimation._create_1(animatorName, effects, timelines, options_1);
  }
  static _create_1(animatorName, effects, timelines, options) {
    return new WorkletAnimation(animatorName, effects, timelines, options);
  }
  get [$playState]() {
    return this.playState;
  }
  [$cancel](...args) {
    return this.cancel.apply(this, args);
  }
  [$play](...args) {
    return this.play.apply(this, args);
  }
};
dart.addTypeTests(html$.WorkletAnimation);
const playState$ = Symbol("WorkletAnimation.playState");
dart.setMethodSignature(html$.WorkletAnimation, () => ({
  __proto__: dart.getMethods(html$.WorkletAnimation.__proto__),
  [$cancel]: dart.fnType(dart.void, []),
  [$play]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(html$.WorkletAnimation, () => ({
  __proto__: dart.getFields(html$.WorkletAnimation.__proto__),
  [$playState]: dart.finalFieldType(core.String)
}));
dart.registerExtension("WorkletAnimation", html$.WorkletAnimation);
html$.XPathEvaluator = class XPathEvaluator$ extends _interceptors.Interceptor {
  static new() {
    return html$.XPathEvaluator._create_1();
  }
  static _create_1() {
    return new XPathEvaluator();
  }
  [$createExpression](...args) {
    return this.createExpression.apply(this, args);
  }
  [$createNSResolver](...args) {
    return this.createNSResolver.apply(this, args);
  }
  [$evaluate](...args) {
    return this.evaluate.apply(this, args);
  }
};
dart.addTypeTests(html$.XPathEvaluator);
dart.setMethodSignature(html$.XPathEvaluator, () => ({
  __proto__: dart.getMethods(html$.XPathEvaluator.__proto__),
  [$createExpression]: dart.fnType(html$.XPathExpression, [core.String, html$.XPathNSResolver]),
  [$createNSResolver]: dart.fnType(html$.XPathNSResolver, [html$.Node]),
  [$evaluate]: dart.fnType(html$.XPathResult, [core.String, html$.Node, html$.XPathNSResolver], [core.int, core.Object])
}));
dart.registerExtension("XPathEvaluator", html$.XPathEvaluator);
html$.XPathExpression = class XPathExpression extends _interceptors.Interceptor {
  [$evaluate](...args) {
    return this.evaluate.apply(this, args);
  }
};
dart.addTypeTests(html$.XPathExpression);
dart.setMethodSignature(html$.XPathExpression, () => ({
  __proto__: dart.getMethods(html$.XPathExpression.__proto__),
  [$evaluate]: dart.fnType(html$.XPathResult, [html$.Node], [core.int, core.Object])
}));
dart.registerExtension("XPathExpression", html$.XPathExpression);
html$.XPathNSResolver = class XPathNSResolver extends _interceptors.Interceptor {
  [$lookupNamespaceUri](...args) {
    return this.lookupNamespaceURI.apply(this, args);
  }
};
dart.addTypeTests(html$.XPathNSResolver);
dart.setMethodSignature(html$.XPathNSResolver, () => ({
  __proto__: dart.getMethods(html$.XPathNSResolver.__proto__),
  [$lookupNamespaceUri]: dart.fnType(core.String, [core.String])
}));
dart.registerExtension("XPathNSResolver", html$.XPathNSResolver);
html$.XPathResult = class XPathResult extends _interceptors.Interceptor {
  get [$booleanValue]() {
    return this.booleanValue;
  }
  get [$invalidIteratorState]() {
    return this.invalidIteratorState;
  }
  get [$numberValue]() {
    return this.numberValue;
  }
  get [$resultType]() {
    return this.resultType;
  }
  get [$singleNodeValue]() {
    return this.singleNodeValue;
  }
  get [$snapshotLength]() {
    return this.snapshotLength;
  }
  get [$stringValue]() {
    return this.stringValue;
  }
  [$iterateNext](...args) {
    return this.iterateNext.apply(this, args);
  }
  [$snapshotItem](...args) {
    return this.snapshotItem.apply(this, args);
  }
};
dart.addTypeTests(html$.XPathResult);
const booleanValue = Symbol("XPathResult.booleanValue");
const invalidIteratorState = Symbol("XPathResult.invalidIteratorState");
const numberValue = Symbol("XPathResult.numberValue");
const resultType = Symbol("XPathResult.resultType");
const singleNodeValue = Symbol("XPathResult.singleNodeValue");
const snapshotLength = Symbol("XPathResult.snapshotLength");
const stringValue = Symbol("XPathResult.stringValue");
dart.setMethodSignature(html$.XPathResult, () => ({
  __proto__: dart.getMethods(html$.XPathResult.__proto__),
  [$iterateNext]: dart.fnType(html$.Node, []),
  [$snapshotItem]: dart.fnType(html$.Node, [core.int])
}));
dart.setFieldSignature(html$.XPathResult, () => ({
  __proto__: dart.getFields(html$.XPathResult.__proto__),
  [$booleanValue]: dart.finalFieldType(core.bool),
  [$invalidIteratorState]: dart.finalFieldType(core.bool),
  [$numberValue]: dart.finalFieldType(core.num),
  [$resultType]: dart.finalFieldType(core.int),
  [$singleNodeValue]: dart.finalFieldType(html$.Node),
  [$snapshotLength]: dart.finalFieldType(core.int),
  [$stringValue]: dart.finalFieldType(core.String)
}));
dart.defineLazy(html$.XPathResult, {
  /*html$.XPathResult.ANY_TYPE*/get ANY_TYPE() {
    return 0;
  },
  /*html$.XPathResult.ANY_UNORDERED_NODE_TYPE*/get ANY_UNORDERED_NODE_TYPE() {
    return 8;
  },
  /*html$.XPathResult.BOOLEAN_TYPE*/get BOOLEAN_TYPE() {
    return 3;
  },
  /*html$.XPathResult.FIRST_ORDERED_NODE_TYPE*/get FIRST_ORDERED_NODE_TYPE() {
    return 9;
  },
  /*html$.XPathResult.NUMBER_TYPE*/get NUMBER_TYPE() {
    return 1;
  },
  /*html$.XPathResult.ORDERED_NODE_ITERATOR_TYPE*/get ORDERED_NODE_ITERATOR_TYPE() {
    return 5;
  },
  /*html$.XPathResult.ORDERED_NODE_SNAPSHOT_TYPE*/get ORDERED_NODE_SNAPSHOT_TYPE() {
    return 7;
  },
  /*html$.XPathResult.STRING_TYPE*/get STRING_TYPE() {
    return 2;
  },
  /*html$.XPathResult.UNORDERED_NODE_ITERATOR_TYPE*/get UNORDERED_NODE_ITERATOR_TYPE() {
    return 4;
  },
  /*html$.XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE*/get UNORDERED_NODE_SNAPSHOT_TYPE() {
    return 6;
  }
});
dart.registerExtension("XPathResult", html$.XPathResult);
html$.XmlDocument = class XmlDocument extends html$.Document {};
dart.addTypeTests(html$.XmlDocument);
dart.registerExtension("XMLDocument", html$.XmlDocument);
html$.XmlSerializer = class XmlSerializer extends _interceptors.Interceptor {
  static new() {
    return html$.XmlSerializer._create_1();
  }
  static _create_1() {
    return new XMLSerializer();
  }
  [$serializeToString](...args) {
    return this.serializeToString.apply(this, args);
  }
};
dart.addTypeTests(html$.XmlSerializer);
dart.setMethodSignature(html$.XmlSerializer, () => ({
  __proto__: dart.getMethods(html$.XmlSerializer.__proto__),
  [$serializeToString]: dart.fnType(core.String, [html$.Node])
}));
dart.registerExtension("XMLSerializer", html$.XmlSerializer);
html$.XsltProcessor = class XsltProcessor extends _interceptors.Interceptor {
  static new() {
    return html$.XsltProcessor._create_1();
  }
  static _create_1() {
    return new XSLTProcessor();
  }
  static get supported() {
    return !!window.XSLTProcessor;
  }
  [$clearParameters](...args) {
    return this.clearParameters.apply(this, args);
  }
  [$getParameter](...args) {
    return this.getParameter.apply(this, args);
  }
  [$importStylesheet](...args) {
    return this.importStylesheet.apply(this, args);
  }
  [$removeParameter](...args) {
    return this.removeParameter.apply(this, args);
  }
  [$reset](...args) {
    return this.reset.apply(this, args);
  }
  [$setParameter](...args) {
    return this.setParameter.apply(this, args);
  }
  [$transformToDocument](...args) {
    return this.transformToDocument.apply(this, args);
  }
  [$transformToFragment](...args) {
    return this.transformToFragment.apply(this, args);
  }
};
dart.addTypeTests(html$.XsltProcessor);
dart.setMethodSignature(html$.XsltProcessor, () => ({
  __proto__: dart.getMethods(html$.XsltProcessor.__proto__),
  [$clearParameters]: dart.fnType(dart.void, []),
  [$getParameter]: dart.fnType(core.String, [core.String, core.String]),
  [$importStylesheet]: dart.fnType(dart.void, [html$.Node]),
  [$removeParameter]: dart.fnType(dart.void, [core.String, core.String]),
  [$reset]: dart.fnType(dart.void, []),
  [$setParameter]: dart.fnType(dart.void, [core.String, core.String, core.String]),
  [$transformToDocument]: dart.fnType(html$.Document, [html$.Node]),
  [$transformToFragment]: dart.fnType(html$.DocumentFragment, [html$.Node, html$.Document])
}));
dart.registerExtension("XSLTProcessor", html$.XsltProcessor);
html$._Attr = class _Attr extends html$.Node {
  get [_localName]() {
    return this.localName;
  }
  get [$name]() {
    return this.name;
  }
  get [_namespaceUri]() {
    return this.namespaceURI;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
};
dart.addTypeTests(html$._Attr);
dart.setFieldSignature(html$._Attr, () => ({
  __proto__: dart.getFields(html$._Attr.__proto__),
  [_localName]: dart.finalFieldType(core.String),
  [$name]: dart.finalFieldType(core.String),
  [_namespaceUri]: dart.finalFieldType(core.String),
  [$value]: dart.fieldType(core.String)
}));
dart.registerExtension("Attr", html$._Attr);
html$._Bluetooth = class _Bluetooth extends _interceptors.Interceptor {};
dart.addTypeTests(html$._Bluetooth);
dart.registerExtension("Bluetooth", html$._Bluetooth);
html$._BluetoothCharacteristicProperties = class _BluetoothCharacteristicProperties extends _interceptors.Interceptor {};
dart.addTypeTests(html$._BluetoothCharacteristicProperties);
dart.registerExtension("BluetoothCharacteristicProperties", html$._BluetoothCharacteristicProperties);
html$._BluetoothDevice = class _BluetoothDevice extends html$.EventTarget {};
dart.addTypeTests(html$._BluetoothDevice);
dart.registerExtension("BluetoothDevice", html$._BluetoothDevice);
html$._BluetoothRemoteGATTCharacteristic = class _BluetoothRemoteGATTCharacteristic extends html$.EventTarget {};
dart.addTypeTests(html$._BluetoothRemoteGATTCharacteristic);
dart.registerExtension("BluetoothRemoteGATTCharacteristic", html$._BluetoothRemoteGATTCharacteristic);
html$._BluetoothRemoteGATTServer = class _BluetoothRemoteGATTServer extends _interceptors.Interceptor {};
dart.addTypeTests(html$._BluetoothRemoteGATTServer);
dart.registerExtension("BluetoothRemoteGATTServer", html$._BluetoothRemoteGATTServer);
html$._BluetoothRemoteGATTService = class _BluetoothRemoteGATTService extends _interceptors.Interceptor {};
dart.addTypeTests(html$._BluetoothRemoteGATTService);
dart.registerExtension("BluetoothRemoteGATTService", html$._BluetoothRemoteGATTService);
html$._BluetoothUUID = class _BluetoothUUID extends _interceptors.Interceptor {};
dart.addTypeTests(html$._BluetoothUUID);
dart.registerExtension("BluetoothUUID", html$._BluetoothUUID);
html$._BudgetService = class _BudgetService extends _interceptors.Interceptor {
  [$getBudget]() {
    return html$.promiseToFuture(html$.BudgetState, this.getBudget());
  }
  [$getCost](operation) {
    return html$.promiseToFuture(core.double, this.getCost(operation));
  }
  [$reserve](operation) {
    return html$.promiseToFuture(core.bool, this.reserve(operation));
  }
};
dart.addTypeTests(html$._BudgetService);
dart.setMethodSignature(html$._BudgetService, () => ({
  __proto__: dart.getMethods(html$._BudgetService.__proto__),
  [$getBudget]: dart.fnType(async.Future$(html$.BudgetState), []),
  [$getCost]: dart.fnType(async.Future$(core.double), [core.String]),
  [$reserve]: dart.fnType(async.Future$(core.bool), [core.String])
}));
dart.registerExtension("BudgetService", html$._BudgetService);
html$._Cache = class _Cache extends _interceptors.Interceptor {};
dart.addTypeTests(html$._Cache);
dart.registerExtension("Cache", html$._Cache);
html$._CanvasPath = class _CanvasPath extends _interceptors.Interceptor {};
dart.addTypeTests(html$._CanvasPath);
html$._Clipboard = class _Clipboard extends html$.EventTarget {
  [$read]() {
    return html$.promiseToFuture(html$.DataTransfer, this.read());
  }
  [$readText]() {
    return html$.promiseToFuture(core.String, this.readText());
  }
  [$write](data) {
    return html$.promiseToFuture(dart.dynamic, this.write(data));
  }
  [$writeText](data) {
    return html$.promiseToFuture(dart.dynamic, this.writeText(data));
  }
};
dart.addTypeTests(html$._Clipboard);
dart.setMethodSignature(html$._Clipboard, () => ({
  __proto__: dart.getMethods(html$._Clipboard.__proto__),
  [$read]: dart.fnType(async.Future$(html$.DataTransfer), []),
  [$readText]: dart.fnType(async.Future$(core.String), []),
  [$write]: dart.fnType(async.Future, [html$.DataTransfer]),
  [$writeText]: dart.fnType(async.Future, [core.String])
}));
dart.registerExtension("Clipboard", html$._Clipboard);
const Interceptor_ListMixin$$8 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$8.new = function() {
  Interceptor_ListMixin$$8.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$8.prototype;
dart.applyMixin(Interceptor_ListMixin$$8, collection.ListMixin$(html$.CssRule));
const Interceptor_ImmutableListMixin$$8 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$8 {};
(Interceptor_ImmutableListMixin$$8.new = function() {
  Interceptor_ImmutableListMixin$$8.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$8.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$8, html$.ImmutableListMixin$(html$.CssRule));
html$._CssRuleList = class _CssRuleList extends Interceptor_ImmutableListMixin$$8 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.CssRule._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
html$._CssRuleList.prototype[dart.isList] = true;
dart.addTypeTests(html$._CssRuleList);
html$._CssRuleList[dart.implements] = () => [JavaScriptIndexingBehaviorOfCssRule(), ListOfCssRule()];
dart.setMethodSignature(html$._CssRuleList, () => ({
  __proto__: dart.getMethods(html$._CssRuleList.__proto__),
  [$_get]: dart.fnType(html$.CssRule, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.CssRule, [core.int]),
  [$item]: dart.fnType(html$.CssRule, [core.int])
}));
dart.setGetterSignature(html$._CssRuleList, () => ({
  __proto__: dart.getGetters(html$._CssRuleList.__proto__),
  [$length]: core.int,
  [$first]: html$.CssRule,
  [$last]: html$.CssRule,
  [$single]: html$.CssRule
}));
dart.setSetterSignature(html$._CssRuleList, () => ({
  __proto__: dart.getSetters(html$._CssRuleList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("CSSRuleList", html$._CssRuleList);
html$._DOMFileSystemSync = class _DOMFileSystemSync extends _interceptors.Interceptor {};
dart.addTypeTests(html$._DOMFileSystemSync);
dart.registerExtension("DOMFileSystemSync", html$._DOMFileSystemSync);
html$._EntrySync = class _EntrySync extends _interceptors.Interceptor {};
dart.addTypeTests(html$._EntrySync);
dart.registerExtension("EntrySync", html$._EntrySync);
html$._DirectoryEntrySync = class _DirectoryEntrySync extends html$._EntrySync {};
dart.addTypeTests(html$._DirectoryEntrySync);
dart.registerExtension("DirectoryEntrySync", html$._DirectoryEntrySync);
html$._DirectoryReaderSync = class _DirectoryReaderSync extends _interceptors.Interceptor {};
dart.addTypeTests(html$._DirectoryReaderSync);
dart.registerExtension("DirectoryReaderSync", html$._DirectoryReaderSync);
html$._DocumentType = class _DocumentType extends html$.Node {};
dart.addTypeTests(html$._DocumentType);
html$._DocumentType[dart.implements] = () => [html$.ChildNode];
dart.registerExtension("DocumentType", html$._DocumentType);
html$._DomRect = class _DomRect extends html$.DomRectReadOnly {
  [$toString]() {
    return "Rectangle (" + dart.str(this[$left]) + ", " + dart.str(this[$top]) + ") " + dart.str(this[$width]) + " x " + dart.str(this[$height]);
  }
  [$_equals](other) {
    if (!RectangleOfnum().is(other)) return false;
    return core.identical(this[$left], dart.dload(other, 'left')) && core.identical(this[$top], dart.dload(other, 'top')) && core.identical(this[$width], dart.dload(other, 'width')) && core.identical(this[$height], dart.dload(other, 'height'));
  }
  get [$hashCode]() {
    return html$._JenkinsSmiHash.hash4(dart.hashCode(this[$left]), dart.hashCode(this[$top]), dart.hashCode(this[$width]), dart.hashCode(this[$height]));
  }
  [$intersection](other) {
    let x0 = math.max(core.num, this[$left], other[$left]);
    let x1 = math.min(core.num, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
    if (x0 <= x1) {
      let y0 = math.max(core.num, this[$top], other[$top]);
      let y1 = math.min(core.num, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
      if (y0 <= y1) {
        return new (RectangleOfnum()).new(x0, y0, x1 - x0, y1 - y0);
      }
    }
    return null;
  }
  [$intersects](other) {
    return dart.notNull(this[$left]) <= dart.notNull(other[$left]) + dart.notNull(other[$width]) && dart.notNull(other[$left]) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(this[$top]) <= dart.notNull(other[$top]) + dart.notNull(other[$height]) && dart.notNull(other[$top]) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
  }
  [$boundingBox](other) {
    let right = math.max(core.num, dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(other[$left]) + dart.notNull(other[$width]));
    let bottom = math.max(core.num, dart.notNull(this[$top]) + dart.notNull(this[$height]), dart.notNull(other[$top]) + dart.notNull(other[$height]));
    let left = math.min(core.num, this[$left], other[$left]);
    let top = math.min(core.num, this[$top], other[$top]);
    return new (RectangleOfnum()).new(left, top, right - left, bottom - top);
  }
  [$containsRectangle](another) {
    return dart.notNull(this[$left]) <= dart.notNull(another[$left]) && dart.notNull(this[$left]) + dart.notNull(this[$width]) >= dart.notNull(another[$left]) + dart.notNull(another[$width]) && dart.notNull(this[$top]) <= dart.notNull(another[$top]) && dart.notNull(this[$top]) + dart.notNull(this[$height]) >= dart.notNull(another[$top]) + dart.notNull(another[$height]);
  }
  [$containsPoint](another) {
    return dart.notNull(another.x) >= dart.notNull(this[$left]) && dart.notNull(another.x) <= dart.notNull(this[$left]) + dart.notNull(this[$width]) && dart.notNull(another.y) >= dart.notNull(this[$top]) && dart.notNull(another.y) <= dart.notNull(this[$top]) + dart.notNull(this[$height]);
  }
  get [$topLeft]() {
    return new (PointOfnum()).new(this[$left], this[$top]);
  }
  get [$topRight]() {
    return new (PointOfnum()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), this[$top]);
  }
  get [$bottomRight]() {
    return new (PointOfnum()).new(dart.notNull(this[$left]) + dart.notNull(this[$width]), dart.notNull(this[$top]) + dart.notNull(this[$height]));
  }
  get [$bottomLeft]() {
    return new (PointOfnum()).new(this[$left], dart.notNull(this[$top]) + dart.notNull(this[$height]));
  }
  static new(x, y, width, height) {
    if (x === void 0) x = null;
    if (y === void 0) y = null;
    if (width === void 0) width = null;
    if (height === void 0) height = null;
    if (height != null) {
      return html$._DomRect._create_1(x, y, width, height);
    }
    if (width != null) {
      return html$._DomRect._create_2(x, y, width);
    }
    if (y != null) {
      return html$._DomRect._create_3(x, y);
    }
    if (x != null) {
      return html$._DomRect._create_4(x);
    }
    return html$._DomRect._create_5();
  }
  static _create_1(x, y, width, height) {
    return new DOMRect(x, y, width, height);
  }
  static _create_2(x, y, width) {
    return new DOMRect(x, y, width);
  }
  static _create_3(x, y) {
    return new DOMRect(x, y);
  }
  static _create_4(x) {
    return new DOMRect(x);
  }
  static _create_5() {
    return new DOMRect();
  }
  get [$height]() {
    return this.height;
  }
  set [$height](value) {
    this.height = value;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
  get [$x]() {
    return this.x;
  }
  set [$x](value) {
    this.x = value;
  }
  get [$y]() {
    return this.y;
  }
  set [$y](value) {
    this.y = value;
  }
};
dart.addTypeTests(html$._DomRect);
html$._DomRect[dart.implements] = () => [RectangleOfnum()];
dart.setSetterSignature(html$._DomRect, () => ({
  __proto__: dart.getSetters(html$._DomRect.__proto__),
  [$height]: core.num,
  [$width]: core.num,
  [$x]: core.num,
  [$y]: core.num
}));
dart.registerExtension("ClientRect", html$._DomRect);
dart.registerExtension("DOMRect", html$._DomRect);
html$._JenkinsSmiHash = class _JenkinsSmiHash extends core.Object {
  static combine(hash, value) {
    hash = 536870911 & dart.notNull(hash) + dart.notNull(value);
    hash = 536870911 & dart.notNull(hash) + ((524287 & dart.notNull(hash)) << 10);
    return (dart.notNull(hash) ^ hash[$rightShift](6)) >>> 0;
  }
  static finish(hash) {
    hash = 536870911 & dart.notNull(hash) + ((67108863 & dart.notNull(hash)) << 3);
    hash = (dart.notNull(hash) ^ hash[$rightShift](11)) >>> 0;
    return 536870911 & dart.notNull(hash) + ((16383 & dart.notNull(hash)) << 15);
  }
  static hash2(a, b) {
    return html$._JenkinsSmiHash.finish(html$._JenkinsSmiHash.combine(html$._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)));
  }
  static hash4(a, b, c, d) {
    return html$._JenkinsSmiHash.finish(html$._JenkinsSmiHash.combine(html$._JenkinsSmiHash.combine(html$._JenkinsSmiHash.combine(html$._JenkinsSmiHash.combine(0, core.int._check(a)), core.int._check(b)), core.int._check(c)), core.int._check(d)));
  }
};
(html$._JenkinsSmiHash.new = function() {
}).prototype = html$._JenkinsSmiHash.prototype;
dart.addTypeTests(html$._JenkinsSmiHash);
html$._FileEntrySync = class _FileEntrySync extends html$._EntrySync {};
dart.addTypeTests(html$._FileEntrySync);
dart.registerExtension("FileEntrySync", html$._FileEntrySync);
html$._FileReaderSync = class _FileReaderSync extends _interceptors.Interceptor {
  static new() {
    return html$._FileReaderSync._create_1();
  }
  static _create_1() {
    return new FileReaderSync();
  }
};
dart.addTypeTests(html$._FileReaderSync);
dart.registerExtension("FileReaderSync", html$._FileReaderSync);
html$._FileWriterSync = class _FileWriterSync extends _interceptors.Interceptor {};
dart.addTypeTests(html$._FileWriterSync);
dart.registerExtension("FileWriterSync", html$._FileWriterSync);
const Interceptor_ListMixin$$9 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$9.new = function() {
  Interceptor_ListMixin$$9.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$9.prototype;
dart.applyMixin(Interceptor_ListMixin$$9, collection.ListMixin$(html$.Gamepad));
const Interceptor_ImmutableListMixin$$9 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$9 {};
(Interceptor_ImmutableListMixin$$9.new = function() {
  Interceptor_ImmutableListMixin$$9.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$9.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$9, html$.ImmutableListMixin$(html$.Gamepad));
html$._GamepadList = class _GamepadList extends Interceptor_ImmutableListMixin$$9 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.Gamepad._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
html$._GamepadList.prototype[dart.isList] = true;
dart.addTypeTests(html$._GamepadList);
html$._GamepadList[dart.implements] = () => [ListOfGamepad(), JavaScriptIndexingBehaviorOfGamepad()];
dart.setMethodSignature(html$._GamepadList, () => ({
  __proto__: dart.getMethods(html$._GamepadList.__proto__),
  [$_get]: dart.fnType(html$.Gamepad, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.Gamepad, [core.int]),
  [$item]: dart.fnType(html$.Gamepad, [core.int])
}));
dart.setGetterSignature(html$._GamepadList, () => ({
  __proto__: dart.getGetters(html$._GamepadList.__proto__),
  [$length]: core.int,
  [$first]: html$.Gamepad,
  [$last]: html$.Gamepad,
  [$single]: html$.Gamepad
}));
dart.setSetterSignature(html$._GamepadList, () => ({
  __proto__: dart.getSetters(html$._GamepadList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("GamepadList", html$._GamepadList);
html$._HTMLAllCollection = class _HTMLAllCollection extends _interceptors.Interceptor {
  [_item](...args) {
    return this.item.apply(this, args);
  }
};
dart.addTypeTests(html$._HTMLAllCollection);
dart.setMethodSignature(html$._HTMLAllCollection, () => ({
  __proto__: dart.getMethods(html$._HTMLAllCollection.__proto__),
  [_item]: dart.fnType(html$.Element, [core.int])
}));
dart.registerExtension("HTMLAllCollection", html$._HTMLAllCollection);
html$._HTMLDirectoryElement = class _HTMLDirectoryElement extends html$.HtmlElement {};
(html$._HTMLDirectoryElement.created = function() {
  html$._HTMLDirectoryElement.__proto__.created.call(this);
}).prototype = html$._HTMLDirectoryElement.prototype;
dart.addTypeTests(html$._HTMLDirectoryElement);
dart.registerExtension("HTMLDirectoryElement", html$._HTMLDirectoryElement);
html$._HTMLFontElement = class _HTMLFontElement extends html$.HtmlElement {};
(html$._HTMLFontElement.created = function() {
  html$._HTMLFontElement.__proto__.created.call(this);
}).prototype = html$._HTMLFontElement.prototype;
dart.addTypeTests(html$._HTMLFontElement);
dart.registerExtension("HTMLFontElement", html$._HTMLFontElement);
html$._HTMLFrameElement = class _HTMLFrameElement extends html$.HtmlElement {};
(html$._HTMLFrameElement.created = function() {
  html$._HTMLFrameElement.__proto__.created.call(this);
}).prototype = html$._HTMLFrameElement.prototype;
dart.addTypeTests(html$._HTMLFrameElement);
dart.registerExtension("HTMLFrameElement", html$._HTMLFrameElement);
html$._HTMLFrameSetElement = class _HTMLFrameSetElement extends html$.HtmlElement {};
(html$._HTMLFrameSetElement.created = function() {
  html$._HTMLFrameSetElement.__proto__.created.call(this);
}).prototype = html$._HTMLFrameSetElement.prototype;
dart.addTypeTests(html$._HTMLFrameSetElement);
html$._HTMLFrameSetElement[dart.implements] = () => [html$.WindowEventHandlers];
dart.registerExtension("HTMLFrameSetElement", html$._HTMLFrameSetElement);
html$._HTMLMarqueeElement = class _HTMLMarqueeElement extends html$.HtmlElement {};
(html$._HTMLMarqueeElement.created = function() {
  html$._HTMLMarqueeElement.__proto__.created.call(this);
}).prototype = html$._HTMLMarqueeElement.prototype;
dart.addTypeTests(html$._HTMLMarqueeElement);
dart.registerExtension("HTMLMarqueeElement", html$._HTMLMarqueeElement);
html$._Mojo = class _Mojo extends _interceptors.Interceptor {};
dart.addTypeTests(html$._Mojo);
dart.registerExtension("Mojo", html$._Mojo);
html$._MojoHandle = class _MojoHandle extends _interceptors.Interceptor {};
dart.addTypeTests(html$._MojoHandle);
dart.registerExtension("MojoHandle", html$._MojoHandle);
html$._MojoInterfaceInterceptor = class _MojoInterfaceInterceptor extends html$.EventTarget {
  static new(interfaceName, scope) {
    if (scope === void 0) scope = null;
    if (scope != null) {
      return html$._MojoInterfaceInterceptor._create_1(interfaceName, scope);
    }
    return html$._MojoInterfaceInterceptor._create_2(interfaceName);
  }
  static _create_1(interfaceName, scope) {
    return new MojoInterfaceInterceptor(interfaceName, scope);
  }
  static _create_2(interfaceName) {
    return new MojoInterfaceInterceptor(interfaceName);
  }
};
dart.addTypeTests(html$._MojoInterfaceInterceptor);
dart.registerExtension("MojoInterfaceInterceptor", html$._MojoInterfaceInterceptor);
html$._MojoInterfaceRequestEvent = class _MojoInterfaceRequestEvent extends html$.Event {
  static new(type, eventInitDict) {
    if (eventInitDict === void 0) eventInitDict = null;
    if (eventInitDict != null) {
      let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
      return html$._MojoInterfaceRequestEvent._create_1(type, eventInitDict_1);
    }
    return html$._MojoInterfaceRequestEvent._create_2(type);
  }
  static _create_1(type, eventInitDict) {
    return new MojoInterfaceRequestEvent(type, eventInitDict);
  }
  static _create_2(type) {
    return new MojoInterfaceRequestEvent(type);
  }
};
dart.addTypeTests(html$._MojoInterfaceRequestEvent);
dart.registerExtension("MojoInterfaceRequestEvent", html$._MojoInterfaceRequestEvent);
html$._MojoWatcher = class _MojoWatcher extends _interceptors.Interceptor {};
dart.addTypeTests(html$._MojoWatcher);
dart.registerExtension("MojoWatcher", html$._MojoWatcher);
html$._NFC = class _NFC extends _interceptors.Interceptor {};
dart.addTypeTests(html$._NFC);
dart.registerExtension("NFC", html$._NFC);
const Interceptor_ListMixin$$10 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$10.new = function() {
  Interceptor_ListMixin$$10.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$10.prototype;
dart.applyMixin(Interceptor_ListMixin$$10, collection.ListMixin$(html$.Node));
const Interceptor_ImmutableListMixin$$10 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$10 {};
(Interceptor_ImmutableListMixin$$10.new = function() {
  Interceptor_ImmutableListMixin$$10.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$10.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$10, html$.ImmutableListMixin$(html$.Node));
html$._NamedNodeMap = class _NamedNodeMap extends Interceptor_ImmutableListMixin$$10 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.Node._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$getNamedItem](...args) {
    return this.getNamedItem.apply(this, args);
  }
  [$getNamedItemNS](...args) {
    return this.getNamedItemNS.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
  [$removeNamedItem](...args) {
    return this.removeNamedItem.apply(this, args);
  }
  [$removeNamedItemNS](...args) {
    return this.removeNamedItemNS.apply(this, args);
  }
  [$setNamedItem](...args) {
    return this.setNamedItem.apply(this, args);
  }
  [$setNamedItemNS](...args) {
    return this.setNamedItemNS.apply(this, args);
  }
};
html$._NamedNodeMap.prototype[dart.isList] = true;
dart.addTypeTests(html$._NamedNodeMap);
html$._NamedNodeMap[dart.implements] = () => [JavaScriptIndexingBehaviorOfNode(), ListOfNode()];
dart.setMethodSignature(html$._NamedNodeMap, () => ({
  __proto__: dart.getMethods(html$._NamedNodeMap.__proto__),
  [$_get]: dart.fnType(html$.Node, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.Node, [core.int]),
  [$getNamedItem]: dart.fnType(html$._Attr, [core.String]),
  [$getNamedItemNS]: dart.fnType(html$._Attr, [core.String, core.String]),
  [$item]: dart.fnType(html$._Attr, [core.int]),
  [$removeNamedItem]: dart.fnType(html$._Attr, [core.String]),
  [$removeNamedItemNS]: dart.fnType(html$._Attr, [core.String, core.String]),
  [$setNamedItem]: dart.fnType(html$._Attr, [html$._Attr]),
  [$setNamedItemNS]: dart.fnType(html$._Attr, [html$._Attr])
}));
dart.setGetterSignature(html$._NamedNodeMap, () => ({
  __proto__: dart.getGetters(html$._NamedNodeMap.__proto__),
  [$length]: core.int,
  [$first]: html$.Node,
  [$last]: html$.Node,
  [$single]: html$.Node
}));
dart.setSetterSignature(html$._NamedNodeMap, () => ({
  __proto__: dart.getSetters(html$._NamedNodeMap.__proto__),
  [$length]: core.int
}));
dart.registerExtension("NamedNodeMap", html$._NamedNodeMap);
dart.registerExtension("MozNamedAttrMap", html$._NamedNodeMap);
html$._PagePopupController = class _PagePopupController extends _interceptors.Interceptor {};
dart.addTypeTests(html$._PagePopupController);
dart.registerExtension("PagePopupController", html$._PagePopupController);
html$._Report = class _Report extends _interceptors.Interceptor {
  get [$body]() {
    return this.body;
  }
  get [$type]() {
    return this.type;
  }
  get [$url]() {
    return this.url;
  }
};
dart.addTypeTests(html$._Report);
dart.setFieldSignature(html$._Report, () => ({
  __proto__: dart.getFields(html$._Report.__proto__),
  [$body]: dart.finalFieldType(html$.ReportBody),
  [$type]: dart.finalFieldType(core.String),
  [$url]: dart.finalFieldType(core.String)
}));
dart.registerExtension("Report", html$._Report);
html$._Request = class _Request extends html$.Body {
  static new(input, requestInitDict) {
    if (requestInitDict === void 0) requestInitDict = null;
    if (requestInitDict != null) {
      let requestInitDict_1 = html_common.convertDartToNative_Dictionary(requestInitDict);
      return html$._Request._create_1(input, requestInitDict_1);
    }
    return html$._Request._create_2(input);
  }
  static _create_1(input, requestInitDict) {
    return new Request(input, requestInitDict);
  }
  static _create_2(input) {
    return new Request(input);
  }
  get [$cache]() {
    return this.cache;
  }
  get [$credentials]() {
    return this.credentials;
  }
  get [$headers]() {
    return this.headers;
  }
  get [$integrity]() {
    return this.integrity;
  }
  get [$mode]() {
    return this.mode;
  }
  get [$redirect]() {
    return this.redirect;
  }
  get [$referrer]() {
    return this.referrer;
  }
  get [$referrerPolicy]() {
    return this.referrerPolicy;
  }
  get [$url]() {
    return this.url;
  }
  [$clone](...args) {
    return this.clone.apply(this, args);
  }
};
dart.addTypeTests(html$._Request);
dart.setMethodSignature(html$._Request, () => ({
  __proto__: dart.getMethods(html$._Request.__proto__),
  [$clone]: dart.fnType(html$._Request, [])
}));
dart.setFieldSignature(html$._Request, () => ({
  __proto__: dart.getFields(html$._Request.__proto__),
  [$cache]: dart.finalFieldType(core.String),
  [$credentials]: dart.finalFieldType(core.String),
  [$headers]: dart.finalFieldType(html$.Headers),
  [$integrity]: dart.finalFieldType(core.String),
  [$mode]: dart.finalFieldType(core.String),
  [$redirect]: dart.finalFieldType(core.String),
  [$referrer]: dart.finalFieldType(core.String),
  [$referrerPolicy]: dart.finalFieldType(core.String),
  [$url]: dart.finalFieldType(core.String)
}));
dart.registerExtension("Request", html$._Request);
html$._ResourceProgressEvent = class _ResourceProgressEvent extends html$.ProgressEvent {};
dart.addTypeTests(html$._ResourceProgressEvent);
dart.registerExtension("ResourceProgressEvent", html$._ResourceProgressEvent);
html$._Response = class _Response extends html$.Body {
  static new(body, init) {
    if (body === void 0) body = null;
    if (init === void 0) init = null;
    if (init != null) {
      let init_1 = html_common.convertDartToNative_Dictionary(init);
      return html$._Response._create_1(body, init_1);
    }
    if (body != null) {
      return html$._Response._create_2(body);
    }
    return html$._Response._create_3();
  }
  static _create_1(body, init) {
    return new Response(body, init);
  }
  static _create_2(body) {
    return new Response(body);
  }
  static _create_3() {
    return new Response();
  }
};
dart.addTypeTests(html$._Response);
dart.registerExtension("Response", html$._Response);
const Interceptor_ListMixin$$11 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$11.new = function() {
  Interceptor_ListMixin$$11.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$11.prototype;
dart.applyMixin(Interceptor_ListMixin$$11, collection.ListMixin$(html$.SpeechRecognitionResult));
const Interceptor_ImmutableListMixin$$11 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$11 {};
(Interceptor_ImmutableListMixin$$11.new = function() {
  Interceptor_ImmutableListMixin$$11.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$11.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$11, html$.ImmutableListMixin$(html$.SpeechRecognitionResult));
html$._SpeechRecognitionResultList = class _SpeechRecognitionResultList extends Interceptor_ImmutableListMixin$$11 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.SpeechRecognitionResult._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
html$._SpeechRecognitionResultList.prototype[dart.isList] = true;
dart.addTypeTests(html$._SpeechRecognitionResultList);
html$._SpeechRecognitionResultList[dart.implements] = () => [JavaScriptIndexingBehaviorOfSpeechRecognitionResult(), ListOfSpeechRecognitionResult()];
dart.setMethodSignature(html$._SpeechRecognitionResultList, () => ({
  __proto__: dart.getMethods(html$._SpeechRecognitionResultList.__proto__),
  [$_get]: dart.fnType(html$.SpeechRecognitionResult, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.SpeechRecognitionResult, [core.int]),
  [$item]: dart.fnType(html$.SpeechRecognitionResult, [core.int])
}));
dart.setGetterSignature(html$._SpeechRecognitionResultList, () => ({
  __proto__: dart.getGetters(html$._SpeechRecognitionResultList.__proto__),
  [$length]: core.int,
  [$first]: html$.SpeechRecognitionResult,
  [$last]: html$.SpeechRecognitionResult,
  [$single]: html$.SpeechRecognitionResult
}));
dart.setSetterSignature(html$._SpeechRecognitionResultList, () => ({
  __proto__: dart.getSetters(html$._SpeechRecognitionResultList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("SpeechRecognitionResultList", html$._SpeechRecognitionResultList);
const Interceptor_ListMixin$$12 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$12.new = function() {
  Interceptor_ListMixin$$12.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$12.prototype;
dart.applyMixin(Interceptor_ListMixin$$12, collection.ListMixin$(html$.StyleSheet));
const Interceptor_ImmutableListMixin$$12 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$12 {};
(Interceptor_ImmutableListMixin$$12.new = function() {
  Interceptor_ImmutableListMixin$$12.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$12.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$12, html$.ImmutableListMixin$(html$.StyleSheet));
html$._StyleSheetList = class _StyleSheetList extends Interceptor_ImmutableListMixin$$12 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[index];
  }
  [$_set](index, value) {
    html$.StyleSheet._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [__getter__](...args) {
    return this.__getter__.apply(this, args);
  }
  [$item](...args) {
    return this.item.apply(this, args);
  }
};
html$._StyleSheetList.prototype[dart.isList] = true;
dart.addTypeTests(html$._StyleSheetList);
html$._StyleSheetList[dart.implements] = () => [ListOfStyleSheet(), JavaScriptIndexingBehaviorOfStyleSheet()];
dart.setMethodSignature(html$._StyleSheetList, () => ({
  __proto__: dart.getMethods(html$._StyleSheetList.__proto__),
  [$_get]: dart.fnType(html$.StyleSheet, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(html$.StyleSheet, [core.int]),
  [__getter__]: dart.fnType(html$.CssStyleSheet, [core.String]),
  [$item]: dart.fnType(html$.StyleSheet, [core.int])
}));
dart.setGetterSignature(html$._StyleSheetList, () => ({
  __proto__: dart.getGetters(html$._StyleSheetList.__proto__),
  [$length]: core.int,
  [$first]: html$.StyleSheet,
  [$last]: html$.StyleSheet,
  [$single]: html$.StyleSheet
}));
dart.setSetterSignature(html$._StyleSheetList, () => ({
  __proto__: dart.getSetters(html$._StyleSheetList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("StyleSheetList", html$._StyleSheetList);
html$._SubtleCrypto = class _SubtleCrypto extends _interceptors.Interceptor {};
dart.addTypeTests(html$._SubtleCrypto);
dart.registerExtension("SubtleCrypto", html$._SubtleCrypto);
html$._USB = class _USB extends html$.EventTarget {};
dart.addTypeTests(html$._USB);
dart.registerExtension("USB", html$._USB);
html$._USBAlternateInterface = class _USBAlternateInterface extends _interceptors.Interceptor {
  static new(deviceInterface, alternateSetting) {
    return html$._USBAlternateInterface._create_1(deviceInterface, alternateSetting);
  }
  static _create_1(deviceInterface, alternateSetting) {
    return new USBAlternateInterface(deviceInterface, alternateSetting);
  }
};
dart.addTypeTests(html$._USBAlternateInterface);
dart.registerExtension("USBAlternateInterface", html$._USBAlternateInterface);
html$._USBConfiguration = class _USBConfiguration extends _interceptors.Interceptor {
  static new(device, configurationValue) {
    return html$._USBConfiguration._create_1(device, configurationValue);
  }
  static _create_1(device, configurationValue) {
    return new USBConfiguration(device, configurationValue);
  }
};
dart.addTypeTests(html$._USBConfiguration);
dart.registerExtension("USBConfiguration", html$._USBConfiguration);
html$._USBConnectionEvent = class _USBConnectionEvent extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return html$._USBConnectionEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new USBConnectionEvent(type, eventInitDict);
  }
};
dart.addTypeTests(html$._USBConnectionEvent);
dart.registerExtension("USBConnectionEvent", html$._USBConnectionEvent);
html$._USBDevice = class _USBDevice extends _interceptors.Interceptor {};
dart.addTypeTests(html$._USBDevice);
dart.registerExtension("USBDevice", html$._USBDevice);
html$._USBEndpoint = class _USBEndpoint extends _interceptors.Interceptor {
  static new(alternate, endpointNumber, direction) {
    return html$._USBEndpoint._create_1(alternate, endpointNumber, direction);
  }
  static _create_1(alternate, endpointNumber, direction) {
    return new USBEndpoint(alternate, endpointNumber, direction);
  }
};
dart.addTypeTests(html$._USBEndpoint);
dart.registerExtension("USBEndpoint", html$._USBEndpoint);
html$._USBInTransferResult = class _USBInTransferResult extends _interceptors.Interceptor {
  static new(status, data) {
    if (data === void 0) data = null;
    if (data != null) {
      return html$._USBInTransferResult._create_1(status, data);
    }
    return html$._USBInTransferResult._create_2(status);
  }
  static _create_1(status, data) {
    return new USBInTransferResult(status, data);
  }
  static _create_2(status) {
    return new USBInTransferResult(status);
  }
};
dart.addTypeTests(html$._USBInTransferResult);
dart.registerExtension("USBInTransferResult", html$._USBInTransferResult);
html$._USBInterface = class _USBInterface extends _interceptors.Interceptor {
  static new(configuration, interfaceNumber) {
    return html$._USBInterface._create_1(configuration, interfaceNumber);
  }
  static _create_1(configuration, interfaceNumber) {
    return new USBInterface(configuration, interfaceNumber);
  }
};
dart.addTypeTests(html$._USBInterface);
dart.registerExtension("USBInterface", html$._USBInterface);
html$._USBIsochronousInTransferPacket = class _USBIsochronousInTransferPacket extends _interceptors.Interceptor {
  static new(status, data) {
    if (data === void 0) data = null;
    if (data != null) {
      return html$._USBIsochronousInTransferPacket._create_1(status, data);
    }
    return html$._USBIsochronousInTransferPacket._create_2(status);
  }
  static _create_1(status, data) {
    return new USBIsochronousInTransferPacket(status, data);
  }
  static _create_2(status) {
    return new USBIsochronousInTransferPacket(status);
  }
};
dart.addTypeTests(html$._USBIsochronousInTransferPacket);
dart.registerExtension("USBIsochronousInTransferPacket", html$._USBIsochronousInTransferPacket);
html$._USBIsochronousInTransferResult = class _USBIsochronousInTransferResult extends _interceptors.Interceptor {
  static new(packets, data) {
    if (data === void 0) data = null;
    if (data != null) {
      return html$._USBIsochronousInTransferResult._create_1(packets, data);
    }
    return html$._USBIsochronousInTransferResult._create_2(packets);
  }
  static _create_1(packets, data) {
    return new USBIsochronousInTransferResult(packets, data);
  }
  static _create_2(packets) {
    return new USBIsochronousInTransferResult(packets);
  }
};
dart.addTypeTests(html$._USBIsochronousInTransferResult);
dart.registerExtension("USBIsochronousInTransferResult", html$._USBIsochronousInTransferResult);
html$._USBIsochronousOutTransferPacket = class _USBIsochronousOutTransferPacket extends _interceptors.Interceptor {
  static new(status, bytesWritten) {
    if (bytesWritten === void 0) bytesWritten = null;
    if (bytesWritten != null) {
      return html$._USBIsochronousOutTransferPacket._create_1(status, bytesWritten);
    }
    return html$._USBIsochronousOutTransferPacket._create_2(status);
  }
  static _create_1(status, bytesWritten) {
    return new USBIsochronousOutTransferPacket(status, bytesWritten);
  }
  static _create_2(status) {
    return new USBIsochronousOutTransferPacket(status);
  }
};
dart.addTypeTests(html$._USBIsochronousOutTransferPacket);
dart.registerExtension("USBIsochronousOutTransferPacket", html$._USBIsochronousOutTransferPacket);
html$._USBIsochronousOutTransferResult = class _USBIsochronousOutTransferResult extends _interceptors.Interceptor {
  static new(packets) {
    return html$._USBIsochronousOutTransferResult._create_1(packets);
  }
  static _create_1(packets) {
    return new USBIsochronousOutTransferResult(packets);
  }
};
dart.addTypeTests(html$._USBIsochronousOutTransferResult);
dart.registerExtension("USBIsochronousOutTransferResult", html$._USBIsochronousOutTransferResult);
html$._USBOutTransferResult = class _USBOutTransferResult extends _interceptors.Interceptor {
  static new(status, bytesWritten) {
    if (bytesWritten === void 0) bytesWritten = null;
    if (bytesWritten != null) {
      return html$._USBOutTransferResult._create_1(status, bytesWritten);
    }
    return html$._USBOutTransferResult._create_2(status);
  }
  static _create_1(status, bytesWritten) {
    return new USBOutTransferResult(status, bytesWritten);
  }
  static _create_2(status) {
    return new USBOutTransferResult(status);
  }
};
dart.addTypeTests(html$._USBOutTransferResult);
dart.registerExtension("USBOutTransferResult", html$._USBOutTransferResult);
html$._WindowTimers = class _WindowTimers extends _interceptors.Interceptor {};
dart.addTypeTests(html$._WindowTimers);
html$._WorkerLocation = class _WorkerLocation extends _interceptors.Interceptor {};
dart.addTypeTests(html$._WorkerLocation);
html$._WorkerLocation[dart.implements] = () => [html$.UrlUtilsReadOnly];
dart.registerExtension("WorkerLocation", html$._WorkerLocation);
html$._WorkerNavigator = class _WorkerNavigator extends html$.NavigatorConcurrentHardware {};
dart.addTypeTests(html$._WorkerNavigator);
html$._WorkerNavigator[dart.implements] = () => [html$.NavigatorOnLine, html$.NavigatorID];
dart.registerExtension("WorkerNavigator", html$._WorkerNavigator);
html$._Worklet = class _Worklet extends _interceptors.Interceptor {};
dart.addTypeTests(html$._Worklet);
dart.registerExtension("Worklet", html$._Worklet);
const _matches = Symbol('_matches');
html$._AttributeMap = class _AttributeMap extends collection.MapBase$(core.String, core.String) {
  addAll(other) {
    MapOfString$String()._check(other);
    other[$forEach](dart.fn((k, v) => {
      this._set(k, v);
    }, StringAndStringToNull()));
  }
  cast(K, V) {
    return core.Map.castFrom(core.String, core.String, K, V, this);
  }
  containsValue(value) {
    for (let v of this.values) {
      if (dart.equals(value, v)) {
        return true;
      }
    }
    return false;
  }
  putIfAbsent(key, ifAbsent) {
    core.String._check(key);
    VoidToString()._check(ifAbsent);
    if (!dart.test(this[$containsKey](key))) {
      this._set(key, ifAbsent());
    }
    return this._get(key);
  }
  clear() {
    for (let key of this.keys) {
      this[$remove](key);
    }
  }
  forEach(f) {
    for (let key of this.keys) {
      let value = this._get(key);
      f(key, value);
    }
  }
  get keys() {
    let attributes = this[_element$][_attributes$];
    let keys = JSArrayOfString().of([]);
    for (let i = 0, len = attributes[$length]; i < dart.notNull(len); i++) {
      let attr = html$._Attr._check(attributes[$_get](i));
      if (dart.test(this[_matches](attr))) {
        keys[$add](attr.name);
      }
    }
    return keys;
  }
  get values() {
    let attributes = this[_element$][_attributes$];
    let values = JSArrayOfString().of([]);
    for (let i = 0, len = attributes[$length]; i < dart.notNull(len); i++) {
      let attr = html$._Attr._check(attributes[$_get](i));
      if (dart.test(this[_matches](attr))) {
        values[$add](attr.value);
      }
    }
    return values;
  }
  get isEmpty() {
    return this[$length] === 0;
  }
  get isNotEmpty() {
    return !dart.test(this.isEmpty);
  }
};
(html$._AttributeMap.new = function(element) {
  this[_element$] = element;
}).prototype = html$._AttributeMap.prototype;
dart.addTypeTests(html$._AttributeMap);
dart.setMethodSignature(html$._AttributeMap, () => ({
  __proto__: dart.getMethods(html$._AttributeMap.__proto__),
  addAll: dart.fnType(dart.void, [core.Object]),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  cast: dart.gFnType((K, V) => [core.Map$(K, V), []]),
  [$cast]: dart.gFnType((K, V) => [core.Map$(K, V), []]),
  containsValue: dart.fnType(core.bool, [core.Object]),
  [$containsValue]: dart.fnType(core.bool, [core.Object]),
  putIfAbsent: dart.fnType(core.String, [core.Object, core.Object]),
  [$putIfAbsent]: dart.fnType(core.String, [core.Object, core.Object]),
  clear: dart.fnType(dart.void, []),
  [$clear]: dart.fnType(dart.void, []),
  forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.String])]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.String])])
}));
dart.setGetterSignature(html$._AttributeMap, () => ({
  __proto__: dart.getGetters(html$._AttributeMap.__proto__),
  keys: core.Iterable$(core.String),
  [$keys]: core.Iterable$(core.String),
  values: core.Iterable$(core.String),
  [$values]: core.Iterable$(core.String),
  isEmpty: core.bool,
  [$isEmpty]: core.bool,
  isNotEmpty: core.bool,
  [$isNotEmpty]: core.bool
}));
dart.setFieldSignature(html$._AttributeMap, () => ({
  __proto__: dart.getFields(html$._AttributeMap.__proto__),
  [_element$]: dart.finalFieldType(html$.Element)
}));
dart.defineExtensionMethods(html$._AttributeMap, [
  'addAll',
  'cast',
  'containsValue',
  'putIfAbsent',
  'clear',
  'forEach'
]);
dart.defineExtensionAccessors(html$._AttributeMap, ['keys', 'values', 'isEmpty', 'isNotEmpty']);
html$._ElementAttributeMap = class _ElementAttributeMap extends html$._AttributeMap {
  containsKey(key) {
    return this[_element$][_hasAttribute](core.String._check(key));
  }
  _get(key) {
    return this[_element$][$getAttribute](core.String._check(key));
  }
  _set(key, value) {
    core.String._check(key);
    core.String._check(value);
    this[_element$][$setAttribute](key, value);
    return value;
  }
  remove(key) {
    return typeof key == 'string' ? html$._ElementAttributeMap._remove(this[_element$], key) : null;
  }
  get length() {
    return this.keys[$length];
  }
  [_matches](node) {
    return node[_namespaceUri] == null;
  }
  static _remove(element, key) {
    let value = element.getAttribute(key);
    element.removeAttribute(key);
    return value;
  }
};
(html$._ElementAttributeMap.new = function(element) {
  html$._ElementAttributeMap.__proto__.new.call(this, element);
}).prototype = html$._ElementAttributeMap.prototype;
dart.addTypeTests(html$._ElementAttributeMap);
dart.setMethodSignature(html$._ElementAttributeMap, () => ({
  __proto__: dart.getMethods(html$._ElementAttributeMap.__proto__),
  containsKey: dart.fnType(core.bool, [core.Object]),
  [$containsKey]: dart.fnType(core.bool, [core.Object]),
  _get: dart.fnType(core.String, [core.Object]),
  [$_get]: dart.fnType(core.String, [core.Object]),
  _set: dart.fnType(dart.void, [core.Object, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
  remove: dart.fnType(core.String, [core.Object]),
  [$remove]: dart.fnType(core.String, [core.Object]),
  [_matches]: dart.fnType(core.bool, [html$._Attr])
}));
dart.setGetterSignature(html$._ElementAttributeMap, () => ({
  __proto__: dart.getGetters(html$._ElementAttributeMap.__proto__),
  length: core.int,
  [$length]: core.int
}));
dart.defineExtensionMethods(html$._ElementAttributeMap, ['containsKey', '_get', '_set', 'remove']);
dart.defineExtensionAccessors(html$._ElementAttributeMap, ['length']);
const _namespace = Symbol('_namespace');
html$._NamespacedAttributeMap = class _NamespacedAttributeMap extends html$._AttributeMap {
  containsKey(key) {
    return this[_element$][_hasAttributeNS](this[_namespace], core.String._check(key));
  }
  _get(key) {
    return this[_element$][$getAttributeNS](this[_namespace], core.String._check(key));
  }
  _set(key, value) {
    core.String._check(key);
    core.String._check(value);
    this[_element$][$setAttributeNS](this[_namespace], key, value);
    return value;
  }
  remove(key) {
    return typeof key == 'string' ? html$._NamespacedAttributeMap._remove(this[_namespace], this[_element$], key) : null;
  }
  get length() {
    return this.keys[$length];
  }
  [_matches](node) {
    return node[_namespaceUri] == this[_namespace];
  }
  static _remove(namespace, element, key) {
    let value = element.getAttributeNS(namespace, key);
    element.removeAttributeNS(namespace, key);
    return value;
  }
};
(html$._NamespacedAttributeMap.new = function(element, namespace) {
  this[_namespace] = namespace;
  html$._NamespacedAttributeMap.__proto__.new.call(this, element);
}).prototype = html$._NamespacedAttributeMap.prototype;
dart.addTypeTests(html$._NamespacedAttributeMap);
dart.setMethodSignature(html$._NamespacedAttributeMap, () => ({
  __proto__: dart.getMethods(html$._NamespacedAttributeMap.__proto__),
  containsKey: dart.fnType(core.bool, [core.Object]),
  [$containsKey]: dart.fnType(core.bool, [core.Object]),
  _get: dart.fnType(core.String, [core.Object]),
  [$_get]: dart.fnType(core.String, [core.Object]),
  _set: dart.fnType(dart.void, [core.Object, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
  remove: dart.fnType(core.String, [core.Object]),
  [$remove]: dart.fnType(core.String, [core.Object]),
  [_matches]: dart.fnType(core.bool, [html$._Attr])
}));
dart.setGetterSignature(html$._NamespacedAttributeMap, () => ({
  __proto__: dart.getGetters(html$._NamespacedAttributeMap.__proto__),
  length: core.int,
  [$length]: core.int
}));
dart.setFieldSignature(html$._NamespacedAttributeMap, () => ({
  __proto__: dart.getFields(html$._NamespacedAttributeMap.__proto__),
  [_namespace]: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(html$._NamespacedAttributeMap, ['containsKey', '_get', '_set', 'remove']);
dart.defineExtensionAccessors(html$._NamespacedAttributeMap, ['length']);
const _attr = Symbol('_attr');
const _strip = Symbol('_strip');
const _toHyphenedName = Symbol('_toHyphenedName');
const _toCamelCase = Symbol('_toCamelCase');
html$._DataAttributeMap = class _DataAttributeMap extends collection.MapBase$(core.String, core.String) {
  addAll(other) {
    MapOfString$String()._check(other);
    other[$forEach](dart.fn((k, v) => {
      this._set(k, v);
    }, StringAndStringToNull()));
  }
  cast(K, V) {
    return core.Map.castFrom(core.String, core.String, K, V, this);
  }
  containsValue(value) {
    return this.values[$any](dart.fn(v => core.identical(v, value), StringTobool()));
  }
  containsKey(key) {
    return this[_attributes$][$containsKey](this[_attr](core.String._check(key)));
  }
  _get(key) {
    return this[_attributes$][$_get](this[_attr](core.String._check(key)));
  }
  _set(key, value) {
    core.String._check(key);
    core.String._check(value);
    this[_attributes$][$_set](this[_attr](key), value);
    return value;
  }
  putIfAbsent(key, ifAbsent) {
    core.String._check(key);
    VoidToString()._check(ifAbsent);
    return this[_attributes$][$putIfAbsent](this[_attr](key), ifAbsent);
  }
  remove(key) {
    return this[_attributes$][$remove](this[_attr](core.String._check(key)));
  }
  clear() {
    for (let key of this.keys) {
      this.remove(key);
    }
  }
  forEach(f) {
    this[_attributes$][$forEach](dart.fn((key, value) => {
      if (dart.test(this[_matches](key))) {
        f(this[_strip](key), value);
      }
    }, StringAndStringToNull()));
  }
  get keys() {
    let keys = JSArrayOfString().of([]);
    this[_attributes$][$forEach](dart.fn((key, value) => {
      if (dart.test(this[_matches](key))) {
        keys[$add](this[_strip](key));
      }
    }, StringAndStringToNull()));
    return keys;
  }
  get values() {
    let values = JSArrayOfString().of([]);
    this[_attributes$][$forEach](dart.fn((key, value) => {
      if (dart.test(this[_matches](key))) {
        values[$add](value);
      }
    }, StringAndStringToNull()));
    return values;
  }
  get length() {
    return this.keys[$length];
  }
  get isEmpty() {
    return this.length === 0;
  }
  get isNotEmpty() {
    return !dart.test(this.isEmpty);
  }
  [_attr](key) {
    return "data-" + dart.str(this[_toHyphenedName](key));
  }
  [_matches](key) {
    return key[$startsWith]("data-");
  }
  [_strip](key) {
    return this[_toCamelCase](key[$substring](5));
  }
  [_toCamelCase](hyphenedName, opts) {
    let startUppercase = opts && 'startUppercase' in opts ? opts.startUppercase : false;
    let segments = hyphenedName[$split]("-");
    let start = dart.test(startUppercase) ? 0 : 1;
    for (let i = start; i < dart.notNull(segments[$length]); i++) {
      let segment = segments[$_get](i);
      if (segment.length > 0) {
        segments[$_set](i, segment[$_get](0)[$toUpperCase]() + segment[$substring](1));
      }
    }
    return segments[$join]("");
  }
  [_toHyphenedName](word) {
    let sb = new core.StringBuffer.new();
    for (let i = 0; i < word.length; i++) {
      let lower = word[$_get](i)[$toLowerCase]();
      if (word[$_get](i) !== lower && i > 0) sb.write("-");
      sb.write(lower);
    }
    return sb.toString();
  }
};
(html$._DataAttributeMap.new = function(attributes) {
  this[_attributes$] = attributes;
}).prototype = html$._DataAttributeMap.prototype;
dart.addTypeTests(html$._DataAttributeMap);
dart.setMethodSignature(html$._DataAttributeMap, () => ({
  __proto__: dart.getMethods(html$._DataAttributeMap.__proto__),
  addAll: dart.fnType(dart.void, [core.Object]),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  cast: dart.gFnType((K, V) => [core.Map$(K, V), []]),
  [$cast]: dart.gFnType((K, V) => [core.Map$(K, V), []]),
  containsValue: dart.fnType(core.bool, [core.Object]),
  [$containsValue]: dart.fnType(core.bool, [core.Object]),
  containsKey: dart.fnType(core.bool, [core.Object]),
  [$containsKey]: dart.fnType(core.bool, [core.Object]),
  _get: dart.fnType(core.String, [core.Object]),
  [$_get]: dart.fnType(core.String, [core.Object]),
  _set: dart.fnType(dart.void, [core.Object, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.Object, core.Object]),
  putIfAbsent: dart.fnType(core.String, [core.Object, core.Object]),
  [$putIfAbsent]: dart.fnType(core.String, [core.Object, core.Object]),
  remove: dart.fnType(core.String, [core.Object]),
  [$remove]: dart.fnType(core.String, [core.Object]),
  clear: dart.fnType(dart.void, []),
  [$clear]: dart.fnType(dart.void, []),
  forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.String])]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.String])]),
  [_attr]: dart.fnType(core.String, [core.String]),
  [_matches]: dart.fnType(core.bool, [core.String]),
  [_strip]: dart.fnType(core.String, [core.String]),
  [_toCamelCase]: dart.fnType(core.String, [core.String], {startUppercase: core.bool}),
  [_toHyphenedName]: dart.fnType(core.String, [core.String])
}));
dart.setGetterSignature(html$._DataAttributeMap, () => ({
  __proto__: dart.getGetters(html$._DataAttributeMap.__proto__),
  keys: core.Iterable$(core.String),
  [$keys]: core.Iterable$(core.String),
  values: core.Iterable$(core.String),
  [$values]: core.Iterable$(core.String),
  length: core.int,
  [$length]: core.int,
  isEmpty: core.bool,
  [$isEmpty]: core.bool,
  isNotEmpty: core.bool,
  [$isNotEmpty]: core.bool
}));
dart.setFieldSignature(html$._DataAttributeMap, () => ({
  __proto__: dart.getFields(html$._DataAttributeMap.__proto__),
  [_attributes$]: dart.finalFieldType(MapOfString$String())
}));
dart.defineExtensionMethods(html$._DataAttributeMap, [
  'addAll',
  'cast',
  'containsValue',
  'containsKey',
  '_get',
  '_set',
  'putIfAbsent',
  'remove',
  'clear',
  'forEach'
]);
dart.defineExtensionAccessors(html$._DataAttributeMap, [
  'keys',
  'values',
  'length',
  'isEmpty',
  'isNotEmpty'
]);
html$.CanvasImageSource = class CanvasImageSource extends core.Object {};
(html$.CanvasImageSource.new = function() {
}).prototype = html$.CanvasImageSource.prototype;
dart.addTypeTests(html$.CanvasImageSource);
html$.WindowBase = class WindowBase extends core.Object {};
(html$.WindowBase.new = function() {
}).prototype = html$.WindowBase.prototype;
dart.addTypeTests(html$.WindowBase);
html$.WindowBase[dart.implements] = () => [html$.EventTarget];
html$.LocationBase = class LocationBase extends core.Object {};
(html$.LocationBase.new = function() {
}).prototype = html$.LocationBase.prototype;
dart.addTypeTests(html$.LocationBase);
html$.HistoryBase = class HistoryBase extends core.Object {};
(html$.HistoryBase.new = function() {
}).prototype = html$.HistoryBase.prototype;
dart.addTypeTests(html$.HistoryBase);
html$.CssClassSet = class CssClassSet extends core.Object {};
(html$.CssClassSet.new = function() {
}).prototype = html$.CssClassSet.prototype;
dart.addTypeTests(html$.CssClassSet);
html$.CssClassSet[dart.implements] = () => [SetOfString()];
const _addOrSubtractToBoxModel = Symbol('_addOrSubtractToBoxModel');
html$.CssRect = class CssRect extends core.Object {
  set height(newHeight) {
    dart.throw(new core.UnsupportedError.new("Can only set height for content rect."));
  }
  set width(newWidth) {
    dart.throw(new core.UnsupportedError.new("Can only set width for content rect."));
  }
  [_addOrSubtractToBoxModel](dimensions, augmentingMeasurement) {
    let styles = this[_element$][$getComputedStyle]();
    let val = 0;
    for (let measurement of dimensions) {
      if (augmentingMeasurement == html$._MARGIN) {
        val = val + dart.notNull(new html$.Dimension.css(styles[$getPropertyValue](dart.str(augmentingMeasurement) + "-" + dart.str(measurement))).value);
      }
      if (augmentingMeasurement == html$._CONTENT) {
        val = val - dart.notNull(new html$.Dimension.css(styles[$getPropertyValue](dart.str(html$._PADDING) + "-" + dart.str(measurement))).value);
      }
      if (augmentingMeasurement != html$._MARGIN) {
        val = val - dart.notNull(new html$.Dimension.css(styles[$getPropertyValue]("border-" + dart.str(measurement) + "-width")).value);
      }
    }
    return val;
  }
  get right() {
    return dart.notNull(this.left) + dart.notNull(this.width);
  }
  get bottom() {
    return dart.notNull(this.top) + dart.notNull(this.height);
  }
  toString() {
    return "Rectangle (" + dart.str(this.left) + ", " + dart.str(this.top) + ") " + dart.str(this.width) + " x " + dart.str(this.height);
  }
  _equals(other) {
    if (!RectangleOfnum().is(other)) return false;
    return core.identical(this.left, dart.dload(other, 'left')) && core.identical(this.top, dart.dload(other, 'top')) && core.identical(this.right, dart.dload(other, 'right')) && core.identical(this.bottom, dart.dload(other, 'bottom'));
  }
  get hashCode() {
    return html$._JenkinsSmiHash.hash4(dart.hashCode(this.left), dart.hashCode(this.top), dart.hashCode(this.right), dart.hashCode(this.bottom));
  }
  intersection(other) {
    let x0 = math.max(core.num, this.left, other[$left]);
    let x1 = math.min(core.num, dart.notNull(this.left) + dart.notNull(this.width), dart.notNull(other[$left]) + dart.notNull(other[$width]));
    if (x0 <= x1) {
      let y0 = math.max(core.num, this.top, other[$top]);
      let y1 = math.min(core.num, dart.notNull(this.top) + dart.notNull(this.height), dart.notNull(other[$top]) + dart.notNull(other[$height]));
      if (y0 <= y1) {
        return new (RectangleOfnum()).new(x0, y0, x1 - x0, y1 - y0);
      }
    }
    return null;
  }
  intersects(other) {
    return dart.notNull(this.left) <= dart.notNull(other[$left]) + dart.notNull(other[$width]) && dart.notNull(other[$left]) <= dart.notNull(this.left) + dart.notNull(this.width) && dart.notNull(this.top) <= dart.notNull(other[$top]) + dart.notNull(other[$height]) && dart.notNull(other[$top]) <= dart.notNull(this.top) + dart.notNull(this.height);
  }
  boundingBox(other) {
    let right = math.max(core.num, dart.notNull(this.left) + dart.notNull(this.width), dart.notNull(other[$left]) + dart.notNull(other[$width]));
    let bottom = math.max(core.num, dart.notNull(this.top) + dart.notNull(this.height), dart.notNull(other[$top]) + dart.notNull(other[$height]));
    let left = math.min(core.num, this.left, other[$left]);
    let top = math.min(core.num, this.top, other[$top]);
    return new (RectangleOfnum()).new(left, top, right - left, bottom - top);
  }
  containsRectangle(another) {
    return dart.notNull(this.left) <= dart.notNull(another[$left]) && dart.notNull(this.left) + dart.notNull(this.width) >= dart.notNull(another[$left]) + dart.notNull(another[$width]) && dart.notNull(this.top) <= dart.notNull(another[$top]) && dart.notNull(this.top) + dart.notNull(this.height) >= dart.notNull(another[$top]) + dart.notNull(another[$height]);
  }
  containsPoint(another) {
    return dart.notNull(another.x) >= dart.notNull(this.left) && dart.notNull(another.x) <= dart.notNull(this.left) + dart.notNull(this.width) && dart.notNull(another.y) >= dart.notNull(this.top) && dart.notNull(another.y) <= dart.notNull(this.top) + dart.notNull(this.height);
  }
  get topLeft() {
    return new (PointOfnum()).new(this.left, this.top);
  }
  get topRight() {
    return new (PointOfnum()).new(dart.notNull(this.left) + dart.notNull(this.width), this.top);
  }
  get bottomRight() {
    return new (PointOfnum()).new(dart.notNull(this.left) + dart.notNull(this.width), dart.notNull(this.top) + dart.notNull(this.height));
  }
  get bottomLeft() {
    return new (PointOfnum()).new(this.left, dart.notNull(this.top) + dart.notNull(this.height));
  }
};
(html$.CssRect.new = function(element) {
  this[_element$] = element;
}).prototype = html$.CssRect.prototype;
dart.addTypeTests(html$.CssRect);
html$.CssRect[dart.implements] = () => [RectangleOfnum()];
dart.setMethodSignature(html$.CssRect, () => ({
  __proto__: dart.getMethods(html$.CssRect.__proto__),
  [_addOrSubtractToBoxModel]: dart.fnType(core.num, [core.List$(core.String), core.String]),
  intersection: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
  [$intersection]: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
  intersects: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
  [$intersects]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
  boundingBox: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
  [$boundingBox]: dart.fnType(math.Rectangle$(core.num), [math.Rectangle$(core.num)]),
  containsRectangle: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
  [$containsRectangle]: dart.fnType(core.bool, [math.Rectangle$(core.num)]),
  containsPoint: dart.fnType(core.bool, [math.Point$(core.num)]),
  [$containsPoint]: dart.fnType(core.bool, [math.Point$(core.num)])
}));
dart.setGetterSignature(html$.CssRect, () => ({
  __proto__: dart.getGetters(html$.CssRect.__proto__),
  right: core.num,
  [$right]: core.num,
  bottom: core.num,
  [$bottom]: core.num,
  topLeft: math.Point$(core.num),
  [$topLeft]: math.Point$(core.num),
  topRight: math.Point$(core.num),
  [$topRight]: math.Point$(core.num),
  bottomRight: math.Point$(core.num),
  [$bottomRight]: math.Point$(core.num),
  bottomLeft: math.Point$(core.num),
  [$bottomLeft]: math.Point$(core.num)
}));
dart.setSetterSignature(html$.CssRect, () => ({
  __proto__: dart.getSetters(html$.CssRect.__proto__),
  height: dart.dynamic,
  [$height]: dart.dynamic,
  width: dart.dynamic,
  [$width]: dart.dynamic
}));
dart.setFieldSignature(html$.CssRect, () => ({
  __proto__: dart.getFields(html$.CssRect.__proto__),
  [_element$]: dart.fieldType(html$.Element)
}));
dart.defineExtensionMethods(html$.CssRect, [
  'toString',
  '_equals',
  'intersection',
  'intersects',
  'boundingBox',
  'containsRectangle',
  'containsPoint'
]);
dart.defineExtensionAccessors(html$.CssRect, [
  'height',
  'width',
  'right',
  'bottom',
  'hashCode',
  'topLeft',
  'topRight',
  'bottomRight',
  'bottomLeft'
]);
html$._ContentCssRect = class _ContentCssRect extends html$.CssRect {
  get height() {
    return dart.notNull(this[_element$][$offsetHeight]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._HEIGHT, html$._CONTENT));
  }
  get width() {
    return dart.notNull(this[_element$][$offsetWidth]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._WIDTH, html$._CONTENT));
  }
  set height(newHeight) {
    if (html$.Dimension.is(newHeight)) {
      let newHeightAsDimension = html$.Dimension._check(newHeight);
      if (dart.notNull(newHeightAsDimension.value) < 0) newHeight = new html$.Dimension.px(0);
      this[_element$].style[$height] = dart.toString(newHeight);
    } else if (typeof newHeight == 'number') {
      if (dart.dtest(dart.dsend(newHeight, '<', [0]))) newHeight = 0;
      this[_element$].style[$height] = dart.str(newHeight) + "px";
    } else {
      dart.throw(new core.ArgumentError.new("newHeight is not a Dimension or num"));
    }
  }
  set width(newWidth) {
    if (html$.Dimension.is(newWidth)) {
      let newWidthAsDimension = html$.Dimension._check(newWidth);
      if (dart.notNull(newWidthAsDimension.value) < 0) newWidth = new html$.Dimension.px(0);
      this[_element$].style[$width] = dart.toString(newWidth);
    } else if (typeof newWidth == 'number') {
      if (dart.dtest(dart.dsend(newWidth, '<', [0]))) newWidth = 0;
      this[_element$].style[$width] = dart.str(newWidth) + "px";
    } else {
      dart.throw(new core.ArgumentError.new("newWidth is not a Dimension or num"));
    }
  }
  get left() {
    return dart.notNull(this[_element$].getBoundingClientRect()[$left]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["left"]), html$._CONTENT));
  }
  get top() {
    return dart.notNull(this[_element$].getBoundingClientRect()[$top]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["top"]), html$._CONTENT));
  }
};
(html$._ContentCssRect.new = function(element) {
  html$._ContentCssRect.__proto__.new.call(this, element);
}).prototype = html$._ContentCssRect.prototype;
dart.addTypeTests(html$._ContentCssRect);
dart.setGetterSignature(html$._ContentCssRect, () => ({
  __proto__: dart.getGetters(html$._ContentCssRect.__proto__),
  height: core.num,
  [$height]: core.num,
  width: core.num,
  [$width]: core.num,
  left: core.num,
  [$left]: core.num,
  top: core.num,
  [$top]: core.num
}));
dart.defineExtensionAccessors(html$._ContentCssRect, ['height', 'width', 'left', 'top']);
const _elementList = Symbol('_elementList');
html$._ContentCssListRect = class _ContentCssListRect extends html$._ContentCssRect {
  set height(newHeight) {
    this[_elementList][$forEach](dart.fn(e => e[$contentEdge].height = newHeight, ElementTodynamic()));
  }
  get height() {
    return super.height;
  }
  set width(newWidth) {
    this[_elementList][$forEach](dart.fn(e => e[$contentEdge].width = newWidth, ElementTodynamic()));
  }
  get width() {
    return super.width;
  }
};
(html$._ContentCssListRect.new = function(elementList) {
  this[_elementList] = null;
  html$._ContentCssListRect.__proto__.new.call(this, elementList[$first]);
  this[_elementList] = elementList;
}).prototype = html$._ContentCssListRect.prototype;
dart.addTypeTests(html$._ContentCssListRect);
dart.setFieldSignature(html$._ContentCssListRect, () => ({
  __proto__: dart.getFields(html$._ContentCssListRect.__proto__),
  [_elementList]: dart.fieldType(ListOfElement())
}));
dart.defineExtensionAccessors(html$._ContentCssListRect, ['height', 'width']);
html$._PaddingCssRect = class _PaddingCssRect extends html$.CssRect {
  get height() {
    return dart.notNull(this[_element$][$offsetHeight]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._HEIGHT, html$._PADDING));
  }
  set height(value) {
    super.height = value;
  }
  get width() {
    return dart.notNull(this[_element$][$offsetWidth]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._WIDTH, html$._PADDING));
  }
  set width(value) {
    super.width = value;
  }
  get left() {
    return dart.notNull(this[_element$].getBoundingClientRect()[$left]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["left"]), html$._PADDING));
  }
  get top() {
    return dart.notNull(this[_element$].getBoundingClientRect()[$top]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["top"]), html$._PADDING));
  }
};
(html$._PaddingCssRect.new = function(element) {
  html$._PaddingCssRect.__proto__.new.call(this, html$.Element._check(element));
}).prototype = html$._PaddingCssRect.prototype;
dart.addTypeTests(html$._PaddingCssRect);
dart.setGetterSignature(html$._PaddingCssRect, () => ({
  __proto__: dart.getGetters(html$._PaddingCssRect.__proto__),
  height: core.num,
  [$height]: core.num,
  width: core.num,
  [$width]: core.num,
  left: core.num,
  [$left]: core.num,
  top: core.num,
  [$top]: core.num
}));
dart.defineExtensionAccessors(html$._PaddingCssRect, ['height', 'width', 'left', 'top']);
html$._BorderCssRect = class _BorderCssRect extends html$.CssRect {
  get height() {
    return this[_element$][$offsetHeight];
  }
  set height(value) {
    super.height = value;
  }
  get width() {
    return this[_element$][$offsetWidth];
  }
  set width(value) {
    super.width = value;
  }
  get left() {
    return this[_element$].getBoundingClientRect()[$left];
  }
  get top() {
    return this[_element$].getBoundingClientRect()[$top];
  }
};
(html$._BorderCssRect.new = function(element) {
  html$._BorderCssRect.__proto__.new.call(this, html$.Element._check(element));
}).prototype = html$._BorderCssRect.prototype;
dart.addTypeTests(html$._BorderCssRect);
dart.setGetterSignature(html$._BorderCssRect, () => ({
  __proto__: dart.getGetters(html$._BorderCssRect.__proto__),
  height: core.num,
  [$height]: core.num,
  width: core.num,
  [$width]: core.num,
  left: core.num,
  [$left]: core.num,
  top: core.num,
  [$top]: core.num
}));
dart.defineExtensionAccessors(html$._BorderCssRect, ['height', 'width', 'left', 'top']);
html$._MarginCssRect = class _MarginCssRect extends html$.CssRect {
  get height() {
    return dart.notNull(this[_element$][$offsetHeight]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._HEIGHT, html$._MARGIN));
  }
  set height(value) {
    super.height = value;
  }
  get width() {
    return dart.notNull(this[_element$][$offsetWidth]) + dart.notNull(this[_addOrSubtractToBoxModel](html$._WIDTH, html$._MARGIN));
  }
  set width(value) {
    super.width = value;
  }
  get left() {
    return dart.notNull(this[_element$].getBoundingClientRect()[$left]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["left"]), html$._MARGIN));
  }
  get top() {
    return dart.notNull(this[_element$].getBoundingClientRect()[$top]) - dart.notNull(this[_addOrSubtractToBoxModel](JSArrayOfString().of(["top"]), html$._MARGIN));
  }
};
(html$._MarginCssRect.new = function(element) {
  html$._MarginCssRect.__proto__.new.call(this, html$.Element._check(element));
}).prototype = html$._MarginCssRect.prototype;
dart.addTypeTests(html$._MarginCssRect);
dart.setGetterSignature(html$._MarginCssRect, () => ({
  __proto__: dart.getGetters(html$._MarginCssRect.__proto__),
  height: core.num,
  [$height]: core.num,
  width: core.num,
  [$width]: core.num,
  left: core.num,
  [$left]: core.num,
  top: core.num,
  [$top]: core.num
}));
dart.defineExtensionAccessors(html$._MarginCssRect, ['height', 'width', 'left', 'top']);
dart.defineLazy(html$, {
  /*html$._HEIGHT*/get _HEIGHT() {
    return JSArrayOfString().of(["top", "bottom"]);
  },
  /*html$._WIDTH*/get _WIDTH() {
    return JSArrayOfString().of(["right", "left"]);
  },
  /*html$._CONTENT*/get _CONTENT() {
    return "content";
  },
  /*html$._PADDING*/get _PADDING() {
    return "padding";
  },
  /*html$._MARGIN*/get _MARGIN() {
    return "margin";
  }
});
const _sets = Symbol('_sets');
const _validateToken = Symbol('_validateToken');
html_common.CssClassSetImpl = class CssClassSetImpl extends collection.SetBase$(core.String) {
  [_validateToken](value) {
    if (dart.test(html_common.CssClassSetImpl._validTokenRE.hasMatch(value))) return value;
    dart.throw(new core.ArgumentError.value(value, "value", "Not a valid class token"));
  }
  toString() {
    return this.readClasses().join(" ");
  }
  toggle(value, shouldAdd) {
    if (shouldAdd === void 0) shouldAdd = null;
    this[_validateToken](value);
    let s = this.readClasses();
    let result = false;
    if (shouldAdd == null) shouldAdd = !dart.test(s.contains(value));
    if (dart.test(shouldAdd)) {
      s.add(value);
      result = true;
    } else {
      s.remove(value);
    }
    this.writeClasses(s);
    return result;
  }
  get frozen() {
    return false;
  }
  get iterator() {
    return this.readClasses().iterator;
  }
  forEach(f) {
    this.readClasses().forEach(f);
  }
  join(separator) {
    if (separator === void 0) separator = "";
    return this.readClasses().join(separator);
  }
  map(T, f) {
    return core.Iterable$(T)._check(this.readClasses().map(T, f));
  }
  where(f) {
    return this.readClasses().where(f);
  }
  expand(T, f) {
    return core.Iterable$(T)._check(this.readClasses().expand(T, f));
  }
  every(f) {
    return this.readClasses().every(f);
  }
  any(f) {
    return this.readClasses().any(f);
  }
  get isEmpty() {
    return this.readClasses().isEmpty;
  }
  get isNotEmpty() {
    return this.readClasses().isNotEmpty;
  }
  get length() {
    return this.readClasses().length;
  }
  reduce(combine) {
    StringAndStringToString()._check(combine);
    return this.readClasses().reduce(combine);
  }
  fold(T, initialValue, combine) {
    return T._check(this.readClasses().fold(T, initialValue, combine));
  }
  contains(value) {
    if (!(typeof value == 'string')) return false;
    this[_validateToken](core.String._check(value));
    return this.readClasses().contains(value);
  }
  lookup(value) {
    return core.String._check(dart.test(this.contains(value)) ? value : null);
  }
  add(value) {
    core.String._check(value);
    this[_validateToken](value);
    return core.bool._check(this.modify(dart.fn(s => s.add(value), SetOfStringTobool())));
  }
  remove(value) {
    this[_validateToken](core.String._check(value));
    if (!(typeof value == 'string')) return false;
    let s = this.readClasses();
    let result = s.remove(value);
    this.writeClasses(s);
    return result;
  }
  addAll(iterable) {
    IterableOfString()._check(iterable);
    this.modify(dart.fn(s => s.addAll(IterableOfString()._check(iterable[$map](core.String, dart.bind(this, _validateToken)))), SetOfStringTovoid()));
  }
  removeAll(iterable) {
    this.modify(dart.fn(s => s.removeAll(iterable), SetOfStringTovoid()));
  }
  toggleAll(iterable, shouldAdd) {
    if (shouldAdd === void 0) shouldAdd = null;
    iterable[$forEach](dart.fn(e => this.toggle(e, shouldAdd), StringTobool()));
  }
  retainAll(iterable) {
    this.modify(dart.fn(s => s.retainAll(iterable), SetOfStringTovoid()));
  }
  removeWhere(test) {
    this.modify(dart.fn(s => s.removeWhere(test), SetOfStringTovoid()));
  }
  retainWhere(test) {
    this.modify(dart.fn(s => s.retainWhere(test), SetOfStringTovoid()));
  }
  containsAll(collection) {
    return this.readClasses().containsAll(collection);
  }
  intersection(other) {
    return this.readClasses().intersection(other);
  }
  union(other) {
    SetOfString()._check(other);
    return this.readClasses().union(other);
  }
  difference(other) {
    return this.readClasses().difference(other);
  }
  get first() {
    return this.readClasses().first;
  }
  get last() {
    return this.readClasses().last;
  }
  get single() {
    return this.readClasses().single;
  }
  toList(opts) {
    let growable = opts && 'growable' in opts ? opts.growable : true;
    return this.readClasses().toList({growable: growable});
  }
  toSet() {
    return this.readClasses().toSet();
  }
  take(n) {
    return this.readClasses().take(n);
  }
  takeWhile(test) {
    return this.readClasses().takeWhile(test);
  }
  skip(n) {
    return this.readClasses().skip(n);
  }
  skipWhile(test) {
    return this.readClasses().skipWhile(test);
  }
  firstWhere(test, opts) {
    let orElse = opts && 'orElse' in opts ? opts.orElse : null;
    VoidToString()._check(orElse);
    return this.readClasses().firstWhere(test, {orElse: orElse});
  }
  lastWhere(test, opts) {
    let orElse = opts && 'orElse' in opts ? opts.orElse : null;
    VoidToString()._check(orElse);
    return this.readClasses().lastWhere(test, {orElse: orElse});
  }
  singleWhere(test, opts) {
    let orElse = opts && 'orElse' in opts ? opts.orElse : null;
    VoidToString()._check(orElse);
    return this.readClasses().singleWhere(test, {orElse: orElse});
  }
  elementAt(index) {
    return this.readClasses().elementAt(index);
  }
  clear() {
    this.modify(dart.fn(s => s.clear(), SetOfStringTovoid()));
  }
  modify(f) {
    let s = this.readClasses();
    let ret = f(s);
    this.writeClasses(s);
    return ret;
  }
};
(html_common.CssClassSetImpl.new = function() {
}).prototype = html_common.CssClassSetImpl.prototype;
dart.addTypeTests(html_common.CssClassSetImpl);
html_common.CssClassSetImpl[dart.implements] = () => [html$.CssClassSet];
dart.setMethodSignature(html_common.CssClassSetImpl, () => ({
  __proto__: dart.getMethods(html_common.CssClassSetImpl.__proto__),
  [_validateToken]: dart.fnType(core.String, [core.String]),
  toString: dart.fnType(core.String, []),
  [$toString]: dart.fnType(core.String, []),
  toggle: dart.fnType(core.bool, [core.String], [core.bool]),
  forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String])]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String])]),
  join: dart.fnType(core.String, [], [core.String]),
  [$join]: dart.fnType(core.String, [], [core.String]),
  map: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [core.String])]]),
  [$map]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(T, [core.String])]]),
  where: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
  [$where]: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
  expand: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [core.String])]]),
  [$expand]: dart.gFnType(T => [core.Iterable$(T), [dart.fnType(core.Iterable$(T), [core.String])]]),
  every: dart.fnType(core.bool, [dart.fnType(core.bool, [core.String])]),
  [$every]: dart.fnType(core.bool, [dart.fnType(core.bool, [core.String])]),
  any: dart.fnType(core.bool, [dart.fnType(core.bool, [core.String])]),
  [$any]: dart.fnType(core.bool, [dart.fnType(core.bool, [core.String])]),
  reduce: dart.fnType(core.String, [core.Object]),
  [$reduce]: dart.fnType(core.String, [core.Object]),
  fold: dart.gFnType(T => [T, [T, dart.fnType(T, [T, core.String])]]),
  [$fold]: dart.gFnType(T => [T, [T, dart.fnType(T, [T, core.String])]]),
  contains: dart.fnType(core.bool, [core.Object]),
  [$contains]: dart.fnType(core.bool, [core.Object]),
  lookup: dart.fnType(core.String, [core.Object]),
  add: dart.fnType(core.bool, [core.Object]),
  remove: dart.fnType(core.bool, [core.Object]),
  addAll: dart.fnType(dart.void, [core.Object]),
  removeAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
  toggleAll: dart.fnType(dart.void, [core.Iterable$(core.String)], [core.bool]),
  retainAll: dart.fnType(dart.void, [core.Iterable$(core.Object)]),
  removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [core.String])]),
  retainWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [core.String])]),
  containsAll: dart.fnType(core.bool, [core.Iterable$(core.Object)]),
  intersection: dart.fnType(core.Set$(core.String), [core.Set$(core.Object)]),
  union: dart.fnType(core.Set$(core.String), [core.Object]),
  difference: dart.fnType(core.Set$(core.String), [core.Set$(core.Object)]),
  toList: dart.fnType(core.List$(core.String), [], {growable: core.bool}),
  [$toList]: dart.fnType(core.List$(core.String), [], {growable: core.bool}),
  toSet: dart.fnType(core.Set$(core.String), []),
  [$toSet]: dart.fnType(core.Set$(core.String), []),
  take: dart.fnType(core.Iterable$(core.String), [core.int]),
  [$take]: dart.fnType(core.Iterable$(core.String), [core.int]),
  takeWhile: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
  [$takeWhile]: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
  skip: dart.fnType(core.Iterable$(core.String), [core.int]),
  [$skip]: dart.fnType(core.Iterable$(core.String), [core.int]),
  skipWhile: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
  [$skipWhile]: dart.fnType(core.Iterable$(core.String), [dart.fnType(core.bool, [core.String])]),
  firstWhere: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
  [$firstWhere]: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
  lastWhere: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
  [$lastWhere]: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
  singleWhere: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
  [$singleWhere]: dart.fnType(core.String, [dart.fnType(core.bool, [core.String])], {orElse: core.Object}),
  elementAt: dart.fnType(core.String, [core.int]),
  [$elementAt]: dart.fnType(core.String, [core.int]),
  clear: dart.fnType(dart.void, []),
  modify: dart.fnType(dart.dynamic, [dart.fnType(dart.dynamic, [core.Set$(core.String)])])
}));
dart.setGetterSignature(html_common.CssClassSetImpl, () => ({
  __proto__: dart.getGetters(html_common.CssClassSetImpl.__proto__),
  frozen: core.bool,
  iterator: core.Iterator$(core.String),
  [$iterator]: core.Iterator$(core.String),
  isEmpty: core.bool,
  [$isEmpty]: core.bool,
  isNotEmpty: core.bool,
  [$isNotEmpty]: core.bool,
  length: core.int,
  [$length]: core.int,
  first: core.String,
  [$first]: core.String,
  last: core.String,
  [$last]: core.String,
  single: core.String,
  [$single]: core.String
}));
dart.defineExtensionMethods(html_common.CssClassSetImpl, [
  'toString',
  'forEach',
  'join',
  'map',
  'where',
  'expand',
  'every',
  'any',
  'reduce',
  'fold',
  'contains',
  'toList',
  'toSet',
  'take',
  'takeWhile',
  'skip',
  'skipWhile',
  'firstWhere',
  'lastWhere',
  'singleWhere',
  'elementAt'
]);
dart.defineExtensionAccessors(html_common.CssClassSetImpl, [
  'iterator',
  'isEmpty',
  'isNotEmpty',
  'length',
  'first',
  'last',
  'single'
]);
dart.defineLazy(html_common.CssClassSetImpl, {
  /*html_common.CssClassSetImpl._validTokenRE*/get _validTokenRE() {
    return core.RegExp.new("^\\S+$");
  }
});
html$._MultiElementCssClassSet = class _MultiElementCssClassSet extends html_common.CssClassSetImpl {
  static new(elements) {
    return new html$._MultiElementCssClassSet.__(elements, ListOfCssClassSetImpl().from(elements[$map](dart.dynamic, dart.fn(e => e[$classes], ElementToCssClassSet()))));
  }
  readClasses() {
    let s = new (_IdentityHashSetOfString()).new();
    this[_sets][$forEach](dart.fn(e => s.addAll(e.readClasses()), CssClassSetImplTovoid()));
    return s;
  }
  writeClasses(s) {
    let classes = s.join(" ");
    for (let e of this[_elementIterable]) {
      e.className = classes;
    }
  }
  modify(f) {
    this[_sets][$forEach](dart.fn(e => e.modify(f), CssClassSetImplTodynamic()));
  }
  toggle(value, shouldAdd) {
    if (shouldAdd === void 0) shouldAdd = null;
    return core.bool._check(this[_sets][$fold](core.bool, false, dart.fn((changed, e) => dart.test(e.toggle(value, shouldAdd)) || dart.test(changed), boolAndCssClassSetImplTobool())));
  }
  remove(value) {
    return core.bool._check(this[_sets][$fold](core.bool, false, dart.fn((changed, e) => dart.test(e.remove(value)) || dart.test(changed), boolAndCssClassSetImplTobool())));
  }
};
(html$._MultiElementCssClassSet.__ = function(elementIterable, sets) {
  this[_elementIterable] = elementIterable;
  this[_sets] = sets;
}).prototype = html$._MultiElementCssClassSet.prototype;
dart.addTypeTests(html$._MultiElementCssClassSet);
dart.setMethodSignature(html$._MultiElementCssClassSet, () => ({
  __proto__: dart.getMethods(html$._MultiElementCssClassSet.__proto__),
  readClasses: dart.fnType(core.Set$(core.String), []),
  writeClasses: dart.fnType(dart.void, [core.Set$(core.String)])
}));
dart.setFieldSignature(html$._MultiElementCssClassSet, () => ({
  __proto__: dart.getFields(html$._MultiElementCssClassSet.__proto__),
  [_elementIterable]: dart.finalFieldType(IterableOfElement()),
  [_sets]: dart.finalFieldType(ListOfCssClassSetImpl())
}));
html$._ElementCssClassSet = class _ElementCssClassSet extends html_common.CssClassSetImpl {
  readClasses() {
    let s = new (_IdentityHashSetOfString()).new();
    let classname = this[_element$].className;
    for (let name of classname[$split](" ")) {
      let trimmed = name[$trim]();
      if (!trimmed[$isEmpty]) {
        s.add(trimmed);
      }
    }
    return s;
  }
  writeClasses(s) {
    this[_element$].className = s.join(" ");
  }
  get length() {
    return html$._ElementCssClassSet._classListLength(html$._ElementCssClassSet._classListOf(this[_element$]));
  }
  get isEmpty() {
    return this.length === 0;
  }
  get isNotEmpty() {
    return this.length !== 0;
  }
  clear() {
    this[_element$].className = "";
  }
  contains(value) {
    return html$._ElementCssClassSet._contains(this[_element$], value);
  }
  add(value) {
    core.String._check(value);
    return html$._ElementCssClassSet._add(this[_element$], value);
  }
  remove(value) {
    return typeof value == 'string' && dart.test(html$._ElementCssClassSet._remove(this[_element$], value));
  }
  toggle(value, shouldAdd) {
    if (shouldAdd === void 0) shouldAdd = null;
    return html$._ElementCssClassSet._toggle(this[_element$], value, shouldAdd);
  }
  addAll(iterable) {
    IterableOfString()._check(iterable);
    html$._ElementCssClassSet._addAll(this[_element$], iterable);
  }
  removeAll(iterable) {
    html$._ElementCssClassSet._removeAll(this[_element$], iterable);
  }
  retainAll(iterable) {
    html$._ElementCssClassSet._removeWhere(this[_element$], dart.bind(iterable[$toSet](), 'contains'), false);
  }
  removeWhere(test) {
    html$._ElementCssClassSet._removeWhere(this[_element$], test, true);
  }
  retainWhere(test) {
    html$._ElementCssClassSet._removeWhere(this[_element$], test, false);
  }
  static _contains(_element, value) {
    return typeof value == 'string' && dart.test(html$._ElementCssClassSet._classListContains(html$._ElementCssClassSet._classListOf(_element), value));
  }
  static _add(_element, value) {
    let list = html$._ElementCssClassSet._classListOf(_element);
    let added = !dart.test(html$._ElementCssClassSet._classListContainsBeforeAddOrRemove(list, value));
    html$._ElementCssClassSet._classListAdd(list, value);
    return added;
  }
  static _remove(_element, value) {
    let list = html$._ElementCssClassSet._classListOf(_element);
    let removed = html$._ElementCssClassSet._classListContainsBeforeAddOrRemove(list, value);
    html$._ElementCssClassSet._classListRemove(list, value);
    return removed;
  }
  static _toggle(_element, value, shouldAdd) {
    return shouldAdd == null ? html$._ElementCssClassSet._toggleDefault(_element, value) : html$._ElementCssClassSet._toggleOnOff(_element, value, shouldAdd);
  }
  static _toggleDefault(_element, value) {
    let list = html$._ElementCssClassSet._classListOf(_element);
    return html$._ElementCssClassSet._classListToggle1(list, value);
  }
  static _toggleOnOff(_element, value, shouldAdd) {
    let list = html$._ElementCssClassSet._classListOf(_element);
    if (dart.test(shouldAdd)) {
      html$._ElementCssClassSet._classListAdd(list, value);
      return true;
    } else {
      html$._ElementCssClassSet._classListRemove(list, value);
      return false;
    }
  }
  static _addAll(_element, iterable) {
    let list = html$._ElementCssClassSet._classListOf(_element);
    for (let value of iterable) {
      html$._ElementCssClassSet._classListAdd(list, value);
    }
  }
  static _removeAll(_element, iterable) {
    let list = html$._ElementCssClassSet._classListOf(_element);
    for (let value of iterable) {
      core.String._check(value);
      html$._ElementCssClassSet._classListRemove(list, value);
    }
  }
  static _removeWhere(_element, test, doRemove) {
    let list = html$._ElementCssClassSet._classListOf(_element);
    let i = 0;
    while (i < dart.notNull(html$._ElementCssClassSet._classListLength(list))) {
      let item = list.item(i);
      if (doRemove == test(item)) {
        html$._ElementCssClassSet._classListRemove(list, item);
      } else {
        ++i;
      }
    }
  }
  static _classListOf(e) {
    return e.classList;
  }
  static _classListLength(list) {
    return list.length;
  }
  static _classListContains(list, value) {
    return list.contains(value);
  }
  static _classListContainsBeforeAddOrRemove(list, value) {
    return list.contains(value);
  }
  static _classListAdd(list, value) {
    list.add(value);
  }
  static _classListRemove(list, value) {
    list.remove(value);
  }
  static _classListToggle1(list, value) {
    return list.toggle(value);
  }
  static _classListToggle2(list, value, shouldAdd) {
    return list.toggle(value, shouldAdd);
  }
};
(html$._ElementCssClassSet.new = function(element) {
  this[_element$] = element;
}).prototype = html$._ElementCssClassSet.prototype;
dart.addTypeTests(html$._ElementCssClassSet);
dart.setMethodSignature(html$._ElementCssClassSet, () => ({
  __proto__: dart.getMethods(html$._ElementCssClassSet.__proto__),
  readClasses: dart.fnType(core.Set$(core.String), []),
  writeClasses: dart.fnType(dart.void, [core.Set$(core.String)]),
  add: dart.fnType(core.bool, [core.Object]),
  addAll: dart.fnType(dart.void, [core.Object])
}));
dart.setFieldSignature(html$._ElementCssClassSet, () => ({
  __proto__: dart.getFields(html$._ElementCssClassSet.__proto__),
  [_element$]: dart.finalFieldType(html$.Element)
}));
dart.defineExtensionMethods(html$._ElementCssClassSet, ['contains']);
dart.defineExtensionAccessors(html$._ElementCssClassSet, ['length', 'isEmpty', 'isNotEmpty']);
const _unit = Symbol('_unit');
html$.Dimension = class Dimension extends core.Object {
  toString() {
    return dart.str(this[_value$3]) + dart.str(this[_unit]);
  }
  get value() {
    return this[_value$3];
  }
};
(html$.Dimension.percent = function(value) {
  this[_value$3] = value;
  this[_unit] = "%";
}).prototype = html$.Dimension.prototype;
(html$.Dimension.px = function(value) {
  this[_value$3] = value;
  this[_unit] = "px";
}).prototype = html$.Dimension.prototype;
(html$.Dimension.pc = function(value) {
  this[_value$3] = value;
  this[_unit] = "pc";
}).prototype = html$.Dimension.prototype;
(html$.Dimension.pt = function(value) {
  this[_value$3] = value;
  this[_unit] = "pt";
}).prototype = html$.Dimension.prototype;
(html$.Dimension.inch = function(value) {
  this[_value$3] = value;
  this[_unit] = "in";
}).prototype = html$.Dimension.prototype;
(html$.Dimension.cm = function(value) {
  this[_value$3] = value;
  this[_unit] = "cm";
}).prototype = html$.Dimension.prototype;
(html$.Dimension.mm = function(value) {
  this[_value$3] = value;
  this[_unit] = "mm";
}).prototype = html$.Dimension.prototype;
(html$.Dimension.em = function(value) {
  this[_value$3] = value;
  this[_unit] = "em";
}).prototype = html$.Dimension.prototype;
(html$.Dimension.ex = function(value) {
  this[_value$3] = value;
  this[_unit] = "ex";
}).prototype = html$.Dimension.prototype;
(html$.Dimension.css = function(cssValue) {
  this[_value$3] = null;
  this[_unit] = null;
  if (cssValue === "") cssValue = "0px";
  if (cssValue[$endsWith]("%")) {
    this[_unit] = "%";
  } else {
    this[_unit] = cssValue[$substring](cssValue.length - 2);
  }
  if (cssValue[$contains](".")) {
    this[_value$3] = core.double.parse(cssValue[$substring](0, cssValue.length - this[_unit].length));
  } else {
    this[_value$3] = core.int.parse(cssValue[$substring](0, cssValue.length - this[_unit].length));
  }
}).prototype = html$.Dimension.prototype;
dart.addTypeTests(html$.Dimension);
dart.setGetterSignature(html$.Dimension, () => ({
  __proto__: dart.getGetters(html$.Dimension.__proto__),
  value: core.num
}));
dart.setFieldSignature(html$.Dimension, () => ({
  __proto__: dart.getFields(html$.Dimension.__proto__),
  [_value$3]: dart.fieldType(core.num),
  [_unit]: dart.fieldType(core.String)
}));
dart.defineExtensionMethods(html$.Dimension, ['toString']);
const _is_EventStreamProvider_default = Symbol('_is_EventStreamProvider_default');
html$.EventStreamProvider$ = dart.generic(T => {
  let _EventStreamOfT = () => (_EventStreamOfT = dart.constFn(html$._EventStream$(T)))();
  let _ElementEventStreamImplOfT = () => (_ElementEventStreamImplOfT = dart.constFn(html$._ElementEventStreamImpl$(T)))();
  let _ElementListEventStreamImplOfT = () => (_ElementListEventStreamImplOfT = dart.constFn(html$._ElementListEventStreamImpl$(T)))();
  class EventStreamProvider extends core.Object {
    forTarget(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_EventStreamOfT()).new(e, this[_eventType], useCapture);
    }
    forElement(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_ElementEventStreamImplOfT()).new(e, this[_eventType], useCapture);
    }
    [_forElementList](e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_ElementListEventStreamImplOfT()).new(e, this[_eventType], useCapture);
    }
    getEventType(target) {
      return this[_eventType];
    }
  }
  (EventStreamProvider.new = function(eventType) {
    this[_eventType] = eventType;
  }).prototype = EventStreamProvider.prototype;
  dart.addTypeTests(EventStreamProvider);
  EventStreamProvider.prototype[_is_EventStreamProvider_default] = true;
  dart.setMethodSignature(EventStreamProvider, () => ({
    __proto__: dart.getMethods(EventStreamProvider.__proto__),
    forTarget: dart.fnType(async.Stream$(T), [html$.EventTarget], {useCapture: core.bool}),
    forElement: dart.fnType(html$.ElementStream$(T), [html$.Element], {useCapture: core.bool}),
    [_forElementList]: dart.fnType(html$.ElementStream$(T), [html$.ElementList$(html$.Element)], {useCapture: core.bool}),
    getEventType: dart.fnType(core.String, [html$.EventTarget])
  }));
  dart.setFieldSignature(EventStreamProvider, () => ({
    __proto__: dart.getFields(EventStreamProvider.__proto__),
    [_eventType]: dart.finalFieldType(core.String)
  }));
  return EventStreamProvider;
});
html$.EventStreamProvider = html$.EventStreamProvider$();
dart.addTypeTests(html$.EventStreamProvider, _is_EventStreamProvider_default);
const _is_ElementStream_default = Symbol('_is_ElementStream_default');
html$.ElementStream$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class ElementStream extends core.Object {}
  (ElementStream.new = function() {
  }).prototype = ElementStream.prototype;
  ElementStream.prototype[dart.isStream] = true;
  dart.addTypeTests(ElementStream);
  ElementStream.prototype[_is_ElementStream_default] = true;
  ElementStream[dart.implements] = () => [StreamOfT()];
  return ElementStream;
});
html$.ElementStream = html$.ElementStream$();
dart.addTypeTests(html$.ElementStream, _is_ElementStream_default);
const _target$0 = Symbol('_target');
const _useCapture = Symbol('_useCapture');
const _is__EventStream_default = Symbol('_is__EventStream_default');
html$._EventStream$ = dart.generic(T => {
  let _EventStreamSubscriptionOfT = () => (_EventStreamSubscriptionOfT = dart.constFn(html$._EventStreamSubscription$(T)))();
  class _EventStream extends async.Stream$(T) {
    asBroadcastStream(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      return this;
    }
    get isBroadcast() {
      return true;
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return new (_EventStreamSubscriptionOfT()).new(this[_target$0], this[_eventType], onData, this[_useCapture]);
    }
  }
  (_EventStream.new = function(target, eventType, useCapture) {
    this[_target$0] = target;
    this[_eventType] = eventType;
    this[_useCapture] = useCapture;
    _EventStream.__proto__.new.call(this);
  }).prototype = _EventStream.prototype;
  dart.addTypeTests(_EventStream);
  _EventStream.prototype[_is__EventStream_default] = true;
  dart.setMethodSignature(_EventStream, () => ({
    __proto__: dart.getMethods(_EventStream.__proto__),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
  }));
  dart.setFieldSignature(_EventStream, () => ({
    __proto__: dart.getFields(_EventStream.__proto__),
    [_target$0]: dart.finalFieldType(html$.EventTarget),
    [_eventType]: dart.finalFieldType(core.String),
    [_useCapture]: dart.finalFieldType(core.bool)
  }));
  return _EventStream;
});
html$._EventStream = html$._EventStream$();
dart.addTypeTests(html$._EventStream, _is__EventStream_default);
html$._matchesWithAncestors = function(event, selector) {
  let target = event[$target];
  return html$.Element.is(target) ? target[$matchesWithAncestors](selector) : false;
};
const _is__ElementEventStreamImpl_default = Symbol('_is__ElementEventStreamImpl_default');
html$._ElementEventStreamImpl$ = dart.generic(T => {
  let TToT = () => (TToT = dart.constFn(dart.fnType(T, [T])))();
  let TTobool = () => (TTobool = dart.constFn(dart.fnType(core.bool, [T])))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let _EventStreamSubscriptionOfT = () => (_EventStreamSubscriptionOfT = dart.constFn(html$._EventStreamSubscription$(T)))();
  let ElementStreamOfT = () => (ElementStreamOfT = dart.constFn(html$.ElementStream$(T)))();
  class _ElementEventStreamImpl extends html$._EventStream$(T) {
    matches(selector) {
      return StreamOfT()._check(this.where(dart.fn(event => html$._matchesWithAncestors(event, selector), TTobool())).map(T, dart.fn(e => {
        e[_selector] = selector;
        return e;
      }, TToT())));
    }
    capture(onData) {
      return new (_EventStreamSubscriptionOfT()).new(this[_target$0], this[_eventType], onData, true);
    }
  }
  (_ElementEventStreamImpl.new = function(target, eventType, useCapture) {
    _ElementEventStreamImpl.__proto__.new.call(this, html$.EventTarget._check(target), core.String._check(eventType), core.bool._check(useCapture));
  }).prototype = _ElementEventStreamImpl.prototype;
  dart.addTypeTests(_ElementEventStreamImpl);
  _ElementEventStreamImpl.prototype[_is__ElementEventStreamImpl_default] = true;
  _ElementEventStreamImpl[dart.implements] = () => [ElementStreamOfT()];
  dart.setMethodSignature(_ElementEventStreamImpl, () => ({
    __proto__: dart.getMethods(_ElementEventStreamImpl.__proto__),
    matches: dart.fnType(async.Stream$(T), [core.String]),
    capture: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])])
  }));
  return _ElementEventStreamImpl;
});
html$._ElementEventStreamImpl = html$._ElementEventStreamImpl$();
dart.addTypeTests(html$._ElementEventStreamImpl, _is__ElementEventStreamImpl_default);
const _targetList = Symbol('_targetList');
const _is__ElementListEventStreamImpl_default = Symbol('_is__ElementListEventStreamImpl_default');
html$._ElementListEventStreamImpl$ = dart.generic(T => {
  let TToT = () => (TToT = dart.constFn(dart.fnType(T, [T])))();
  let TTobool = () => (TTobool = dart.constFn(dart.fnType(core.bool, [T])))();
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let _StreamPoolOfT = () => (_StreamPoolOfT = dart.constFn(html$._StreamPool$(T)))();
  let _EventStreamOfT = () => (_EventStreamOfT = dart.constFn(html$._EventStream$(T)))();
  let ElementStreamOfT = () => (ElementStreamOfT = dart.constFn(html$.ElementStream$(T)))();
  class _ElementListEventStreamImpl extends async.Stream$(T) {
    matches(selector) {
      return StreamOfT()._check(this.where(dart.fn(event => html$._matchesWithAncestors(event, selector), TTobool())).map(T, dart.fn(e => {
        e[_selector] = selector;
        return e;
      }, TToT())));
    }
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      let pool = new (_StreamPoolOfT()).broadcast();
      for (let target of this[_targetList]) {
        pool.add(new (_EventStreamOfT()).new(target, this[_eventType], this[_useCapture]));
      }
      return pool.stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    capture(onData) {
      let pool = new (_StreamPoolOfT()).broadcast();
      for (let target of this[_targetList]) {
        pool.add(new (_EventStreamOfT()).new(target, this[_eventType], true));
      }
      return pool.stream.listen(onData);
    }
    asBroadcastStream(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      return this;
    }
    get isBroadcast() {
      return true;
    }
  }
  (_ElementListEventStreamImpl.new = function(targetList, eventType, useCapture) {
    this[_targetList] = targetList;
    this[_eventType] = eventType;
    this[_useCapture] = useCapture;
    _ElementListEventStreamImpl.__proto__.new.call(this);
  }).prototype = _ElementListEventStreamImpl.prototype;
  dart.addTypeTests(_ElementListEventStreamImpl);
  _ElementListEventStreamImpl.prototype[_is__ElementListEventStreamImpl_default] = true;
  _ElementListEventStreamImpl[dart.implements] = () => [ElementStreamOfT()];
  dart.setMethodSignature(_ElementListEventStreamImpl, () => ({
    __proto__: dart.getMethods(_ElementListEventStreamImpl.__proto__),
    matches: dart.fnType(async.Stream$(T), [core.String]),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    capture: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])])
  }));
  dart.setFieldSignature(_ElementListEventStreamImpl, () => ({
    __proto__: dart.getFields(_ElementListEventStreamImpl.__proto__),
    [_targetList]: dart.finalFieldType(IterableOfElement()),
    [_useCapture]: dart.finalFieldType(core.bool),
    [_eventType]: dart.finalFieldType(core.String)
  }));
  return _ElementListEventStreamImpl;
});
html$._ElementListEventStreamImpl = html$._ElementListEventStreamImpl$();
dart.addTypeTests(html$._ElementListEventStreamImpl, _is__ElementListEventStreamImpl_default);
const _onData$1 = Symbol('_onData');
const _pauseCount$ = Symbol('_pauseCount');
const _tryResume = Symbol('_tryResume');
const _canceled = Symbol('_canceled');
const _unlisten = Symbol('_unlisten');
const _is__EventStreamSubscription_default = Symbol('_is__EventStreamSubscription_default');
html$._EventStreamSubscription$ = dart.generic(T => {
  class _EventStreamSubscription extends async.StreamSubscription$(T) {
    cancel() {
      if (dart.test(this[_canceled])) return null;
      this[_unlisten]();
      this[_target$0] = null;
      this[_onData$1] = null;
      return null;
    }
    get [_canceled]() {
      return this[_target$0] == null;
    }
    onData(handleData) {
      if (dart.test(this[_canceled])) {
        dart.throw(new core.StateError.new("Subscription has been canceled."));
      }
      this[_unlisten]();
      this[_onData$1] = html$._wrapZone(html$.Event, EventTovoid()._check(handleData));
      this[_tryResume]();
    }
    onError(handleError) {}
    onDone(handleDone) {}
    pause(resumeSignal) {
      if (resumeSignal === void 0) resumeSignal = null;
      if (dart.test(this[_canceled])) return;
      this[_pauseCount$] = dart.notNull(this[_pauseCount$]) + 1;
      this[_unlisten]();
      if (resumeSignal != null) {
        resumeSignal.whenComplete(dart.bind(this, 'resume'));
      }
    }
    get isPaused() {
      return dart.notNull(this[_pauseCount$]) > 0;
    }
    resume() {
      if (dart.test(this[_canceled]) || !dart.test(this.isPaused)) return;
      this[_pauseCount$] = dart.notNull(this[_pauseCount$]) - 1;
      this[_tryResume]();
    }
    [_tryResume]() {
      if (this[_onData$1] != null && !dart.test(this.isPaused)) {
        this[_target$0][$addEventListener](this[_eventType], this[_onData$1], this[_useCapture]);
      }
    }
    [_unlisten]() {
      if (this[_onData$1] != null) {
        this[_target$0][$removeEventListener](this[_eventType], this[_onData$1], this[_useCapture]);
      }
    }
    asFuture(E, futureValue) {
      if (futureValue === void 0) futureValue = null;
      let completer = async.Completer$(E).new();
      return completer.future;
    }
  }
  (_EventStreamSubscription.new = function(target, eventType, onData, useCapture) {
    this[_pauseCount$] = 0;
    this[_target$0] = target;
    this[_eventType] = eventType;
    this[_useCapture] = useCapture;
    this[_onData$1] = onData == null ? null : html$._wrapZone(html$.Event, dart.fn(e => dart.dcall(onData, [e]), EventTodynamic()));
    this[_tryResume]();
  }).prototype = _EventStreamSubscription.prototype;
  dart.addTypeTests(_EventStreamSubscription);
  _EventStreamSubscription.prototype[_is__EventStreamSubscription_default] = true;
  dart.setMethodSignature(_EventStreamSubscription, () => ({
    __proto__: dart.getMethods(_EventStreamSubscription.__proto__),
    cancel: dart.fnType(async.Future, []),
    onData: dart.fnType(dart.void, [dart.fnType(dart.void, [T])]),
    onError: dart.fnType(dart.void, [core.Function]),
    onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
    pause: dart.fnType(dart.void, [], [async.Future]),
    resume: dart.fnType(dart.void, []),
    [_tryResume]: dart.fnType(dart.void, []),
    [_unlisten]: dart.fnType(dart.void, []),
    asFuture: dart.gFnType(E => [async.Future$(E), [], [E]])
  }));
  dart.setGetterSignature(_EventStreamSubscription, () => ({
    __proto__: dart.getGetters(_EventStreamSubscription.__proto__),
    [_canceled]: core.bool,
    isPaused: core.bool
  }));
  dart.setFieldSignature(_EventStreamSubscription, () => ({
    __proto__: dart.getFields(_EventStreamSubscription.__proto__),
    [_pauseCount$]: dart.fieldType(core.int),
    [_target$0]: dart.fieldType(html$.EventTarget),
    [_eventType]: dart.finalFieldType(core.String),
    [_onData$1]: dart.fieldType(EventTodynamic()),
    [_useCapture]: dart.finalFieldType(core.bool)
  }));
  return _EventStreamSubscription;
});
html$._EventStreamSubscription = html$._EventStreamSubscription$();
dart.addTypeTests(html$._EventStreamSubscription, _is__EventStreamSubscription_default);
const _is_CustomStream_default = Symbol('_is_CustomStream_default');
html$.CustomStream$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  class CustomStream extends core.Object {}
  (CustomStream.new = function() {
  }).prototype = CustomStream.prototype;
  CustomStream.prototype[dart.isStream] = true;
  dart.addTypeTests(CustomStream);
  CustomStream.prototype[_is_CustomStream_default] = true;
  CustomStream[dart.implements] = () => [StreamOfT()];
  return CustomStream;
});
html$.CustomStream = html$.CustomStream$();
dart.addTypeTests(html$.CustomStream, _is_CustomStream_default);
const _streamController = Symbol('_streamController');
const _type$1 = Symbol('_type');
const _is__CustomEventStreamImpl_default = Symbol('_is__CustomEventStreamImpl_default');
html$._CustomEventStreamImpl$ = dart.generic(T => {
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let CustomStreamOfT = () => (CustomStreamOfT = dart.constFn(html$.CustomStream$(T)))();
  class _CustomEventStreamImpl extends async.Stream$(T) {
    listen(onData, opts) {
      let onError = opts && 'onError' in opts ? opts.onError : null;
      let onDone = opts && 'onDone' in opts ? opts.onDone : null;
      let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
      return this[_streamController].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
    asBroadcastStream(opts) {
      let onListen = opts && 'onListen' in opts ? opts.onListen : null;
      let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null;
      return this[_streamController].stream;
    }
    get isBroadcast() {
      return true;
    }
    add(event) {
      T._check(event);
      if (event.type == this[_type$1]) this[_streamController].add(event);
    }
  }
  (_CustomEventStreamImpl.new = function(type) {
    this[_streamController] = null;
    this[_type$1] = null;
    _CustomEventStreamImpl.__proto__.new.call(this);
    this[_type$1] = type;
    this[_streamController] = StreamControllerOfT().broadcast({sync: true});
  }).prototype = _CustomEventStreamImpl.prototype;
  dart.addTypeTests(_CustomEventStreamImpl);
  _CustomEventStreamImpl.prototype[_is__CustomEventStreamImpl_default] = true;
  _CustomEventStreamImpl[dart.implements] = () => [CustomStreamOfT()];
  dart.setMethodSignature(_CustomEventStreamImpl, () => ({
    __proto__: dart.getMethods(_CustomEventStreamImpl.__proto__),
    listen: dart.fnType(async.StreamSubscription$(T), [dart.fnType(dart.void, [T])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
    add: dart.fnType(dart.void, [core.Object])
  }));
  dart.setFieldSignature(_CustomEventStreamImpl, () => ({
    __proto__: dart.getFields(_CustomEventStreamImpl.__proto__),
    [_streamController]: dart.fieldType(StreamControllerOfT()),
    [_type$1]: dart.fieldType(core.String)
  }));
  return _CustomEventStreamImpl;
});
html$._CustomEventStreamImpl = html$._CustomEventStreamImpl$();
dart.addTypeTests(html$._CustomEventStreamImpl, _is__CustomEventStreamImpl_default);
const _parent$ = Symbol('_parent');
const _shadowAltKey = Symbol('_shadowAltKey');
const _shadowCharCode = Symbol('_shadowCharCode');
const _shadowKeyCode = Symbol('_shadowKeyCode');
const _currentTarget = Symbol('_currentTarget');
const _realAltKey = Symbol('_realAltKey');
const _realCharCode = Symbol('_realCharCode');
const _realKeyCode = Symbol('_realKeyCode');
const _shadowKeyIdentifier = Symbol('_shadowKeyIdentifier');
const _keyIdentifier = Symbol('_keyIdentifier');
html$.KeyEvent = class KeyEvent extends html$._WrappedEvent {
  get keyCode() {
    return this[_shadowKeyCode];
  }
  get charCode() {
    return this.type === "keypress" ? this[_shadowCharCode] : 0;
  }
  get altKey() {
    return this[_shadowAltKey];
  }
  get which() {
    return this.keyCode;
  }
  get [_realKeyCode]() {
    return this[_parent$].keyCode;
  }
  get [_realCharCode]() {
    return this[_parent$].charCode;
  }
  get [_realAltKey]() {
    return this[_parent$].altKey;
  }
  get sourceCapabilities() {
    return this[sourceCapabilities$];
  }
  set sourceCapabilities(value) {
    super.sourceCapabilities = value;
  }
  static _makeRecord() {
    let interceptor = _foreign_helper.JS_INTERCEPTOR_CONSTANT(dart.wrapType(html$.KeyboardEvent));
    return _js_helper.makeLeafDispatchRecord(interceptor);
  }
  static new(type, opts) {
    let view = opts && 'view' in opts ? opts.view : null;
    let canBubble = opts && 'canBubble' in opts ? opts.canBubble : true;
    let cancelable = opts && 'cancelable' in opts ? opts.cancelable : true;
    let keyCode = opts && 'keyCode' in opts ? opts.keyCode : 0;
    let charCode = opts && 'charCode' in opts ? opts.charCode : 0;
    let location = opts && 'location' in opts ? opts.location : 1;
    let ctrlKey = opts && 'ctrlKey' in opts ? opts.ctrlKey : false;
    let altKey = opts && 'altKey' in opts ? opts.altKey : false;
    let shiftKey = opts && 'shiftKey' in opts ? opts.shiftKey : false;
    let metaKey = opts && 'metaKey' in opts ? opts.metaKey : false;
    let currentTarget = opts && 'currentTarget' in opts ? opts.currentTarget : null;
    if (view == null) {
      view = html$.window;
    }
    let eventObj = null;
    eventObj = html$.Event.eventType("KeyboardEvent", type, {canBubble: canBubble, cancelable: cancelable});
    Object.defineProperty(eventObj, 'keyCode', {
      get: function() {
        return this.keyCodeVal;
      }
    });
    Object.defineProperty(eventObj, 'which', {
      get: function() {
        return this.keyCodeVal;
      }
    });
    Object.defineProperty(eventObj, 'charCode', {
      get: function() {
        return this.charCodeVal;
      }
    });
    let keyIdentifier = html$.KeyEvent._convertToHexString(charCode, keyCode);
    dart.dsend(eventObj, _initKeyboardEvent, [type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey]);
    eventObj.keyCodeVal = keyCode;
    eventObj.charCodeVal = charCode;
    _interceptors.setDispatchProperty(eventObj, html$.KeyEvent._keyboardEventDispatchRecord);
    let keyEvent = new html$.KeyEvent.wrap(html$.KeyboardEvent._check(eventObj));
    if (keyEvent[_currentTarget] == null) {
      keyEvent[_currentTarget] = currentTarget == null ? html$.window : currentTarget;
    }
    return keyEvent;
  }
  static get canUseDispatchEvent() {
    return typeof document.body.dispatchEvent == "function" && document.body.dispatchEvent.length > 0;
  }
  get currentTarget() {
    return this[_currentTarget];
  }
  static _convertToHexString(charCode, keyCode) {
    if (charCode !== -1) {
      let hex = charCode[$toRadixString](16);
      let sb = new core.StringBuffer.new("U+");
      for (let i = 0; i < 4 - hex.length; i++)
        sb.write("0");
      sb.write(hex);
      return sb.toString();
    } else {
      return html$.KeyCode._convertKeyCodeToKeyName(keyCode);
    }
  }
  get code() {
    return this[_parent$].code;
  }
  get ctrlKey() {
    return this[_parent$].ctrlKey;
  }
  get detail() {
    return this[_parent$].detail;
  }
  get isComposing() {
    return this[_parent$].isComposing;
  }
  get key() {
    return this[_parent$].key;
  }
  get location() {
    return this[_parent$].location;
  }
  get metaKey() {
    return this[_parent$].metaKey;
  }
  get shiftKey() {
    return this[_parent$].shiftKey;
  }
  get view() {
    return html$.Window._check(this[_parent$][$view]);
  }
  [_initUIEvent](type, canBubble, cancelable, view, detail) {
    dart.throw(new core.UnsupportedError.new("Cannot initialize a UI Event from a KeyEvent."));
  }
  get [_shadowKeyIdentifier]() {
    return this[_parent$].keyIdentifier;
  }
  get [_charCode]() {
    return this.charCode;
  }
  get [_keyCode]() {
    return this.keyCode;
  }
  get [_which]() {
    return this.which;
  }
  get [_keyIdentifier]() {
    dart.throw(new core.UnsupportedError.new("keyIdentifier is unsupported."));
  }
  [_initKeyboardEvent](type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey) {
    dart.throw(new core.UnsupportedError.new("Cannot initialize a KeyboardEvent from a KeyEvent."));
  }
  getModifierState(keyArgument) {
    return dart.throw(new core.UnimplementedError.new());
  }
  get repeat() {
    return dart.throw(new core.UnimplementedError.new());
  }
  get isComposed() {
    return dart.throw(new core.UnimplementedError.new());
  }
  get [_get_view]() {
    return dart.throw(new core.UnimplementedError.new());
  }
};
(html$.KeyEvent.wrap = function(parent) {
  this[_parent$] = null;
  this[_shadowAltKey] = null;
  this[_shadowCharCode] = null;
  this[_shadowKeyCode] = null;
  this[_currentTarget] = null;
  this[sourceCapabilities$] = null;
  html$.KeyEvent.__proto__.new.call(this, parent);
  this[_parent$] = parent;
  this[_shadowAltKey] = this[_realAltKey];
  this[_shadowCharCode] = this[_realCharCode];
  this[_shadowKeyCode] = this[_realKeyCode];
  this[_currentTarget] = this[_parent$][$currentTarget];
}).prototype = html$.KeyEvent.prototype;
dart.addTypeTests(html$.KeyEvent);
const sourceCapabilities$ = Symbol("KeyEvent.sourceCapabilities");
html$.KeyEvent[dart.implements] = () => [html$.KeyboardEvent];
dart.setMethodSignature(html$.KeyEvent, () => ({
  __proto__: dart.getMethods(html$.KeyEvent.__proto__),
  [_initUIEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.int]),
  [_initKeyboardEvent]: dart.fnType(dart.void, [core.String, core.bool, core.bool, html$.Window, core.String, core.int, core.bool, core.bool, core.bool, core.bool]),
  getModifierState: dart.fnType(core.bool, [core.String]),
  [$getModifierState]: dart.fnType(core.bool, [core.String])
}));
dart.setGetterSignature(html$.KeyEvent, () => ({
  __proto__: dart.getGetters(html$.KeyEvent.__proto__),
  keyCode: core.int,
  [$keyCode]: core.int,
  charCode: core.int,
  [$charCode]: core.int,
  altKey: core.bool,
  [$altKey]: core.bool,
  which: core.int,
  [$which]: core.int,
  [_realKeyCode]: core.int,
  [_realCharCode]: core.int,
  [_realAltKey]: core.bool,
  code: core.String,
  [$code]: core.String,
  ctrlKey: core.bool,
  [$ctrlKey]: core.bool,
  detail: core.int,
  [$detail]: core.int,
  isComposing: core.bool,
  [$isComposing]: core.bool,
  key: core.String,
  [$key]: core.String,
  location: core.int,
  [$location]: core.int,
  metaKey: core.bool,
  [$metaKey]: core.bool,
  shiftKey: core.bool,
  [$shiftKey]: core.bool,
  view: html$.Window,
  [$view]: html$.Window,
  [_shadowKeyIdentifier]: core.String,
  [_charCode]: core.int,
  [_keyCode]: core.int,
  [_which]: core.int,
  [_keyIdentifier]: core.String,
  repeat: core.bool,
  [$repeat]: core.bool,
  isComposed: core.bool,
  [_get_view]: dart.dynamic
}));
dart.setFieldSignature(html$.KeyEvent, () => ({
  __proto__: dart.getFields(html$.KeyEvent.__proto__),
  [_parent$]: dart.fieldType(html$.KeyboardEvent),
  [_shadowAltKey]: dart.fieldType(core.bool),
  [_shadowCharCode]: dart.fieldType(core.int),
  [_shadowKeyCode]: dart.fieldType(core.int),
  [_currentTarget]: dart.fieldType(html$.EventTarget),
  sourceCapabilities: dart.finalFieldType(html$.InputDeviceCapabilities)
}));
dart.defineExtensionMethods(html$.KeyEvent, ['getModifierState']);
dart.defineExtensionAccessors(html$.KeyEvent, [
  'keyCode',
  'charCode',
  'altKey',
  'which',
  'currentTarget',
  'code',
  'ctrlKey',
  'detail',
  'isComposing',
  'key',
  'location',
  'metaKey',
  'shiftKey',
  'view',
  'repeat',
  'sourceCapabilities'
]);
dart.defineLazy(html$.KeyEvent, {
  /*html$.KeyEvent._keyboardEventDispatchRecord*/get _keyboardEventDispatchRecord() {
    return html$.KeyEvent._makeRecord();
  },
  /*html$.KeyEvent.keyDownEvent*/get keyDownEvent() {
    return new html$._KeyboardEventHandler.new("keydown");
  },
  set keyDownEvent(_) {},
  /*html$.KeyEvent.keyUpEvent*/get keyUpEvent() {
    return new html$._KeyboardEventHandler.new("keyup");
  },
  set keyUpEvent(_) {},
  /*html$.KeyEvent.keyPressEvent*/get keyPressEvent() {
    return new html$._KeyboardEventHandler.new("keypress");
  },
  set keyPressEvent(_) {}
});
html$._CustomKeyEventStreamImpl = class _CustomKeyEventStreamImpl extends html$._CustomEventStreamImpl$(html$.KeyEvent) {
  add(event) {
    html$.KeyEvent._check(event);
    if (event.type == this[_type$1]) {
      event.currentTarget.dispatchEvent(event[_parent$]);
      this[_streamController].add(event);
    }
  }
};
(html$._CustomKeyEventStreamImpl.new = function(type) {
  html$._CustomKeyEventStreamImpl.__proto__.new.call(this, type);
}).prototype = html$._CustomKeyEventStreamImpl.prototype;
dart.addTypeTests(html$._CustomKeyEventStreamImpl);
html$._CustomKeyEventStreamImpl[dart.implements] = () => [CustomStreamOfKeyEvent()];
dart.setMethodSignature(html$._CustomKeyEventStreamImpl, () => ({
  __proto__: dart.getMethods(html$._CustomKeyEventStreamImpl.__proto__),
  add: dart.fnType(dart.void, [core.Object])
}));
const _controller$0 = Symbol('_controller');
const _subscriptions = Symbol('_subscriptions');
const _is__StreamPool_default = Symbol('_is__StreamPool_default');
html$._StreamPool$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let StreamSubscriptionOfT = () => (StreamSubscriptionOfT = dart.constFn(async.StreamSubscription$(T)))();
  let LinkedMapOfStreamOfT$StreamSubscriptionOfT = () => (LinkedMapOfStreamOfT$StreamSubscriptionOfT = dart.constFn(_js_helper.LinkedMap$(StreamOfT(), StreamSubscriptionOfT())))();
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let MapOfStreamOfT$StreamSubscriptionOfT = () => (MapOfStreamOfT$StreamSubscriptionOfT = dart.constFn(core.Map$(StreamOfT(), StreamSubscriptionOfT())))();
  class _StreamPool extends core.Object {
    get stream() {
      return this[_controller$0].stream;
    }
    add(stream) {
      StreamOfT()._check(stream);
      if (dart.test(this[_subscriptions][$containsKey](stream))) return;
      this[_subscriptions][$_set](stream, stream.listen(dart.bind(this[_controller$0], 'add'), {onError: dart.bind(this[_controller$0], 'addError'), onDone: dart.fn(() => this.remove(stream), VoidTovoid())}));
    }
    remove(stream) {
      StreamOfT()._check(stream);
      let subscription = this[_subscriptions][$remove](stream);
      if (subscription != null) subscription.cancel();
    }
    close() {
      for (let subscription of this[_subscriptions][$values]) {
        subscription.cancel();
      }
      this[_subscriptions][$clear]();
      this[_controller$0].close();
    }
  }
  (_StreamPool.broadcast = function() {
    this[_controller$0] = null;
    this[_subscriptions] = new (LinkedMapOfStreamOfT$StreamSubscriptionOfT()).new();
    this[_controller$0] = StreamControllerOfT().broadcast({sync: true, onCancel: dart.bind(this, 'close')});
  }).prototype = _StreamPool.prototype;
  dart.addTypeTests(_StreamPool);
  _StreamPool.prototype[_is__StreamPool_default] = true;
  dart.setMethodSignature(_StreamPool, () => ({
    __proto__: dart.getMethods(_StreamPool.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    remove: dart.fnType(dart.void, [core.Object]),
    close: dart.fnType(dart.void, [])
  }));
  dart.setGetterSignature(_StreamPool, () => ({
    __proto__: dart.getGetters(_StreamPool.__proto__),
    stream: async.Stream$(T)
  }));
  dart.setFieldSignature(_StreamPool, () => ({
    __proto__: dart.getFields(_StreamPool.__proto__),
    [_controller$0]: dart.fieldType(StreamControllerOfT()),
    [_subscriptions]: dart.fieldType(MapOfStreamOfT$StreamSubscriptionOfT())
  }));
  return _StreamPool;
});
html$._StreamPool = html$._StreamPool$();
dart.addTypeTests(html$._StreamPool, _is__StreamPool_default);
const _eventTypeGetter = Symbol('_eventTypeGetter');
const _is__CustomEventStreamProvider_default = Symbol('_is__CustomEventStreamProvider_default');
html$._CustomEventStreamProvider$ = dart.generic(T => {
  let _EventStreamOfT = () => (_EventStreamOfT = dart.constFn(html$._EventStream$(T)))();
  let _ElementEventStreamImplOfT = () => (_ElementEventStreamImplOfT = dart.constFn(html$._ElementEventStreamImpl$(T)))();
  let _ElementListEventStreamImplOfT = () => (_ElementListEventStreamImplOfT = dart.constFn(html$._ElementListEventStreamImpl$(T)))();
  let EventStreamProviderOfT = () => (EventStreamProviderOfT = dart.constFn(html$.EventStreamProvider$(T)))();
  class _CustomEventStreamProvider extends core.Object {
    forTarget(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_EventStreamOfT()).new(e, core.String._check(dart.dcall(this[_eventTypeGetter], [e])), useCapture);
    }
    forElement(e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_ElementEventStreamImplOfT()).new(e, dart.dcall(this[_eventTypeGetter], [e]), useCapture);
    }
    [_forElementList](e, opts) {
      let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
      return new (_ElementListEventStreamImplOfT()).new(e, core.String._check(dart.dcall(this[_eventTypeGetter], [e])), useCapture);
    }
    getEventType(target) {
      return core.String._check(dart.dcall(this[_eventTypeGetter], [target]));
    }
    get [_eventType]() {
      return dart.throw(new core.UnsupportedError.new("Access type through getEventType method."));
    }
  }
  (_CustomEventStreamProvider.new = function(eventTypeGetter) {
    this[_eventTypeGetter] = eventTypeGetter;
  }).prototype = _CustomEventStreamProvider.prototype;
  dart.addTypeTests(_CustomEventStreamProvider);
  _CustomEventStreamProvider.prototype[_is__CustomEventStreamProvider_default] = true;
  _CustomEventStreamProvider[dart.implements] = () => [EventStreamProviderOfT()];
  dart.setMethodSignature(_CustomEventStreamProvider, () => ({
    __proto__: dart.getMethods(_CustomEventStreamProvider.__proto__),
    forTarget: dart.fnType(async.Stream$(T), [html$.EventTarget], {useCapture: core.bool}),
    forElement: dart.fnType(html$.ElementStream$(T), [html$.Element], {useCapture: core.bool}),
    [_forElementList]: dart.fnType(html$.ElementStream$(T), [html$.ElementList$(html$.Element)], {useCapture: core.bool}),
    getEventType: dart.fnType(core.String, [html$.EventTarget])
  }));
  dart.setGetterSignature(_CustomEventStreamProvider, () => ({
    __proto__: dart.getGetters(_CustomEventStreamProvider.__proto__),
    [_eventType]: core.String
  }));
  dart.setFieldSignature(_CustomEventStreamProvider, () => ({
    __proto__: dart.getFields(_CustomEventStreamProvider.__proto__),
    [_eventTypeGetter]: dart.finalFieldType(dart.dynamic)
  }));
  return _CustomEventStreamProvider;
});
html$._CustomEventStreamProvider = html$._CustomEventStreamProvider$();
dart.addTypeTests(html$._CustomEventStreamProvider, _is__CustomEventStreamProvider_default);
html$._Html5NodeValidator = class _Html5NodeValidator extends core.Object {
  allowsElement(element) {
    return html$._Html5NodeValidator._allowedElements.contains(html$.Element._safeTagName(element));
  }
  allowsAttribute(element, attributeName, value) {
    let tagName = html$.Element._safeTagName(element);
    let validator = html$._Html5NodeValidator._attributeValidators[$_get](dart.str(tagName) + "::" + dart.str(attributeName));
    if (validator == null) {
      validator = html$._Html5NodeValidator._attributeValidators[$_get]("*::" + dart.str(attributeName));
    }
    if (validator == null) {
      return false;
    }
    return core.bool._check(dart.dcall(validator, [element, attributeName, value, this]));
  }
  static _standardAttributeValidator(element, attributeName, value, context) {
    return true;
  }
  static _uriAttributeValidator(element, attributeName, value, context) {
    return context.uriPolicy.allowsUri(value);
  }
};
(html$._Html5NodeValidator.new = function(opts) {
  let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
  this.uriPolicy = uriPolicy != null ? uriPolicy : html$.UriPolicy.new();
  if (dart.test(html$._Html5NodeValidator._attributeValidators[$isEmpty])) {
    for (let attr of html$._Html5NodeValidator._standardAttributes) {
      html$._Html5NodeValidator._attributeValidators[$_set](attr, dart.fn(html$._Html5NodeValidator._standardAttributeValidator, ElementAndStringAndString__Tobool()));
    }
    for (let attr of html$._Html5NodeValidator._uriAttributes) {
      html$._Html5NodeValidator._attributeValidators[$_set](attr, dart.fn(html$._Html5NodeValidator._uriAttributeValidator, ElementAndStringAndString__Tobool()));
    }
  }
}).prototype = html$._Html5NodeValidator.prototype;
dart.addTypeTests(html$._Html5NodeValidator);
html$._Html5NodeValidator[dart.implements] = () => [html$.NodeValidator];
dart.setMethodSignature(html$._Html5NodeValidator, () => ({
  __proto__: dart.getMethods(html$._Html5NodeValidator.__proto__),
  allowsElement: dart.fnType(core.bool, [html$.Element]),
  allowsAttribute: dart.fnType(core.bool, [html$.Element, core.String, core.String])
}));
dart.setFieldSignature(html$._Html5NodeValidator, () => ({
  __proto__: dart.getFields(html$._Html5NodeValidator.__proto__),
  uriPolicy: dart.finalFieldType(html$.UriPolicy)
}));
dart.defineLazy(html$._Html5NodeValidator, {
  /*html$._Html5NodeValidator._allowedElements*/get _allowedElements() {
    return SetOfString().from(["A", "ABBR", "ACRONYM", "ADDRESS", "AREA", "ARTICLE", "ASIDE", "AUDIO", "B", "BDI", "BDO", "BIG", "BLOCKQUOTE", "BR", "BUTTON", "CANVAS", "CAPTION", "CENTER", "CITE", "CODE", "COL", "COLGROUP", "COMMAND", "DATA", "DATALIST", "DD", "DEL", "DETAILS", "DFN", "DIR", "DIV", "DL", "DT", "EM", "FIELDSET", "FIGCAPTION", "FIGURE", "FONT", "FOOTER", "FORM", "H1", "H2", "H3", "H4", "H5", "H6", "HEADER", "HGROUP", "HR", "I", "IFRAME", "IMG", "INPUT", "INS", "KBD", "LABEL", "LEGEND", "LI", "MAP", "MARK", "MENU", "METER", "NAV", "NOBR", "OL", "OPTGROUP", "OPTION", "OUTPUT", "P", "PRE", "PROGRESS", "Q", "S", "SAMP", "SECTION", "SELECT", "SMALL", "SOURCE", "SPAN", "STRIKE", "STRONG", "SUB", "SUMMARY", "SUP", "TABLE", "TBODY", "TD", "TEXTAREA", "TFOOT", "TH", "THEAD", "TIME", "TR", "TRACK", "TT", "U", "UL", "VAR", "VIDEO", "WBR"]);
  },
  /*html$._Html5NodeValidator._standardAttributes*/get _standardAttributes() {
    return dart.constList(["*::class", "*::dir", "*::draggable", "*::hidden", "*::id", "*::inert", "*::itemprop", "*::itemref", "*::itemscope", "*::lang", "*::spellcheck", "*::title", "*::translate", "A::accesskey", "A::coords", "A::hreflang", "A::name", "A::shape", "A::tabindex", "A::target", "A::type", "AREA::accesskey", "AREA::alt", "AREA::coords", "AREA::nohref", "AREA::shape", "AREA::tabindex", "AREA::target", "AUDIO::controls", "AUDIO::loop", "AUDIO::mediagroup", "AUDIO::muted", "AUDIO::preload", "BDO::dir", "BODY::alink", "BODY::bgcolor", "BODY::link", "BODY::text", "BODY::vlink", "BR::clear", "BUTTON::accesskey", "BUTTON::disabled", "BUTTON::name", "BUTTON::tabindex", "BUTTON::type", "BUTTON::value", "CANVAS::height", "CANVAS::width", "CAPTION::align", "COL::align", "COL::char", "COL::charoff", "COL::span", "COL::valign", "COL::width", "COLGROUP::align", "COLGROUP::char", "COLGROUP::charoff", "COLGROUP::span", "COLGROUP::valign", "COLGROUP::width", "COMMAND::checked", "COMMAND::command", "COMMAND::disabled", "COMMAND::label", "COMMAND::radiogroup", "COMMAND::type", "DATA::value", "DEL::datetime", "DETAILS::open", "DIR::compact", "DIV::align", "DL::compact", "FIELDSET::disabled", "FONT::color", "FONT::face", "FONT::size", "FORM::accept", "FORM::autocomplete", "FORM::enctype", "FORM::method", "FORM::name", "FORM::novalidate", "FORM::target", "FRAME::name", "H1::align", "H2::align", "H3::align", "H4::align", "H5::align", "H6::align", "HR::align", "HR::noshade", "HR::size", "HR::width", "HTML::version", "IFRAME::align", "IFRAME::frameborder", "IFRAME::height", "IFRAME::marginheight", "IFRAME::marginwidth", "IFRAME::width", "IMG::align", "IMG::alt", "IMG::border", "IMG::height", "IMG::hspace", "IMG::ismap", "IMG::name", "IMG::usemap", "IMG::vspace", "IMG::width", "INPUT::accept", "INPUT::accesskey", "INPUT::align", "INPUT::alt", "INPUT::autocomplete", "INPUT::autofocus", "INPUT::checked", "INPUT::disabled", "INPUT::inputmode", "INPUT::ismap", "INPUT::list", "INPUT::max", "INPUT::maxlength", "INPUT::min", "INPUT::multiple", "INPUT::name", "INPUT::placeholder", "INPUT::readonly", "INPUT::required", "INPUT::size", "INPUT::step", "INPUT::tabindex", "INPUT::type", "INPUT::usemap", "INPUT::value", "INS::datetime", "KEYGEN::disabled", "KEYGEN::keytype", "KEYGEN::name", "LABEL::accesskey", "LABEL::for", "LEGEND::accesskey", "LEGEND::align", "LI::type", "LI::value", "LINK::sizes", "MAP::name", "MENU::compact", "MENU::label", "MENU::type", "METER::high", "METER::low", "METER::max", "METER::min", "METER::value", "OBJECT::typemustmatch", "OL::compact", "OL::reversed", "OL::start", "OL::type", "OPTGROUP::disabled", "OPTGROUP::label", "OPTION::disabled", "OPTION::label", "OPTION::selected", "OPTION::value", "OUTPUT::for", "OUTPUT::name", "P::align", "PRE::width", "PROGRESS::max", "PROGRESS::min", "PROGRESS::value", "SELECT::autocomplete", "SELECT::disabled", "SELECT::multiple", "SELECT::name", "SELECT::required", "SELECT::size", "SELECT::tabindex", "SOURCE::type", "TABLE::align", "TABLE::bgcolor", "TABLE::border", "TABLE::cellpadding", "TABLE::cellspacing", "TABLE::frame", "TABLE::rules", "TABLE::summary", "TABLE::width", "TBODY::align", "TBODY::char", "TBODY::charoff", "TBODY::valign", "TD::abbr", "TD::align", "TD::axis", "TD::bgcolor", "TD::char", "TD::charoff", "TD::colspan", "TD::headers", "TD::height", "TD::nowrap", "TD::rowspan", "TD::scope", "TD::valign", "TD::width", "TEXTAREA::accesskey", "TEXTAREA::autocomplete", "TEXTAREA::cols", "TEXTAREA::disabled", "TEXTAREA::inputmode", "TEXTAREA::name", "TEXTAREA::placeholder", "TEXTAREA::readonly", "TEXTAREA::required", "TEXTAREA::rows", "TEXTAREA::tabindex", "TEXTAREA::wrap", "TFOOT::align", "TFOOT::char", "TFOOT::charoff", "TFOOT::valign", "TH::abbr", "TH::align", "TH::axis", "TH::bgcolor", "TH::char", "TH::charoff", "TH::colspan", "TH::headers", "TH::height", "TH::nowrap", "TH::rowspan", "TH::scope", "TH::valign", "TH::width", "THEAD::align", "THEAD::char", "THEAD::charoff", "THEAD::valign", "TR::align", "TR::bgcolor", "TR::char", "TR::charoff", "TR::valign", "TRACK::default", "TRACK::kind", "TRACK::label", "TRACK::srclang", "UL::compact", "UL::type", "VIDEO::controls", "VIDEO::height", "VIDEO::loop", "VIDEO::mediagroup", "VIDEO::muted", "VIDEO::preload", "VIDEO::width"], core.String);
  },
  /*html$._Html5NodeValidator._uriAttributes*/get _uriAttributes() {
    return dart.constList(["A::href", "AREA::href", "BLOCKQUOTE::cite", "BODY::background", "COMMAND::icon", "DEL::cite", "FORM::action", "IMG::src", "INPUT::src", "INS::cite", "Q::cite", "VIDEO::poster"], core.String);
  },
  /*html$._Html5NodeValidator._attributeValidators*/get _attributeValidators() {
    return new (IdentityMapOfString$Function()).new();
  }
});
html$.KeyCode = class KeyCode extends core.Object {
  static isCharacterKey(keyCode) {
    if (dart.notNull(keyCode) >= 48 && dart.notNull(keyCode) <= 57 || dart.notNull(keyCode) >= 96 && dart.notNull(keyCode) <= 106 || dart.notNull(keyCode) >= 65 && dart.notNull(keyCode) <= 90) {
      return true;
    }
    if (dart.test(html_common.Device.isWebKit) && keyCode === 0) {
      return true;
    }
    return keyCode === 32 || keyCode === 63 || keyCode === 107 || keyCode === 109 || keyCode === 110 || keyCode === 111 || keyCode === 186 || keyCode === 59 || keyCode === 189 || keyCode === 187 || keyCode === 61 || keyCode === 188 || keyCode === 190 || keyCode === 191 || keyCode === 192 || keyCode === 222 || keyCode === 219 || keyCode === 220 || keyCode === 221;
  }
  static _convertKeyCodeToKeyName(keyCode) {
    switch (keyCode) {
      case html$.KeyCode.ALT:
      {
        return html$._KeyName.ALT;
      }
      case html$.KeyCode.BACKSPACE:
      {
        return html$._KeyName.BACKSPACE;
      }
      case html$.KeyCode.CAPS_LOCK:
      {
        return html$._KeyName.CAPS_LOCK;
      }
      case html$.KeyCode.CTRL:
      {
        return html$._KeyName.CONTROL;
      }
      case html$.KeyCode.DELETE:
      {
        return html$._KeyName.DEL;
      }
      case html$.KeyCode.DOWN:
      {
        return html$._KeyName.DOWN;
      }
      case html$.KeyCode.END:
      {
        return html$._KeyName.END;
      }
      case html$.KeyCode.ENTER:
      {
        return html$._KeyName.ENTER;
      }
      case html$.KeyCode.ESC:
      {
        return html$._KeyName.ESC;
      }
      case html$.KeyCode.F1:
      {
        return html$._KeyName.F1;
      }
      case html$.KeyCode.F2:
      {
        return html$._KeyName.F2;
      }
      case html$.KeyCode.F3:
      {
        return html$._KeyName.F3;
      }
      case html$.KeyCode.F4:
      {
        return html$._KeyName.F4;
      }
      case html$.KeyCode.F5:
      {
        return html$._KeyName.F5;
      }
      case html$.KeyCode.F6:
      {
        return html$._KeyName.F6;
      }
      case html$.KeyCode.F7:
      {
        return html$._KeyName.F7;
      }
      case html$.KeyCode.F8:
      {
        return html$._KeyName.F8;
      }
      case html$.KeyCode.F9:
      {
        return html$._KeyName.F9;
      }
      case html$.KeyCode.F10:
      {
        return html$._KeyName.F10;
      }
      case html$.KeyCode.F11:
      {
        return html$._KeyName.F11;
      }
      case html$.KeyCode.F12:
      {
        return html$._KeyName.F12;
      }
      case html$.KeyCode.HOME:
      {
        return html$._KeyName.HOME;
      }
      case html$.KeyCode.INSERT:
      {
        return html$._KeyName.INSERT;
      }
      case html$.KeyCode.LEFT:
      {
        return html$._KeyName.LEFT;
      }
      case html$.KeyCode.META:
      {
        return html$._KeyName.META;
      }
      case html$.KeyCode.NUMLOCK:
      {
        return html$._KeyName.NUM_LOCK;
      }
      case html$.KeyCode.PAGE_DOWN:
      {
        return html$._KeyName.PAGE_DOWN;
      }
      case html$.KeyCode.PAGE_UP:
      {
        return html$._KeyName.PAGE_UP;
      }
      case html$.KeyCode.PAUSE:
      {
        return html$._KeyName.PAUSE;
      }
      case html$.KeyCode.PRINT_SCREEN:
      {
        return html$._KeyName.PRINT_SCREEN;
      }
      case html$.KeyCode.RIGHT:
      {
        return html$._KeyName.RIGHT;
      }
      case html$.KeyCode.SCROLL_LOCK:
      {
        return html$._KeyName.SCROLL;
      }
      case html$.KeyCode.SHIFT:
      {
        return html$._KeyName.SHIFT;
      }
      case html$.KeyCode.SPACE:
      {
        return html$._KeyName.SPACEBAR;
      }
      case html$.KeyCode.TAB:
      {
        return html$._KeyName.TAB;
      }
      case html$.KeyCode.UP:
      {
        return html$._KeyName.UP;
      }
      case html$.KeyCode.WIN_IME:
      case html$.KeyCode.WIN_KEY:
      case html$.KeyCode.WIN_KEY_LEFT:
      case html$.KeyCode.WIN_KEY_RIGHT:
      {
        return html$._KeyName.WIN;
      }
      default:
      {
        return html$._KeyName.UNIDENTIFIED;
      }
    }
    return html$._KeyName.UNIDENTIFIED;
  }
};
(html$.KeyCode.new = function() {
}).prototype = html$.KeyCode.prototype;
dart.addTypeTests(html$.KeyCode);
dart.defineLazy(html$.KeyCode, {
  /*html$.KeyCode.WIN_KEY_FF_LINUX*/get WIN_KEY_FF_LINUX() {
    return 0;
  },
  /*html$.KeyCode.MAC_ENTER*/get MAC_ENTER() {
    return 3;
  },
  /*html$.KeyCode.BACKSPACE*/get BACKSPACE() {
    return 8;
  },
  /*html$.KeyCode.TAB*/get TAB() {
    return 9;
  },
  /*html$.KeyCode.NUM_CENTER*/get NUM_CENTER() {
    return 12;
  },
  /*html$.KeyCode.ENTER*/get ENTER() {
    return 13;
  },
  /*html$.KeyCode.SHIFT*/get SHIFT() {
    return 16;
  },
  /*html$.KeyCode.CTRL*/get CTRL() {
    return 17;
  },
  /*html$.KeyCode.ALT*/get ALT() {
    return 18;
  },
  /*html$.KeyCode.PAUSE*/get PAUSE() {
    return 19;
  },
  /*html$.KeyCode.CAPS_LOCK*/get CAPS_LOCK() {
    return 20;
  },
  /*html$.KeyCode.ESC*/get ESC() {
    return 27;
  },
  /*html$.KeyCode.SPACE*/get SPACE() {
    return 32;
  },
  /*html$.KeyCode.PAGE_UP*/get PAGE_UP() {
    return 33;
  },
  /*html$.KeyCode.PAGE_DOWN*/get PAGE_DOWN() {
    return 34;
  },
  /*html$.KeyCode.END*/get END() {
    return 35;
  },
  /*html$.KeyCode.HOME*/get HOME() {
    return 36;
  },
  /*html$.KeyCode.LEFT*/get LEFT() {
    return 37;
  },
  /*html$.KeyCode.UP*/get UP() {
    return 38;
  },
  /*html$.KeyCode.RIGHT*/get RIGHT() {
    return 39;
  },
  /*html$.KeyCode.DOWN*/get DOWN() {
    return 40;
  },
  /*html$.KeyCode.NUM_NORTH_EAST*/get NUM_NORTH_EAST() {
    return 33;
  },
  /*html$.KeyCode.NUM_SOUTH_EAST*/get NUM_SOUTH_EAST() {
    return 34;
  },
  /*html$.KeyCode.NUM_SOUTH_WEST*/get NUM_SOUTH_WEST() {
    return 35;
  },
  /*html$.KeyCode.NUM_NORTH_WEST*/get NUM_NORTH_WEST() {
    return 36;
  },
  /*html$.KeyCode.NUM_WEST*/get NUM_WEST() {
    return 37;
  },
  /*html$.KeyCode.NUM_NORTH*/get NUM_NORTH() {
    return 38;
  },
  /*html$.KeyCode.NUM_EAST*/get NUM_EAST() {
    return 39;
  },
  /*html$.KeyCode.NUM_SOUTH*/get NUM_SOUTH() {
    return 40;
  },
  /*html$.KeyCode.PRINT_SCREEN*/get PRINT_SCREEN() {
    return 44;
  },
  /*html$.KeyCode.INSERT*/get INSERT() {
    return 45;
  },
  /*html$.KeyCode.NUM_INSERT*/get NUM_INSERT() {
    return 45;
  },
  /*html$.KeyCode.DELETE*/get DELETE() {
    return 46;
  },
  /*html$.KeyCode.NUM_DELETE*/get NUM_DELETE() {
    return 46;
  },
  /*html$.KeyCode.ZERO*/get ZERO() {
    return 48;
  },
  /*html$.KeyCode.ONE*/get ONE() {
    return 49;
  },
  /*html$.KeyCode.TWO*/get TWO() {
    return 50;
  },
  /*html$.KeyCode.THREE*/get THREE() {
    return 51;
  },
  /*html$.KeyCode.FOUR*/get FOUR() {
    return 52;
  },
  /*html$.KeyCode.FIVE*/get FIVE() {
    return 53;
  },
  /*html$.KeyCode.SIX*/get SIX() {
    return 54;
  },
  /*html$.KeyCode.SEVEN*/get SEVEN() {
    return 55;
  },
  /*html$.KeyCode.EIGHT*/get EIGHT() {
    return 56;
  },
  /*html$.KeyCode.NINE*/get NINE() {
    return 57;
  },
  /*html$.KeyCode.FF_SEMICOLON*/get FF_SEMICOLON() {
    return 59;
  },
  /*html$.KeyCode.FF_EQUALS*/get FF_EQUALS() {
    return 61;
  },
  /*html$.KeyCode.QUESTION_MARK*/get QUESTION_MARK() {
    return 63;
  },
  /*html$.KeyCode.A*/get A() {
    return 65;
  },
  /*html$.KeyCode.B*/get B() {
    return 66;
  },
  /*html$.KeyCode.C*/get C() {
    return 67;
  },
  /*html$.KeyCode.D*/get D() {
    return 68;
  },
  /*html$.KeyCode.E*/get E() {
    return 69;
  },
  /*html$.KeyCode.F*/get F() {
    return 70;
  },
  /*html$.KeyCode.G*/get G() {
    return 71;
  },
  /*html$.KeyCode.H*/get H() {
    return 72;
  },
  /*html$.KeyCode.I*/get I() {
    return 73;
  },
  /*html$.KeyCode.J*/get J() {
    return 74;
  },
  /*html$.KeyCode.K*/get K() {
    return 75;
  },
  /*html$.KeyCode.L*/get L() {
    return 76;
  },
  /*html$.KeyCode.M*/get M() {
    return 77;
  },
  /*html$.KeyCode.N*/get N() {
    return 78;
  },
  /*html$.KeyCode.O*/get O() {
    return 79;
  },
  /*html$.KeyCode.P*/get P() {
    return 80;
  },
  /*html$.KeyCode.Q*/get Q() {
    return 81;
  },
  /*html$.KeyCode.R*/get R() {
    return 82;
  },
  /*html$.KeyCode.S*/get S() {
    return 83;
  },
  /*html$.KeyCode.T*/get T() {
    return 84;
  },
  /*html$.KeyCode.U*/get U() {
    return 85;
  },
  /*html$.KeyCode.V*/get V() {
    return 86;
  },
  /*html$.KeyCode.W*/get W() {
    return 87;
  },
  /*html$.KeyCode.X*/get X() {
    return 88;
  },
  /*html$.KeyCode.Y*/get Y() {
    return 89;
  },
  /*html$.KeyCode.Z*/get Z() {
    return 90;
  },
  /*html$.KeyCode.META*/get META() {
    return 91;
  },
  /*html$.KeyCode.WIN_KEY_LEFT*/get WIN_KEY_LEFT() {
    return 91;
  },
  /*html$.KeyCode.WIN_KEY_RIGHT*/get WIN_KEY_RIGHT() {
    return 92;
  },
  /*html$.KeyCode.CONTEXT_MENU*/get CONTEXT_MENU() {
    return 93;
  },
  /*html$.KeyCode.NUM_ZERO*/get NUM_ZERO() {
    return 96;
  },
  /*html$.KeyCode.NUM_ONE*/get NUM_ONE() {
    return 97;
  },
  /*html$.KeyCode.NUM_TWO*/get NUM_TWO() {
    return 98;
  },
  /*html$.KeyCode.NUM_THREE*/get NUM_THREE() {
    return 99;
  },
  /*html$.KeyCode.NUM_FOUR*/get NUM_FOUR() {
    return 100;
  },
  /*html$.KeyCode.NUM_FIVE*/get NUM_FIVE() {
    return 101;
  },
  /*html$.KeyCode.NUM_SIX*/get NUM_SIX() {
    return 102;
  },
  /*html$.KeyCode.NUM_SEVEN*/get NUM_SEVEN() {
    return 103;
  },
  /*html$.KeyCode.NUM_EIGHT*/get NUM_EIGHT() {
    return 104;
  },
  /*html$.KeyCode.NUM_NINE*/get NUM_NINE() {
    return 105;
  },
  /*html$.KeyCode.NUM_MULTIPLY*/get NUM_MULTIPLY() {
    return 106;
  },
  /*html$.KeyCode.NUM_PLUS*/get NUM_PLUS() {
    return 107;
  },
  /*html$.KeyCode.NUM_MINUS*/get NUM_MINUS() {
    return 109;
  },
  /*html$.KeyCode.NUM_PERIOD*/get NUM_PERIOD() {
    return 110;
  },
  /*html$.KeyCode.NUM_DIVISION*/get NUM_DIVISION() {
    return 111;
  },
  /*html$.KeyCode.F1*/get F1() {
    return 112;
  },
  /*html$.KeyCode.F2*/get F2() {
    return 113;
  },
  /*html$.KeyCode.F3*/get F3() {
    return 114;
  },
  /*html$.KeyCode.F4*/get F4() {
    return 115;
  },
  /*html$.KeyCode.F5*/get F5() {
    return 116;
  },
  /*html$.KeyCode.F6*/get F6() {
    return 117;
  },
  /*html$.KeyCode.F7*/get F7() {
    return 118;
  },
  /*html$.KeyCode.F8*/get F8() {
    return 119;
  },
  /*html$.KeyCode.F9*/get F9() {
    return 120;
  },
  /*html$.KeyCode.F10*/get F10() {
    return 121;
  },
  /*html$.KeyCode.F11*/get F11() {
    return 122;
  },
  /*html$.KeyCode.F12*/get F12() {
    return 123;
  },
  /*html$.KeyCode.NUMLOCK*/get NUMLOCK() {
    return 144;
  },
  /*html$.KeyCode.SCROLL_LOCK*/get SCROLL_LOCK() {
    return 145;
  },
  /*html$.KeyCode.FIRST_MEDIA_KEY*/get FIRST_MEDIA_KEY() {
    return 166;
  },
  /*html$.KeyCode.LAST_MEDIA_KEY*/get LAST_MEDIA_KEY() {
    return 183;
  },
  /*html$.KeyCode.SEMICOLON*/get SEMICOLON() {
    return 186;
  },
  /*html$.KeyCode.DASH*/get DASH() {
    return 189;
  },
  /*html$.KeyCode.EQUALS*/get EQUALS() {
    return 187;
  },
  /*html$.KeyCode.COMMA*/get COMMA() {
    return 188;
  },
  /*html$.KeyCode.PERIOD*/get PERIOD() {
    return 190;
  },
  /*html$.KeyCode.SLASH*/get SLASH() {
    return 191;
  },
  /*html$.KeyCode.APOSTROPHE*/get APOSTROPHE() {
    return 192;
  },
  /*html$.KeyCode.TILDE*/get TILDE() {
    return 192;
  },
  /*html$.KeyCode.SINGLE_QUOTE*/get SINGLE_QUOTE() {
    return 222;
  },
  /*html$.KeyCode.OPEN_SQUARE_BRACKET*/get OPEN_SQUARE_BRACKET() {
    return 219;
  },
  /*html$.KeyCode.BACKSLASH*/get BACKSLASH() {
    return 220;
  },
  /*html$.KeyCode.CLOSE_SQUARE_BRACKET*/get CLOSE_SQUARE_BRACKET() {
    return 221;
  },
  /*html$.KeyCode.WIN_KEY*/get WIN_KEY() {
    return 224;
  },
  /*html$.KeyCode.MAC_FF_META*/get MAC_FF_META() {
    return 224;
  },
  /*html$.KeyCode.WIN_IME*/get WIN_IME() {
    return 229;
  },
  /*html$.KeyCode.UNKNOWN*/get UNKNOWN() {
    return -1;
  }
});
html$.KeyLocation = class KeyLocation extends core.Object {};
(html$.KeyLocation.new = function() {
}).prototype = html$.KeyLocation.prototype;
dart.addTypeTests(html$.KeyLocation);
dart.defineLazy(html$.KeyLocation, {
  /*html$.KeyLocation.STANDARD*/get STANDARD() {
    return 0;
  },
  /*html$.KeyLocation.LEFT*/get LEFT() {
    return 1;
  },
  /*html$.KeyLocation.RIGHT*/get RIGHT() {
    return 2;
  },
  /*html$.KeyLocation.NUMPAD*/get NUMPAD() {
    return 3;
  },
  /*html$.KeyLocation.MOBILE*/get MOBILE() {
    return 4;
  },
  /*html$.KeyLocation.JOYSTICK*/get JOYSTICK() {
    return 5;
  }
});
html$._KeyName = class _KeyName extends core.Object {};
(html$._KeyName.new = function() {
}).prototype = html$._KeyName.prototype;
dart.addTypeTests(html$._KeyName);
dart.defineLazy(html$._KeyName, {
  /*html$._KeyName.ACCEPT*/get ACCEPT() {
    return "Accept";
  },
  /*html$._KeyName.ADD*/get ADD() {
    return "Add";
  },
  /*html$._KeyName.AGAIN*/get AGAIN() {
    return "Again";
  },
  /*html$._KeyName.ALL_CANDIDATES*/get ALL_CANDIDATES() {
    return "AllCandidates";
  },
  /*html$._KeyName.ALPHANUMERIC*/get ALPHANUMERIC() {
    return "Alphanumeric";
  },
  /*html$._KeyName.ALT*/get ALT() {
    return "Alt";
  },
  /*html$._KeyName.ALT_GRAPH*/get ALT_GRAPH() {
    return "AltGraph";
  },
  /*html$._KeyName.APPS*/get APPS() {
    return "Apps";
  },
  /*html$._KeyName.ATTN*/get ATTN() {
    return "Attn";
  },
  /*html$._KeyName.BROWSER_BACK*/get BROWSER_BACK() {
    return "BrowserBack";
  },
  /*html$._KeyName.BROWSER_FAVORTIES*/get BROWSER_FAVORTIES() {
    return "BrowserFavorites";
  },
  /*html$._KeyName.BROWSER_FORWARD*/get BROWSER_FORWARD() {
    return "BrowserForward";
  },
  /*html$._KeyName.BROWSER_NAME*/get BROWSER_NAME() {
    return "BrowserHome";
  },
  /*html$._KeyName.BROWSER_REFRESH*/get BROWSER_REFRESH() {
    return "BrowserRefresh";
  },
  /*html$._KeyName.BROWSER_SEARCH*/get BROWSER_SEARCH() {
    return "BrowserSearch";
  },
  /*html$._KeyName.BROWSER_STOP*/get BROWSER_STOP() {
    return "BrowserStop";
  },
  /*html$._KeyName.CAMERA*/get CAMERA() {
    return "Camera";
  },
  /*html$._KeyName.CAPS_LOCK*/get CAPS_LOCK() {
    return "CapsLock";
  },
  /*html$._KeyName.CLEAR*/get CLEAR() {
    return "Clear";
  },
  /*html$._KeyName.CODE_INPUT*/get CODE_INPUT() {
    return "CodeInput";
  },
  /*html$._KeyName.COMPOSE*/get COMPOSE() {
    return "Compose";
  },
  /*html$._KeyName.CONTROL*/get CONTROL() {
    return "Control";
  },
  /*html$._KeyName.CRSEL*/get CRSEL() {
    return "Crsel";
  },
  /*html$._KeyName.CONVERT*/get CONVERT() {
    return "Convert";
  },
  /*html$._KeyName.COPY*/get COPY() {
    return "Copy";
  },
  /*html$._KeyName.CUT*/get CUT() {
    return "Cut";
  },
  /*html$._KeyName.DECIMAL*/get DECIMAL() {
    return "Decimal";
  },
  /*html$._KeyName.DIVIDE*/get DIVIDE() {
    return "Divide";
  },
  /*html$._KeyName.DOWN*/get DOWN() {
    return "Down";
  },
  /*html$._KeyName.DOWN_LEFT*/get DOWN_LEFT() {
    return "DownLeft";
  },
  /*html$._KeyName.DOWN_RIGHT*/get DOWN_RIGHT() {
    return "DownRight";
  },
  /*html$._KeyName.EJECT*/get EJECT() {
    return "Eject";
  },
  /*html$._KeyName.END*/get END() {
    return "End";
  },
  /*html$._KeyName.ENTER*/get ENTER() {
    return "Enter";
  },
  /*html$._KeyName.ERASE_EOF*/get ERASE_EOF() {
    return "EraseEof";
  },
  /*html$._KeyName.EXECUTE*/get EXECUTE() {
    return "Execute";
  },
  /*html$._KeyName.EXSEL*/get EXSEL() {
    return "Exsel";
  },
  /*html$._KeyName.FN*/get FN() {
    return "Fn";
  },
  /*html$._KeyName.F1*/get F1() {
    return "F1";
  },
  /*html$._KeyName.F2*/get F2() {
    return "F2";
  },
  /*html$._KeyName.F3*/get F3() {
    return "F3";
  },
  /*html$._KeyName.F4*/get F4() {
    return "F4";
  },
  /*html$._KeyName.F5*/get F5() {
    return "F5";
  },
  /*html$._KeyName.F6*/get F6() {
    return "F6";
  },
  /*html$._KeyName.F7*/get F7() {
    return "F7";
  },
  /*html$._KeyName.F8*/get F8() {
    return "F8";
  },
  /*html$._KeyName.F9*/get F9() {
    return "F9";
  },
  /*html$._KeyName.F10*/get F10() {
    return "F10";
  },
  /*html$._KeyName.F11*/get F11() {
    return "F11";
  },
  /*html$._KeyName.F12*/get F12() {
    return "F12";
  },
  /*html$._KeyName.F13*/get F13() {
    return "F13";
  },
  /*html$._KeyName.F14*/get F14() {
    return "F14";
  },
  /*html$._KeyName.F15*/get F15() {
    return "F15";
  },
  /*html$._KeyName.F16*/get F16() {
    return "F16";
  },
  /*html$._KeyName.F17*/get F17() {
    return "F17";
  },
  /*html$._KeyName.F18*/get F18() {
    return "F18";
  },
  /*html$._KeyName.F19*/get F19() {
    return "F19";
  },
  /*html$._KeyName.F20*/get F20() {
    return "F20";
  },
  /*html$._KeyName.F21*/get F21() {
    return "F21";
  },
  /*html$._KeyName.F22*/get F22() {
    return "F22";
  },
  /*html$._KeyName.F23*/get F23() {
    return "F23";
  },
  /*html$._KeyName.F24*/get F24() {
    return "F24";
  },
  /*html$._KeyName.FINAL_MODE*/get FINAL_MODE() {
    return "FinalMode";
  },
  /*html$._KeyName.FIND*/get FIND() {
    return "Find";
  },
  /*html$._KeyName.FULL_WIDTH*/get FULL_WIDTH() {
    return "FullWidth";
  },
  /*html$._KeyName.HALF_WIDTH*/get HALF_WIDTH() {
    return "HalfWidth";
  },
  /*html$._KeyName.HANGUL_MODE*/get HANGUL_MODE() {
    return "HangulMode";
  },
  /*html$._KeyName.HANJA_MODE*/get HANJA_MODE() {
    return "HanjaMode";
  },
  /*html$._KeyName.HELP*/get HELP() {
    return "Help";
  },
  /*html$._KeyName.HIRAGANA*/get HIRAGANA() {
    return "Hiragana";
  },
  /*html$._KeyName.HOME*/get HOME() {
    return "Home";
  },
  /*html$._KeyName.INSERT*/get INSERT() {
    return "Insert";
  },
  /*html$._KeyName.JAPANESE_HIRAGANA*/get JAPANESE_HIRAGANA() {
    return "JapaneseHiragana";
  },
  /*html$._KeyName.JAPANESE_KATAKANA*/get JAPANESE_KATAKANA() {
    return "JapaneseKatakana";
  },
  /*html$._KeyName.JAPANESE_ROMAJI*/get JAPANESE_ROMAJI() {
    return "JapaneseRomaji";
  },
  /*html$._KeyName.JUNJA_MODE*/get JUNJA_MODE() {
    return "JunjaMode";
  },
  /*html$._KeyName.KANA_MODE*/get KANA_MODE() {
    return "KanaMode";
  },
  /*html$._KeyName.KANJI_MODE*/get KANJI_MODE() {
    return "KanjiMode";
  },
  /*html$._KeyName.KATAKANA*/get KATAKANA() {
    return "Katakana";
  },
  /*html$._KeyName.LAUNCH_APPLICATION_1*/get LAUNCH_APPLICATION_1() {
    return "LaunchApplication1";
  },
  /*html$._KeyName.LAUNCH_APPLICATION_2*/get LAUNCH_APPLICATION_2() {
    return "LaunchApplication2";
  },
  /*html$._KeyName.LAUNCH_MAIL*/get LAUNCH_MAIL() {
    return "LaunchMail";
  },
  /*html$._KeyName.LEFT*/get LEFT() {
    return "Left";
  },
  /*html$._KeyName.MENU*/get MENU() {
    return "Menu";
  },
  /*html$._KeyName.META*/get META() {
    return "Meta";
  },
  /*html$._KeyName.MEDIA_NEXT_TRACK*/get MEDIA_NEXT_TRACK() {
    return "MediaNextTrack";
  },
  /*html$._KeyName.MEDIA_PAUSE_PLAY*/get MEDIA_PAUSE_PLAY() {
    return "MediaPlayPause";
  },
  /*html$._KeyName.MEDIA_PREVIOUS_TRACK*/get MEDIA_PREVIOUS_TRACK() {
    return "MediaPreviousTrack";
  },
  /*html$._KeyName.MEDIA_STOP*/get MEDIA_STOP() {
    return "MediaStop";
  },
  /*html$._KeyName.MODE_CHANGE*/get MODE_CHANGE() {
    return "ModeChange";
  },
  /*html$._KeyName.NEXT_CANDIDATE*/get NEXT_CANDIDATE() {
    return "NextCandidate";
  },
  /*html$._KeyName.NON_CONVERT*/get NON_CONVERT() {
    return "Nonconvert";
  },
  /*html$._KeyName.NUM_LOCK*/get NUM_LOCK() {
    return "NumLock";
  },
  /*html$._KeyName.PAGE_DOWN*/get PAGE_DOWN() {
    return "PageDown";
  },
  /*html$._KeyName.PAGE_UP*/get PAGE_UP() {
    return "PageUp";
  },
  /*html$._KeyName.PASTE*/get PASTE() {
    return "Paste";
  },
  /*html$._KeyName.PAUSE*/get PAUSE() {
    return "Pause";
  },
  /*html$._KeyName.PLAY*/get PLAY() {
    return "Play";
  },
  /*html$._KeyName.POWER*/get POWER() {
    return "Power";
  },
  /*html$._KeyName.PREVIOUS_CANDIDATE*/get PREVIOUS_CANDIDATE() {
    return "PreviousCandidate";
  },
  /*html$._KeyName.PRINT_SCREEN*/get PRINT_SCREEN() {
    return "PrintScreen";
  },
  /*html$._KeyName.PROCESS*/get PROCESS() {
    return "Process";
  },
  /*html$._KeyName.PROPS*/get PROPS() {
    return "Props";
  },
  /*html$._KeyName.RIGHT*/get RIGHT() {
    return "Right";
  },
  /*html$._KeyName.ROMAN_CHARACTERS*/get ROMAN_CHARACTERS() {
    return "RomanCharacters";
  },
  /*html$._KeyName.SCROLL*/get SCROLL() {
    return "Scroll";
  },
  /*html$._KeyName.SELECT*/get SELECT() {
    return "Select";
  },
  /*html$._KeyName.SELECT_MEDIA*/get SELECT_MEDIA() {
    return "SelectMedia";
  },
  /*html$._KeyName.SEPARATOR*/get SEPARATOR() {
    return "Separator";
  },
  /*html$._KeyName.SHIFT*/get SHIFT() {
    return "Shift";
  },
  /*html$._KeyName.SOFT_1*/get SOFT_1() {
    return "Soft1";
  },
  /*html$._KeyName.SOFT_2*/get SOFT_2() {
    return "Soft2";
  },
  /*html$._KeyName.SOFT_3*/get SOFT_3() {
    return "Soft3";
  },
  /*html$._KeyName.SOFT_4*/get SOFT_4() {
    return "Soft4";
  },
  /*html$._KeyName.STOP*/get STOP() {
    return "Stop";
  },
  /*html$._KeyName.SUBTRACT*/get SUBTRACT() {
    return "Subtract";
  },
  /*html$._KeyName.SYMBOL_LOCK*/get SYMBOL_LOCK() {
    return "SymbolLock";
  },
  /*html$._KeyName.UP*/get UP() {
    return "Up";
  },
  /*html$._KeyName.UP_LEFT*/get UP_LEFT() {
    return "UpLeft";
  },
  /*html$._KeyName.UP_RIGHT*/get UP_RIGHT() {
    return "UpRight";
  },
  /*html$._KeyName.UNDO*/get UNDO() {
    return "Undo";
  },
  /*html$._KeyName.VOLUME_DOWN*/get VOLUME_DOWN() {
    return "VolumeDown";
  },
  /*html$._KeyName.VOLUMN_MUTE*/get VOLUMN_MUTE() {
    return "VolumeMute";
  },
  /*html$._KeyName.VOLUMN_UP*/get VOLUMN_UP() {
    return "VolumeUp";
  },
  /*html$._KeyName.WIN*/get WIN() {
    return "Win";
  },
  /*html$._KeyName.ZOOM*/get ZOOM() {
    return "Zoom";
  },
  /*html$._KeyName.BACKSPACE*/get BACKSPACE() {
    return "Backspace";
  },
  /*html$._KeyName.TAB*/get TAB() {
    return "Tab";
  },
  /*html$._KeyName.CANCEL*/get CANCEL() {
    return "Cancel";
  },
  /*html$._KeyName.ESC*/get ESC() {
    return "Esc";
  },
  /*html$._KeyName.SPACEBAR*/get SPACEBAR() {
    return "Spacebar";
  },
  /*html$._KeyName.DEL*/get DEL() {
    return "Del";
  },
  /*html$._KeyName.DEAD_GRAVE*/get DEAD_GRAVE() {
    return "DeadGrave";
  },
  /*html$._KeyName.DEAD_EACUTE*/get DEAD_EACUTE() {
    return "DeadEacute";
  },
  /*html$._KeyName.DEAD_CIRCUMFLEX*/get DEAD_CIRCUMFLEX() {
    return "DeadCircumflex";
  },
  /*html$._KeyName.DEAD_TILDE*/get DEAD_TILDE() {
    return "DeadTilde";
  },
  /*html$._KeyName.DEAD_MACRON*/get DEAD_MACRON() {
    return "DeadMacron";
  },
  /*html$._KeyName.DEAD_BREVE*/get DEAD_BREVE() {
    return "DeadBreve";
  },
  /*html$._KeyName.DEAD_ABOVE_DOT*/get DEAD_ABOVE_DOT() {
    return "DeadAboveDot";
  },
  /*html$._KeyName.DEAD_UMLAUT*/get DEAD_UMLAUT() {
    return "DeadUmlaut";
  },
  /*html$._KeyName.DEAD_ABOVE_RING*/get DEAD_ABOVE_RING() {
    return "DeadAboveRing";
  },
  /*html$._KeyName.DEAD_DOUBLEACUTE*/get DEAD_DOUBLEACUTE() {
    return "DeadDoubleacute";
  },
  /*html$._KeyName.DEAD_CARON*/get DEAD_CARON() {
    return "DeadCaron";
  },
  /*html$._KeyName.DEAD_CEDILLA*/get DEAD_CEDILLA() {
    return "DeadCedilla";
  },
  /*html$._KeyName.DEAD_OGONEK*/get DEAD_OGONEK() {
    return "DeadOgonek";
  },
  /*html$._KeyName.DEAD_IOTA*/get DEAD_IOTA() {
    return "DeadIota";
  },
  /*html$._KeyName.DEAD_VOICED_SOUND*/get DEAD_VOICED_SOUND() {
    return "DeadVoicedSound";
  },
  /*html$._KeyName.DEC_SEMIVOICED_SOUND*/get DEC_SEMIVOICED_SOUND() {
    return "DeadSemivoicedSound";
  },
  /*html$._KeyName.UNIDENTIFIED*/get UNIDENTIFIED() {
    return "Unidentified";
  }
});
const _stream$0 = Symbol('_stream');
const _keyDownList = Symbol('_keyDownList');
const _capsLockOn = Symbol('_capsLockOn');
const _determineKeyCodeForKeypress = Symbol('_determineKeyCodeForKeypress');
const _findCharCodeKeyDown = Symbol('_findCharCodeKeyDown');
const _firesKeyPressEvent = Symbol('_firesKeyPressEvent');
const _normalizeKeyCodes = Symbol('_normalizeKeyCodes');
html$._KeyboardEventHandler = class _KeyboardEventHandler extends html$.EventStreamProvider$(html$.KeyEvent) {
  forTarget(e, opts) {
    let useCapture = opts && 'useCapture' in opts ? opts.useCapture : false;
    let handler = new html$._KeyboardEventHandler.initializeAllEventListeners(this[_type$1], e);
    return handler[_stream$0];
  }
  get [_capsLockOn]() {
    return this[_keyDownList][$any](dart.fn(element => element.keyCode === html$.KeyCode.CAPS_LOCK, KeyEventTobool()));
  }
  [_determineKeyCodeForKeypress](event) {
    for (let prevEvent of this[_keyDownList]) {
      if (prevEvent[_shadowCharCode] == event.charCode) {
        return prevEvent.keyCode;
      }
      if ((dart.test(event.shiftKey) || dart.test(this[_capsLockOn])) && dart.notNull(event.charCode) >= dart.notNull("A"[$codeUnits][$_get](0)) && dart.notNull(event.charCode) <= dart.notNull("Z"[$codeUnits][$_get](0)) && dart.notNull(event.charCode) + dart.notNull(html$._KeyboardEventHandler._ROMAN_ALPHABET_OFFSET) === prevEvent[_shadowCharCode]) {
        return prevEvent.keyCode;
      }
    }
    return html$.KeyCode.UNKNOWN;
  }
  [_findCharCodeKeyDown](event) {
    if (event.location === 3) {
      switch (event.keyCode) {
        case html$.KeyCode.NUM_ZERO:
        {
          return html$.KeyCode.ZERO;
        }
        case html$.KeyCode.NUM_ONE:
        {
          return html$.KeyCode.ONE;
        }
        case html$.KeyCode.NUM_TWO:
        {
          return html$.KeyCode.TWO;
        }
        case html$.KeyCode.NUM_THREE:
        {
          return html$.KeyCode.THREE;
        }
        case html$.KeyCode.NUM_FOUR:
        {
          return html$.KeyCode.FOUR;
        }
        case html$.KeyCode.NUM_FIVE:
        {
          return html$.KeyCode.FIVE;
        }
        case html$.KeyCode.NUM_SIX:
        {
          return html$.KeyCode.SIX;
        }
        case html$.KeyCode.NUM_SEVEN:
        {
          return html$.KeyCode.SEVEN;
        }
        case html$.KeyCode.NUM_EIGHT:
        {
          return html$.KeyCode.EIGHT;
        }
        case html$.KeyCode.NUM_NINE:
        {
          return html$.KeyCode.NINE;
        }
        case html$.KeyCode.NUM_MULTIPLY:
        {
          return 42;
        }
        case html$.KeyCode.NUM_PLUS:
        {
          return 43;
        }
        case html$.KeyCode.NUM_MINUS:
        {
          return 45;
        }
        case html$.KeyCode.NUM_PERIOD:
        {
          return 46;
        }
        case html$.KeyCode.NUM_DIVISION:
        {
          return 47;
        }
      }
    } else if (dart.notNull(event.keyCode) >= 65 && dart.notNull(event.keyCode) <= 90) {
      return dart.notNull(event.keyCode) + dart.notNull(html$._KeyboardEventHandler._ROMAN_ALPHABET_OFFSET);
    }
    switch (event.keyCode) {
      case html$.KeyCode.SEMICOLON:
      {
        return html$.KeyCode.FF_SEMICOLON;
      }
      case html$.KeyCode.EQUALS:
      {
        return html$.KeyCode.FF_EQUALS;
      }
      case html$.KeyCode.COMMA:
      {
        return 44;
      }
      case html$.KeyCode.DASH:
      {
        return 45;
      }
      case html$.KeyCode.PERIOD:
      {
        return 46;
      }
      case html$.KeyCode.SLASH:
      {
        return 47;
      }
      case html$.KeyCode.APOSTROPHE:
      {
        return 96;
      }
      case html$.KeyCode.OPEN_SQUARE_BRACKET:
      {
        return 91;
      }
      case html$.KeyCode.BACKSLASH:
      {
        return 92;
      }
      case html$.KeyCode.CLOSE_SQUARE_BRACKET:
      {
        return 93;
      }
      case html$.KeyCode.SINGLE_QUOTE:
      {
        return 39;
      }
    }
    return event.keyCode;
  }
  [_firesKeyPressEvent](event) {
    if (!dart.test(html_common.Device.isIE) && !dart.test(html_common.Device.isWebKit)) {
      return true;
    }
    if (html_common.Device.userAgent[$contains]("Mac") && dart.test(event.altKey)) {
      return html$.KeyCode.isCharacterKey(event.keyCode);
    }
    if (dart.test(event.altKey) && !dart.test(event.ctrlKey)) {
      return false;
    }
    if (!dart.test(event.shiftKey) && (this[_keyDownList][$last].keyCode === html$.KeyCode.CTRL || this[_keyDownList][$last].keyCode === html$.KeyCode.ALT || html_common.Device.userAgent[$contains]("Mac") && this[_keyDownList][$last].keyCode === html$.KeyCode.META)) {
      return false;
    }
    if (dart.test(html_common.Device.isWebKit) && dart.test(event.ctrlKey) && dart.test(event.shiftKey) && (event.keyCode === html$.KeyCode.BACKSLASH || event.keyCode === html$.KeyCode.OPEN_SQUARE_BRACKET || event.keyCode === html$.KeyCode.CLOSE_SQUARE_BRACKET || event.keyCode === html$.KeyCode.TILDE || event.keyCode === html$.KeyCode.SEMICOLON || event.keyCode === html$.KeyCode.DASH || event.keyCode === html$.KeyCode.EQUALS || event.keyCode === html$.KeyCode.COMMA || event.keyCode === html$.KeyCode.PERIOD || event.keyCode === html$.KeyCode.SLASH || event.keyCode === html$.KeyCode.APOSTROPHE || event.keyCode === html$.KeyCode.SINGLE_QUOTE)) {
      return false;
    }
    switch (event.keyCode) {
      case html$.KeyCode.ENTER:
      {
        return !dart.test(html_common.Device.isIE);
      }
      case html$.KeyCode.ESC:
      {
        return !dart.test(html_common.Device.isWebKit);
      }
    }
    return html$.KeyCode.isCharacterKey(event.keyCode);
  }
  [_normalizeKeyCodes](event) {
    if (dart.test(html_common.Device.isFirefox)) {
      switch (event.keyCode) {
        case html$.KeyCode.FF_EQUALS:
        {
          return html$.KeyCode.EQUALS;
        }
        case html$.KeyCode.FF_SEMICOLON:
        {
          return html$.KeyCode.SEMICOLON;
        }
        case html$.KeyCode.MAC_FF_META:
        {
          return html$.KeyCode.META;
        }
        case html$.KeyCode.WIN_KEY_FF_LINUX:
        {
          return html$.KeyCode.WIN_KEY;
        }
      }
    }
    return event.keyCode;
  }
  processKeyDown(e) {
    if (dart.notNull(this[_keyDownList][$length]) > 0 && (this[_keyDownList][$last].keyCode === html$.KeyCode.CTRL && !dart.test(e.ctrlKey) || this[_keyDownList][$last].keyCode === html$.KeyCode.ALT && !dart.test(e.altKey) || html_common.Device.userAgent[$contains]("Mac") && this[_keyDownList][$last].keyCode === html$.KeyCode.META && !dart.test(e.metaKey))) {
      this[_keyDownList][$clear]();
    }
    let event = new html$.KeyEvent.wrap(e);
    event[_shadowKeyCode] = this[_normalizeKeyCodes](event);
    event[_shadowCharCode] = this[_findCharCodeKeyDown](event);
    if (dart.notNull(this[_keyDownList][$length]) > 0 && event.keyCode != this[_keyDownList][$last].keyCode && !dart.test(this[_firesKeyPressEvent](event))) {
      this.processKeyPress(e);
    }
    this[_keyDownList][$add](event);
    this[_stream$0].add(event);
  }
  processKeyPress(event) {
    let e = new html$.KeyEvent.wrap(event);
    if (dart.test(html_common.Device.isIE)) {
      if (e.keyCode === html$.KeyCode.ENTER || e.keyCode === html$.KeyCode.ESC) {
        e[_shadowCharCode] = 0;
      } else {
        e[_shadowCharCode] = e.keyCode;
      }
    } else if (dart.test(html_common.Device.isOpera)) {
      e[_shadowCharCode] = dart.test(html$.KeyCode.isCharacterKey(e.keyCode)) ? e.keyCode : 0;
    }
    e[_shadowKeyCode] = this[_determineKeyCodeForKeypress](e);
    if (e[_shadowKeyIdentifier] != null && dart.test(html$._KeyboardEventHandler._keyIdentifier[$containsKey](e[_shadowKeyIdentifier]))) {
      e[_shadowKeyCode] = html$._KeyboardEventHandler._keyIdentifier[$_get](e[_shadowKeyIdentifier]);
    }
    e[_shadowAltKey] = this[_keyDownList][$any](dart.fn(element => element.altKey, KeyEventTobool()));
    this[_stream$0].add(e);
  }
  processKeyUp(event) {
    let e = new html$.KeyEvent.wrap(event);
    let toRemove = null;
    for (let key of this[_keyDownList]) {
      if (key.keyCode == e.keyCode) {
        toRemove = key;
      }
    }
    if (toRemove != null) {
      this[_keyDownList][$removeWhere](dart.fn(element => dart.equals(element, toRemove), KeyEventTobool()));
    } else if (dart.notNull(this[_keyDownList][$length]) > 0) {
      this[_keyDownList][$removeLast]();
    }
    this[_stream$0].add(e);
  }
};
(html$._KeyboardEventHandler.new = function(type) {
  this[_keyDownList] = JSArrayOfKeyEvent().of([]);
  this[_type$1] = type;
  this[_stream$0] = new html$._CustomKeyEventStreamImpl.new("event");
  this[_target$0] = null;
  html$._KeyboardEventHandler.__proto__.new.call(this, "KeyEvent");
}).prototype = html$._KeyboardEventHandler.prototype;
(html$._KeyboardEventHandler.initializeAllEventListeners = function(type, target) {
  this[_keyDownList] = JSArrayOfKeyEvent().of([]);
  this[_stream$0] = null;
  this[_type$1] = type;
  this[_target$0] = target;
  html$._KeyboardEventHandler.__proto__.new.call(this, "KeyEvent");
  html$.Element.keyDownEvent.forTarget(this[_target$0], {useCapture: true}).listen(dart.bind(this, 'processKeyDown'));
  html$.Element.keyPressEvent.forTarget(this[_target$0], {useCapture: true}).listen(dart.bind(this, 'processKeyPress'));
  html$.Element.keyUpEvent.forTarget(this[_target$0], {useCapture: true}).listen(dart.bind(this, 'processKeyUp'));
  this[_stream$0] = new html$._CustomKeyEventStreamImpl.new(this[_type$1]);
}).prototype = html$._KeyboardEventHandler.prototype;
dart.addTypeTests(html$._KeyboardEventHandler);
dart.setMethodSignature(html$._KeyboardEventHandler, () => ({
  __proto__: dart.getMethods(html$._KeyboardEventHandler.__proto__),
  forTarget: dart.fnType(html$.CustomStream$(html$.KeyEvent), [html$.EventTarget], {useCapture: core.bool}),
  [_determineKeyCodeForKeypress]: dart.fnType(core.int, [html$.KeyboardEvent]),
  [_findCharCodeKeyDown]: dart.fnType(core.int, [html$.KeyboardEvent]),
  [_firesKeyPressEvent]: dart.fnType(core.bool, [html$.KeyEvent]),
  [_normalizeKeyCodes]: dart.fnType(core.int, [html$.KeyboardEvent]),
  processKeyDown: dart.fnType(dart.void, [html$.KeyboardEvent]),
  processKeyPress: dart.fnType(dart.void, [html$.KeyboardEvent]),
  processKeyUp: dart.fnType(dart.void, [html$.KeyboardEvent])
}));
dart.setGetterSignature(html$._KeyboardEventHandler, () => ({
  __proto__: dart.getGetters(html$._KeyboardEventHandler.__proto__),
  [_capsLockOn]: core.bool
}));
dart.setFieldSignature(html$._KeyboardEventHandler, () => ({
  __proto__: dart.getFields(html$._KeyboardEventHandler.__proto__),
  [_keyDownList]: dart.finalFieldType(ListOfKeyEvent()),
  [_type$1]: dart.finalFieldType(core.String),
  [_target$0]: dart.finalFieldType(html$.EventTarget),
  [_stream$0]: dart.fieldType(html$._CustomKeyEventStreamImpl)
}));
dart.defineLazy(html$._KeyboardEventHandler, {
  /*html$._KeyboardEventHandler._ROMAN_ALPHABET_OFFSET*/get _ROMAN_ALPHABET_OFFSET() {
    return dart.notNull("a"[$codeUnits][$_get](0)) - dart.notNull("A"[$codeUnits][$_get](0));
  },
  /*html$._KeyboardEventHandler._EVENT_TYPE*/get _EVENT_TYPE() {
    return "KeyEvent";
  },
  /*html$._KeyboardEventHandler._keyIdentifier*/get _keyIdentifier() {
    return dart.constMap(core.String, core.int, ["Up", html$.KeyCode.UP, "Down", html$.KeyCode.DOWN, "Left", html$.KeyCode.LEFT, "Right", html$.KeyCode.RIGHT, "Enter", html$.KeyCode.ENTER, "F1", html$.KeyCode.F1, "F2", html$.KeyCode.F2, "F3", html$.KeyCode.F3, "F4", html$.KeyCode.F4, "F5", html$.KeyCode.F5, "F6", html$.KeyCode.F6, "F7", html$.KeyCode.F7, "F8", html$.KeyCode.F8, "F9", html$.KeyCode.F9, "F10", html$.KeyCode.F10, "F11", html$.KeyCode.F11, "F12", html$.KeyCode.F12, "U+007F", html$.KeyCode.DELETE, "Home", html$.KeyCode.HOME, "End", html$.KeyCode.END, "PageUp", html$.KeyCode.PAGE_UP, "PageDown", html$.KeyCode.PAGE_DOWN, "Insert", html$.KeyCode.INSERT]);
  }
});
html$.KeyboardEventStream = class KeyboardEventStream extends core.Object {
  static onKeyPress(target) {
    return new html$._KeyboardEventHandler.new("keypress").forTarget(target);
  }
  static onKeyUp(target) {
    return new html$._KeyboardEventHandler.new("keyup").forTarget(target);
  }
  static onKeyDown(target) {
    return new html$._KeyboardEventHandler.new("keydown").forTarget(target);
  }
};
(html$.KeyboardEventStream.new = function() {
}).prototype = html$.KeyboardEventStream.prototype;
dart.addTypeTests(html$.KeyboardEventStream);
const _validators = Symbol('_validators');
html$.NodeValidatorBuilder = class NodeValidatorBuilder extends core.Object {
  allowNavigation(uriPolicy) {
    if (uriPolicy === void 0) uriPolicy = null;
    if (uriPolicy == null) {
      uriPolicy = html$.UriPolicy.new();
    }
    this.add(html$._SimpleNodeValidator.allowNavigation(uriPolicy));
  }
  allowImages(uriPolicy) {
    if (uriPolicy === void 0) uriPolicy = null;
    if (uriPolicy == null) {
      uriPolicy = html$.UriPolicy.new();
    }
    this.add(html$._SimpleNodeValidator.allowImages(uriPolicy));
  }
  allowTextElements() {
    this.add(html$._SimpleNodeValidator.allowTextElements());
  }
  allowInlineStyles(opts) {
    let tagName = opts && 'tagName' in opts ? opts.tagName : null;
    if (tagName == null) {
      tagName = "*";
    } else {
      tagName = tagName[$toUpperCase]();
    }
    this.add(new html$._SimpleNodeValidator.new(null, {allowedAttributes: JSArrayOfString().of([dart.str(tagName) + "::style"])}));
  }
  allowHtml5(opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    this.add(new html$._Html5NodeValidator.new({uriPolicy: uriPolicy}));
  }
  allowSvg() {
    this.add(new html$._SvgNodeValidator.new());
  }
  allowCustomElement(tagName, opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    let attributes = opts && 'attributes' in opts ? opts.attributes : null;
    let uriAttributes = opts && 'uriAttributes' in opts ? opts.uriAttributes : null;
    let tagNameUpper = tagName[$toUpperCase]();
    let attrs = IterableOfString()._check(attributes == null ? null : attributes[$map](core.String, dart.fn(name => tagNameUpper + "::" + name[$toLowerCase](), StringToString())));
    let uriAttrs = IterableOfString()._check(uriAttributes == null ? null : uriAttributes[$map](core.String, dart.fn(name => tagNameUpper + "::" + name[$toLowerCase](), StringToString())));
    if (uriPolicy == null) {
      uriPolicy = html$.UriPolicy.new();
    }
    this.add(new html$._CustomElementNodeValidator.new(uriPolicy, JSArrayOfString().of([tagNameUpper]), attrs, uriAttrs, false, true));
  }
  allowTagExtension(tagName, baseName, opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    let attributes = opts && 'attributes' in opts ? opts.attributes : null;
    let uriAttributes = opts && 'uriAttributes' in opts ? opts.uriAttributes : null;
    let baseNameUpper = baseName[$toUpperCase]();
    let tagNameUpper = tagName[$toUpperCase]();
    let attrs = IterableOfString()._check(attributes == null ? null : attributes[$map](core.String, dart.fn(name => baseNameUpper + "::" + name[$toLowerCase](), StringToString())));
    let uriAttrs = IterableOfString()._check(uriAttributes == null ? null : uriAttributes[$map](core.String, dart.fn(name => baseNameUpper + "::" + name[$toLowerCase](), StringToString())));
    if (uriPolicy == null) {
      uriPolicy = html$.UriPolicy.new();
    }
    this.add(new html$._CustomElementNodeValidator.new(uriPolicy, JSArrayOfString().of([tagNameUpper, baseNameUpper]), attrs, uriAttrs, true, false));
  }
  allowElement(tagName, opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    let attributes = opts && 'attributes' in opts ? opts.attributes : null;
    let uriAttributes = opts && 'uriAttributes' in opts ? opts.uriAttributes : null;
    this.allowCustomElement(tagName, {uriPolicy: uriPolicy, attributes: attributes, uriAttributes: uriAttributes});
  }
  allowTemplating() {
    this.add(new html$._TemplatingNodeValidator.new());
  }
  add(validator) {
    this[_validators][$add](validator);
  }
  allowsElement(element) {
    return this[_validators][$any](dart.fn(v => v.allowsElement(element), NodeValidatorTobool()));
  }
  allowsAttribute(element, attributeName, value) {
    return this[_validators][$any](dart.fn(v => v.allowsAttribute(element, attributeName, value), NodeValidatorTobool()));
  }
};
(html$.NodeValidatorBuilder.new = function() {
  this[_validators] = JSArrayOfNodeValidator().of([]);
}).prototype = html$.NodeValidatorBuilder.prototype;
(html$.NodeValidatorBuilder.common = function() {
  this[_validators] = JSArrayOfNodeValidator().of([]);
  this.allowHtml5();
  this.allowTemplating();
}).prototype = html$.NodeValidatorBuilder.prototype;
dart.addTypeTests(html$.NodeValidatorBuilder);
html$.NodeValidatorBuilder[dart.implements] = () => [html$.NodeValidator];
dart.setMethodSignature(html$.NodeValidatorBuilder, () => ({
  __proto__: dart.getMethods(html$.NodeValidatorBuilder.__proto__),
  allowNavigation: dart.fnType(dart.void, [], [html$.UriPolicy]),
  allowImages: dart.fnType(dart.void, [], [html$.UriPolicy]),
  allowTextElements: dart.fnType(dart.void, []),
  allowInlineStyles: dart.fnType(dart.void, [], {tagName: core.String}),
  allowHtml5: dart.fnType(dart.void, [], {uriPolicy: html$.UriPolicy}),
  allowSvg: dart.fnType(dart.void, []),
  allowCustomElement: dart.fnType(dart.void, [core.String], {uriPolicy: html$.UriPolicy, attributes: core.Iterable$(core.String), uriAttributes: core.Iterable$(core.String)}),
  allowTagExtension: dart.fnType(dart.void, [core.String, core.String], {uriPolicy: html$.UriPolicy, attributes: core.Iterable$(core.String), uriAttributes: core.Iterable$(core.String)}),
  allowElement: dart.fnType(dart.void, [core.String], {uriPolicy: html$.UriPolicy, attributes: core.Iterable$(core.String), uriAttributes: core.Iterable$(core.String)}),
  allowTemplating: dart.fnType(dart.void, []),
  add: dart.fnType(dart.void, [html$.NodeValidator]),
  allowsElement: dart.fnType(core.bool, [html$.Element]),
  allowsAttribute: dart.fnType(core.bool, [html$.Element, core.String, core.String])
}));
dart.setFieldSignature(html$.NodeValidatorBuilder, () => ({
  __proto__: dart.getFields(html$.NodeValidatorBuilder.__proto__),
  [_validators]: dart.finalFieldType(ListOfNodeValidator())
}));
let const$70;
let const$71;
let const$72;
let const$73;
let const$74;
let const$75;
let const$76;
let const$77;
let const$78;
let const$79;
html$._SimpleNodeValidator = class _SimpleNodeValidator extends core.Object {
  static allowNavigation(uriPolicy) {
    return new html$._SimpleNodeValidator.new(uriPolicy, {allowedElements: const$73 || (const$73 = dart.constList(["A", "FORM"], core.String)), allowedAttributes: const$74 || (const$74 = dart.constList(["A::accesskey", "A::coords", "A::hreflang", "A::name", "A::shape", "A::tabindex", "A::target", "A::type", "FORM::accept", "FORM::autocomplete", "FORM::enctype", "FORM::method", "FORM::name", "FORM::novalidate", "FORM::target"], core.String)), allowedUriAttributes: const$75 || (const$75 = dart.constList(["A::href", "FORM::action"], core.String))});
  }
  static allowImages(uriPolicy) {
    return new html$._SimpleNodeValidator.new(uriPolicy, {allowedElements: const$76 || (const$76 = dart.constList(["IMG"], core.String)), allowedAttributes: const$77 || (const$77 = dart.constList(["IMG::align", "IMG::alt", "IMG::border", "IMG::height", "IMG::hspace", "IMG::ismap", "IMG::name", "IMG::usemap", "IMG::vspace", "IMG::width"], core.String)), allowedUriAttributes: const$78 || (const$78 = dart.constList(["IMG::src"], core.String))});
  }
  static allowTextElements() {
    return new html$._SimpleNodeValidator.new(null, {allowedElements: const$79 || (const$79 = dart.constList(["B", "BLOCKQUOTE", "BR", "EM", "H1", "H2", "H3", "H4", "H5", "H6", "HR", "I", "LI", "OL", "P", "SPAN", "UL"], core.String))});
  }
  allowsElement(element) {
    return this.allowedElements.contains(html$.Element._safeTagName(element));
  }
  allowsAttribute(element, attributeName, value) {
    let tagName = html$.Element._safeTagName(element);
    if (dart.test(this.allowedUriAttributes.contains(dart.str(tagName) + "::" + dart.str(attributeName)))) {
      return this.uriPolicy.allowsUri(value);
    } else if (dart.test(this.allowedUriAttributes.contains("*::" + dart.str(attributeName)))) {
      return this.uriPolicy.allowsUri(value);
    } else if (dart.test(this.allowedAttributes.contains(dart.str(tagName) + "::" + dart.str(attributeName)))) {
      return true;
    } else if (dart.test(this.allowedAttributes.contains("*::" + dart.str(attributeName)))) {
      return true;
    } else if (dart.test(this.allowedAttributes.contains(dart.str(tagName) + "::*"))) {
      return true;
    } else if (dart.test(this.allowedAttributes.contains("*::*"))) {
      return true;
    }
    return false;
  }
};
(html$._SimpleNodeValidator.new = function(uriPolicy, opts) {
  let allowedElements = opts && 'allowedElements' in opts ? opts.allowedElements : null;
  let allowedAttributes = opts && 'allowedAttributes' in opts ? opts.allowedAttributes : null;
  let allowedUriAttributes = opts && 'allowedUriAttributes' in opts ? opts.allowedUriAttributes : null;
  this.allowedElements = new (_IdentityHashSetOfString()).new();
  this.allowedAttributes = new (_IdentityHashSetOfString()).new();
  this.allowedUriAttributes = new (_IdentityHashSetOfString()).new();
  this.uriPolicy = uriPolicy;
  this.allowedElements.addAll(allowedElements != null ? allowedElements : const$70 || (const$70 = dart.constList([], core.String)));
  allowedAttributes = allowedAttributes != null ? allowedAttributes : const$71 || (const$71 = dart.constList([], core.String));
  allowedUriAttributes = allowedUriAttributes != null ? allowedUriAttributes : const$72 || (const$72 = dart.constList([], core.String));
  let legalAttributes = allowedAttributes[$where](dart.fn(x => !dart.test(html$._Html5NodeValidator._uriAttributes[$contains](x)), StringTobool()));
  let extraUriAttributes = allowedAttributes[$where](dart.fn(x => html$._Html5NodeValidator._uriAttributes[$contains](x), StringTobool()));
  this.allowedAttributes.addAll(legalAttributes);
  this.allowedUriAttributes.addAll(allowedUriAttributes);
  this.allowedUriAttributes.addAll(extraUriAttributes);
}).prototype = html$._SimpleNodeValidator.prototype;
dart.addTypeTests(html$._SimpleNodeValidator);
html$._SimpleNodeValidator[dart.implements] = () => [html$.NodeValidator];
dart.setMethodSignature(html$._SimpleNodeValidator, () => ({
  __proto__: dart.getMethods(html$._SimpleNodeValidator.__proto__),
  allowsElement: dart.fnType(core.bool, [html$.Element]),
  allowsAttribute: dart.fnType(core.bool, [html$.Element, core.String, core.String])
}));
dart.setFieldSignature(html$._SimpleNodeValidator, () => ({
  __proto__: dart.getFields(html$._SimpleNodeValidator.__proto__),
  allowedElements: dart.finalFieldType(SetOfString()),
  allowedAttributes: dart.finalFieldType(SetOfString()),
  allowedUriAttributes: dart.finalFieldType(SetOfString()),
  uriPolicy: dart.finalFieldType(html$.UriPolicy)
}));
html$._CustomElementNodeValidator = class _CustomElementNodeValidator extends html$._SimpleNodeValidator {
  allowsElement(element) {
    if (dart.test(this.allowTypeExtension)) {
      let isAttr = element[$attributes][$_get]("is");
      if (isAttr != null) {
        return dart.test(this.allowedElements.contains(isAttr[$toUpperCase]())) && dart.test(this.allowedElements.contains(html$.Element._safeTagName(element)));
      }
    }
    return dart.test(this.allowCustomTag) && dart.test(this.allowedElements.contains(html$.Element._safeTagName(element)));
  }
  allowsAttribute(element, attributeName, value) {
    if (dart.test(this.allowsElement(element))) {
      if (dart.test(this.allowTypeExtension) && attributeName === "is" && dart.test(this.allowedElements.contains(value[$toUpperCase]()))) {
        return true;
      }
      return super.allowsAttribute(element, attributeName, value);
    }
    return false;
  }
};
(html$._CustomElementNodeValidator.new = function(uriPolicy, allowedElements, allowedAttributes, allowedUriAttributes, allowTypeExtension, allowCustomTag) {
  this.allowTypeExtension = allowTypeExtension === true;
  this.allowCustomTag = allowCustomTag === true;
  html$._CustomElementNodeValidator.__proto__.new.call(this, uriPolicy, {allowedElements: allowedElements, allowedAttributes: allowedAttributes, allowedUriAttributes: allowedUriAttributes});
}).prototype = html$._CustomElementNodeValidator.prototype;
dart.addTypeTests(html$._CustomElementNodeValidator);
dart.setFieldSignature(html$._CustomElementNodeValidator, () => ({
  __proto__: dart.getFields(html$._CustomElementNodeValidator.__proto__),
  allowTypeExtension: dart.finalFieldType(core.bool),
  allowCustomTag: dart.finalFieldType(core.bool)
}));
const _templateAttrs = Symbol('_templateAttrs');
html$._TemplatingNodeValidator = class _TemplatingNodeValidator extends html$._SimpleNodeValidator {
  allowsAttribute(element, attributeName, value) {
    if (dart.test(super.allowsAttribute(element, attributeName, value))) {
      return true;
    }
    if (attributeName === "template" && value === "") {
      return true;
    }
    if (element[$attributes][$_get]("template") === "") {
      return this[_templateAttrs].contains(attributeName);
    }
    return false;
  }
};
(html$._TemplatingNodeValidator.new = function() {
  this[_templateAttrs] = SetOfString().from(html$._TemplatingNodeValidator._TEMPLATE_ATTRS);
  html$._TemplatingNodeValidator.__proto__.new.call(this, null, {allowedElements: JSArrayOfString().of(["TEMPLATE"]), allowedAttributes: IterableOfString()._check(html$._TemplatingNodeValidator._TEMPLATE_ATTRS[$map](core.String, dart.fn(attr => "TEMPLATE::" + dart.str(attr), StringToString())))});
}).prototype = html$._TemplatingNodeValidator.prototype;
dart.addTypeTests(html$._TemplatingNodeValidator);
dart.setFieldSignature(html$._TemplatingNodeValidator, () => ({
  __proto__: dart.getFields(html$._TemplatingNodeValidator.__proto__),
  [_templateAttrs]: dart.finalFieldType(SetOfString())
}));
dart.defineLazy(html$._TemplatingNodeValidator, {
  /*html$._TemplatingNodeValidator._TEMPLATE_ATTRS*/get _TEMPLATE_ATTRS() {
    return dart.constList(["bind", "if", "ref", "repeat", "syntax"], core.String);
  }
});
html$._SvgNodeValidator = class _SvgNodeValidator extends core.Object {
  allowsElement(element) {
    if (svg$.ScriptElement.is(element)) {
      return false;
    }
    if (svg$.SvgElement.is(element) && html$.Element._safeTagName(element) === "foreignObject") {
      return false;
    }
    if (svg$.SvgElement.is(element)) {
      return true;
    }
    return false;
  }
  allowsAttribute(element, attributeName, value) {
    if (attributeName === "is" || attributeName[$startsWith]("on")) {
      return false;
    }
    return this.allowsElement(element);
  }
};
(html$._SvgNodeValidator.new = function() {
}).prototype = html$._SvgNodeValidator.prototype;
dart.addTypeTests(html$._SvgNodeValidator);
html$._SvgNodeValidator[dart.implements] = () => [html$.NodeValidator];
dart.setMethodSignature(html$._SvgNodeValidator, () => ({
  __proto__: dart.getMethods(html$._SvgNodeValidator.__proto__),
  allowsElement: dart.fnType(core.bool, [html$.Element]),
  allowsAttribute: dart.fnType(core.bool, [html$.Element, core.String, core.String])
}));
html$.ReadyState = class ReadyState extends core.Object {};
(html$.ReadyState.new = function() {
}).prototype = html$.ReadyState.prototype;
dart.addTypeTests(html$.ReadyState);
dart.defineLazy(html$.ReadyState, {
  /*html$.ReadyState.LOADING*/get LOADING() {
    return "loading";
  },
  /*html$.ReadyState.INTERACTIVE*/get INTERACTIVE() {
    return "interactive";
  },
  /*html$.ReadyState.COMPLETE*/get COMPLETE() {
    return "complete";
  }
});
const _list$1 = Symbol('_list');
const _is__WrappedList_default = Symbol('_is__WrappedList_default');
html$._WrappedList$ = dart.generic(E => {
  let _WrappedIteratorOfE = () => (_WrappedIteratorOfE = dart.constFn(html$._WrappedIterator$(E)))();
  let IterableOfE = () => (IterableOfE = dart.constFn(core.Iterable$(E)))();
  class _WrappedList extends collection.ListBase$(E) {
    get iterator() {
      return new (_WrappedIteratorOfE()).new(this[_list$1][$iterator]);
    }
    get length() {
      return this[_list$1][$length];
    }
    add(element) {
      E._check(element);
      this[_list$1][$add](element);
    }
    remove(element) {
      return this[_list$1][$remove](element);
    }
    clear() {
      this[_list$1][$clear]();
    }
    _get(index) {
      return E._check(this[_list$1][$_get](index));
    }
    _set(index, value) {
      E._check(value);
      this[_list$1][$_set](index, value);
      return value;
    }
    set length(newLength) {
      this[_list$1][$length] = newLength;
    }
    sort(compare) {
      if (compare === void 0) compare = null;
      this[_list$1][$sort](dart.fn((a, b) => compare(E._check(a), E._check(b)), NodeAndNodeToint()));
    }
    indexOf(element, start) {
      if (start === void 0) start = 0;
      return this[_list$1][$indexOf](html$.Node._check(element), start);
    }
    lastIndexOf(element, start) {
      if (start === void 0) start = null;
      return this[_list$1][$lastIndexOf](html$.Node._check(element), start);
    }
    insert(index, element) {
      E._check(element);
      return this[_list$1][$insert](index, element);
    }
    removeAt(index) {
      return E._check(this[_list$1][$removeAt](index));
    }
    setRange(start, end, iterable, skipCount) {
      IterableOfE()._check(iterable);
      if (skipCount === void 0) skipCount = 0;
      this[_list$1][$setRange](start, end, iterable, skipCount);
    }
    removeRange(start, end) {
      this[_list$1][$removeRange](start, end);
    }
    replaceRange(start, end, iterable) {
      IterableOfE()._check(iterable);
      this[_list$1][$replaceRange](start, end, iterable);
    }
    fillRange(start, end, fillValue) {
      if (fillValue === void 0) fillValue = null;
      E._check(fillValue);
      this[_list$1][$fillRange](start, end, fillValue);
    }
    get rawList() {
      return this[_list$1];
    }
  }
  (_WrappedList.new = function(list) {
    this[_list$1] = list;
  }).prototype = _WrappedList.prototype;
  dart.addTypeTests(_WrappedList);
  _WrappedList.prototype[_is__WrappedList_default] = true;
  _WrappedList[dart.implements] = () => [html_common.NodeListWrapper];
  dart.setMethodSignature(_WrappedList, () => ({
    __proto__: dart.getMethods(_WrappedList.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    [$add]: dart.fnType(dart.void, [core.Object]),
    _get: dart.fnType(E, [core.int]),
    [$_get]: dart.fnType(E, [core.int]),
    _set: dart.fnType(dart.void, [core.int, core.Object]),
    [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
    insert: dart.fnType(dart.void, [core.int, core.Object]),
    [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
    setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
    replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
    fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
    [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object])
  }));
  dart.setGetterSignature(_WrappedList, () => ({
    __proto__: dart.getGetters(_WrappedList.__proto__),
    length: core.int,
    [$length]: core.int,
    rawList: core.List$(html$.Node)
  }));
  dart.setSetterSignature(_WrappedList, () => ({
    __proto__: dart.getSetters(_WrappedList.__proto__),
    length: core.int,
    [$length]: core.int
  }));
  dart.setFieldSignature(_WrappedList, () => ({
    __proto__: dart.getFields(_WrappedList.__proto__),
    [_list$1]: dart.finalFieldType(ListOfNode())
  }));
  dart.defineExtensionMethods(_WrappedList, [
    'add',
    'remove',
    'clear',
    '_get',
    '_set',
    'sort',
    'indexOf',
    'lastIndexOf',
    'insert',
    'removeAt',
    'setRange',
    'removeRange',
    'replaceRange',
    'fillRange'
  ]);
  dart.defineExtensionAccessors(_WrappedList, ['iterator', 'length']);
  return _WrappedList;
});
html$._WrappedList = html$._WrappedList$();
dart.addTypeTests(html$._WrappedList, _is__WrappedList_default);
const _iterator$1 = Symbol('_iterator');
const _is__WrappedIterator_default = Symbol('_is__WrappedIterator_default');
html$._WrappedIterator$ = dart.generic(E => {
  let IteratorOfE = () => (IteratorOfE = dart.constFn(core.Iterator$(E)))();
  class _WrappedIterator extends core.Object {
    moveNext() {
      return this[_iterator$1].moveNext();
    }
    get current() {
      return E._check(this[_iterator$1].current);
    }
  }
  (_WrappedIterator.new = function(iterator) {
    this[_iterator$1] = iterator;
  }).prototype = _WrappedIterator.prototype;
  dart.addTypeTests(_WrappedIterator);
  _WrappedIterator.prototype[_is__WrappedIterator_default] = true;
  _WrappedIterator[dart.implements] = () => [IteratorOfE()];
  dart.setMethodSignature(_WrappedIterator, () => ({
    __proto__: dart.getMethods(_WrappedIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(_WrappedIterator, () => ({
    __proto__: dart.getGetters(_WrappedIterator.__proto__),
    current: E
  }));
  dart.setFieldSignature(_WrappedIterator, () => ({
    __proto__: dart.getFields(_WrappedIterator.__proto__),
    [_iterator$1]: dart.fieldType(IteratorOfNode())
  }));
  return _WrappedIterator;
});
html$._WrappedIterator = html$._WrappedIterator$();
dart.addTypeTests(html$._WrappedIterator, _is__WrappedIterator_default);
html$._HttpRequestUtils = class _HttpRequestUtils extends core.Object {
  static get(url, onComplete, withCredentials) {
    let request = html$.HttpRequest.new();
    request.open("GET", url, {async: true});
    request.withCredentials = withCredentials;
    request[$onReadyStateChange].listen(dart.fn(e => {
      if (request.readyState === html$.HttpRequest.DONE) {
        onComplete(request);
      }
    }, EventToNull()));
    request.send();
    return request;
  }
};
(html$._HttpRequestUtils.new = function() {
}).prototype = html$._HttpRequestUtils.prototype;
dart.addTypeTests(html$._HttpRequestUtils);
const _array = Symbol('_array');
const _current$2 = Symbol('_current');
const _is_FixedSizeListIterator_default = Symbol('_is_FixedSizeListIterator_default');
html$.FixedSizeListIterator$ = dart.generic(T => {
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
  class FixedSizeListIterator extends core.Object {
    moveNext() {
      let nextPosition = dart.notNull(this[_position$1]) + 1;
      if (nextPosition < dart.notNull(this[_length$2])) {
        this[_current$2] = this[_array][$_get](nextPosition);
        this[_position$1] = nextPosition;
        return true;
      }
      this[_current$2] = null;
      this[_position$1] = this[_length$2];
      return false;
    }
    get current() {
      return this[_current$2];
    }
  }
  (FixedSizeListIterator.new = function(array) {
    this[_current$2] = null;
    this[_array] = array;
    this[_position$1] = -1;
    this[_length$2] = array[$length];
  }).prototype = FixedSizeListIterator.prototype;
  dart.addTypeTests(FixedSizeListIterator);
  FixedSizeListIterator.prototype[_is_FixedSizeListIterator_default] = true;
  FixedSizeListIterator[dart.implements] = () => [IteratorOfT()];
  dart.setMethodSignature(FixedSizeListIterator, () => ({
    __proto__: dart.getMethods(FixedSizeListIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(FixedSizeListIterator, () => ({
    __proto__: dart.getGetters(FixedSizeListIterator.__proto__),
    current: T
  }));
  dart.setFieldSignature(FixedSizeListIterator, () => ({
    __proto__: dart.getFields(FixedSizeListIterator.__proto__),
    [_array]: dart.finalFieldType(ListOfT()),
    [_length$2]: dart.finalFieldType(core.int),
    [_position$1]: dart.fieldType(core.int),
    [_current$2]: dart.fieldType(T)
  }));
  return FixedSizeListIterator;
});
html$.FixedSizeListIterator = html$.FixedSizeListIterator$();
dart.addTypeTests(html$.FixedSizeListIterator, _is_FixedSizeListIterator_default);
const _is__VariableSizeListIterator_default = Symbol('_is__VariableSizeListIterator_default');
html$._VariableSizeListIterator$ = dart.generic(T => {
  let IteratorOfT = () => (IteratorOfT = dart.constFn(core.Iterator$(T)))();
  let ListOfT = () => (ListOfT = dart.constFn(core.List$(T)))();
  class _VariableSizeListIterator extends core.Object {
    moveNext() {
      let nextPosition = dart.notNull(this[_position$1]) + 1;
      if (nextPosition < dart.notNull(this[_array][$length])) {
        this[_current$2] = this[_array][$_get](nextPosition);
        this[_position$1] = nextPosition;
        return true;
      }
      this[_current$2] = null;
      this[_position$1] = this[_array][$length];
      return false;
    }
    get current() {
      return this[_current$2];
    }
  }
  (_VariableSizeListIterator.new = function(array) {
    this[_current$2] = null;
    this[_array] = array;
    this[_position$1] = -1;
  }).prototype = _VariableSizeListIterator.prototype;
  dart.addTypeTests(_VariableSizeListIterator);
  _VariableSizeListIterator.prototype[_is__VariableSizeListIterator_default] = true;
  _VariableSizeListIterator[dart.implements] = () => [IteratorOfT()];
  dart.setMethodSignature(_VariableSizeListIterator, () => ({
    __proto__: dart.getMethods(_VariableSizeListIterator.__proto__),
    moveNext: dart.fnType(core.bool, [])
  }));
  dart.setGetterSignature(_VariableSizeListIterator, () => ({
    __proto__: dart.getGetters(_VariableSizeListIterator.__proto__),
    current: T
  }));
  dart.setFieldSignature(_VariableSizeListIterator, () => ({
    __proto__: dart.getFields(_VariableSizeListIterator.__proto__),
    [_array]: dart.finalFieldType(ListOfT()),
    [_position$1]: dart.fieldType(core.int),
    [_current$2]: dart.fieldType(T)
  }));
  return _VariableSizeListIterator;
});
html$._VariableSizeListIterator = html$._VariableSizeListIterator$();
dart.addTypeTests(html$._VariableSizeListIterator, _is__VariableSizeListIterator_default);
const _isConsoleDefined = Symbol('_isConsoleDefined');
html$.Console = class Console extends core.Object {
  get [_isConsoleDefined]() {
    return typeof console != "undefined";
  }
  get memory() {
    return dart.test(this[_isConsoleDefined]) ? window.console.memory : null;
  }
  assertCondition(condition, arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.assertCondition(condition, arg) : null;
  }
  clear(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.clear(arg) : null;
  }
  count(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.count(arg) : null;
  }
  debug(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.debug(arg) : null;
  }
  dir(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.dir(arg) : null;
  }
  dirxml(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.dirxml(arg) : null;
  }
  error(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.error(arg) : null;
  }
  group(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.group(arg) : null;
  }
  groupCollapsed(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.groupCollapsed(arg) : null;
  }
  groupEnd() {
    return dart.test(this[_isConsoleDefined]) ? window.console.groupEnd() : null;
  }
  info(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.info(arg) : null;
  }
  log(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.log(arg) : null;
  }
  markTimeline(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.markTimeline(arg) : null;
  }
  profile(title) {
    return dart.test(this[_isConsoleDefined]) ? window.console.profile(title) : null;
  }
  profileEnd(title) {
    return dart.test(this[_isConsoleDefined]) ? window.console.profileEnd(title) : null;
  }
  table(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.table(arg) : null;
  }
  time(title) {
    return dart.test(this[_isConsoleDefined]) ? window.console.time(title) : null;
  }
  timeEnd(title) {
    return dart.test(this[_isConsoleDefined]) ? window.console.timeEnd(title) : null;
  }
  timeStamp(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.timeStamp(arg) : null;
  }
  trace(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.trace(arg) : null;
  }
  warn(arg) {
    return dart.test(this[_isConsoleDefined]) ? window.console.warn(arg) : null;
  }
};
(html$.Console._safe = function() {
}).prototype = html$.Console.prototype;
dart.addTypeTests(html$.Console);
dart.setMethodSignature(html$.Console, () => ({
  __proto__: dart.getMethods(html$.Console.__proto__),
  assertCondition: dart.fnType(dart.void, [core.bool, core.Object]),
  clear: dart.fnType(dart.void, [core.Object]),
  count: dart.fnType(dart.void, [core.Object]),
  debug: dart.fnType(dart.void, [core.Object]),
  dir: dart.fnType(dart.void, [core.Object]),
  dirxml: dart.fnType(dart.void, [core.Object]),
  error: dart.fnType(dart.void, [core.Object]),
  group: dart.fnType(dart.void, [core.Object]),
  groupCollapsed: dart.fnType(dart.void, [core.Object]),
  groupEnd: dart.fnType(dart.void, []),
  info: dart.fnType(dart.void, [core.Object]),
  log: dart.fnType(dart.void, [core.Object]),
  markTimeline: dart.fnType(dart.void, [core.Object]),
  profile: dart.fnType(dart.void, [core.String]),
  profileEnd: dart.fnType(dart.void, [core.String]),
  table: dart.fnType(dart.void, [core.Object]),
  time: dart.fnType(dart.void, [core.String]),
  timeEnd: dart.fnType(dart.void, [core.String]),
  timeStamp: dart.fnType(dart.void, [core.Object]),
  trace: dart.fnType(dart.void, [core.Object]),
  warn: dart.fnType(dart.void, [core.Object])
}));
dart.setGetterSignature(html$.Console, () => ({
  __proto__: dart.getGetters(html$.Console.__proto__),
  [_isConsoleDefined]: core.bool,
  memory: html$.MemoryInfo
}));
dart.defineLazy(html$.Console, {
  /*html$.Console._safeConsole*/get _safeConsole() {
    return dart.const(new html$.Console._safe());
  }
});
html$._convertNativeToDart_Window = function(win) {
  if (win == null) return null;
  return html$._DOMWindowCrossFrame._createSafe(win);
};
html$._convertNativeToDart_EventTarget = function(e) {
  if (e == null) {
    return null;
  }
  if ("postMessage" in e) {
    let window = html$._DOMWindowCrossFrame._createSafe(e);
    if (html$.EventTarget.is(window)) {
      return window;
    }
    return null;
  } else
    return html$.EventTarget._check(e);
};
const _window = Symbol('_window');
html$._convertDartToNative_EventTarget = function(e) {
  if (html$._DOMWindowCrossFrame.is(e)) {
    return html$.EventTarget._check(e[_window]);
  } else {
    return html$.EventTarget._check(e);
  }
};
html$._convertNativeToDart_XHR_Response = function(o) {
  if (html$.Document.is(o)) {
    return o;
  }
  return html_common.convertNativeToDart_SerializedScriptValue(o);
};
html$._callConstructor = function(constructor, interceptor) {
  return dart.fn(receiver => {
    _js_helper.setNativeSubclassDispatchRecord(receiver, interceptor);
    receiver.constructor = receiver.__proto__.constructor;
    return constructor(receiver);
  }, dynamicTodynamic());
};
html$._callAttached = function(receiver) {
  return dart.dsend(receiver, 'attached', []);
};
html$._callDetached = function(receiver) {
  return dart.dsend(receiver, 'detached', []);
};
html$._callAttributeChanged = function(receiver, name, oldValue, newValue) {
  return dart.dsend(receiver, 'attributeChanged', [name, oldValue, newValue]);
};
html$._makeCallbackMethod = function(callback) {
  return (function(invokeCallback) {
    return function() {
      return invokeCallback(this);
    };
  })(_js_helper.convertDartClosureToJS(dart.dynamic, callback, 1));
};
html$._makeCallbackMethod3 = function(callback) {
  return (function(invokeCallback) {
    return function(arg1, arg2, arg3) {
      return invokeCallback(this, arg1, arg2, arg3);
    };
  })(_js_helper.convertDartClosureToJS(dart.dynamic, callback, 4));
};
html$._checkExtendsNativeClassOrTemplate = function(element, extendsTag, baseClassName) {
  if (!(element instanceof window[baseClassName]) && !(extendsTag === "template" && element instanceof window.HTMLUnknownElement)) {
    dart.throw(new core.UnsupportedError.new("extendsTag does not match base native class"));
  }
};
html$._registerCustomElement = function(context, document, tag, options) {
  if (options === void 0) options = null;
  let extendsTagName = "";
  let type = null;
  if (options != null) {
    extendsTagName = core.String._check(options[$_get]("extends"));
    type = core.Type._check(options[$_get]("prototype"));
  }
  let interceptorClass = _interceptors.findInterceptorConstructorForType(type);
  if (interceptorClass == null) {
    dart.throw(new core.ArgumentError.new(type));
  }
  let interceptor = interceptorClass.prototype;
  let constructor = _interceptors.findConstructorForNativeSubclassType(type, "created");
  if (constructor == null) {
    dart.throw(new core.ArgumentError.new(dart.str(type) + " has no constructor called 'created'"));
  }
  _interceptors.getNativeInterceptor(html$.Element.tag("article"));
  let baseClassName = core.String._check(_js_helper.findDispatchTagForInterceptorClass(interceptorClass));
  if (baseClassName == null) {
    dart.throw(new core.ArgumentError.new(type));
  }
  if (extendsTagName == null) {
    if (baseClassName !== "HTMLElement") {
      dart.throw(new core.UnsupportedError.new("Class must provide extendsTag if base " + "native class is not HtmlElement"));
    }
  } else {
    let element = dart.dsend(document, 'createElement', [extendsTagName]);
    html$._checkExtendsNativeClassOrTemplate(html$.Element._check(element), extendsTagName, baseClassName);
  }
  let baseConstructor = context[baseClassName];
  let properties = {};
  properties.createdCallback = {value: html$._makeCallbackMethod(html$._callConstructor(constructor, interceptor))};
  properties.attachedCallback = {value: html$._makeCallbackMethod(html$._callAttached)};
  properties.detachedCallback = {value: html$._makeCallbackMethod(html$._callDetached)};
  properties.attributeChangedCallback = {value: html$._makeCallbackMethod3(html$._callAttributeChanged)};
  let baseProto = baseConstructor.prototype;
  let proto = Object.create(baseProto, properties);
  _js_helper.setNativeSubclassDispatchRecord(proto, interceptor);
  let opts = {prototype: proto};
  if (extendsTagName != null) {
    opts.extends = extendsTagName;
  }
  return document.registerElement(tag, opts);
};
html$._initializeCustomElement = function(e) {
};
const _interceptor = Symbol('_interceptor');
const _constructor = Symbol('_constructor');
const _nativeType = Symbol('_nativeType');
html$._JSElementUpgrader = class _JSElementUpgrader extends core.Object {
  upgrade(element) {
    if (!dart.equals(dart.runtimeType(element), this[_nativeType])) {
      if (!dart.equals(this[_nativeType], dart.wrapType(html$.HtmlElement)) || !dart.equals(dart.runtimeType(element), dart.wrapType(html$.UnknownElement))) {
        dart.throw(new core.ArgumentError.new("element is not subclass of " + dart.str(this[_nativeType])));
      }
    }
    _js_helper.setNativeSubclassDispatchRecord(element, this[_interceptor]);
    this[_constructor](element);
    return element;
  }
};
(html$._JSElementUpgrader.new = function(document, type, extendsTag) {
  this[_interceptor] = null;
  this[_constructor] = null;
  this[_nativeType] = null;
  let interceptorClass = _interceptors.findInterceptorConstructorForType(type);
  if (interceptorClass == null) {
    dart.throw(new core.ArgumentError.new(type));
  }
  this[_constructor] = _interceptors.findConstructorForNativeSubclassType(type, "created");
  if (this[_constructor] == null) {
    dart.throw(new core.ArgumentError.new(dart.str(type) + " has no constructor called 'created'"));
  }
  _interceptors.getNativeInterceptor(html$.Element.tag("article"));
  let baseClassName = _js_helper.findDispatchTagForInterceptorClass(interceptorClass);
  if (baseClassName == null) {
    dart.throw(new core.ArgumentError.new(type));
  }
  if (extendsTag == null) {
    if (!dart.equals(baseClassName, "HTMLElement")) {
      dart.throw(new core.UnsupportedError.new("Class must provide extendsTag if base " + "native class is not HtmlElement"));
    }
    this[_nativeType] = dart.wrapType(html$.HtmlElement);
  } else {
    let element = document[$createElement](extendsTag);
    html$._checkExtendsNativeClassOrTemplate(element, extendsTag, core.String._check(baseClassName));
    this[_nativeType] = dart.runtimeType(element);
  }
  this[_interceptor] = interceptorClass.prototype;
}).prototype = html$._JSElementUpgrader.prototype;
dart.addTypeTests(html$._JSElementUpgrader);
html$._JSElementUpgrader[dart.implements] = () => [html$.ElementUpgrader];
dart.setMethodSignature(html$._JSElementUpgrader, () => ({
  __proto__: dart.getMethods(html$._JSElementUpgrader.__proto__),
  upgrade: dart.fnType(html$.Element, [html$.Element])
}));
dart.setFieldSignature(html$._JSElementUpgrader, () => ({
  __proto__: dart.getFields(html$._JSElementUpgrader.__proto__),
  [_interceptor]: dart.fieldType(dart.dynamic),
  [_constructor]: dart.fieldType(dart.dynamic),
  [_nativeType]: dart.fieldType(dart.dynamic)
}));
html$._DOMWindowCrossFrame = class _DOMWindowCrossFrame extends core.Object {
  get history() {
    return html$._HistoryCrossFrame._createSafe(this[_window].history);
  }
  get location() {
    return html$._LocationCrossFrame._createSafe(this[_window].location);
  }
  get closed() {
    return this[_window].closed;
  }
  get opener() {
    return html$._DOMWindowCrossFrame._createSafe(this[_window].opener);
  }
  get parent() {
    return html$._DOMWindowCrossFrame._createSafe(this[_window].parent);
  }
  get top() {
    return html$._DOMWindowCrossFrame._createSafe(this[_window].top);
  }
  close() {
    return this[_window].close();
  }
  postMessage(message, targetOrigin, messagePorts) {
    if (messagePorts === void 0) messagePorts = null;
    if (messagePorts == null) {
      this[_window].postMessage(html_common.convertDartToNative_SerializedScriptValue(message), targetOrigin);
    } else {
      this[_window].postMessage(html_common.convertDartToNative_SerializedScriptValue(message), targetOrigin, messagePorts);
    }
  }
  static _createSafe(w) {
    if (core.identical(w, html$.window)) {
      return html$.WindowBase._check(w);
    } else {
      _js_helper.registerGlobalObject(w);
      return new html$._DOMWindowCrossFrame.new(w);
    }
  }
  get on() {
    return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
  }
  [_addEventListener](type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
  }
  addEventListener(type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
  }
  dispatchEvent(event) {
    return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
  }
  [_removeEventListener](type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
  }
  removeEventListener(type, listener, useCapture) {
    if (useCapture === void 0) useCapture = null;
    return dart.throw(new core.UnsupportedError.new("You can only attach EventListeners to your own window."));
  }
};
(html$._DOMWindowCrossFrame.new = function(window) {
  this[_window] = window;
}).prototype = html$._DOMWindowCrossFrame.prototype;
dart.addTypeTests(html$._DOMWindowCrossFrame);
html$._DOMWindowCrossFrame[dart.implements] = () => [html$.WindowBase];
dart.setMethodSignature(html$._DOMWindowCrossFrame, () => ({
  __proto__: dart.getMethods(html$._DOMWindowCrossFrame.__proto__),
  close: dart.fnType(dart.void, []),
  [$close]: dart.fnType(dart.void, []),
  postMessage: dart.fnType(dart.void, [dart.dynamic, core.String], [core.List]),
  [$postMessage]: dart.fnType(dart.void, [dart.dynamic, core.String], [core.List]),
  [_addEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
  addEventListener: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
  [$addEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
  dispatchEvent: dart.fnType(core.bool, [html$.Event]),
  [$dispatchEvent]: dart.fnType(core.bool, [html$.Event]),
  [_removeEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
  removeEventListener: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool]),
  [$removeEventListener]: dart.fnType(dart.void, [core.String, dart.fnType(dart.dynamic, [html$.Event])], [core.bool])
}));
dart.setGetterSignature(html$._DOMWindowCrossFrame, () => ({
  __proto__: dart.getGetters(html$._DOMWindowCrossFrame.__proto__),
  history: html$.HistoryBase,
  [$history]: html$.HistoryBase,
  location: html$.LocationBase,
  [$location]: html$.LocationBase,
  closed: core.bool,
  [$closed]: core.bool,
  opener: html$.WindowBase,
  [$opener]: html$.WindowBase,
  parent: html$.WindowBase,
  [$parent]: html$.WindowBase,
  top: html$.WindowBase,
  [$top]: html$.WindowBase,
  on: html$.Events,
  [$on]: html$.Events
}));
dart.setFieldSignature(html$._DOMWindowCrossFrame, () => ({
  __proto__: dart.getFields(html$._DOMWindowCrossFrame.__proto__),
  [_window]: dart.finalFieldType(dart.dynamic)
}));
dart.defineExtensionMethods(html$._DOMWindowCrossFrame, [
  'close',
  'postMessage',
  'addEventListener',
  'dispatchEvent',
  'removeEventListener'
]);
dart.defineExtensionAccessors(html$._DOMWindowCrossFrame, [
  'history',
  'location',
  'closed',
  'opener',
  'parent',
  'top',
  'on'
]);
html$._LocationCrossFrame = class _LocationCrossFrame extends core.Object {
  set href(val) {
    return html$._LocationCrossFrame._setHref(this[_location], val);
  }
  static _setHref(location, val) {
    location.href = val;
  }
  static _createSafe(location) {
    if (core.identical(location, html$.window[$location])) {
      return html$.LocationBase._check(location);
    } else {
      return new html$._LocationCrossFrame.new(location);
    }
  }
};
(html$._LocationCrossFrame.new = function(location) {
  this[_location] = location;
}).prototype = html$._LocationCrossFrame.prototype;
dart.addTypeTests(html$._LocationCrossFrame);
html$._LocationCrossFrame[dart.implements] = () => [html$.LocationBase];
dart.setSetterSignature(html$._LocationCrossFrame, () => ({
  __proto__: dart.getSetters(html$._LocationCrossFrame.__proto__),
  href: core.String,
  [$href]: core.String
}));
dart.setFieldSignature(html$._LocationCrossFrame, () => ({
  __proto__: dart.getFields(html$._LocationCrossFrame.__proto__),
  [_location]: dart.fieldType(dart.dynamic)
}));
dart.defineExtensionAccessors(html$._LocationCrossFrame, ['href']);
const _history = Symbol('_history');
html$._HistoryCrossFrame = class _HistoryCrossFrame extends core.Object {
  back() {
    return this[_history].back();
  }
  forward() {
    return this[_history].forward();
  }
  go(distance) {
    return this[_history].go(distance);
  }
  static _createSafe(h) {
    if (core.identical(h, html$.window.history)) {
      return html$.HistoryBase._check(h);
    } else {
      return new html$._HistoryCrossFrame.new(h);
    }
  }
};
(html$._HistoryCrossFrame.new = function(history) {
  this[_history] = history;
}).prototype = html$._HistoryCrossFrame.prototype;
dart.addTypeTests(html$._HistoryCrossFrame);
html$._HistoryCrossFrame[dart.implements] = () => [html$.HistoryBase];
dart.setMethodSignature(html$._HistoryCrossFrame, () => ({
  __proto__: dart.getMethods(html$._HistoryCrossFrame.__proto__),
  back: dart.fnType(dart.void, []),
  [$back]: dart.fnType(dart.void, []),
  forward: dart.fnType(dart.void, []),
  [$forward]: dart.fnType(dart.void, []),
  go: dart.fnType(dart.void, [core.int]),
  [$go]: dart.fnType(dart.void, [core.int])
}));
dart.setFieldSignature(html$._HistoryCrossFrame, () => ({
  __proto__: dart.getFields(html$._HistoryCrossFrame.__proto__),
  [_history]: dart.fieldType(dart.dynamic)
}));
dart.defineExtensionMethods(html$._HistoryCrossFrame, ['back', 'forward', 'go']);
html$.Platform = class Platform extends core.Object {};
(html$.Platform.new = function() {
}).prototype = html$.Platform.prototype;
dart.addTypeTests(html$.Platform);
dart.defineLazy(html$.Platform, {
  /*html$.Platform.supportsTypedData*/get supportsTypedData() {
    return !!window.ArrayBuffer;
  },
  /*html$.Platform.supportsSimd*/get supportsSimd() {
    return false;
  }
});
html$._wrapZone = function(T, callback) {
  if (dart.equals(async.Zone.current, async.Zone.root)) return callback;
  if (callback == null) return null;
  return async.Zone.current.bindUnaryCallbackGuarded(T, callback);
};
html$._wrapBinaryZone = function(T1, T2, callback) {
  if (dart.equals(async.Zone.current, async.Zone.root)) return callback;
  if (callback == null) return null;
  return async.Zone.current.bindBinaryCallbackGuarded(T1, T2, callback);
};
html$.querySelector = function(selectors) {
  return html$.document.querySelector(selectors);
};
html$.querySelectorAll = function(T, selectors) {
  return html$.document[$querySelectorAll](T, selectors);
};
html$.ElementUpgrader = class ElementUpgrader extends core.Object {};
(html$.ElementUpgrader.new = function() {
}).prototype = html$.ElementUpgrader.prototype;
dart.addTypeTests(html$.ElementUpgrader);
html$.NodeValidator = class NodeValidator extends core.Object {
  static new(opts) {
    let uriPolicy = opts && 'uriPolicy' in opts ? opts.uriPolicy : null;
    return new html$._Html5NodeValidator.new({uriPolicy: uriPolicy});
  }
  static throws(base) {
    return new html$._ThrowsNodeValidator.new(base);
  }
};
(html$.NodeValidator[dart.mixinNew] = function() {
}).prototype = html$.NodeValidator.prototype;
dart.addTypeTests(html$.NodeValidator);
html$.NodeTreeSanitizer = class NodeTreeSanitizer extends core.Object {
  static new(validator) {
    return new html$._ValidatingTreeSanitizer.new(validator);
  }
};
(html$.NodeTreeSanitizer[dart.mixinNew] = function() {
}).prototype = html$.NodeTreeSanitizer.prototype;
dart.addTypeTests(html$.NodeTreeSanitizer);
dart.defineLazy(html$.NodeTreeSanitizer, {
  /*html$.NodeTreeSanitizer.trusted*/get trusted() {
    return dart.const(new html$._TrustedHtmlTreeSanitizer.new());
  }
});
html$._TrustedHtmlTreeSanitizer = class _TrustedHtmlTreeSanitizer extends core.Object {
  sanitizeTree(node) {}
};
(html$._TrustedHtmlTreeSanitizer.new = function() {
}).prototype = html$._TrustedHtmlTreeSanitizer.prototype;
dart.addTypeTests(html$._TrustedHtmlTreeSanitizer);
html$._TrustedHtmlTreeSanitizer[dart.implements] = () => [html$.NodeTreeSanitizer];
dart.setMethodSignature(html$._TrustedHtmlTreeSanitizer, () => ({
  __proto__: dart.getMethods(html$._TrustedHtmlTreeSanitizer.__proto__),
  sanitizeTree: dart.fnType(dart.void, [html$.Node])
}));
html$.UriPolicy = class UriPolicy extends core.Object {
  static new() {
    return new html$._SameOriginUriPolicy.new();
  }
};
(html$.UriPolicy[dart.mixinNew] = function() {
}).prototype = html$.UriPolicy.prototype;
dart.addTypeTests(html$.UriPolicy);
const _hiddenAnchor = Symbol('_hiddenAnchor');
const _loc = Symbol('_loc');
html$._SameOriginUriPolicy = class _SameOriginUriPolicy extends core.Object {
  allowsUri(uri) {
    this[_hiddenAnchor].href = uri;
    return this[_hiddenAnchor].hostname == this[_loc].hostname && this[_hiddenAnchor].port == this[_loc].port && this[_hiddenAnchor].protocol == this[_loc].protocol || this[_hiddenAnchor].hostname === "" && this[_hiddenAnchor].port === "" && (this[_hiddenAnchor].protocol === ":" || this[_hiddenAnchor].protocol === "");
  }
};
(html$._SameOriginUriPolicy.new = function() {
  this[_hiddenAnchor] = html$.AnchorElement.new();
  this[_loc] = html$.window[$location];
}).prototype = html$._SameOriginUriPolicy.prototype;
dart.addTypeTests(html$._SameOriginUriPolicy);
html$._SameOriginUriPolicy[dart.implements] = () => [html$.UriPolicy];
dart.setMethodSignature(html$._SameOriginUriPolicy, () => ({
  __proto__: dart.getMethods(html$._SameOriginUriPolicy.__proto__),
  allowsUri: dart.fnType(core.bool, [core.String])
}));
dart.setFieldSignature(html$._SameOriginUriPolicy, () => ({
  __proto__: dart.getFields(html$._SameOriginUriPolicy.__proto__),
  [_hiddenAnchor]: dart.finalFieldType(html$.AnchorElement),
  [_loc]: dart.finalFieldType(html$.Location)
}));
html$._ThrowsNodeValidator = class _ThrowsNodeValidator extends core.Object {
  allowsElement(element) {
    if (!dart.test(this.validator.allowsElement(element))) {
      dart.throw(new core.ArgumentError.new(html$.Element._safeTagName(element)));
    }
    return true;
  }
  allowsAttribute(element, attributeName, value) {
    if (!dart.test(this.validator.allowsAttribute(element, attributeName, value))) {
      dart.throw(new core.ArgumentError.new(dart.str(html$.Element._safeTagName(element)) + "[" + dart.str(attributeName) + "=\"" + dart.str(value) + "\"]"));
    }
  }
};
(html$._ThrowsNodeValidator.new = function(validator) {
  this.validator = validator;
}).prototype = html$._ThrowsNodeValidator.prototype;
dart.addTypeTests(html$._ThrowsNodeValidator);
html$._ThrowsNodeValidator[dart.implements] = () => [html$.NodeValidator];
dart.setMethodSignature(html$._ThrowsNodeValidator, () => ({
  __proto__: dart.getMethods(html$._ThrowsNodeValidator.__proto__),
  allowsElement: dart.fnType(core.bool, [html$.Element]),
  allowsAttribute: dart.fnType(core.bool, [html$.Element, core.String, core.String])
}));
dart.setFieldSignature(html$._ThrowsNodeValidator, () => ({
  __proto__: dart.getFields(html$._ThrowsNodeValidator.__proto__),
  validator: dart.finalFieldType(html$.NodeValidator)
}));
const _removeNode = Symbol('_removeNode');
const _sanitizeElement = Symbol('_sanitizeElement');
const _sanitizeUntrustedElement = Symbol('_sanitizeUntrustedElement');
html$._ValidatingTreeSanitizer = class _ValidatingTreeSanitizer extends core.Object {
  sanitizeTree(node) {
    const walk = (function(node, parent) {
      this.sanitizeNode(node, parent);
      let child = node.lastChild;
      while (null != child) {
        let nextChild = null;
        try {
          nextChild = child[$previousNode];
        } catch (e$) {
          let e = dart.getThrown(e$);
          this[_removeNode](child, node);
          child = null;
          nextChild = node.lastChild;
        }
        if (child != null) walk(child, node);
        child = html$.Node._check(nextChild);
      }
    }).bind(this);
    dart.fn(walk, NodeAndNodeTovoid());
    walk(node, null);
  }
  [_removeNode](node, parent) {
    if (parent == null) {
      node[$remove]();
    } else {
      parent[_removeChild](node);
    }
  }
  [_sanitizeUntrustedElement](element, parent) {
    let corrupted = true;
    let attrs = null;
    let isAttr = null;
    try {
      attrs = dart.dload(element, 'attributes');
      isAttr = dart.dindex(attrs, "is");
      let corruptedTest1 = html$.Element._hasCorruptedAttributes(html$.Element._check(element));
      corrupted = dart.test(corruptedTest1) ? true : html$.Element._hasCorruptedAttributesAdditionalCheck(html$.Element._check(element));
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
    let elementText = "element unprintable";
    try {
      elementText = dart.toString(element);
    } catch (e$0) {
      let e = dart.getThrown(e$0);
    }
    try {
      let elementTagName = html$.Element._safeTagName(element);
      this[_sanitizeElement](html$.Element._check(element), parent, corrupted, elementText, elementTagName, core.Map._check(attrs), core.String._check(isAttr));
    } catch (e$1) {
      let ex = dart.getThrown(e$1);
      if (core.ArgumentError.is(ex)) {
        dart.rethrow(e$1);
      } else {
        let e = ex;
        this[_removeNode](html$.Node._check(element), parent);
        html$.window[$console].warn("Removing corrupted element " + dart.str(elementText));
      }
    }
  }
  [_sanitizeElement](element, parent, corrupted, text, tag, attrs, isAttr) {
    if (false !== corrupted) {
      this[_removeNode](element, parent);
      html$.window[$console].warn("Removing element due to corrupted attributes on <" + dart.str(text) + ">");
      return;
    }
    if (!dart.test(this.validator.allowsElement(element))) {
      this[_removeNode](element, parent);
      html$.window[$console].warn("Removing disallowed element <" + dart.str(tag) + "> from " + dart.str(parent));
      return;
    }
    if (isAttr != null) {
      if (!dart.test(this.validator.allowsAttribute(element, "is", isAttr))) {
        this[_removeNode](element, parent);
        html$.window[$console].warn("Removing disallowed type extension " + ("<" + dart.str(tag) + " is=\"" + dart.str(isAttr) + "\">"));
        return;
      }
    }
    let keys = attrs[$keys][$toList]();
    for (let i = dart.notNull(attrs[$length]) - 1; i >= 0; --i) {
      let name = keys[$_get](i);
      if (!dart.test(this.validator.allowsAttribute(element, core.String._check(dart.dsend(name, 'toLowerCase', [])), core.String._check(attrs[$_get](name))))) {
        html$.window[$console].warn("Removing disallowed attribute " + ("<" + dart.str(tag) + " " + dart.str(name) + "=\"" + dart.str(attrs[$_get](name)) + "\">"));
        attrs[$remove](name);
      }
    }
    if (html$.TemplateElement.is(element)) {
      let template = element;
      this.sanitizeTree(template.content);
    }
  }
  sanitizeNode(node, parent) {
    switch (node.nodeType) {
      case html$.Node.ELEMENT_NODE:
      {
        this[_sanitizeUntrustedElement](node, parent);
        break;
      }
      case html$.Node.COMMENT_NODE:
      case html$.Node.DOCUMENT_FRAGMENT_NODE:
      case html$.Node.TEXT_NODE:
      case html$.Node.CDATA_SECTION_NODE:
      {
        break;
      }
      default:
      {
        this[_removeNode](node, parent);
      }
    }
  }
};
(html$._ValidatingTreeSanitizer.new = function(validator) {
  this.validator = validator;
}).prototype = html$._ValidatingTreeSanitizer.prototype;
dart.addTypeTests(html$._ValidatingTreeSanitizer);
html$._ValidatingTreeSanitizer[dart.implements] = () => [html$.NodeTreeSanitizer];
dart.setMethodSignature(html$._ValidatingTreeSanitizer, () => ({
  __proto__: dart.getMethods(html$._ValidatingTreeSanitizer.__proto__),
  sanitizeTree: dart.fnType(dart.void, [html$.Node]),
  [_removeNode]: dart.fnType(dart.void, [html$.Node, html$.Node]),
  [_sanitizeUntrustedElement]: dart.fnType(dart.void, [dart.dynamic, html$.Node]),
  [_sanitizeElement]: dart.fnType(dart.void, [html$.Element, html$.Node, core.bool, core.String, core.String, core.Map, core.String]),
  sanitizeNode: dart.fnType(dart.void, [html$.Node, html$.Node])
}));
dart.setFieldSignature(html$._ValidatingTreeSanitizer, () => ({
  __proto__: dart.getFields(html$._ValidatingTreeSanitizer.__proto__),
  validator: dart.fieldType(html$.NodeValidator)
}));
html_common.convertDartToNative_SerializedScriptValue = function(value) {
  return html_common.convertDartToNative_PrepareForStructuredClone(value);
};
html_common.convertNativeToDart_SerializedScriptValue = function(object) {
  return html_common.convertNativeToDart_AcceptStructuredClone(object, {mustCopy: true});
};
html_common._StructuredClone = class _StructuredClone extends core.Object {
  findSlot(value) {
    let length = this.values[$length];
    for (let i = 0; i < dart.notNull(length); i++) {
      if (core.identical(this.values[$_get](i), value)) return i;
    }
    this.values[$add](value);
    this.copies[$add](null);
    return length;
  }
  readSlot(i) {
    return this.copies[$_get](i);
  }
  writeSlot(i, x) {
    this.copies[$_set](i, x);
  }
  cleanupSlots() {}
  walk(e) {
    if (e == null) return e;
    if (typeof e == 'boolean') return e;
    if (typeof e == 'number') return e;
    if (typeof e == 'string') return e;
    if (core.DateTime.is(e)) {
      return html_common.convertDartToNative_DateTime(e);
    }
    if (core.RegExp.is(e)) {
      dart.throw(new core.UnimplementedError.new("structured clone of RegExp"));
    }
    if (html$.File.is(e)) return e;
    if (html$.Blob.is(e)) return e;
    if (html$.FileList.is(e)) return e;
    if (html$.ImageData.is(e)) return e;
    if (dart.test(this.cloneNotRequired(e))) return e;
    if (core.Map.is(e)) {
      let slot = this.findSlot(e);
      let copy = this.readSlot(slot);
      if (copy != null) return copy;
      copy = this.newJsMap();
      this.writeSlot(slot, copy);
      e[$forEach](dart.fn((key, value) => {
        this.putIntoMap(copy, key, this.walk(value));
      }, dynamicAnddynamicToNull()));
      return copy;
    }
    if (core.List.is(e)) {
      let slot = this.findSlot(e);
      let copy = this.readSlot(slot);
      if (copy != null) return copy;
      copy = this.copyList(e, slot);
      return copy;
    }
    dart.throw(new core.UnimplementedError.new("structured clone of other type"));
  }
  copyList(e, slot) {
    let i = 0;
    let length = e[$length];
    let copy = this.newJsList(length);
    this.writeSlot(slot, copy);
    for (; i < dart.notNull(length); i++) {
      copy[$_set](i, this.walk(e[$_get](i)));
    }
    return copy;
  }
  convertDartToNative_PrepareForStructuredClone(value) {
    let copy = this.walk(value);
    this.cleanupSlots();
    return copy;
  }
};
(html_common._StructuredClone.new = function() {
  this.values = [];
  this.copies = [];
}).prototype = html_common._StructuredClone.prototype;
dart.addTypeTests(html_common._StructuredClone);
dart.setMethodSignature(html_common._StructuredClone, () => ({
  __proto__: dart.getMethods(html_common._StructuredClone.__proto__),
  findSlot: dart.fnType(core.int, [dart.dynamic]),
  readSlot: dart.fnType(dart.dynamic, [core.int]),
  writeSlot: dart.fnType(dart.dynamic, [core.int, dart.dynamic]),
  cleanupSlots: dart.fnType(dart.dynamic, []),
  walk: dart.fnType(dart.dynamic, [dart.dynamic]),
  copyList: dart.fnType(core.List, [core.List, core.int]),
  convertDartToNative_PrepareForStructuredClone: dart.fnType(dart.dynamic, [dart.dynamic])
}));
dart.setFieldSignature(html_common._StructuredClone, () => ({
  __proto__: dart.getFields(html_common._StructuredClone.__proto__),
  values: dart.fieldType(core.List),
  copies: dart.fieldType(core.List)
}));
html_common._AcceptStructuredClone = class _AcceptStructuredClone extends core.Object {
  findSlot(value) {
    let length = this.values[$length];
    for (let i = 0; i < dart.notNull(length); i++) {
      if (dart.test(this.identicalInJs(this.values[$_get](i), value))) return i;
    }
    this.values[$add](value);
    this.copies[$add](null);
    return length;
  }
  readSlot(i) {
    return this.copies[$_get](i);
  }
  writeSlot(i, x) {
    this.copies[$_set](i, x);
  }
  walk(e) {
    if (e == null) return e;
    if (typeof e == 'boolean') return e;
    if (typeof e == 'number') return e;
    if (typeof e == 'string') return e;
    if (dart.test(html_common.isJavaScriptDate(e))) {
      return html_common.convertNativeToDart_DateTime(e);
    }
    if (dart.test(html_common.isJavaScriptRegExp(e))) {
      dart.throw(new core.UnimplementedError.new("structured clone of RegExp"));
    }
    if (dart.test(html_common.isJavaScriptPromise(e))) {
      return html_common.convertNativePromiseToDartFuture(e);
    }
    if (dart.test(html_common.isJavaScriptSimpleObject(e))) {
      let slot = this.findSlot(e);
      let copy = this.readSlot(slot);
      if (copy != null) return copy;
      copy = new _js_helper.LinkedMap.new();
      this.writeSlot(slot, copy);
      this.forEachJsField(e, dart.fn((key, value) => dart.dsetindex(copy, key, this.walk(value)), dynamicAnddynamicTodynamic()));
      return copy;
    }
    if (dart.test(html_common.isJavaScriptArray(e))) {
      let l = e;
      let slot = this.findSlot(l);
      let copy = this.readSlot(slot);
      if (copy != null) return copy;
      let length = core.int._check(dart.dload(l, 'length'));
      copy = dart.test(this.mustCopy) ? this.newDartList(length) : l;
      this.writeSlot(slot, copy);
      for (let i = 0; i < dart.notNull(length); i++) {
        dart.dsetindex(copy, i, this.walk(dart.dindex(l, i)));
      }
      return copy;
    }
    return e;
  }
  convertNativeToDart_AcceptStructuredClone(object, opts) {
    let mustCopy = opts && 'mustCopy' in opts ? opts.mustCopy : false;
    this.mustCopy = core.bool._check(mustCopy);
    let copy = this.walk(object);
    return copy;
  }
};
(html_common._AcceptStructuredClone.new = function() {
  this.values = [];
  this.copies = [];
  this.mustCopy = false;
}).prototype = html_common._AcceptStructuredClone.prototype;
dart.addTypeTests(html_common._AcceptStructuredClone);
dart.setMethodSignature(html_common._AcceptStructuredClone, () => ({
  __proto__: dart.getMethods(html_common._AcceptStructuredClone.__proto__),
  findSlot: dart.fnType(core.int, [dart.dynamic]),
  readSlot: dart.fnType(dart.dynamic, [core.int]),
  writeSlot: dart.fnType(dart.dynamic, [core.int, dart.dynamic]),
  walk: dart.fnType(dart.dynamic, [dart.dynamic]),
  convertNativeToDart_AcceptStructuredClone: dart.fnType(dart.dynamic, [dart.dynamic], {mustCopy: dart.dynamic})
}));
dart.setFieldSignature(html_common._AcceptStructuredClone, () => ({
  __proto__: dart.getFields(html_common._AcceptStructuredClone.__proto__),
  values: dart.fieldType(core.List),
  copies: dart.fieldType(core.List),
  mustCopy: dart.fieldType(core.bool)
}));
html_common.ContextAttributes = class ContextAttributes extends core.Object {
  get alpha() {
    return this[alpha$0];
  }
  set alpha(value) {
    this[alpha$0] = value;
  }
  get antialias() {
    return this[antialias$];
  }
  set antialias(value) {
    this[antialias$] = value;
  }
  get depth() {
    return this[depth$];
  }
  set depth(value) {
    this[depth$] = value;
  }
  get premultipliedAlpha() {
    return this[premultipliedAlpha$];
  }
  set premultipliedAlpha(value) {
    this[premultipliedAlpha$] = value;
  }
  get preserveDrawingBuffer() {
    return this[preserveDrawingBuffer$];
  }
  set preserveDrawingBuffer(value) {
    this[preserveDrawingBuffer$] = value;
  }
  get stencil() {
    return this[stencil$];
  }
  set stencil(value) {
    this[stencil$] = value;
  }
  get failIfMajorPerformanceCaveat() {
    return this[failIfMajorPerformanceCaveat$];
  }
  set failIfMajorPerformanceCaveat(value) {
    this[failIfMajorPerformanceCaveat$] = value;
  }
};
(html_common.ContextAttributes.new = function(alpha, antialias, depth, failIfMajorPerformanceCaveat, premultipliedAlpha, preserveDrawingBuffer, stencil) {
  this[alpha$0] = alpha;
  this[antialias$] = antialias;
  this[depth$] = depth;
  this[failIfMajorPerformanceCaveat$] = failIfMajorPerformanceCaveat;
  this[premultipliedAlpha$] = premultipliedAlpha;
  this[preserveDrawingBuffer$] = preserveDrawingBuffer;
  this[stencil$] = stencil;
}).prototype = html_common.ContextAttributes.prototype;
dart.addTypeTests(html_common.ContextAttributes);
const alpha$0 = Symbol("ContextAttributes.alpha");
const antialias$ = Symbol("ContextAttributes.antialias");
const depth$ = Symbol("ContextAttributes.depth");
const premultipliedAlpha$ = Symbol("ContextAttributes.premultipliedAlpha");
const preserveDrawingBuffer$ = Symbol("ContextAttributes.preserveDrawingBuffer");
const stencil$ = Symbol("ContextAttributes.stencil");
const failIfMajorPerformanceCaveat$ = Symbol("ContextAttributes.failIfMajorPerformanceCaveat");
dart.setFieldSignature(html_common.ContextAttributes, () => ({
  __proto__: dart.getFields(html_common.ContextAttributes.__proto__),
  alpha: dart.fieldType(core.bool),
  antialias: dart.fieldType(core.bool),
  depth: dart.fieldType(core.bool),
  premultipliedAlpha: dart.fieldType(core.bool),
  preserveDrawingBuffer: dart.fieldType(core.bool),
  stencil: dart.fieldType(core.bool),
  failIfMajorPerformanceCaveat: dart.fieldType(core.bool)
}));
html_common.convertNativeToDart_ContextAttributes = function(nativeContextAttributes) {
  return new html_common.ContextAttributes.new(nativeContextAttributes.alpha, nativeContextAttributes.antialias, nativeContextAttributes.depth, nativeContextAttributes.failIfMajorPerformanceCaveat, nativeContextAttributes.premultipliedAlpha, nativeContextAttributes.preserveDrawingBuffer, nativeContextAttributes.stencil);
};
html_common._TypedImageData = class _TypedImageData extends core.Object {
  get data() {
    return this[data$9];
  }
  set data(value) {
    super.data = value;
  }
  get height() {
    return this[height$13];
  }
  set height(value) {
    super.height = value;
  }
  get width() {
    return this[width$15];
  }
  set width(value) {
    super.width = value;
  }
};
(html_common._TypedImageData.new = function(data, height, width) {
  this[data$9] = data;
  this[height$13] = height;
  this[width$15] = width;
}).prototype = html_common._TypedImageData.prototype;
dart.addTypeTests(html_common._TypedImageData);
const data$9 = Symbol("_TypedImageData.data");
const height$13 = Symbol("_TypedImageData.height");
const width$15 = Symbol("_TypedImageData.width");
html_common._TypedImageData[dart.implements] = () => [html$.ImageData];
dart.setFieldSignature(html_common._TypedImageData, () => ({
  __proto__: dart.getFields(html_common._TypedImageData.__proto__),
  data: dart.finalFieldType(typed_data.Uint8ClampedList),
  height: dart.finalFieldType(core.int),
  width: dart.finalFieldType(core.int)
}));
dart.defineExtensionAccessors(html_common._TypedImageData, ['data', 'height', 'width']);
html_common.convertNativeToDart_ImageData = function(nativeImageData) {
  0;
  if (html$.ImageData.is(nativeImageData)) {
    let data = nativeImageData.data;
    if (data.constructor === Array) {
      if (typeof CanvasPixelArray !== "undefined") {
        data.constructor = CanvasPixelArray;
        data.BYTES_PER_ELEMENT = 1;
      }
    }
    return nativeImageData;
  }
  return new html_common._TypedImageData.new(nativeImageData.data, nativeImageData.height, nativeImageData.width);
};
html_common.convertDartToNative_ImageData = function(imageData) {
  if (html_common._TypedImageData.is(imageData)) {
    return {data: imageData.data, height: imageData.height, width: imageData.width};
  }
  return imageData;
};
html_common.convertNativeToDart_Dictionary = function(object) {
  if (object == null) return null;
  let dict = new (IdentityMapOfString$dynamic()).new();
  let keys = Object.getOwnPropertyNames(object);
  for (let key of core.Iterable._check(keys)) {
    dict[$_set](core.String._check(key), object[key]);
  }
  return dict;
};
html_common.convertDartToNative_Dictionary = function(dict, postCreate) {
  if (postCreate === void 0) postCreate = null;
  if (dict == null) return null;
  let object = {};
  if (postCreate != null) {
    postCreate(object);
  }
  dict[$forEach](dart.fn((key, value) => {
    object[key] = value;
  }, dynamicAnddynamicToNull()));
  return object;
};
html_common.convertDartToNative_StringArray = function(input) {
  return input;
};
html_common.convertNativeToDart_DateTime = function(date) {
  let millisSinceEpoch = date.getTime();
  return new core.DateTime.fromMillisecondsSinceEpoch(millisSinceEpoch, {isUtc: true});
};
html_common.convertDartToNative_DateTime = function(date) {
  return new Date(date.millisecondsSinceEpoch);
};
html_common.convertDartToNative_PrepareForStructuredClone = function(value) {
  return new html_common._StructuredCloneDart2Js.new().convertDartToNative_PrepareForStructuredClone(value);
};
html_common.convertNativeToDart_AcceptStructuredClone = function(object, opts) {
  let mustCopy = opts && 'mustCopy' in opts ? opts.mustCopy : false;
  return new html_common._AcceptStructuredCloneDart2Js.new().convertNativeToDart_AcceptStructuredClone(object, {mustCopy: mustCopy});
};
html_common._StructuredCloneDart2Js = class _StructuredCloneDart2Js extends html_common._StructuredClone {
  newJsMap() {
    return {};
  }
  putIntoMap(map, key, value) {
    return map[key] = value;
  }
  newJsList(length) {
    return new Array(length);
  }
  cloneNotRequired(e) {
    return _native_typed_data.NativeByteBuffer.is(e) || _native_typed_data.NativeTypedData.is(e) || html$.MessagePort.is(e);
  }
};
(html_common._StructuredCloneDart2Js.new = function() {
  html_common._StructuredCloneDart2Js.__proto__.new.call(this);
}).prototype = html_common._StructuredCloneDart2Js.prototype;
dart.addTypeTests(html_common._StructuredCloneDart2Js);
dart.setMethodSignature(html_common._StructuredCloneDart2Js, () => ({
  __proto__: dart.getMethods(html_common._StructuredCloneDart2Js.__proto__),
  newJsMap: dart.fnType(dart.dynamic, []),
  putIntoMap: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]),
  newJsList: dart.fnType(core.List, [dart.dynamic]),
  cloneNotRequired: dart.fnType(core.bool, [dart.dynamic])
}));
html_common._AcceptStructuredCloneDart2Js = class _AcceptStructuredCloneDart2Js extends html_common._AcceptStructuredClone {
  newJsList(length) {
    return new Array(length);
  }
  newDartList(length) {
    return this.newJsList(length);
  }
  identicalInJs(a, b) {
    return core.identical(a, b);
  }
  forEachJsField(object, action) {
    for (let key of Object.keys(object)) {
      action(key, object[key]);
    }
  }
};
(html_common._AcceptStructuredCloneDart2Js.new = function() {
  html_common._AcceptStructuredCloneDart2Js.__proto__.new.call(this);
}).prototype = html_common._AcceptStructuredCloneDart2Js.prototype;
dart.addTypeTests(html_common._AcceptStructuredCloneDart2Js);
dart.setMethodSignature(html_common._AcceptStructuredCloneDart2Js, () => ({
  __proto__: dart.getMethods(html_common._AcceptStructuredCloneDart2Js.__proto__),
  newJsList: dart.fnType(core.List, [dart.dynamic]),
  newDartList: dart.fnType(core.List, [dart.dynamic]),
  identicalInJs: dart.fnType(core.bool, [dart.dynamic, dart.dynamic]),
  forEachJsField: dart.fnType(dart.void, [dart.dynamic, dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic])])
}));
html_common.isJavaScriptDate = function(value) {
  return value instanceof Date;
};
html_common.isJavaScriptRegExp = function(value) {
  return value instanceof RegExp;
};
html_common.isJavaScriptArray = function(value) {
  return value instanceof Array;
};
html_common.isJavaScriptSimpleObject = function(value) {
  let proto = Object.getPrototypeOf(value);
  return proto === Object.prototype || proto === null;
};
html_common.isImmutableJavaScriptArray = function(value) {
  return !!value.immutable$list;
};
html_common.isJavaScriptPromise = function(value) {
  return typeof Promise != "undefined" && value instanceof Promise;
};
html_common.convertNativePromiseToDartFuture = function(promise) {
  let completer = async.Completer.new();
  let then = _js_helper.convertDartClosureToJS(dynamicTovoid(), dart.fn(result => completer.complete(result), dynamicTovoid()), 1);
  let error = _js_helper.convertDartClosureToJS(dynamicTovoid(), dart.fn(result => completer.completeError(result), dynamicTovoid()), 1);
  let newPromise = promise.then(then).catch(error);
  return completer.future;
};
dart.defineLazy(html_common, {
  /*html_common._serializedScriptValue*/get _serializedScriptValue() {
    return "num|String|bool|" + "JSExtendableArray|=Object|" + "Blob|File|NativeByteBuffer|NativeTypedData|MessagePort";
  },
  /*html_common.annotation_Creates_SerializedScriptValue*/get annotation_Creates_SerializedScriptValue() {
    return dart.const(new _js_helper.Creates.new("num|String|bool|JSExtendableArray|=Object|Blob|File|NativeByteBuffer|NativeTypedData|MessagePort"));
  },
  /*html_common.annotation_Returns_SerializedScriptValue*/get annotation_Returns_SerializedScriptValue() {
    return dart.const(new _js_helper.Returns.new("num|String|bool|JSExtendableArray|=Object|Blob|File|NativeByteBuffer|NativeTypedData|MessagePort"));
  }
});
html_common.Device = class Device extends core.Object {
  static get userAgent() {
    return html$.window.navigator.userAgent;
  }
  static get isOpera() {
    if (html_common.Device._isOpera == null) {
      html_common.Device._isOpera = html_common.Device.userAgent[$contains]("Opera", 0);
    }
    return html_common.Device._isOpera;
  }
  static get isIE() {
    if (html_common.Device._isIE == null) {
      html_common.Device._isIE = !dart.test(html_common.Device.isOpera) && html_common.Device.userAgent[$contains]("Trident/", 0);
    }
    return html_common.Device._isIE;
  }
  static get isFirefox() {
    if (html_common.Device._isFirefox == null) {
      html_common.Device._isFirefox = html_common.Device.userAgent[$contains]("Firefox", 0);
    }
    return html_common.Device._isFirefox;
  }
  static get isWebKit() {
    if (html_common.Device._isWebKit == null) {
      html_common.Device._isWebKit = !dart.test(html_common.Device.isOpera) && html_common.Device.userAgent[$contains]("WebKit", 0);
    }
    return html_common.Device._isWebKit;
  }
  static get cssPrefix() {
    let prefix = html_common.Device._cachedCssPrefix;
    if (prefix != null) return prefix;
    if (dart.test(html_common.Device.isFirefox)) {
      prefix = "-moz-";
    } else if (dart.test(html_common.Device.isIE)) {
      prefix = "-ms-";
    } else if (dart.test(html_common.Device.isOpera)) {
      prefix = "-o-";
    } else {
      prefix = "-webkit-";
    }
    return html_common.Device._cachedCssPrefix = prefix;
  }
  static get propertyPrefix() {
    let prefix = html_common.Device._cachedPropertyPrefix;
    if (prefix != null) return prefix;
    if (dart.test(html_common.Device.isFirefox)) {
      prefix = "moz";
    } else if (dart.test(html_common.Device.isIE)) {
      prefix = "ms";
    } else if (dart.test(html_common.Device.isOpera)) {
      prefix = "o";
    } else {
      prefix = "webkit";
    }
    return html_common.Device._cachedPropertyPrefix = prefix;
  }
  static isEventTypeSupported(eventType) {
    try {
      let e = html$.Event.eventType(eventType, "");
      return html$.Event.is(e);
    } catch (e$) {
      let _ = dart.getThrown(e$);
    }
    return false;
  }
};
(html_common.Device.new = function() {
}).prototype = html_common.Device.prototype;
dart.addTypeTests(html_common.Device);
dart.defineLazy(html_common.Device, {
  /*html_common.Device._isOpera*/get _isOpera() {
    return null;
  },
  set _isOpera(_) {},
  /*html_common.Device._isIE*/get _isIE() {
    return null;
  },
  set _isIE(_) {},
  /*html_common.Device._isFirefox*/get _isFirefox() {
    return null;
  },
  set _isFirefox(_) {},
  /*html_common.Device._isWebKit*/get _isWebKit() {
    return null;
  },
  set _isWebKit(_) {},
  /*html_common.Device._cachedCssPrefix*/get _cachedCssPrefix() {
    return null;
  },
  set _cachedCssPrefix(_) {},
  /*html_common.Device._cachedPropertyPrefix*/get _cachedPropertyPrefix() {
    return null;
  },
  set _cachedPropertyPrefix(_) {}
});
const _childNodes = Symbol('_childNodes');
const _node = Symbol('_node');
const _iterable$0 = Symbol('_iterable');
const _filtered = Symbol('_filtered');
html_common.FilteredElementList = class FilteredElementList extends collection.ListBase$(html$.Element) {
  get [_iterable$0]() {
    return IterableOfElement()._check(this[_childNodes][$where](dart.fn(n => html$.Element.is(n), NodeTobool()))[$map](html$.Element, dart.fn(n => html$.Element.as(n), NodeToElement())));
  }
  get [_filtered]() {
    return ListOfElement().from(this[_iterable$0], {growable: false});
  }
  forEach(f) {
    this[_filtered][$forEach](f);
  }
  _set(index, value) {
    html$.Element._check(value);
    this._get(index)[$replaceWith](value);
    return value;
  }
  set length(newLength) {
    let len = this.length;
    if (dart.notNull(newLength) >= dart.notNull(len)) {
      return;
    } else if (dart.notNull(newLength) < 0) {
      dart.throw(new core.ArgumentError.new("Invalid list length"));
    }
    this.removeRange(newLength, len);
  }
  add(value) {
    html$.Element._check(value);
    this[_childNodes][$add](value);
  }
  addAll(iterable) {
    IterableOfElement()._check(iterable);
    for (let element of iterable) {
      this.add(element);
    }
  }
  contains(needle) {
    if (!html$.Element.is(needle)) return false;
    let element = html$.Element._check(needle);
    return dart.equals(element.parentNode, this[_node]);
  }
  get reversed() {
    return this[_filtered][$reversed];
  }
  sort(compare) {
    if (compare === void 0) compare = null;
    dart.throw(new core.UnsupportedError.new("Cannot sort filtered list"));
  }
  setRange(start, end, iterable, skipCount) {
    IterableOfElement()._check(iterable);
    if (skipCount === void 0) skipCount = 0;
    dart.throw(new core.UnsupportedError.new("Cannot setRange on filtered list"));
  }
  fillRange(start, end, fillValue) {
    if (fillValue === void 0) fillValue = null;
    html$.Element._check(fillValue);
    dart.throw(new core.UnsupportedError.new("Cannot fillRange on filtered list"));
  }
  replaceRange(start, end, iterable) {
    IterableOfElement()._check(iterable);
    dart.throw(new core.UnsupportedError.new("Cannot replaceRange on filtered list"));
  }
  removeRange(start, end) {
    core.List.from(this[_iterable$0][$skip](start)[$take](dart.notNull(end) - dart.notNull(start)))[$forEach](dart.fn(el => dart.dsend(el, 'remove', []), dynamicTodynamic()));
  }
  clear() {
    this[_childNodes][$clear]();
  }
  removeLast() {
    let result = this[_iterable$0][$last];
    if (result != null) {
      result[$remove]();
    }
    return result;
  }
  insert(index, value) {
    html$.Element._check(value);
    if (index == this.length) {
      this.add(value);
    } else {
      let element = this[_iterable$0][$elementAt](index);
      element.parentNode.insertBefore(value, element);
    }
  }
  insertAll(index, iterable) {
    IterableOfElement()._check(iterable);
    if (index == this.length) {
      this.addAll(iterable);
    } else {
      let element = this[_iterable$0][$elementAt](index);
      element.parentNode[$insertAllBefore](iterable, element);
    }
  }
  removeAt(index) {
    let result = this._get(index);
    result[$remove]();
    return result;
  }
  remove(element) {
    if (!html$.Element.is(element)) return false;
    if (dart.test(this.contains(element))) {
      html$.Element.as(element)[$remove]();
      return true;
    } else {
      return false;
    }
  }
  get length() {
    return this[_iterable$0][$length];
  }
  _get(index) {
    return this[_iterable$0][$elementAt](index);
  }
  get iterator() {
    return this[_filtered][$iterator];
  }
  get rawList() {
    return this[_node].childNodes;
  }
};
(html_common.FilteredElementList.new = function(node) {
  this[_childNodes] = node[$nodes];
  this[_node] = node;
}).prototype = html_common.FilteredElementList.prototype;
dart.addTypeTests(html_common.FilteredElementList);
html_common.FilteredElementList[dart.implements] = () => [html_common.NodeListWrapper];
dart.setMethodSignature(html_common.FilteredElementList, () => ({
  __proto__: dart.getMethods(html_common.FilteredElementList.__proto__),
  forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Element])]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [html$.Element])]),
  _set: dart.fnType(dart.void, [core.int, core.Object]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  add: dart.fnType(dart.void, [core.Object]),
  [$add]: dart.fnType(dart.void, [core.Object]),
  addAll: dart.fnType(dart.void, [core.Object]),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  contains: dart.fnType(core.bool, [core.Object]),
  [$contains]: dart.fnType(core.bool, [core.Object]),
  sort: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Element, html$.Element])]),
  [$sort]: dart.fnType(dart.void, [], [dart.fnType(core.int, [html$.Element, html$.Element])]),
  setRange: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
  [$setRange]: dart.fnType(dart.void, [core.int, core.int, core.Object], [core.int]),
  fillRange: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
  [$fillRange]: dart.fnType(dart.void, [core.int, core.int], [core.Object]),
  replaceRange: dart.fnType(dart.void, [core.int, core.int, core.Object]),
  [$replaceRange]: dart.fnType(dart.void, [core.int, core.int, core.Object]),
  removeRange: dart.fnType(dart.void, [core.int, core.int]),
  [$removeRange]: dart.fnType(dart.void, [core.int, core.int]),
  clear: dart.fnType(dart.void, []),
  [$clear]: dart.fnType(dart.void, []),
  removeLast: dart.fnType(html$.Element, []),
  [$removeLast]: dart.fnType(html$.Element, []),
  insert: dart.fnType(dart.void, [core.int, core.Object]),
  [$insert]: dart.fnType(dart.void, [core.int, core.Object]),
  insertAll: dart.fnType(dart.void, [core.int, core.Object]),
  [$insertAll]: dart.fnType(dart.void, [core.int, core.Object]),
  removeAt: dart.fnType(html$.Element, [core.int]),
  [$removeAt]: dart.fnType(html$.Element, [core.int]),
  remove: dart.fnType(core.bool, [core.Object]),
  [$remove]: dart.fnType(core.bool, [core.Object]),
  _get: dart.fnType(html$.Element, [core.int]),
  [$_get]: dart.fnType(html$.Element, [core.int])
}));
dart.setGetterSignature(html_common.FilteredElementList, () => ({
  __proto__: dart.getGetters(html_common.FilteredElementList.__proto__),
  [_iterable$0]: core.Iterable$(html$.Element),
  [_filtered]: core.List$(html$.Element),
  reversed: core.Iterable$(html$.Element),
  [$reversed]: core.Iterable$(html$.Element),
  length: core.int,
  [$length]: core.int,
  iterator: core.Iterator$(html$.Element),
  [$iterator]: core.Iterator$(html$.Element),
  rawList: core.List$(html$.Node)
}));
dart.setSetterSignature(html_common.FilteredElementList, () => ({
  __proto__: dart.getSetters(html_common.FilteredElementList.__proto__),
  length: core.int,
  [$length]: core.int
}));
dart.setFieldSignature(html_common.FilteredElementList, () => ({
  __proto__: dart.getFields(html_common.FilteredElementList.__proto__),
  [_node]: dart.finalFieldType(html$.Node),
  [_childNodes]: dart.finalFieldType(ListOfNode())
}));
dart.defineExtensionMethods(html_common.FilteredElementList, [
  'forEach',
  '_set',
  'add',
  'addAll',
  'contains',
  'sort',
  'setRange',
  'fillRange',
  'replaceRange',
  'removeRange',
  'clear',
  'removeLast',
  'insert',
  'insertAll',
  'removeAt',
  'remove',
  '_get'
]);
dart.defineExtensionAccessors(html_common.FilteredElementList, ['length', 'reversed', 'iterator']);
html_common.Lists = class Lists extends core.Object {
  static indexOf(a, element, startIndex, endIndex) {
    if (dart.notNull(startIndex) >= dart.notNull(a[$length])) {
      return -1;
    }
    if (dart.notNull(startIndex) < 0) {
      startIndex = 0;
    }
    for (let i = startIndex; dart.notNull(i) < dart.notNull(endIndex); i = dart.notNull(i) + 1) {
      if (dart.equals(a[$_get](i), element)) {
        return i;
      }
    }
    return -1;
  }
  static lastIndexOf(a, element, startIndex) {
    if (dart.notNull(startIndex) < 0) {
      return -1;
    }
    if (dart.notNull(startIndex) >= dart.notNull(a[$length])) {
      startIndex = dart.notNull(a[$length]) - 1;
    }
    for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
      if (dart.equals(a[$_get](i), element)) {
        return i;
      }
    }
    return -1;
  }
  static getRange(a, start, end, accumulator) {
    if (dart.notNull(start) < 0) dart.throw(new core.RangeError.value(start));
    if (dart.notNull(end) < dart.notNull(start)) dart.throw(new core.RangeError.value(end));
    if (dart.notNull(end) > dart.notNull(a[$length])) dart.throw(new core.RangeError.value(end));
    for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
      accumulator[$add](a[$_get](i));
    }
    return accumulator;
  }
};
(html_common.Lists.new = function() {
}).prototype = html_common.Lists.prototype;
dart.addTypeTests(html_common.Lists);
html_common.NodeListWrapper = class NodeListWrapper extends core.Object {};
(html_common.NodeListWrapper.new = function() {
}).prototype = html_common.NodeListWrapper.prototype;
dart.addTypeTests(html_common.NodeListWrapper);
svg$._SvgElementFactoryProvider = class _SvgElementFactoryProvider extends core.Object {
  static createSvgElement_tag(tag) {
    let temp = html$.document[$createElementNS]("http://www.w3.org/2000/svg", tag);
    return svg$.SvgElement._check(temp);
  }
};
(svg$._SvgElementFactoryProvider.new = function() {
}).prototype = svg$._SvgElementFactoryProvider.prototype;
dart.addTypeTests(svg$._SvgElementFactoryProvider);
const _children$ = Symbol('_children');
const _svgClassName = Symbol('_svgClassName');
svg$.SvgElement = class SvgElement extends html$.Element {
  static tag(tag) {
    return svg$.SvgElement._check(html$.document[$createElementNS]("http://www.w3.org/2000/svg", tag));
  }
  static svg(svg, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (validator == null && treeSanitizer == null) {
      validator = new html$.NodeValidatorBuilder.common();
      validator.allowSvg();
    }
    let match = svg$.SvgElement._START_TAG_REGEXP.firstMatch(svg);
    let parentElement = null;
    if (match != null && match.group(1)[$toLowerCase]() === "svg") {
      parentElement = html$.document.body;
    } else {
      parentElement = svg$.SvgSvgElement.new();
    }
    let fragment = dart.dsend(parentElement, 'createFragment', [svg], {validator: validator, treeSanitizer: treeSanitizer});
    return svg$.SvgElement._check(dart.dload(dart.dsend(dart.dload(fragment, 'nodes'), 'where', [dart.fn(e => svg$.SvgElement.is(e), dynamicTobool())]), 'single'));
  }
  get [$classes]() {
    return new svg$.AttributeClassSet.new(this);
  }
  set [$classes](value) {
    super[$classes] = value;
  }
  get [$children]() {
    return new html_common.FilteredElementList.new(this);
  }
  set [$children](value) {
    let children = this[$children];
    children[$clear]();
    children[$addAll](value);
  }
  get [$outerHtml]() {
    let container = html$.DivElement.new();
    let cloned = svg$.SvgElement._check(this[$clone](true));
    container[$children][$add](cloned);
    return container[$innerHtml];
  }
  get [$innerHtml]() {
    let container = html$.DivElement.new();
    let cloned = svg$.SvgElement._check(this[$clone](true));
    container[$children][$addAll](cloned[$children]);
    return container[$innerHtml];
  }
  set [$innerHtml](value) {
    this[$setInnerHtml](value);
  }
  [$createFragment](svg, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    if (treeSanitizer == null) {
      if (validator == null) {
        validator = new html$.NodeValidatorBuilder.common();
        validator.allowSvg();
      }
      treeSanitizer = html$.NodeTreeSanitizer.new(validator);
    }
    let html = "<svg version=\"1.1\">" + dart.str(svg) + "</svg>";
    let fragment = html$.document.body[$createFragment](html, {treeSanitizer: treeSanitizer});
    let svgFragment = html$.DocumentFragment.new();
    let root = fragment[$nodes][$single];
    while (root.firstChild != null) {
      svgFragment[$append](root.firstChild);
    }
    return svgFragment;
  }
  [$insertAdjacentText](where, text) {
    dart.throw(new core.UnsupportedError.new("Cannot invoke insertAdjacentText on SVG."));
  }
  [$insertAdjacentHtml](where, text, opts) {
    let validator = opts && 'validator' in opts ? opts.validator : null;
    let treeSanitizer = opts && 'treeSanitizer' in opts ? opts.treeSanitizer : null;
    dart.throw(new core.UnsupportedError.new("Cannot invoke insertAdjacentHtml on SVG."));
  }
  [$insertAdjacentElement](where, element) {
    dart.throw(new core.UnsupportedError.new("Cannot invoke insertAdjacentElement on SVG."));
  }
  get [_children$]() {
    dart.throw(new core.UnsupportedError.new("Cannot get _children on SVG."));
  }
  get [$isContentEditable]() {
    return false;
  }
  [$click]() {
    dart.throw(new core.UnsupportedError.new("Cannot invoke click SVG."));
  }
  static isTagSupported(tag) {
    let e = svg$.SvgElement.tag(tag);
    return svg$.SvgElement.is(e) && !html$.UnknownElement.is(e);
  }
  get [_svgClassName]() {
    return this.className;
  }
  get [$ownerSvgElement]() {
    return this.ownerSVGElement;
  }
  get [$viewportElement]() {
    return this.viewportElement;
  }
  [$blur](...args) {
    return this.blur.apply(this, args);
  }
  [$focus](...args) {
    return this.focus.apply(this, args);
  }
  get [$nonce]() {
    return this.nonce;
  }
  set [$nonce](value) {
    this.nonce = value;
  }
  get [$onAbort]() {
    return svg$.SvgElement.abortEvent.forElement(this);
  }
  get [$onBlur]() {
    return svg$.SvgElement.blurEvent.forElement(this);
  }
  get [$onCanPlay]() {
    return svg$.SvgElement.canPlayEvent.forElement(this);
  }
  get [$onCanPlayThrough]() {
    return svg$.SvgElement.canPlayThroughEvent.forElement(this);
  }
  get [$onChange]() {
    return svg$.SvgElement.changeEvent.forElement(this);
  }
  get [$onClick]() {
    return svg$.SvgElement.clickEvent.forElement(this);
  }
  get [$onContextMenu]() {
    return svg$.SvgElement.contextMenuEvent.forElement(this);
  }
  get [$onDoubleClick]() {
    return svg$.SvgElement.doubleClickEvent.forElement(this);
  }
  get [$onDrag]() {
    return svg$.SvgElement.dragEvent.forElement(this);
  }
  get [$onDragEnd]() {
    return svg$.SvgElement.dragEndEvent.forElement(this);
  }
  get [$onDragEnter]() {
    return svg$.SvgElement.dragEnterEvent.forElement(this);
  }
  get [$onDragLeave]() {
    return svg$.SvgElement.dragLeaveEvent.forElement(this);
  }
  get [$onDragOver]() {
    return svg$.SvgElement.dragOverEvent.forElement(this);
  }
  get [$onDragStart]() {
    return svg$.SvgElement.dragStartEvent.forElement(this);
  }
  get [$onDrop]() {
    return svg$.SvgElement.dropEvent.forElement(this);
  }
  get [$onDurationChange]() {
    return svg$.SvgElement.durationChangeEvent.forElement(this);
  }
  get [$onEmptied]() {
    return svg$.SvgElement.emptiedEvent.forElement(this);
  }
  get [$onEnded]() {
    return svg$.SvgElement.endedEvent.forElement(this);
  }
  get [$onError]() {
    return svg$.SvgElement.errorEvent.forElement(this);
  }
  get [$onFocus]() {
    return svg$.SvgElement.focusEvent.forElement(this);
  }
  get [$onInput]() {
    return svg$.SvgElement.inputEvent.forElement(this);
  }
  get [$onInvalid]() {
    return svg$.SvgElement.invalidEvent.forElement(this);
  }
  get [$onKeyDown]() {
    return svg$.SvgElement.keyDownEvent.forElement(this);
  }
  get [$onKeyPress]() {
    return svg$.SvgElement.keyPressEvent.forElement(this);
  }
  get [$onKeyUp]() {
    return svg$.SvgElement.keyUpEvent.forElement(this);
  }
  get [$onLoad]() {
    return svg$.SvgElement.loadEvent.forElement(this);
  }
  get [$onLoadedData]() {
    return svg$.SvgElement.loadedDataEvent.forElement(this);
  }
  get [$onLoadedMetadata]() {
    return svg$.SvgElement.loadedMetadataEvent.forElement(this);
  }
  get [$onMouseDown]() {
    return svg$.SvgElement.mouseDownEvent.forElement(this);
  }
  get [$onMouseEnter]() {
    return svg$.SvgElement.mouseEnterEvent.forElement(this);
  }
  get [$onMouseLeave]() {
    return svg$.SvgElement.mouseLeaveEvent.forElement(this);
  }
  get [$onMouseMove]() {
    return svg$.SvgElement.mouseMoveEvent.forElement(this);
  }
  get [$onMouseOut]() {
    return svg$.SvgElement.mouseOutEvent.forElement(this);
  }
  get [$onMouseOver]() {
    return svg$.SvgElement.mouseOverEvent.forElement(this);
  }
  get [$onMouseUp]() {
    return svg$.SvgElement.mouseUpEvent.forElement(this);
  }
  get [$onMouseWheel]() {
    return svg$.SvgElement.mouseWheelEvent.forElement(this);
  }
  get [$onPause]() {
    return svg$.SvgElement.pauseEvent.forElement(this);
  }
  get [$onPlay]() {
    return svg$.SvgElement.playEvent.forElement(this);
  }
  get [$onPlaying]() {
    return svg$.SvgElement.playingEvent.forElement(this);
  }
  get [$onRateChange]() {
    return svg$.SvgElement.rateChangeEvent.forElement(this);
  }
  get [$onReset]() {
    return svg$.SvgElement.resetEvent.forElement(this);
  }
  get [$onResize]() {
    return svg$.SvgElement.resizeEvent.forElement(this);
  }
  get [$onScroll]() {
    return svg$.SvgElement.scrollEvent.forElement(this);
  }
  get [$onSeeked]() {
    return svg$.SvgElement.seekedEvent.forElement(this);
  }
  get [$onSeeking]() {
    return svg$.SvgElement.seekingEvent.forElement(this);
  }
  get [$onSelect]() {
    return svg$.SvgElement.selectEvent.forElement(this);
  }
  get [$onStalled]() {
    return svg$.SvgElement.stalledEvent.forElement(this);
  }
  get [$onSubmit]() {
    return svg$.SvgElement.submitEvent.forElement(this);
  }
  get [$onSuspend]() {
    return svg$.SvgElement.suspendEvent.forElement(this);
  }
  get [$onTimeUpdate]() {
    return svg$.SvgElement.timeUpdateEvent.forElement(this);
  }
  get [$onTouchCancel]() {
    return svg$.SvgElement.touchCancelEvent.forElement(this);
  }
  get [$onTouchEnd]() {
    return svg$.SvgElement.touchEndEvent.forElement(this);
  }
  get [$onTouchMove]() {
    return svg$.SvgElement.touchMoveEvent.forElement(this);
  }
  get [$onTouchStart]() {
    return svg$.SvgElement.touchStartEvent.forElement(this);
  }
  get [$onVolumeChange]() {
    return svg$.SvgElement.volumeChangeEvent.forElement(this);
  }
  get [$onWaiting]() {
    return svg$.SvgElement.waitingEvent.forElement(this);
  }
  get [$onWheel]() {
    return svg$.SvgElement.wheelEvent.forElement(this);
  }
};
(svg$.SvgElement.created = function() {
  this[ownerSvgElement] = null;
  this[viewportElement] = null;
  this[nonce$0] = null;
  svg$.SvgElement.__proto__.created.call(this);
}).prototype = svg$.SvgElement.prototype;
dart.addTypeTests(svg$.SvgElement);
const ownerSvgElement = Symbol("SvgElement.ownerSvgElement");
const viewportElement = Symbol("SvgElement.viewportElement");
const nonce$0 = Symbol("SvgElement.nonce");
svg$.SvgElement[dart.implements] = () => [html$.GlobalEventHandlers, html$.NoncedElement];
dart.setGetterSignature(svg$.SvgElement, () => ({
  __proto__: dart.getGetters(svg$.SvgElement.__proto__),
  [_children$]: html$.HtmlCollection,
  [_svgClassName]: svg$.AnimatedString
}));
dart.setFieldSignature(svg$.SvgElement, () => ({
  __proto__: dart.getFields(svg$.SvgElement.__proto__),
  [$ownerSvgElement]: dart.finalFieldType(svg$.SvgSvgElement),
  [$viewportElement]: dart.finalFieldType(svg$.SvgElement),
  [$nonce]: dart.fieldType(core.String)
}));
dart.defineLazy(svg$.SvgElement, {
  /*svg$.SvgElement._START_TAG_REGEXP*/get _START_TAG_REGEXP() {
    return core.RegExp.new("<(\\w+)");
  },
  /*svg$.SvgElement.abortEvent*/get abortEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("abort"));
  },
  /*svg$.SvgElement.blurEvent*/get blurEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("blur"));
  },
  /*svg$.SvgElement.canPlayEvent*/get canPlayEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("canplay"));
  },
  /*svg$.SvgElement.canPlayThroughEvent*/get canPlayThroughEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("canplaythrough"));
  },
  /*svg$.SvgElement.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  },
  /*svg$.SvgElement.clickEvent*/get clickEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("click"));
  },
  /*svg$.SvgElement.contextMenuEvent*/get contextMenuEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("contextmenu"));
  },
  /*svg$.SvgElement.doubleClickEvent*/get doubleClickEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("dblclick"));
  },
  /*svg$.SvgElement.dragEvent*/get dragEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("drag"));
  },
  /*svg$.SvgElement.dragEndEvent*/get dragEndEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragend"));
  },
  /*svg$.SvgElement.dragEnterEvent*/get dragEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragenter"));
  },
  /*svg$.SvgElement.dragLeaveEvent*/get dragLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragleave"));
  },
  /*svg$.SvgElement.dragOverEvent*/get dragOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragover"));
  },
  /*svg$.SvgElement.dragStartEvent*/get dragStartEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("dragstart"));
  },
  /*svg$.SvgElement.dropEvent*/get dropEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("drop"));
  },
  /*svg$.SvgElement.durationChangeEvent*/get durationChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("durationchange"));
  },
  /*svg$.SvgElement.emptiedEvent*/get emptiedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("emptied"));
  },
  /*svg$.SvgElement.endedEvent*/get endedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("ended"));
  },
  /*svg$.SvgElement.errorEvent*/get errorEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("error"));
  },
  /*svg$.SvgElement.focusEvent*/get focusEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("focus"));
  },
  /*svg$.SvgElement.inputEvent*/get inputEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("input"));
  },
  /*svg$.SvgElement.invalidEvent*/get invalidEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("invalid"));
  },
  /*svg$.SvgElement.keyDownEvent*/get keyDownEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keydown"));
  },
  /*svg$.SvgElement.keyPressEvent*/get keyPressEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keypress"));
  },
  /*svg$.SvgElement.keyUpEvent*/get keyUpEvent() {
    return dart.const(new (EventStreamProviderOfKeyboardEvent()).new("keyup"));
  },
  /*svg$.SvgElement.loadEvent*/get loadEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("load"));
  },
  /*svg$.SvgElement.loadedDataEvent*/get loadedDataEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("loadeddata"));
  },
  /*svg$.SvgElement.loadedMetadataEvent*/get loadedMetadataEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("loadedmetadata"));
  },
  /*svg$.SvgElement.mouseDownEvent*/get mouseDownEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousedown"));
  },
  /*svg$.SvgElement.mouseEnterEvent*/get mouseEnterEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseenter"));
  },
  /*svg$.SvgElement.mouseLeaveEvent*/get mouseLeaveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseleave"));
  },
  /*svg$.SvgElement.mouseMoveEvent*/get mouseMoveEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mousemove"));
  },
  /*svg$.SvgElement.mouseOutEvent*/get mouseOutEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseout"));
  },
  /*svg$.SvgElement.mouseOverEvent*/get mouseOverEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseover"));
  },
  /*svg$.SvgElement.mouseUpEvent*/get mouseUpEvent() {
    return dart.const(new (EventStreamProviderOfMouseEvent()).new("mouseup"));
  },
  /*svg$.SvgElement.mouseWheelEvent*/get mouseWheelEvent() {
    return dart.const(new (EventStreamProviderOfWheelEvent()).new("mousewheel"));
  },
  /*svg$.SvgElement.pauseEvent*/get pauseEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("pause"));
  },
  /*svg$.SvgElement.playEvent*/get playEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("play"));
  },
  /*svg$.SvgElement.playingEvent*/get playingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("playing"));
  },
  /*svg$.SvgElement.rateChangeEvent*/get rateChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("ratechange"));
  },
  /*svg$.SvgElement.resetEvent*/get resetEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("reset"));
  },
  /*svg$.SvgElement.resizeEvent*/get resizeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("resize"));
  },
  /*svg$.SvgElement.scrollEvent*/get scrollEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("scroll"));
  },
  /*svg$.SvgElement.seekedEvent*/get seekedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("seeked"));
  },
  /*svg$.SvgElement.seekingEvent*/get seekingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("seeking"));
  },
  /*svg$.SvgElement.selectEvent*/get selectEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("select"));
  },
  /*svg$.SvgElement.stalledEvent*/get stalledEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("stalled"));
  },
  /*svg$.SvgElement.submitEvent*/get submitEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("submit"));
  },
  /*svg$.SvgElement.suspendEvent*/get suspendEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("suspend"));
  },
  /*svg$.SvgElement.timeUpdateEvent*/get timeUpdateEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("timeupdate"));
  },
  /*svg$.SvgElement.touchCancelEvent*/get touchCancelEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchcancel"));
  },
  /*svg$.SvgElement.touchEndEvent*/get touchEndEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchend"));
  },
  /*svg$.SvgElement.touchMoveEvent*/get touchMoveEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchmove"));
  },
  /*svg$.SvgElement.touchStartEvent*/get touchStartEvent() {
    return dart.const(new (EventStreamProviderOfTouchEvent()).new("touchstart"));
  },
  /*svg$.SvgElement.volumeChangeEvent*/get volumeChangeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("volumechange"));
  },
  /*svg$.SvgElement.waitingEvent*/get waitingEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("waiting"));
  },
  /*svg$.SvgElement.wheelEvent*/get wheelEvent() {
    return dart.const(new (EventStreamProviderOfWheelEvent()).new("wheel"));
  }
});
dart.registerExtension("SVGElement", svg$.SvgElement);
svg$.GraphicsElement = class GraphicsElement extends svg$.SvgElement {
  get [$farthestViewportElement]() {
    return this.farthestViewportElement;
  }
  get [$nearestViewportElement]() {
    return this.nearestViewportElement;
  }
  get [$transform]() {
    return this.transform;
  }
  [$getBBox](...args) {
    return this.getBBox.apply(this, args);
  }
  [$getCtm](...args) {
    return this.getCTM.apply(this, args);
  }
  [$getScreenCtm](...args) {
    return this.getScreenCTM.apply(this, args);
  }
  get [$requiredExtensions]() {
    return this.requiredExtensions;
  }
  get [$systemLanguage]() {
    return this.systemLanguage;
  }
};
(svg$.GraphicsElement.created = function() {
  this[farthestViewportElement] = null;
  this[nearestViewportElement] = null;
  this[transform] = null;
  this[requiredExtensions] = null;
  this[systemLanguage] = null;
  svg$.GraphicsElement.__proto__.created.call(this);
}).prototype = svg$.GraphicsElement.prototype;
dart.addTypeTests(svg$.GraphicsElement);
const farthestViewportElement = Symbol("GraphicsElement.farthestViewportElement");
const nearestViewportElement = Symbol("GraphicsElement.nearestViewportElement");
const transform = Symbol("GraphicsElement.transform");
const requiredExtensions = Symbol("GraphicsElement.requiredExtensions");
const systemLanguage = Symbol("GraphicsElement.systemLanguage");
svg$.GraphicsElement[dart.implements] = () => [svg$.Tests];
dart.setMethodSignature(svg$.GraphicsElement, () => ({
  __proto__: dart.getMethods(svg$.GraphicsElement.__proto__),
  [$getBBox]: dart.fnType(svg$.Rect, []),
  [$getCtm]: dart.fnType(svg$.Matrix, []),
  [$getScreenCtm]: dart.fnType(svg$.Matrix, [])
}));
dart.setFieldSignature(svg$.GraphicsElement, () => ({
  __proto__: dart.getFields(svg$.GraphicsElement.__proto__),
  [$farthestViewportElement]: dart.finalFieldType(svg$.SvgElement),
  [$nearestViewportElement]: dart.finalFieldType(svg$.SvgElement),
  [$transform]: dart.finalFieldType(svg$.AnimatedTransformList),
  [$requiredExtensions]: dart.finalFieldType(svg$.StringList),
  [$systemLanguage]: dart.finalFieldType(svg$.StringList)
}));
dart.registerExtension("SVGGraphicsElement", svg$.GraphicsElement);
svg$.AElement = class AElement extends svg$.GraphicsElement {
  static new() {
    return svg$.AElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("a"));
  }
  get [$target]() {
    return this.target;
  }
  get [$href]() {
    return this.href;
  }
};
(svg$.AElement.created = function() {
  this[target$7] = null;
  this[href$8] = null;
  svg$.AElement.__proto__.created.call(this);
}).prototype = svg$.AElement.prototype;
dart.addTypeTests(svg$.AElement);
const target$7 = Symbol("AElement.target");
const href$8 = Symbol("AElement.href");
svg$.AElement[dart.implements] = () => [svg$.UriReference];
dart.setFieldSignature(svg$.AElement, () => ({
  __proto__: dart.getFields(svg$.AElement.__proto__),
  [$target]: dart.finalFieldType(svg$.AnimatedString),
  [$href]: dart.finalFieldType(svg$.AnimatedString)
}));
dart.registerExtension("SVGAElement", svg$.AElement);
svg$.Angle = class Angle extends _interceptors.Interceptor {
  get [$unitType]() {
    return this.unitType;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
  get [$valueAsString]() {
    return this.valueAsString;
  }
  set [$valueAsString](value) {
    this.valueAsString = value;
  }
  get [$valueInSpecifiedUnits]() {
    return this.valueInSpecifiedUnits;
  }
  set [$valueInSpecifiedUnits](value) {
    this.valueInSpecifiedUnits = value;
  }
  [$convertToSpecifiedUnits](...args) {
    return this.convertToSpecifiedUnits.apply(this, args);
  }
  [$newValueSpecifiedUnits](...args) {
    return this.newValueSpecifiedUnits.apply(this, args);
  }
};
dart.addTypeTests(svg$.Angle);
const unitType = Symbol("Angle.unitType");
const value$18 = Symbol("Angle.value");
const valueAsString = Symbol("Angle.valueAsString");
const valueInSpecifiedUnits = Symbol("Angle.valueInSpecifiedUnits");
dart.setMethodSignature(svg$.Angle, () => ({
  __proto__: dart.getMethods(svg$.Angle.__proto__),
  [$convertToSpecifiedUnits]: dart.fnType(dart.void, [core.int]),
  [$newValueSpecifiedUnits]: dart.fnType(dart.void, [core.int, core.num])
}));
dart.setFieldSignature(svg$.Angle, () => ({
  __proto__: dart.getFields(svg$.Angle.__proto__),
  [$unitType]: dart.finalFieldType(core.int),
  [$value]: dart.fieldType(core.num),
  [$valueAsString]: dart.fieldType(core.String),
  [$valueInSpecifiedUnits]: dart.fieldType(core.num)
}));
dart.defineLazy(svg$.Angle, {
  /*svg$.Angle.SVG_ANGLETYPE_DEG*/get SVG_ANGLETYPE_DEG() {
    return 2;
  },
  /*svg$.Angle.SVG_ANGLETYPE_GRAD*/get SVG_ANGLETYPE_GRAD() {
    return 4;
  },
  /*svg$.Angle.SVG_ANGLETYPE_RAD*/get SVG_ANGLETYPE_RAD() {
    return 3;
  },
  /*svg$.Angle.SVG_ANGLETYPE_UNKNOWN*/get SVG_ANGLETYPE_UNKNOWN() {
    return 0;
  },
  /*svg$.Angle.SVG_ANGLETYPE_UNSPECIFIED*/get SVG_ANGLETYPE_UNSPECIFIED() {
    return 1;
  }
});
dart.registerExtension("SVGAngle", svg$.Angle);
svg$.AnimationElement = class AnimationElement extends svg$.SvgElement {
  static new() {
    return svg$.AnimationElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("animation"));
  }
  get [$targetElement]() {
    return this.targetElement;
  }
  [$beginElement](...args) {
    return this.beginElement.apply(this, args);
  }
  [$beginElementAt](...args) {
    return this.beginElementAt.apply(this, args);
  }
  [$endElement](...args) {
    return this.endElement.apply(this, args);
  }
  [$endElementAt](...args) {
    return this.endElementAt.apply(this, args);
  }
  [$getCurrentTime](...args) {
    return this.getCurrentTime.apply(this, args);
  }
  [$getSimpleDuration](...args) {
    return this.getSimpleDuration.apply(this, args);
  }
  [$getStartTime](...args) {
    return this.getStartTime.apply(this, args);
  }
  get [$requiredExtensions]() {
    return this.requiredExtensions;
  }
  get [$systemLanguage]() {
    return this.systemLanguage;
  }
};
(svg$.AnimationElement.created = function() {
  this[targetElement] = null;
  this[requiredExtensions$] = null;
  this[systemLanguage$] = null;
  svg$.AnimationElement.__proto__.created.call(this);
}).prototype = svg$.AnimationElement.prototype;
dart.addTypeTests(svg$.AnimationElement);
const targetElement = Symbol("AnimationElement.targetElement");
const requiredExtensions$ = Symbol("AnimationElement.requiredExtensions");
const systemLanguage$ = Symbol("AnimationElement.systemLanguage");
svg$.AnimationElement[dart.implements] = () => [svg$.Tests];
dart.setMethodSignature(svg$.AnimationElement, () => ({
  __proto__: dart.getMethods(svg$.AnimationElement.__proto__),
  [$beginElement]: dart.fnType(dart.void, []),
  [$beginElementAt]: dart.fnType(dart.void, [core.num]),
  [$endElement]: dart.fnType(dart.void, []),
  [$endElementAt]: dart.fnType(dart.void, [core.num]),
  [$getCurrentTime]: dart.fnType(core.double, []),
  [$getSimpleDuration]: dart.fnType(core.double, []),
  [$getStartTime]: dart.fnType(core.double, [])
}));
dart.setFieldSignature(svg$.AnimationElement, () => ({
  __proto__: dart.getFields(svg$.AnimationElement.__proto__),
  [$targetElement]: dart.finalFieldType(svg$.SvgElement),
  [$requiredExtensions]: dart.finalFieldType(svg$.StringList),
  [$systemLanguage]: dart.finalFieldType(svg$.StringList)
}));
dart.registerExtension("SVGAnimationElement", svg$.AnimationElement);
svg$.AnimateElement = class AnimateElement extends svg$.AnimationElement {
  static new() {
    return svg$.AnimateElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("animate"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("animate")) && svg$.AnimateElement.is(svg$.SvgElement.tag("animate"));
  }
};
(svg$.AnimateElement.created = function() {
  svg$.AnimateElement.__proto__.created.call(this);
}).prototype = svg$.AnimateElement.prototype;
dart.addTypeTests(svg$.AnimateElement);
dart.registerExtension("SVGAnimateElement", svg$.AnimateElement);
svg$.AnimateMotionElement = class AnimateMotionElement extends svg$.AnimationElement {
  static new() {
    return svg$.AnimateMotionElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("animateMotion"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("animateMotion")) && svg$.AnimateMotionElement.is(svg$.SvgElement.tag("animateMotion"));
  }
};
(svg$.AnimateMotionElement.created = function() {
  svg$.AnimateMotionElement.__proto__.created.call(this);
}).prototype = svg$.AnimateMotionElement.prototype;
dart.addTypeTests(svg$.AnimateMotionElement);
dart.registerExtension("SVGAnimateMotionElement", svg$.AnimateMotionElement);
svg$.AnimateTransformElement = class AnimateTransformElement extends svg$.AnimationElement {
  static new() {
    return svg$.AnimateTransformElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("animateTransform"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("animateTransform")) && svg$.AnimateTransformElement.is(svg$.SvgElement.tag("animateTransform"));
  }
};
(svg$.AnimateTransformElement.created = function() {
  svg$.AnimateTransformElement.__proto__.created.call(this);
}).prototype = svg$.AnimateTransformElement.prototype;
dart.addTypeTests(svg$.AnimateTransformElement);
dart.registerExtension("SVGAnimateTransformElement", svg$.AnimateTransformElement);
svg$.AnimatedAngle = class AnimatedAngle extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
};
dart.addTypeTests(svg$.AnimatedAngle);
const animVal = Symbol("AnimatedAngle.animVal");
const baseVal = Symbol("AnimatedAngle.baseVal");
dart.setFieldSignature(svg$.AnimatedAngle, () => ({
  __proto__: dart.getFields(svg$.AnimatedAngle.__proto__),
  [$animVal]: dart.finalFieldType(svg$.Angle),
  [$baseVal]: dart.finalFieldType(svg$.Angle)
}));
dart.registerExtension("SVGAnimatedAngle", svg$.AnimatedAngle);
svg$.AnimatedBoolean = class AnimatedBoolean extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
  set [$baseVal](value) {
    this.baseVal = value;
  }
};
dart.addTypeTests(svg$.AnimatedBoolean);
const animVal$ = Symbol("AnimatedBoolean.animVal");
const baseVal$ = Symbol("AnimatedBoolean.baseVal");
dart.setFieldSignature(svg$.AnimatedBoolean, () => ({
  __proto__: dart.getFields(svg$.AnimatedBoolean.__proto__),
  [$animVal]: dart.finalFieldType(core.bool),
  [$baseVal]: dart.fieldType(core.bool)
}));
dart.registerExtension("SVGAnimatedBoolean", svg$.AnimatedBoolean);
svg$.AnimatedEnumeration = class AnimatedEnumeration extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
  set [$baseVal](value) {
    this.baseVal = value;
  }
};
dart.addTypeTests(svg$.AnimatedEnumeration);
const animVal$0 = Symbol("AnimatedEnumeration.animVal");
const baseVal$0 = Symbol("AnimatedEnumeration.baseVal");
dart.setFieldSignature(svg$.AnimatedEnumeration, () => ({
  __proto__: dart.getFields(svg$.AnimatedEnumeration.__proto__),
  [$animVal]: dart.finalFieldType(core.int),
  [$baseVal]: dart.fieldType(core.int)
}));
dart.registerExtension("SVGAnimatedEnumeration", svg$.AnimatedEnumeration);
svg$.AnimatedInteger = class AnimatedInteger extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
  set [$baseVal](value) {
    this.baseVal = value;
  }
};
dart.addTypeTests(svg$.AnimatedInteger);
const animVal$1 = Symbol("AnimatedInteger.animVal");
const baseVal$1 = Symbol("AnimatedInteger.baseVal");
dart.setFieldSignature(svg$.AnimatedInteger, () => ({
  __proto__: dart.getFields(svg$.AnimatedInteger.__proto__),
  [$animVal]: dart.finalFieldType(core.int),
  [$baseVal]: dart.fieldType(core.int)
}));
dart.registerExtension("SVGAnimatedInteger", svg$.AnimatedInteger);
svg$.AnimatedLength = class AnimatedLength extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
};
dart.addTypeTests(svg$.AnimatedLength);
const animVal$2 = Symbol("AnimatedLength.animVal");
const baseVal$2 = Symbol("AnimatedLength.baseVal");
dart.setFieldSignature(svg$.AnimatedLength, () => ({
  __proto__: dart.getFields(svg$.AnimatedLength.__proto__),
  [$animVal]: dart.finalFieldType(svg$.Length),
  [$baseVal]: dart.finalFieldType(svg$.Length)
}));
dart.registerExtension("SVGAnimatedLength", svg$.AnimatedLength);
svg$.AnimatedLengthList = class AnimatedLengthList extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
};
dart.addTypeTests(svg$.AnimatedLengthList);
const animVal$3 = Symbol("AnimatedLengthList.animVal");
const baseVal$3 = Symbol("AnimatedLengthList.baseVal");
dart.setFieldSignature(svg$.AnimatedLengthList, () => ({
  __proto__: dart.getFields(svg$.AnimatedLengthList.__proto__),
  [$animVal]: dart.finalFieldType(svg$.LengthList),
  [$baseVal]: dart.finalFieldType(svg$.LengthList)
}));
dart.registerExtension("SVGAnimatedLengthList", svg$.AnimatedLengthList);
svg$.AnimatedNumber = class AnimatedNumber extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
  set [$baseVal](value) {
    this.baseVal = value;
  }
};
dart.addTypeTests(svg$.AnimatedNumber);
const animVal$4 = Symbol("AnimatedNumber.animVal");
const baseVal$4 = Symbol("AnimatedNumber.baseVal");
dart.setFieldSignature(svg$.AnimatedNumber, () => ({
  __proto__: dart.getFields(svg$.AnimatedNumber.__proto__),
  [$animVal]: dart.finalFieldType(core.num),
  [$baseVal]: dart.fieldType(core.num)
}));
dart.registerExtension("SVGAnimatedNumber", svg$.AnimatedNumber);
svg$.AnimatedNumberList = class AnimatedNumberList extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
};
dart.addTypeTests(svg$.AnimatedNumberList);
const animVal$5 = Symbol("AnimatedNumberList.animVal");
const baseVal$5 = Symbol("AnimatedNumberList.baseVal");
dart.setFieldSignature(svg$.AnimatedNumberList, () => ({
  __proto__: dart.getFields(svg$.AnimatedNumberList.__proto__),
  [$animVal]: dart.finalFieldType(svg$.NumberList),
  [$baseVal]: dart.finalFieldType(svg$.NumberList)
}));
dart.registerExtension("SVGAnimatedNumberList", svg$.AnimatedNumberList);
svg$.AnimatedPreserveAspectRatio = class AnimatedPreserveAspectRatio extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
};
dart.addTypeTests(svg$.AnimatedPreserveAspectRatio);
const animVal$6 = Symbol("AnimatedPreserveAspectRatio.animVal");
const baseVal$6 = Symbol("AnimatedPreserveAspectRatio.baseVal");
dart.setFieldSignature(svg$.AnimatedPreserveAspectRatio, () => ({
  __proto__: dart.getFields(svg$.AnimatedPreserveAspectRatio.__proto__),
  [$animVal]: dart.finalFieldType(svg$.PreserveAspectRatio),
  [$baseVal]: dart.finalFieldType(svg$.PreserveAspectRatio)
}));
dart.registerExtension("SVGAnimatedPreserveAspectRatio", svg$.AnimatedPreserveAspectRatio);
svg$.AnimatedRect = class AnimatedRect extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
};
dart.addTypeTests(svg$.AnimatedRect);
const animVal$7 = Symbol("AnimatedRect.animVal");
const baseVal$7 = Symbol("AnimatedRect.baseVal");
dart.setFieldSignature(svg$.AnimatedRect, () => ({
  __proto__: dart.getFields(svg$.AnimatedRect.__proto__),
  [$animVal]: dart.finalFieldType(svg$.Rect),
  [$baseVal]: dart.finalFieldType(svg$.Rect)
}));
dart.registerExtension("SVGAnimatedRect", svg$.AnimatedRect);
svg$.AnimatedString = class AnimatedString extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
  set [$baseVal](value) {
    this.baseVal = value;
  }
};
dart.addTypeTests(svg$.AnimatedString);
const animVal$8 = Symbol("AnimatedString.animVal");
const baseVal$8 = Symbol("AnimatedString.baseVal");
dart.setFieldSignature(svg$.AnimatedString, () => ({
  __proto__: dart.getFields(svg$.AnimatedString.__proto__),
  [$animVal]: dart.finalFieldType(core.String),
  [$baseVal]: dart.fieldType(core.String)
}));
dart.registerExtension("SVGAnimatedString", svg$.AnimatedString);
svg$.AnimatedTransformList = class AnimatedTransformList extends _interceptors.Interceptor {
  get [$animVal]() {
    return this.animVal;
  }
  get [$baseVal]() {
    return this.baseVal;
  }
};
dart.addTypeTests(svg$.AnimatedTransformList);
const animVal$9 = Symbol("AnimatedTransformList.animVal");
const baseVal$9 = Symbol("AnimatedTransformList.baseVal");
dart.setFieldSignature(svg$.AnimatedTransformList, () => ({
  __proto__: dart.getFields(svg$.AnimatedTransformList.__proto__),
  [$animVal]: dart.finalFieldType(svg$.TransformList),
  [$baseVal]: dart.finalFieldType(svg$.TransformList)
}));
dart.registerExtension("SVGAnimatedTransformList", svg$.AnimatedTransformList);
svg$.GeometryElement = class GeometryElement extends svg$.GraphicsElement {
  get [$pathLength]() {
    return this.pathLength;
  }
  [$getPointAtLength](...args) {
    return this.getPointAtLength.apply(this, args);
  }
  [$getTotalLength](...args) {
    return this.getTotalLength.apply(this, args);
  }
  [$isPointInFill](...args) {
    return this.isPointInFill.apply(this, args);
  }
  [$isPointInStroke](...args) {
    return this.isPointInStroke.apply(this, args);
  }
};
(svg$.GeometryElement.created = function() {
  this[pathLength] = null;
  svg$.GeometryElement.__proto__.created.call(this);
}).prototype = svg$.GeometryElement.prototype;
dart.addTypeTests(svg$.GeometryElement);
const pathLength = Symbol("GeometryElement.pathLength");
dart.setMethodSignature(svg$.GeometryElement, () => ({
  __proto__: dart.getMethods(svg$.GeometryElement.__proto__),
  [$getPointAtLength]: dart.fnType(svg$.Point, [core.num]),
  [$getTotalLength]: dart.fnType(core.double, []),
  [$isPointInFill]: dart.fnType(core.bool, [svg$.Point]),
  [$isPointInStroke]: dart.fnType(core.bool, [svg$.Point])
}));
dart.setFieldSignature(svg$.GeometryElement, () => ({
  __proto__: dart.getFields(svg$.GeometryElement.__proto__),
  [$pathLength]: dart.finalFieldType(svg$.AnimatedNumber)
}));
dart.registerExtension("SVGGeometryElement", svg$.GeometryElement);
svg$.CircleElement = class CircleElement extends svg$.GeometryElement {
  static new() {
    return svg$.CircleElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("circle"));
  }
  get [$cx]() {
    return this.cx;
  }
  get [$cy]() {
    return this.cy;
  }
  get [$r]() {
    return this.r;
  }
};
(svg$.CircleElement.created = function() {
  this[cx] = null;
  this[cy] = null;
  this[r] = null;
  svg$.CircleElement.__proto__.created.call(this);
}).prototype = svg$.CircleElement.prototype;
dart.addTypeTests(svg$.CircleElement);
const cx = Symbol("CircleElement.cx");
const cy = Symbol("CircleElement.cy");
const r = Symbol("CircleElement.r");
dart.setFieldSignature(svg$.CircleElement, () => ({
  __proto__: dart.getFields(svg$.CircleElement.__proto__),
  [$cx]: dart.finalFieldType(svg$.AnimatedLength),
  [$cy]: dart.finalFieldType(svg$.AnimatedLength),
  [$r]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGCircleElement", svg$.CircleElement);
svg$.ClipPathElement = class ClipPathElement extends svg$.GraphicsElement {
  static new() {
    return svg$.ClipPathElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("clipPath"));
  }
  get [$clipPathUnits]() {
    return this.clipPathUnits;
  }
};
(svg$.ClipPathElement.created = function() {
  this[clipPathUnits] = null;
  svg$.ClipPathElement.__proto__.created.call(this);
}).prototype = svg$.ClipPathElement.prototype;
dart.addTypeTests(svg$.ClipPathElement);
const clipPathUnits = Symbol("ClipPathElement.clipPathUnits");
dart.setFieldSignature(svg$.ClipPathElement, () => ({
  __proto__: dart.getFields(svg$.ClipPathElement.__proto__),
  [$clipPathUnits]: dart.finalFieldType(svg$.AnimatedEnumeration)
}));
dart.registerExtension("SVGClipPathElement", svg$.ClipPathElement);
svg$.DefsElement = class DefsElement extends svg$.GraphicsElement {
  static new() {
    return svg$.DefsElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("defs"));
  }
};
(svg$.DefsElement.created = function() {
  svg$.DefsElement.__proto__.created.call(this);
}).prototype = svg$.DefsElement.prototype;
dart.addTypeTests(svg$.DefsElement);
dart.registerExtension("SVGDefsElement", svg$.DefsElement);
svg$.DescElement = class DescElement extends svg$.SvgElement {
  static new() {
    return svg$.DescElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("desc"));
  }
};
(svg$.DescElement.created = function() {
  svg$.DescElement.__proto__.created.call(this);
}).prototype = svg$.DescElement.prototype;
dart.addTypeTests(svg$.DescElement);
dart.registerExtension("SVGDescElement", svg$.DescElement);
svg$.DiscardElement = class DiscardElement extends svg$.SvgElement {};
(svg$.DiscardElement.created = function() {
  svg$.DiscardElement.__proto__.created.call(this);
}).prototype = svg$.DiscardElement.prototype;
dart.addTypeTests(svg$.DiscardElement);
dart.registerExtension("SVGDiscardElement", svg$.DiscardElement);
svg$.EllipseElement = class EllipseElement extends svg$.GeometryElement {
  static new() {
    return svg$.EllipseElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("ellipse"));
  }
  get [$cx]() {
    return this.cx;
  }
  get [$cy]() {
    return this.cy;
  }
  get [$rx]() {
    return this.rx;
  }
  get [$ry]() {
    return this.ry;
  }
};
(svg$.EllipseElement.created = function() {
  this[cx$] = null;
  this[cy$] = null;
  this[rx] = null;
  this[ry] = null;
  svg$.EllipseElement.__proto__.created.call(this);
}).prototype = svg$.EllipseElement.prototype;
dart.addTypeTests(svg$.EllipseElement);
const cx$ = Symbol("EllipseElement.cx");
const cy$ = Symbol("EllipseElement.cy");
const rx = Symbol("EllipseElement.rx");
const ry = Symbol("EllipseElement.ry");
dart.setFieldSignature(svg$.EllipseElement, () => ({
  __proto__: dart.getFields(svg$.EllipseElement.__proto__),
  [$cx]: dart.finalFieldType(svg$.AnimatedLength),
  [$cy]: dart.finalFieldType(svg$.AnimatedLength),
  [$rx]: dart.finalFieldType(svg$.AnimatedLength),
  [$ry]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGEllipseElement", svg$.EllipseElement);
svg$.FEBlendElement = class FEBlendElement extends svg$.SvgElement {
  static new() {
    return svg$.FEBlendElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feBlend"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feBlend")) && svg$.FEBlendElement.is(svg$.SvgElement.tag("feBlend"));
  }
  get [$in1]() {
    return this.in1;
  }
  get [$in2]() {
    return this.in2;
  }
  get [$mode]() {
    return this.mode;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEBlendElement.created = function() {
  this[in1] = null;
  this[in2] = null;
  this[mode$4] = null;
  this[height$14] = null;
  this[result] = null;
  this[width$16] = null;
  this[x$7] = null;
  this[y$6] = null;
  svg$.FEBlendElement.__proto__.created.call(this);
}).prototype = svg$.FEBlendElement.prototype;
dart.addTypeTests(svg$.FEBlendElement);
const in1 = Symbol("FEBlendElement.in1");
const in2 = Symbol("FEBlendElement.in2");
const mode$4 = Symbol("FEBlendElement.mode");
const height$14 = Symbol("FEBlendElement.height");
const result = Symbol("FEBlendElement.result");
const width$16 = Symbol("FEBlendElement.width");
const x$7 = Symbol("FEBlendElement.x");
const y$6 = Symbol("FEBlendElement.y");
svg$.FEBlendElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FEBlendElement, () => ({
  __proto__: dart.getFields(svg$.FEBlendElement.__proto__),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$in2]: dart.finalFieldType(svg$.AnimatedString),
  [$mode]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.defineLazy(svg$.FEBlendElement, {
  /*svg$.FEBlendElement.SVG_FEBLEND_MODE_DARKEN*/get SVG_FEBLEND_MODE_DARKEN() {
    return 4;
  },
  /*svg$.FEBlendElement.SVG_FEBLEND_MODE_LIGHTEN*/get SVG_FEBLEND_MODE_LIGHTEN() {
    return 5;
  },
  /*svg$.FEBlendElement.SVG_FEBLEND_MODE_MULTIPLY*/get SVG_FEBLEND_MODE_MULTIPLY() {
    return 2;
  },
  /*svg$.FEBlendElement.SVG_FEBLEND_MODE_NORMAL*/get SVG_FEBLEND_MODE_NORMAL() {
    return 1;
  },
  /*svg$.FEBlendElement.SVG_FEBLEND_MODE_SCREEN*/get SVG_FEBLEND_MODE_SCREEN() {
    return 3;
  },
  /*svg$.FEBlendElement.SVG_FEBLEND_MODE_UNKNOWN*/get SVG_FEBLEND_MODE_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGFEBlendElement", svg$.FEBlendElement);
svg$.FEColorMatrixElement = class FEColorMatrixElement extends svg$.SvgElement {
  static new() {
    return svg$.FEColorMatrixElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feColorMatrix"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feColorMatrix")) && svg$.FEColorMatrixElement.is(svg$.SvgElement.tag("feColorMatrix"));
  }
  get [$in1]() {
    return this.in1;
  }
  get [$type]() {
    return this.type;
  }
  get [$values]() {
    return this.values;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEColorMatrixElement.created = function() {
  this[in1$] = null;
  this[type$37] = null;
  this[values] = null;
  this[height$15] = null;
  this[result$] = null;
  this[width$17] = null;
  this[x$8] = null;
  this[y$7] = null;
  svg$.FEColorMatrixElement.__proto__.created.call(this);
}).prototype = svg$.FEColorMatrixElement.prototype;
dart.addTypeTests(svg$.FEColorMatrixElement);
const in1$ = Symbol("FEColorMatrixElement.in1");
const type$37 = Symbol("FEColorMatrixElement.type");
const values = Symbol("FEColorMatrixElement.values");
const height$15 = Symbol("FEColorMatrixElement.height");
const result$ = Symbol("FEColorMatrixElement.result");
const width$17 = Symbol("FEColorMatrixElement.width");
const x$8 = Symbol("FEColorMatrixElement.x");
const y$7 = Symbol("FEColorMatrixElement.y");
svg$.FEColorMatrixElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FEColorMatrixElement, () => ({
  __proto__: dart.getFields(svg$.FEColorMatrixElement.__proto__),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$type]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$values]: dart.finalFieldType(svg$.AnimatedNumberList),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.defineLazy(svg$.FEColorMatrixElement, {
  /*svg$.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_HUEROTATE*/get SVG_FECOLORMATRIX_TYPE_HUEROTATE() {
    return 3;
  },
  /*svg$.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA*/get SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA() {
    return 4;
  },
  /*svg$.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_MATRIX*/get SVG_FECOLORMATRIX_TYPE_MATRIX() {
    return 1;
  },
  /*svg$.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE*/get SVG_FECOLORMATRIX_TYPE_SATURATE() {
    return 2;
  },
  /*svg$.FEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_UNKNOWN*/get SVG_FECOLORMATRIX_TYPE_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGFEColorMatrixElement", svg$.FEColorMatrixElement);
svg$.FEComponentTransferElement = class FEComponentTransferElement extends svg$.SvgElement {
  static new() {
    return svg$.FEComponentTransferElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feComponentTransfer"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feComponentTransfer")) && svg$.FEComponentTransferElement.is(svg$.SvgElement.tag("feComponentTransfer"));
  }
  get [$in1]() {
    return this.in1;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEComponentTransferElement.created = function() {
  this[in1$0] = null;
  this[height$16] = null;
  this[result$0] = null;
  this[width$18] = null;
  this[x$9] = null;
  this[y$8] = null;
  svg$.FEComponentTransferElement.__proto__.created.call(this);
}).prototype = svg$.FEComponentTransferElement.prototype;
dart.addTypeTests(svg$.FEComponentTransferElement);
const in1$0 = Symbol("FEComponentTransferElement.in1");
const height$16 = Symbol("FEComponentTransferElement.height");
const result$0 = Symbol("FEComponentTransferElement.result");
const width$18 = Symbol("FEComponentTransferElement.width");
const x$9 = Symbol("FEComponentTransferElement.x");
const y$8 = Symbol("FEComponentTransferElement.y");
svg$.FEComponentTransferElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FEComponentTransferElement, () => ({
  __proto__: dart.getFields(svg$.FEComponentTransferElement.__proto__),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGFEComponentTransferElement", svg$.FEComponentTransferElement);
svg$.FECompositeElement = class FECompositeElement extends svg$.SvgElement {
  get [$in1]() {
    return this.in1;
  }
  get [$in2]() {
    return this.in2;
  }
  get [$k1]() {
    return this.k1;
  }
  get [$k2]() {
    return this.k2;
  }
  get [$k3]() {
    return this.k3;
  }
  get [$k4]() {
    return this.k4;
  }
  get [$operator]() {
    return this.operator;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FECompositeElement.created = function() {
  this[in1$1] = null;
  this[in2$] = null;
  this[k1] = null;
  this[k2] = null;
  this[k3] = null;
  this[k4] = null;
  this[operator] = null;
  this[height$17] = null;
  this[result$1] = null;
  this[width$19] = null;
  this[x$10] = null;
  this[y$9] = null;
  svg$.FECompositeElement.__proto__.created.call(this);
}).prototype = svg$.FECompositeElement.prototype;
dart.addTypeTests(svg$.FECompositeElement);
const in1$1 = Symbol("FECompositeElement.in1");
const in2$ = Symbol("FECompositeElement.in2");
const k1 = Symbol("FECompositeElement.k1");
const k2 = Symbol("FECompositeElement.k2");
const k3 = Symbol("FECompositeElement.k3");
const k4 = Symbol("FECompositeElement.k4");
const operator = Symbol("FECompositeElement.operator");
const height$17 = Symbol("FECompositeElement.height");
const result$1 = Symbol("FECompositeElement.result");
const width$19 = Symbol("FECompositeElement.width");
const x$10 = Symbol("FECompositeElement.x");
const y$9 = Symbol("FECompositeElement.y");
svg$.FECompositeElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FECompositeElement, () => ({
  __proto__: dart.getFields(svg$.FECompositeElement.__proto__),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$in2]: dart.finalFieldType(svg$.AnimatedString),
  [$k1]: dart.finalFieldType(svg$.AnimatedNumber),
  [$k2]: dart.finalFieldType(svg$.AnimatedNumber),
  [$k3]: dart.finalFieldType(svg$.AnimatedNumber),
  [$k4]: dart.finalFieldType(svg$.AnimatedNumber),
  [$operator]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.defineLazy(svg$.FECompositeElement, {
  /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_ARITHMETIC*/get SVG_FECOMPOSITE_OPERATOR_ARITHMETIC() {
    return 6;
  },
  /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_ATOP*/get SVG_FECOMPOSITE_OPERATOR_ATOP() {
    return 4;
  },
  /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_IN*/get SVG_FECOMPOSITE_OPERATOR_IN() {
    return 2;
  },
  /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_OUT*/get SVG_FECOMPOSITE_OPERATOR_OUT() {
    return 3;
  },
  /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_OVER*/get SVG_FECOMPOSITE_OPERATOR_OVER() {
    return 1;
  },
  /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_UNKNOWN*/get SVG_FECOMPOSITE_OPERATOR_UNKNOWN() {
    return 0;
  },
  /*svg$.FECompositeElement.SVG_FECOMPOSITE_OPERATOR_XOR*/get SVG_FECOMPOSITE_OPERATOR_XOR() {
    return 5;
  }
});
dart.registerExtension("SVGFECompositeElement", svg$.FECompositeElement);
svg$.FEConvolveMatrixElement = class FEConvolveMatrixElement extends svg$.SvgElement {
  static new() {
    return svg$.FEConvolveMatrixElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feConvolveMatrix"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feConvolveMatrix")) && svg$.FEConvolveMatrixElement.is(svg$.SvgElement.tag("feConvolveMatrix"));
  }
  get [$bias]() {
    return this.bias;
  }
  get [$divisor]() {
    return this.divisor;
  }
  get [$edgeMode]() {
    return this.edgeMode;
  }
  get [$in1]() {
    return this.in1;
  }
  get [$kernelMatrix]() {
    return this.kernelMatrix;
  }
  get [$kernelUnitLengthX]() {
    return this.kernelUnitLengthX;
  }
  get [$kernelUnitLengthY]() {
    return this.kernelUnitLengthY;
  }
  get [$orderX]() {
    return this.orderX;
  }
  get [$orderY]() {
    return this.orderY;
  }
  get [$preserveAlpha]() {
    return this.preserveAlpha;
  }
  get [$targetX]() {
    return this.targetX;
  }
  get [$targetY]() {
    return this.targetY;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEConvolveMatrixElement.created = function() {
  this[bias] = null;
  this[divisor] = null;
  this[edgeMode] = null;
  this[in1$2] = null;
  this[kernelMatrix] = null;
  this[kernelUnitLengthX] = null;
  this[kernelUnitLengthY] = null;
  this[orderX] = null;
  this[orderY] = null;
  this[preserveAlpha] = null;
  this[targetX] = null;
  this[targetY] = null;
  this[height$18] = null;
  this[result$2] = null;
  this[width$20] = null;
  this[x$11] = null;
  this[y$10] = null;
  svg$.FEConvolveMatrixElement.__proto__.created.call(this);
}).prototype = svg$.FEConvolveMatrixElement.prototype;
dart.addTypeTests(svg$.FEConvolveMatrixElement);
const bias = Symbol("FEConvolveMatrixElement.bias");
const divisor = Symbol("FEConvolveMatrixElement.divisor");
const edgeMode = Symbol("FEConvolveMatrixElement.edgeMode");
const in1$2 = Symbol("FEConvolveMatrixElement.in1");
const kernelMatrix = Symbol("FEConvolveMatrixElement.kernelMatrix");
const kernelUnitLengthX = Symbol("FEConvolveMatrixElement.kernelUnitLengthX");
const kernelUnitLengthY = Symbol("FEConvolveMatrixElement.kernelUnitLengthY");
const orderX = Symbol("FEConvolveMatrixElement.orderX");
const orderY = Symbol("FEConvolveMatrixElement.orderY");
const preserveAlpha = Symbol("FEConvolveMatrixElement.preserveAlpha");
const targetX = Symbol("FEConvolveMatrixElement.targetX");
const targetY = Symbol("FEConvolveMatrixElement.targetY");
const height$18 = Symbol("FEConvolveMatrixElement.height");
const result$2 = Symbol("FEConvolveMatrixElement.result");
const width$20 = Symbol("FEConvolveMatrixElement.width");
const x$11 = Symbol("FEConvolveMatrixElement.x");
const y$10 = Symbol("FEConvolveMatrixElement.y");
svg$.FEConvolveMatrixElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FEConvolveMatrixElement, () => ({
  __proto__: dart.getFields(svg$.FEConvolveMatrixElement.__proto__),
  [$bias]: dart.finalFieldType(svg$.AnimatedNumber),
  [$divisor]: dart.finalFieldType(svg$.AnimatedNumber),
  [$edgeMode]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$kernelMatrix]: dart.finalFieldType(svg$.AnimatedNumberList),
  [$kernelUnitLengthX]: dart.finalFieldType(svg$.AnimatedNumber),
  [$kernelUnitLengthY]: dart.finalFieldType(svg$.AnimatedNumber),
  [$orderX]: dart.finalFieldType(svg$.AnimatedInteger),
  [$orderY]: dart.finalFieldType(svg$.AnimatedInteger),
  [$preserveAlpha]: dart.finalFieldType(svg$.AnimatedBoolean),
  [$targetX]: dart.finalFieldType(svg$.AnimatedInteger),
  [$targetY]: dart.finalFieldType(svg$.AnimatedInteger),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.defineLazy(svg$.FEConvolveMatrixElement, {
  /*svg$.FEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE*/get SVG_EDGEMODE_DUPLICATE() {
    return 1;
  },
  /*svg$.FEConvolveMatrixElement.SVG_EDGEMODE_NONE*/get SVG_EDGEMODE_NONE() {
    return 3;
  },
  /*svg$.FEConvolveMatrixElement.SVG_EDGEMODE_UNKNOWN*/get SVG_EDGEMODE_UNKNOWN() {
    return 0;
  },
  /*svg$.FEConvolveMatrixElement.SVG_EDGEMODE_WRAP*/get SVG_EDGEMODE_WRAP() {
    return 2;
  }
});
dart.registerExtension("SVGFEConvolveMatrixElement", svg$.FEConvolveMatrixElement);
svg$.FEDiffuseLightingElement = class FEDiffuseLightingElement extends svg$.SvgElement {
  static new() {
    return svg$.FEDiffuseLightingElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feDiffuseLighting"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feDiffuseLighting")) && svg$.FEDiffuseLightingElement.is(svg$.SvgElement.tag("feDiffuseLighting"));
  }
  get [$diffuseConstant]() {
    return this.diffuseConstant;
  }
  get [$in1]() {
    return this.in1;
  }
  get [$kernelUnitLengthX]() {
    return this.kernelUnitLengthX;
  }
  get [$kernelUnitLengthY]() {
    return this.kernelUnitLengthY;
  }
  get [$surfaceScale]() {
    return this.surfaceScale;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEDiffuseLightingElement.created = function() {
  this[diffuseConstant] = null;
  this[in1$3] = null;
  this[kernelUnitLengthX$] = null;
  this[kernelUnitLengthY$] = null;
  this[surfaceScale] = null;
  this[height$19] = null;
  this[result$3] = null;
  this[width$21] = null;
  this[x$12] = null;
  this[y$11] = null;
  svg$.FEDiffuseLightingElement.__proto__.created.call(this);
}).prototype = svg$.FEDiffuseLightingElement.prototype;
dart.addTypeTests(svg$.FEDiffuseLightingElement);
const diffuseConstant = Symbol("FEDiffuseLightingElement.diffuseConstant");
const in1$3 = Symbol("FEDiffuseLightingElement.in1");
const kernelUnitLengthX$ = Symbol("FEDiffuseLightingElement.kernelUnitLengthX");
const kernelUnitLengthY$ = Symbol("FEDiffuseLightingElement.kernelUnitLengthY");
const surfaceScale = Symbol("FEDiffuseLightingElement.surfaceScale");
const height$19 = Symbol("FEDiffuseLightingElement.height");
const result$3 = Symbol("FEDiffuseLightingElement.result");
const width$21 = Symbol("FEDiffuseLightingElement.width");
const x$12 = Symbol("FEDiffuseLightingElement.x");
const y$11 = Symbol("FEDiffuseLightingElement.y");
svg$.FEDiffuseLightingElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FEDiffuseLightingElement, () => ({
  __proto__: dart.getFields(svg$.FEDiffuseLightingElement.__proto__),
  [$diffuseConstant]: dart.finalFieldType(svg$.AnimatedNumber),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$kernelUnitLengthX]: dart.finalFieldType(svg$.AnimatedNumber),
  [$kernelUnitLengthY]: dart.finalFieldType(svg$.AnimatedNumber),
  [$surfaceScale]: dart.finalFieldType(svg$.AnimatedNumber),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGFEDiffuseLightingElement", svg$.FEDiffuseLightingElement);
svg$.FEDisplacementMapElement = class FEDisplacementMapElement extends svg$.SvgElement {
  static new() {
    return svg$.FEDisplacementMapElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feDisplacementMap"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feDisplacementMap")) && svg$.FEDisplacementMapElement.is(svg$.SvgElement.tag("feDisplacementMap"));
  }
  get [$in1]() {
    return this.in1;
  }
  get [$in2]() {
    return this.in2;
  }
  get [$scale]() {
    return this.scale;
  }
  get [$xChannelSelector]() {
    return this.xChannelSelector;
  }
  get [$yChannelSelector]() {
    return this.yChannelSelector;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEDisplacementMapElement.created = function() {
  this[in1$4] = null;
  this[in2$0] = null;
  this[scale$] = null;
  this[xChannelSelector] = null;
  this[yChannelSelector] = null;
  this[height$20] = null;
  this[result$4] = null;
  this[width$22] = null;
  this[x$13] = null;
  this[y$12] = null;
  svg$.FEDisplacementMapElement.__proto__.created.call(this);
}).prototype = svg$.FEDisplacementMapElement.prototype;
dart.addTypeTests(svg$.FEDisplacementMapElement);
const in1$4 = Symbol("FEDisplacementMapElement.in1");
const in2$0 = Symbol("FEDisplacementMapElement.in2");
const scale$ = Symbol("FEDisplacementMapElement.scale");
const xChannelSelector = Symbol("FEDisplacementMapElement.xChannelSelector");
const yChannelSelector = Symbol("FEDisplacementMapElement.yChannelSelector");
const height$20 = Symbol("FEDisplacementMapElement.height");
const result$4 = Symbol("FEDisplacementMapElement.result");
const width$22 = Symbol("FEDisplacementMapElement.width");
const x$13 = Symbol("FEDisplacementMapElement.x");
const y$12 = Symbol("FEDisplacementMapElement.y");
svg$.FEDisplacementMapElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FEDisplacementMapElement, () => ({
  __proto__: dart.getFields(svg$.FEDisplacementMapElement.__proto__),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$in2]: dart.finalFieldType(svg$.AnimatedString),
  [$scale]: dart.finalFieldType(svg$.AnimatedNumber),
  [$xChannelSelector]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$yChannelSelector]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.defineLazy(svg$.FEDisplacementMapElement, {
  /*svg$.FEDisplacementMapElement.SVG_CHANNEL_A*/get SVG_CHANNEL_A() {
    return 4;
  },
  /*svg$.FEDisplacementMapElement.SVG_CHANNEL_B*/get SVG_CHANNEL_B() {
    return 3;
  },
  /*svg$.FEDisplacementMapElement.SVG_CHANNEL_G*/get SVG_CHANNEL_G() {
    return 2;
  },
  /*svg$.FEDisplacementMapElement.SVG_CHANNEL_R*/get SVG_CHANNEL_R() {
    return 1;
  },
  /*svg$.FEDisplacementMapElement.SVG_CHANNEL_UNKNOWN*/get SVG_CHANNEL_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGFEDisplacementMapElement", svg$.FEDisplacementMapElement);
svg$.FEDistantLightElement = class FEDistantLightElement extends svg$.SvgElement {
  static new() {
    return svg$.FEDistantLightElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feDistantLight"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feDistantLight")) && svg$.FEDistantLightElement.is(svg$.SvgElement.tag("feDistantLight"));
  }
  get [$azimuth]() {
    return this.azimuth;
  }
  get [$elevation]() {
    return this.elevation;
  }
};
(svg$.FEDistantLightElement.created = function() {
  this[azimuth] = null;
  this[elevation] = null;
  svg$.FEDistantLightElement.__proto__.created.call(this);
}).prototype = svg$.FEDistantLightElement.prototype;
dart.addTypeTests(svg$.FEDistantLightElement);
const azimuth = Symbol("FEDistantLightElement.azimuth");
const elevation = Symbol("FEDistantLightElement.elevation");
dart.setFieldSignature(svg$.FEDistantLightElement, () => ({
  __proto__: dart.getFields(svg$.FEDistantLightElement.__proto__),
  [$azimuth]: dart.finalFieldType(svg$.AnimatedNumber),
  [$elevation]: dart.finalFieldType(svg$.AnimatedNumber)
}));
dart.registerExtension("SVGFEDistantLightElement", svg$.FEDistantLightElement);
svg$.FEFloodElement = class FEFloodElement extends svg$.SvgElement {
  static new() {
    return svg$.FEFloodElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feFlood"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feFlood")) && svg$.FEFloodElement.is(svg$.SvgElement.tag("feFlood"));
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEFloodElement.created = function() {
  this[height$21] = null;
  this[result$5] = null;
  this[width$23] = null;
  this[x$14] = null;
  this[y$13] = null;
  svg$.FEFloodElement.__proto__.created.call(this);
}).prototype = svg$.FEFloodElement.prototype;
dart.addTypeTests(svg$.FEFloodElement);
const height$21 = Symbol("FEFloodElement.height");
const result$5 = Symbol("FEFloodElement.result");
const width$23 = Symbol("FEFloodElement.width");
const x$14 = Symbol("FEFloodElement.x");
const y$13 = Symbol("FEFloodElement.y");
svg$.FEFloodElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FEFloodElement, () => ({
  __proto__: dart.getFields(svg$.FEFloodElement.__proto__),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGFEFloodElement", svg$.FEFloodElement);
svg$._SVGComponentTransferFunctionElement = class _SVGComponentTransferFunctionElement extends svg$.SvgElement {};
(svg$._SVGComponentTransferFunctionElement.created = function() {
  svg$._SVGComponentTransferFunctionElement.__proto__.created.call(this);
}).prototype = svg$._SVGComponentTransferFunctionElement.prototype;
dart.addTypeTests(svg$._SVGComponentTransferFunctionElement);
dart.registerExtension("SVGComponentTransferFunctionElement", svg$._SVGComponentTransferFunctionElement);
svg$.FEFuncAElement = class FEFuncAElement extends svg$._SVGComponentTransferFunctionElement {
  static new() {
    return svg$.FEFuncAElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feFuncA"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feFuncA")) && svg$.FEFuncAElement.is(svg$.SvgElement.tag("feFuncA"));
  }
};
(svg$.FEFuncAElement.created = function() {
  svg$.FEFuncAElement.__proto__.created.call(this);
}).prototype = svg$.FEFuncAElement.prototype;
dart.addTypeTests(svg$.FEFuncAElement);
dart.registerExtension("SVGFEFuncAElement", svg$.FEFuncAElement);
svg$.FEFuncBElement = class FEFuncBElement extends svg$._SVGComponentTransferFunctionElement {
  static new() {
    return svg$.FEFuncBElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feFuncB"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feFuncB")) && svg$.FEFuncBElement.is(svg$.SvgElement.tag("feFuncB"));
  }
};
(svg$.FEFuncBElement.created = function() {
  svg$.FEFuncBElement.__proto__.created.call(this);
}).prototype = svg$.FEFuncBElement.prototype;
dart.addTypeTests(svg$.FEFuncBElement);
dart.registerExtension("SVGFEFuncBElement", svg$.FEFuncBElement);
svg$.FEFuncGElement = class FEFuncGElement extends svg$._SVGComponentTransferFunctionElement {
  static new() {
    return svg$.FEFuncGElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feFuncG"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feFuncG")) && svg$.FEFuncGElement.is(svg$.SvgElement.tag("feFuncG"));
  }
};
(svg$.FEFuncGElement.created = function() {
  svg$.FEFuncGElement.__proto__.created.call(this);
}).prototype = svg$.FEFuncGElement.prototype;
dart.addTypeTests(svg$.FEFuncGElement);
dart.registerExtension("SVGFEFuncGElement", svg$.FEFuncGElement);
svg$.FEFuncRElement = class FEFuncRElement extends svg$._SVGComponentTransferFunctionElement {
  static new() {
    return svg$.FEFuncRElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feFuncR"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feFuncR")) && svg$.FEFuncRElement.is(svg$.SvgElement.tag("feFuncR"));
  }
};
(svg$.FEFuncRElement.created = function() {
  svg$.FEFuncRElement.__proto__.created.call(this);
}).prototype = svg$.FEFuncRElement.prototype;
dart.addTypeTests(svg$.FEFuncRElement);
dart.registerExtension("SVGFEFuncRElement", svg$.FEFuncRElement);
svg$.FEGaussianBlurElement = class FEGaussianBlurElement extends svg$.SvgElement {
  static new() {
    return svg$.FEGaussianBlurElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feGaussianBlur"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feGaussianBlur")) && svg$.FEGaussianBlurElement.is(svg$.SvgElement.tag("feGaussianBlur"));
  }
  get [$in1]() {
    return this.in1;
  }
  get [$stdDeviationX]() {
    return this.stdDeviationX;
  }
  get [$stdDeviationY]() {
    return this.stdDeviationY;
  }
  [$setStdDeviation](...args) {
    return this.setStdDeviation.apply(this, args);
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEGaussianBlurElement.created = function() {
  this[in1$5] = null;
  this[stdDeviationX] = null;
  this[stdDeviationY] = null;
  this[height$22] = null;
  this[result$6] = null;
  this[width$24] = null;
  this[x$15] = null;
  this[y$14] = null;
  svg$.FEGaussianBlurElement.__proto__.created.call(this);
}).prototype = svg$.FEGaussianBlurElement.prototype;
dart.addTypeTests(svg$.FEGaussianBlurElement);
const in1$5 = Symbol("FEGaussianBlurElement.in1");
const stdDeviationX = Symbol("FEGaussianBlurElement.stdDeviationX");
const stdDeviationY = Symbol("FEGaussianBlurElement.stdDeviationY");
const height$22 = Symbol("FEGaussianBlurElement.height");
const result$6 = Symbol("FEGaussianBlurElement.result");
const width$24 = Symbol("FEGaussianBlurElement.width");
const x$15 = Symbol("FEGaussianBlurElement.x");
const y$14 = Symbol("FEGaussianBlurElement.y");
svg$.FEGaussianBlurElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setMethodSignature(svg$.FEGaussianBlurElement, () => ({
  __proto__: dart.getMethods(svg$.FEGaussianBlurElement.__proto__),
  [$setStdDeviation]: dart.fnType(dart.void, [core.num, core.num])
}));
dart.setFieldSignature(svg$.FEGaussianBlurElement, () => ({
  __proto__: dart.getFields(svg$.FEGaussianBlurElement.__proto__),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$stdDeviationX]: dart.finalFieldType(svg$.AnimatedNumber),
  [$stdDeviationY]: dart.finalFieldType(svg$.AnimatedNumber),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGFEGaussianBlurElement", svg$.FEGaussianBlurElement);
svg$.FEImageElement = class FEImageElement extends svg$.SvgElement {
  static new() {
    return svg$.FEImageElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feImage"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feImage")) && svg$.FEImageElement.is(svg$.SvgElement.tag("feImage"));
  }
  get [$preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$href]() {
    return this.href;
  }
};
(svg$.FEImageElement.created = function() {
  this[preserveAspectRatio] = null;
  this[height$23] = null;
  this[result$7] = null;
  this[width$25] = null;
  this[x$16] = null;
  this[y$15] = null;
  this[href$9] = null;
  svg$.FEImageElement.__proto__.created.call(this);
}).prototype = svg$.FEImageElement.prototype;
dart.addTypeTests(svg$.FEImageElement);
const preserveAspectRatio = Symbol("FEImageElement.preserveAspectRatio");
const height$23 = Symbol("FEImageElement.height");
const result$7 = Symbol("FEImageElement.result");
const width$25 = Symbol("FEImageElement.width");
const x$16 = Symbol("FEImageElement.x");
const y$15 = Symbol("FEImageElement.y");
const href$9 = Symbol("FEImageElement.href");
svg$.FEImageElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes, svg$.UriReference];
dart.setFieldSignature(svg$.FEImageElement, () => ({
  __proto__: dart.getFields(svg$.FEImageElement.__proto__),
  [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength),
  [$href]: dart.finalFieldType(svg$.AnimatedString)
}));
dart.registerExtension("SVGFEImageElement", svg$.FEImageElement);
svg$.FEMergeElement = class FEMergeElement extends svg$.SvgElement {
  static new() {
    return svg$.FEMergeElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feMerge"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feMerge")) && svg$.FEMergeElement.is(svg$.SvgElement.tag("feMerge"));
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEMergeElement.created = function() {
  this[height$24] = null;
  this[result$8] = null;
  this[width$26] = null;
  this[x$17] = null;
  this[y$16] = null;
  svg$.FEMergeElement.__proto__.created.call(this);
}).prototype = svg$.FEMergeElement.prototype;
dart.addTypeTests(svg$.FEMergeElement);
const height$24 = Symbol("FEMergeElement.height");
const result$8 = Symbol("FEMergeElement.result");
const width$26 = Symbol("FEMergeElement.width");
const x$17 = Symbol("FEMergeElement.x");
const y$16 = Symbol("FEMergeElement.y");
svg$.FEMergeElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FEMergeElement, () => ({
  __proto__: dart.getFields(svg$.FEMergeElement.__proto__),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGFEMergeElement", svg$.FEMergeElement);
svg$.FEMergeNodeElement = class FEMergeNodeElement extends svg$.SvgElement {
  static new() {
    return svg$.FEMergeNodeElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feMergeNode"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feMergeNode")) && svg$.FEMergeNodeElement.is(svg$.SvgElement.tag("feMergeNode"));
  }
  get [$in1]() {
    return this.in1;
  }
};
(svg$.FEMergeNodeElement.created = function() {
  this[in1$6] = null;
  svg$.FEMergeNodeElement.__proto__.created.call(this);
}).prototype = svg$.FEMergeNodeElement.prototype;
dart.addTypeTests(svg$.FEMergeNodeElement);
const in1$6 = Symbol("FEMergeNodeElement.in1");
dart.setFieldSignature(svg$.FEMergeNodeElement, () => ({
  __proto__: dart.getFields(svg$.FEMergeNodeElement.__proto__),
  [$in1]: dart.finalFieldType(svg$.AnimatedString)
}));
dart.registerExtension("SVGFEMergeNodeElement", svg$.FEMergeNodeElement);
svg$.FEMorphologyElement = class FEMorphologyElement extends svg$.SvgElement {
  get [$in1]() {
    return this.in1;
  }
  get [$operator]() {
    return this.operator;
  }
  get [$radiusX]() {
    return this.radiusX;
  }
  get [$radiusY]() {
    return this.radiusY;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEMorphologyElement.created = function() {
  this[in1$7] = null;
  this[operator$] = null;
  this[radiusX] = null;
  this[radiusY] = null;
  this[height$25] = null;
  this[result$9] = null;
  this[width$27] = null;
  this[x$18] = null;
  this[y$17] = null;
  svg$.FEMorphologyElement.__proto__.created.call(this);
}).prototype = svg$.FEMorphologyElement.prototype;
dart.addTypeTests(svg$.FEMorphologyElement);
const in1$7 = Symbol("FEMorphologyElement.in1");
const operator$ = Symbol("FEMorphologyElement.operator");
const radiusX = Symbol("FEMorphologyElement.radiusX");
const radiusY = Symbol("FEMorphologyElement.radiusY");
const height$25 = Symbol("FEMorphologyElement.height");
const result$9 = Symbol("FEMorphologyElement.result");
const width$27 = Symbol("FEMorphologyElement.width");
const x$18 = Symbol("FEMorphologyElement.x");
const y$17 = Symbol("FEMorphologyElement.y");
svg$.FEMorphologyElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FEMorphologyElement, () => ({
  __proto__: dart.getFields(svg$.FEMorphologyElement.__proto__),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$operator]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$radiusX]: dart.finalFieldType(svg$.AnimatedNumber),
  [$radiusY]: dart.finalFieldType(svg$.AnimatedNumber),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.defineLazy(svg$.FEMorphologyElement, {
  /*svg$.FEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_DILATE*/get SVG_MORPHOLOGY_OPERATOR_DILATE() {
    return 2;
  },
  /*svg$.FEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_ERODE*/get SVG_MORPHOLOGY_OPERATOR_ERODE() {
    return 1;
  },
  /*svg$.FEMorphologyElement.SVG_MORPHOLOGY_OPERATOR_UNKNOWN*/get SVG_MORPHOLOGY_OPERATOR_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGFEMorphologyElement", svg$.FEMorphologyElement);
svg$.FEOffsetElement = class FEOffsetElement extends svg$.SvgElement {
  static new() {
    return svg$.FEOffsetElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feOffset"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feOffset")) && svg$.FEOffsetElement.is(svg$.SvgElement.tag("feOffset"));
  }
  get [$dx]() {
    return this.dx;
  }
  get [$dy]() {
    return this.dy;
  }
  get [$in1]() {
    return this.in1;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FEOffsetElement.created = function() {
  this[dx] = null;
  this[dy] = null;
  this[in1$8] = null;
  this[height$26] = null;
  this[result$10] = null;
  this[width$28] = null;
  this[x$19] = null;
  this[y$18] = null;
  svg$.FEOffsetElement.__proto__.created.call(this);
}).prototype = svg$.FEOffsetElement.prototype;
dart.addTypeTests(svg$.FEOffsetElement);
const dx = Symbol("FEOffsetElement.dx");
const dy = Symbol("FEOffsetElement.dy");
const in1$8 = Symbol("FEOffsetElement.in1");
const height$26 = Symbol("FEOffsetElement.height");
const result$10 = Symbol("FEOffsetElement.result");
const width$28 = Symbol("FEOffsetElement.width");
const x$19 = Symbol("FEOffsetElement.x");
const y$18 = Symbol("FEOffsetElement.y");
svg$.FEOffsetElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FEOffsetElement, () => ({
  __proto__: dart.getFields(svg$.FEOffsetElement.__proto__),
  [$dx]: dart.finalFieldType(svg$.AnimatedNumber),
  [$dy]: dart.finalFieldType(svg$.AnimatedNumber),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGFEOffsetElement", svg$.FEOffsetElement);
svg$.FEPointLightElement = class FEPointLightElement extends svg$.SvgElement {
  static new() {
    return svg$.FEPointLightElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("fePointLight"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("fePointLight")) && svg$.FEPointLightElement.is(svg$.SvgElement.tag("fePointLight"));
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$z]() {
    return this.z;
  }
};
(svg$.FEPointLightElement.created = function() {
  this[x$20] = null;
  this[y$19] = null;
  this[z$6] = null;
  svg$.FEPointLightElement.__proto__.created.call(this);
}).prototype = svg$.FEPointLightElement.prototype;
dart.addTypeTests(svg$.FEPointLightElement);
const x$20 = Symbol("FEPointLightElement.x");
const y$19 = Symbol("FEPointLightElement.y");
const z$6 = Symbol("FEPointLightElement.z");
dart.setFieldSignature(svg$.FEPointLightElement, () => ({
  __proto__: dart.getFields(svg$.FEPointLightElement.__proto__),
  [$x]: dart.finalFieldType(svg$.AnimatedNumber),
  [$y]: dart.finalFieldType(svg$.AnimatedNumber),
  [$z]: dart.finalFieldType(svg$.AnimatedNumber)
}));
dart.registerExtension("SVGFEPointLightElement", svg$.FEPointLightElement);
svg$.FESpecularLightingElement = class FESpecularLightingElement extends svg$.SvgElement {
  static new() {
    return svg$.FESpecularLightingElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feSpecularLighting"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feSpecularLighting")) && svg$.FESpecularLightingElement.is(svg$.SvgElement.tag("feSpecularLighting"));
  }
  get [$in1]() {
    return this.in1;
  }
  get [$kernelUnitLengthX]() {
    return this.kernelUnitLengthX;
  }
  get [$kernelUnitLengthY]() {
    return this.kernelUnitLengthY;
  }
  get [$specularConstant]() {
    return this.specularConstant;
  }
  get [$specularExponent]() {
    return this.specularExponent;
  }
  get [$surfaceScale]() {
    return this.surfaceScale;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FESpecularLightingElement.created = function() {
  this[in1$9] = null;
  this[kernelUnitLengthX$0] = null;
  this[kernelUnitLengthY$0] = null;
  this[specularConstant] = null;
  this[specularExponent] = null;
  this[surfaceScale$] = null;
  this[height$27] = null;
  this[result$11] = null;
  this[width$29] = null;
  this[x$21] = null;
  this[y$20] = null;
  svg$.FESpecularLightingElement.__proto__.created.call(this);
}).prototype = svg$.FESpecularLightingElement.prototype;
dart.addTypeTests(svg$.FESpecularLightingElement);
const in1$9 = Symbol("FESpecularLightingElement.in1");
const kernelUnitLengthX$0 = Symbol("FESpecularLightingElement.kernelUnitLengthX");
const kernelUnitLengthY$0 = Symbol("FESpecularLightingElement.kernelUnitLengthY");
const specularConstant = Symbol("FESpecularLightingElement.specularConstant");
const specularExponent = Symbol("FESpecularLightingElement.specularExponent");
const surfaceScale$ = Symbol("FESpecularLightingElement.surfaceScale");
const height$27 = Symbol("FESpecularLightingElement.height");
const result$11 = Symbol("FESpecularLightingElement.result");
const width$29 = Symbol("FESpecularLightingElement.width");
const x$21 = Symbol("FESpecularLightingElement.x");
const y$20 = Symbol("FESpecularLightingElement.y");
svg$.FESpecularLightingElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FESpecularLightingElement, () => ({
  __proto__: dart.getFields(svg$.FESpecularLightingElement.__proto__),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$kernelUnitLengthX]: dart.finalFieldType(svg$.AnimatedNumber),
  [$kernelUnitLengthY]: dart.finalFieldType(svg$.AnimatedNumber),
  [$specularConstant]: dart.finalFieldType(svg$.AnimatedNumber),
  [$specularExponent]: dart.finalFieldType(svg$.AnimatedNumber),
  [$surfaceScale]: dart.finalFieldType(svg$.AnimatedNumber),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGFESpecularLightingElement", svg$.FESpecularLightingElement);
svg$.FESpotLightElement = class FESpotLightElement extends svg$.SvgElement {
  static new() {
    return svg$.FESpotLightElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feSpotLight"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feSpotLight")) && svg$.FESpotLightElement.is(svg$.SvgElement.tag("feSpotLight"));
  }
  get [$limitingConeAngle]() {
    return this.limitingConeAngle;
  }
  get [$pointsAtX]() {
    return this.pointsAtX;
  }
  get [$pointsAtY]() {
    return this.pointsAtY;
  }
  get [$pointsAtZ]() {
    return this.pointsAtZ;
  }
  get [$specularExponent]() {
    return this.specularExponent;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$z]() {
    return this.z;
  }
};
(svg$.FESpotLightElement.created = function() {
  this[limitingConeAngle] = null;
  this[pointsAtX] = null;
  this[pointsAtY] = null;
  this[pointsAtZ] = null;
  this[specularExponent$] = null;
  this[x$22] = null;
  this[y$21] = null;
  this[z$7] = null;
  svg$.FESpotLightElement.__proto__.created.call(this);
}).prototype = svg$.FESpotLightElement.prototype;
dart.addTypeTests(svg$.FESpotLightElement);
const limitingConeAngle = Symbol("FESpotLightElement.limitingConeAngle");
const pointsAtX = Symbol("FESpotLightElement.pointsAtX");
const pointsAtY = Symbol("FESpotLightElement.pointsAtY");
const pointsAtZ = Symbol("FESpotLightElement.pointsAtZ");
const specularExponent$ = Symbol("FESpotLightElement.specularExponent");
const x$22 = Symbol("FESpotLightElement.x");
const y$21 = Symbol("FESpotLightElement.y");
const z$7 = Symbol("FESpotLightElement.z");
dart.setFieldSignature(svg$.FESpotLightElement, () => ({
  __proto__: dart.getFields(svg$.FESpotLightElement.__proto__),
  [$limitingConeAngle]: dart.finalFieldType(svg$.AnimatedNumber),
  [$pointsAtX]: dart.finalFieldType(svg$.AnimatedNumber),
  [$pointsAtY]: dart.finalFieldType(svg$.AnimatedNumber),
  [$pointsAtZ]: dart.finalFieldType(svg$.AnimatedNumber),
  [$specularExponent]: dart.finalFieldType(svg$.AnimatedNumber),
  [$x]: dart.finalFieldType(svg$.AnimatedNumber),
  [$y]: dart.finalFieldType(svg$.AnimatedNumber),
  [$z]: dart.finalFieldType(svg$.AnimatedNumber)
}));
dart.registerExtension("SVGFESpotLightElement", svg$.FESpotLightElement);
svg$.FETileElement = class FETileElement extends svg$.SvgElement {
  static new() {
    return svg$.FETileElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feTile"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feTile")) && svg$.FETileElement.is(svg$.SvgElement.tag("feTile"));
  }
  get [$in1]() {
    return this.in1;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FETileElement.created = function() {
  this[in1$10] = null;
  this[height$28] = null;
  this[result$12] = null;
  this[width$30] = null;
  this[x$23] = null;
  this[y$22] = null;
  svg$.FETileElement.__proto__.created.call(this);
}).prototype = svg$.FETileElement.prototype;
dart.addTypeTests(svg$.FETileElement);
const in1$10 = Symbol("FETileElement.in1");
const height$28 = Symbol("FETileElement.height");
const result$12 = Symbol("FETileElement.result");
const width$30 = Symbol("FETileElement.width");
const x$23 = Symbol("FETileElement.x");
const y$22 = Symbol("FETileElement.y");
svg$.FETileElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FETileElement, () => ({
  __proto__: dart.getFields(svg$.FETileElement.__proto__),
  [$in1]: dart.finalFieldType(svg$.AnimatedString),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGFETileElement", svg$.FETileElement);
svg$.FETurbulenceElement = class FETurbulenceElement extends svg$.SvgElement {
  static new() {
    return svg$.FETurbulenceElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("feTurbulence"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("feTurbulence")) && svg$.FETurbulenceElement.is(svg$.SvgElement.tag("feTurbulence"));
  }
  get [$baseFrequencyX]() {
    return this.baseFrequencyX;
  }
  get [$baseFrequencyY]() {
    return this.baseFrequencyY;
  }
  get [$numOctaves]() {
    return this.numOctaves;
  }
  get [$seed]() {
    return this.seed;
  }
  get [$stitchTiles]() {
    return this.stitchTiles;
  }
  get [$type]() {
    return this.type;
  }
  get [$height]() {
    return this.height;
  }
  get [$result]() {
    return this.result;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.FETurbulenceElement.created = function() {
  this[baseFrequencyX] = null;
  this[baseFrequencyY] = null;
  this[numOctaves] = null;
  this[seed] = null;
  this[stitchTiles] = null;
  this[type$38] = null;
  this[height$29] = null;
  this[result$13] = null;
  this[width$31] = null;
  this[x$24] = null;
  this[y$23] = null;
  svg$.FETurbulenceElement.__proto__.created.call(this);
}).prototype = svg$.FETurbulenceElement.prototype;
dart.addTypeTests(svg$.FETurbulenceElement);
const baseFrequencyX = Symbol("FETurbulenceElement.baseFrequencyX");
const baseFrequencyY = Symbol("FETurbulenceElement.baseFrequencyY");
const numOctaves = Symbol("FETurbulenceElement.numOctaves");
const seed = Symbol("FETurbulenceElement.seed");
const stitchTiles = Symbol("FETurbulenceElement.stitchTiles");
const type$38 = Symbol("FETurbulenceElement.type");
const height$29 = Symbol("FETurbulenceElement.height");
const result$13 = Symbol("FETurbulenceElement.result");
const width$31 = Symbol("FETurbulenceElement.width");
const x$24 = Symbol("FETurbulenceElement.x");
const y$23 = Symbol("FETurbulenceElement.y");
svg$.FETurbulenceElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.setFieldSignature(svg$.FETurbulenceElement, () => ({
  __proto__: dart.getFields(svg$.FETurbulenceElement.__proto__),
  [$baseFrequencyX]: dart.finalFieldType(svg$.AnimatedNumber),
  [$baseFrequencyY]: dart.finalFieldType(svg$.AnimatedNumber),
  [$numOctaves]: dart.finalFieldType(svg$.AnimatedInteger),
  [$seed]: dart.finalFieldType(svg$.AnimatedNumber),
  [$stitchTiles]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$type]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$result]: dart.finalFieldType(svg$.AnimatedString),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.defineLazy(svg$.FETurbulenceElement, {
  /*svg$.FETurbulenceElement.SVG_STITCHTYPE_NOSTITCH*/get SVG_STITCHTYPE_NOSTITCH() {
    return 2;
  },
  /*svg$.FETurbulenceElement.SVG_STITCHTYPE_STITCH*/get SVG_STITCHTYPE_STITCH() {
    return 1;
  },
  /*svg$.FETurbulenceElement.SVG_STITCHTYPE_UNKNOWN*/get SVG_STITCHTYPE_UNKNOWN() {
    return 0;
  },
  /*svg$.FETurbulenceElement.SVG_TURBULENCE_TYPE_FRACTALNOISE*/get SVG_TURBULENCE_TYPE_FRACTALNOISE() {
    return 1;
  },
  /*svg$.FETurbulenceElement.SVG_TURBULENCE_TYPE_TURBULENCE*/get SVG_TURBULENCE_TYPE_TURBULENCE() {
    return 2;
  },
  /*svg$.FETurbulenceElement.SVG_TURBULENCE_TYPE_UNKNOWN*/get SVG_TURBULENCE_TYPE_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGFETurbulenceElement", svg$.FETurbulenceElement);
svg$.FilterElement = class FilterElement extends svg$.SvgElement {
  static new() {
    return svg$.FilterElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("filter"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("filter")) && svg$.FilterElement.is(svg$.SvgElement.tag("filter"));
  }
  get [$filterUnits]() {
    return this.filterUnits;
  }
  get [$height]() {
    return this.height;
  }
  get [$primitiveUnits]() {
    return this.primitiveUnits;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$href]() {
    return this.href;
  }
};
(svg$.FilterElement.created = function() {
  this[filterUnits] = null;
  this[height$30] = null;
  this[primitiveUnits] = null;
  this[width$32] = null;
  this[x$25] = null;
  this[y$24] = null;
  this[href$10] = null;
  svg$.FilterElement.__proto__.created.call(this);
}).prototype = svg$.FilterElement.prototype;
dart.addTypeTests(svg$.FilterElement);
const filterUnits = Symbol("FilterElement.filterUnits");
const height$30 = Symbol("FilterElement.height");
const primitiveUnits = Symbol("FilterElement.primitiveUnits");
const width$32 = Symbol("FilterElement.width");
const x$25 = Symbol("FilterElement.x");
const y$24 = Symbol("FilterElement.y");
const href$10 = Symbol("FilterElement.href");
svg$.FilterElement[dart.implements] = () => [svg$.UriReference];
dart.setFieldSignature(svg$.FilterElement, () => ({
  __proto__: dart.getFields(svg$.FilterElement.__proto__),
  [$filterUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$primitiveUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength),
  [$href]: dart.finalFieldType(svg$.AnimatedString)
}));
dart.registerExtension("SVGFilterElement", svg$.FilterElement);
svg$.FilterPrimitiveStandardAttributes = class FilterPrimitiveStandardAttributes extends _interceptors.Interceptor {
  get height() {
    return this[height$31];
  }
  set height(value) {
    super.height = value;
  }
  get result() {
    return this[result$14];
  }
  set result(value) {
    super.result = value;
  }
  get width() {
    return this[width$33];
  }
  set width(value) {
    super.width = value;
  }
  get x() {
    return this[x$26];
  }
  set x(value) {
    super.x = value;
  }
  get y() {
    return this[y$25];
  }
  set y(value) {
    super.y = value;
  }
};
dart.addTypeTests(svg$.FilterPrimitiveStandardAttributes);
const height$31 = Symbol("FilterPrimitiveStandardAttributes.height");
const result$14 = Symbol("FilterPrimitiveStandardAttributes.result");
const width$33 = Symbol("FilterPrimitiveStandardAttributes.width");
const x$26 = Symbol("FilterPrimitiveStandardAttributes.x");
const y$25 = Symbol("FilterPrimitiveStandardAttributes.y");
dart.setFieldSignature(svg$.FilterPrimitiveStandardAttributes, () => ({
  __proto__: dart.getFields(svg$.FilterPrimitiveStandardAttributes.__proto__),
  height: dart.finalFieldType(svg$.AnimatedLength),
  result: dart.finalFieldType(svg$.AnimatedString),
  width: dart.finalFieldType(svg$.AnimatedLength),
  x: dart.finalFieldType(svg$.AnimatedLength),
  y: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.defineExtensionAccessors(svg$.FilterPrimitiveStandardAttributes, [
  'height',
  'result',
  'width',
  'x',
  'y'
]);
svg$.FitToViewBox = class FitToViewBox extends _interceptors.Interceptor {
  get preserveAspectRatio() {
    return this[preserveAspectRatio$];
  }
  set preserveAspectRatio(value) {
    super.preserveAspectRatio = value;
  }
  get viewBox() {
    return this[viewBox];
  }
  set viewBox(value) {
    super.viewBox = value;
  }
};
dart.addTypeTests(svg$.FitToViewBox);
const preserveAspectRatio$ = Symbol("FitToViewBox.preserveAspectRatio");
const viewBox = Symbol("FitToViewBox.viewBox");
dart.setFieldSignature(svg$.FitToViewBox, () => ({
  __proto__: dart.getFields(svg$.FitToViewBox.__proto__),
  preserveAspectRatio: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
  viewBox: dart.finalFieldType(svg$.AnimatedRect)
}));
dart.defineExtensionAccessors(svg$.FitToViewBox, ['preserveAspectRatio', 'viewBox']);
svg$.ForeignObjectElement = class ForeignObjectElement extends svg$.GraphicsElement {
  static new() {
    return svg$.ForeignObjectElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("foreignObject"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("foreignObject")) && svg$.ForeignObjectElement.is(svg$.SvgElement.tag("foreignObject"));
  }
  get [$height]() {
    return this.height;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.ForeignObjectElement.created = function() {
  this[height$32] = null;
  this[width$34] = null;
  this[x$27] = null;
  this[y$26] = null;
  svg$.ForeignObjectElement.__proto__.created.call(this);
}).prototype = svg$.ForeignObjectElement.prototype;
dart.addTypeTests(svg$.ForeignObjectElement);
const height$32 = Symbol("ForeignObjectElement.height");
const width$34 = Symbol("ForeignObjectElement.width");
const x$27 = Symbol("ForeignObjectElement.x");
const y$26 = Symbol("ForeignObjectElement.y");
dart.setFieldSignature(svg$.ForeignObjectElement, () => ({
  __proto__: dart.getFields(svg$.ForeignObjectElement.__proto__),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGForeignObjectElement", svg$.ForeignObjectElement);
svg$.GElement = class GElement extends svg$.GraphicsElement {
  static new() {
    return svg$.GElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("g"));
  }
};
(svg$.GElement.created = function() {
  svg$.GElement.__proto__.created.call(this);
}).prototype = svg$.GElement.prototype;
dart.addTypeTests(svg$.GElement);
dart.registerExtension("SVGGElement", svg$.GElement);
svg$.ImageElement = class ImageElement extends svg$.GraphicsElement {
  static new() {
    return svg$.ImageElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("image"));
  }
  get [$async]() {
    return this.async;
  }
  set [$async](value) {
    this.async = value;
  }
  get [$height]() {
    return this.height;
  }
  get [$preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  [$decode]() {
    return html$.promiseToFuture(dart.dynamic, this.decode());
  }
  get [$href]() {
    return this.href;
  }
};
(svg$.ImageElement.created = function() {
  this[async$1] = null;
  this[height$33] = null;
  this[preserveAspectRatio$0] = null;
  this[width$35] = null;
  this[x$28] = null;
  this[y$27] = null;
  this[href$11] = null;
  svg$.ImageElement.__proto__.created.call(this);
}).prototype = svg$.ImageElement.prototype;
dart.addTypeTests(svg$.ImageElement);
const async$1 = Symbol("ImageElement.async");
const height$33 = Symbol("ImageElement.height");
const preserveAspectRatio$0 = Symbol("ImageElement.preserveAspectRatio");
const width$35 = Symbol("ImageElement.width");
const x$28 = Symbol("ImageElement.x");
const y$27 = Symbol("ImageElement.y");
const href$11 = Symbol("ImageElement.href");
svg$.ImageElement[dart.implements] = () => [svg$.UriReference];
dart.setMethodSignature(svg$.ImageElement, () => ({
  __proto__: dart.getMethods(svg$.ImageElement.__proto__),
  [$decode]: dart.fnType(async.Future, [])
}));
dart.setFieldSignature(svg$.ImageElement, () => ({
  __proto__: dart.getFields(svg$.ImageElement.__proto__),
  [$async]: dart.fieldType(core.String),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength),
  [$href]: dart.finalFieldType(svg$.AnimatedString)
}));
dart.registerExtension("SVGImageElement", svg$.ImageElement);
svg$.Length = class Length extends _interceptors.Interceptor {
  get [$unitType]() {
    return this.unitType;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
  get [$valueAsString]() {
    return this.valueAsString;
  }
  set [$valueAsString](value) {
    this.valueAsString = value;
  }
  get [$valueInSpecifiedUnits]() {
    return this.valueInSpecifiedUnits;
  }
  set [$valueInSpecifiedUnits](value) {
    this.valueInSpecifiedUnits = value;
  }
  [$convertToSpecifiedUnits](...args) {
    return this.convertToSpecifiedUnits.apply(this, args);
  }
  [$newValueSpecifiedUnits](...args) {
    return this.newValueSpecifiedUnits.apply(this, args);
  }
};
dart.addTypeTests(svg$.Length);
const unitType$ = Symbol("Length.unitType");
const value$19 = Symbol("Length.value");
const valueAsString$ = Symbol("Length.valueAsString");
const valueInSpecifiedUnits$ = Symbol("Length.valueInSpecifiedUnits");
dart.setMethodSignature(svg$.Length, () => ({
  __proto__: dart.getMethods(svg$.Length.__proto__),
  [$convertToSpecifiedUnits]: dart.fnType(dart.void, [core.int]),
  [$newValueSpecifiedUnits]: dart.fnType(dart.void, [core.int, core.num])
}));
dart.setFieldSignature(svg$.Length, () => ({
  __proto__: dart.getFields(svg$.Length.__proto__),
  [$unitType]: dart.finalFieldType(core.int),
  [$value]: dart.fieldType(core.num),
  [$valueAsString]: dart.fieldType(core.String),
  [$valueInSpecifiedUnits]: dart.fieldType(core.num)
}));
dart.defineLazy(svg$.Length, {
  /*svg$.Length.SVG_LENGTHTYPE_CM*/get SVG_LENGTHTYPE_CM() {
    return 6;
  },
  /*svg$.Length.SVG_LENGTHTYPE_EMS*/get SVG_LENGTHTYPE_EMS() {
    return 3;
  },
  /*svg$.Length.SVG_LENGTHTYPE_EXS*/get SVG_LENGTHTYPE_EXS() {
    return 4;
  },
  /*svg$.Length.SVG_LENGTHTYPE_IN*/get SVG_LENGTHTYPE_IN() {
    return 8;
  },
  /*svg$.Length.SVG_LENGTHTYPE_MM*/get SVG_LENGTHTYPE_MM() {
    return 7;
  },
  /*svg$.Length.SVG_LENGTHTYPE_NUMBER*/get SVG_LENGTHTYPE_NUMBER() {
    return 1;
  },
  /*svg$.Length.SVG_LENGTHTYPE_PC*/get SVG_LENGTHTYPE_PC() {
    return 10;
  },
  /*svg$.Length.SVG_LENGTHTYPE_PERCENTAGE*/get SVG_LENGTHTYPE_PERCENTAGE() {
    return 2;
  },
  /*svg$.Length.SVG_LENGTHTYPE_PT*/get SVG_LENGTHTYPE_PT() {
    return 9;
  },
  /*svg$.Length.SVG_LENGTHTYPE_PX*/get SVG_LENGTHTYPE_PX() {
    return 5;
  },
  /*svg$.Length.SVG_LENGTHTYPE_UNKNOWN*/get SVG_LENGTHTYPE_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGLength", svg$.Length);
const __setter__$ = Symbol('__setter__');
const Interceptor_ListMixin$$13 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$13.new = function() {
  Interceptor_ListMixin$$13.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$13.prototype;
dart.applyMixin(Interceptor_ListMixin$$13, collection.ListMixin$(svg$.Length));
const Interceptor_ImmutableListMixin$$13 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$13 {};
(Interceptor_ImmutableListMixin$$13.new = function() {
  Interceptor_ImmutableListMixin$$13.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$13.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$13, html$.ImmutableListMixin$(svg$.Length));
svg$.LengthList = class LengthList extends Interceptor_ImmutableListMixin$$13 {
  get [$length]() {
    return this.length;
  }
  get [$numberOfItems]() {
    return this.numberOfItems;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this.getItem(index);
  }
  [$_set](index, value) {
    svg$.Length._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [__setter__$](...args) {
    return this.__setter__.apply(this, args);
  }
  [$appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [$clear](...args) {
    return this.clear.apply(this, args);
  }
  [$getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [$initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [$insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [$removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [$replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
svg$.LengthList.prototype[dart.isList] = true;
dart.addTypeTests(svg$.LengthList);
const numberOfItems = Symbol("LengthList.numberOfItems");
svg$.LengthList[dart.implements] = () => [ListOfLength()];
dart.setMethodSignature(svg$.LengthList, () => ({
  __proto__: dart.getMethods(svg$.LengthList.__proto__),
  [$_get]: dart.fnType(svg$.Length, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(svg$.Length, [core.int]),
  [__setter__$]: dart.fnType(dart.void, [core.int, svg$.Length]),
  [$appendItem]: dart.fnType(svg$.Length, [svg$.Length]),
  [$clear]: dart.fnType(dart.void, []),
  [$getItem]: dart.fnType(svg$.Length, [core.int]),
  [$initialize]: dart.fnType(svg$.Length, [svg$.Length]),
  [$insertItemBefore]: dart.fnType(svg$.Length, [svg$.Length, core.int]),
  [$removeItem]: dart.fnType(svg$.Length, [core.int]),
  [$replaceItem]: dart.fnType(svg$.Length, [svg$.Length, core.int])
}));
dart.setGetterSignature(svg$.LengthList, () => ({
  __proto__: dart.getGetters(svg$.LengthList.__proto__),
  [$length]: core.int,
  [$first]: svg$.Length,
  [$last]: svg$.Length,
  [$single]: svg$.Length
}));
dart.setSetterSignature(svg$.LengthList, () => ({
  __proto__: dart.getSetters(svg$.LengthList.__proto__),
  [$length]: core.int
}));
dart.setFieldSignature(svg$.LengthList, () => ({
  __proto__: dart.getFields(svg$.LengthList.__proto__),
  [$numberOfItems]: dart.finalFieldType(core.int)
}));
dart.registerExtension("SVGLengthList", svg$.LengthList);
svg$.LineElement = class LineElement extends svg$.GeometryElement {
  static new() {
    return svg$.LineElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("line"));
  }
  get [$x1]() {
    return this.x1;
  }
  get [$x2]() {
    return this.x2;
  }
  get [$y1]() {
    return this.y1;
  }
  get [$y2]() {
    return this.y2;
  }
};
(svg$.LineElement.created = function() {
  this[x1] = null;
  this[x2] = null;
  this[y1] = null;
  this[y2] = null;
  svg$.LineElement.__proto__.created.call(this);
}).prototype = svg$.LineElement.prototype;
dart.addTypeTests(svg$.LineElement);
const x1 = Symbol("LineElement.x1");
const x2 = Symbol("LineElement.x2");
const y1 = Symbol("LineElement.y1");
const y2 = Symbol("LineElement.y2");
dart.setFieldSignature(svg$.LineElement, () => ({
  __proto__: dart.getFields(svg$.LineElement.__proto__),
  [$x1]: dart.finalFieldType(svg$.AnimatedLength),
  [$x2]: dart.finalFieldType(svg$.AnimatedLength),
  [$y1]: dart.finalFieldType(svg$.AnimatedLength),
  [$y2]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGLineElement", svg$.LineElement);
svg$._GradientElement = class _GradientElement extends svg$.SvgElement {
  get [$gradientTransform]() {
    return this.gradientTransform;
  }
  get [$gradientUnits]() {
    return this.gradientUnits;
  }
  get [$spreadMethod]() {
    return this.spreadMethod;
  }
  get [$href]() {
    return this.href;
  }
};
(svg$._GradientElement.created = function() {
  this[gradientTransform] = null;
  this[gradientUnits] = null;
  this[spreadMethod] = null;
  this[href$12] = null;
  svg$._GradientElement.__proto__.created.call(this);
}).prototype = svg$._GradientElement.prototype;
dart.addTypeTests(svg$._GradientElement);
const gradientTransform = Symbol("_GradientElement.gradientTransform");
const gradientUnits = Symbol("_GradientElement.gradientUnits");
const spreadMethod = Symbol("_GradientElement.spreadMethod");
const href$12 = Symbol("_GradientElement.href");
svg$._GradientElement[dart.implements] = () => [svg$.UriReference];
dart.setFieldSignature(svg$._GradientElement, () => ({
  __proto__: dart.getFields(svg$._GradientElement.__proto__),
  [$gradientTransform]: dart.finalFieldType(svg$.AnimatedTransformList),
  [$gradientUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$spreadMethod]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$href]: dart.finalFieldType(svg$.AnimatedString)
}));
dart.defineLazy(svg$._GradientElement, {
  /*svg$._GradientElement.SVG_SPREADMETHOD_PAD*/get SVG_SPREADMETHOD_PAD() {
    return 1;
  },
  /*svg$._GradientElement.SVG_SPREADMETHOD_REFLECT*/get SVG_SPREADMETHOD_REFLECT() {
    return 2;
  },
  /*svg$._GradientElement.SVG_SPREADMETHOD_REPEAT*/get SVG_SPREADMETHOD_REPEAT() {
    return 3;
  },
  /*svg$._GradientElement.SVG_SPREADMETHOD_UNKNOWN*/get SVG_SPREADMETHOD_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGGradientElement", svg$._GradientElement);
svg$.LinearGradientElement = class LinearGradientElement extends svg$._GradientElement {
  static new() {
    return svg$.LinearGradientElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("linearGradient"));
  }
  get [$x1]() {
    return this.x1;
  }
  get [$x2]() {
    return this.x2;
  }
  get [$y1]() {
    return this.y1;
  }
  get [$y2]() {
    return this.y2;
  }
};
(svg$.LinearGradientElement.created = function() {
  this[x1$] = null;
  this[x2$] = null;
  this[y1$] = null;
  this[y2$] = null;
  svg$.LinearGradientElement.__proto__.created.call(this);
}).prototype = svg$.LinearGradientElement.prototype;
dart.addTypeTests(svg$.LinearGradientElement);
const x1$ = Symbol("LinearGradientElement.x1");
const x2$ = Symbol("LinearGradientElement.x2");
const y1$ = Symbol("LinearGradientElement.y1");
const y2$ = Symbol("LinearGradientElement.y2");
dart.setFieldSignature(svg$.LinearGradientElement, () => ({
  __proto__: dart.getFields(svg$.LinearGradientElement.__proto__),
  [$x1]: dart.finalFieldType(svg$.AnimatedLength),
  [$x2]: dart.finalFieldType(svg$.AnimatedLength),
  [$y1]: dart.finalFieldType(svg$.AnimatedLength),
  [$y2]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGLinearGradientElement", svg$.LinearGradientElement);
svg$.MarkerElement = class MarkerElement extends svg$.SvgElement {
  static new() {
    return svg$.MarkerElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("marker"));
  }
  get [$markerHeight]() {
    return this.markerHeight;
  }
  get [$markerUnits]() {
    return this.markerUnits;
  }
  get [$markerWidth]() {
    return this.markerWidth;
  }
  get [$orientAngle]() {
    return this.orientAngle;
  }
  get [$orientType]() {
    return this.orientType;
  }
  get [$refX]() {
    return this.refX;
  }
  get [$refY]() {
    return this.refY;
  }
  [$setOrientToAngle](...args) {
    return this.setOrientToAngle.apply(this, args);
  }
  [$setOrientToAuto](...args) {
    return this.setOrientToAuto.apply(this, args);
  }
  get [$preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [$viewBox]() {
    return this.viewBox;
  }
};
(svg$.MarkerElement.created = function() {
  this[markerHeight] = null;
  this[markerUnits] = null;
  this[markerWidth] = null;
  this[orientAngle] = null;
  this[orientType] = null;
  this[refX] = null;
  this[refY] = null;
  this[preserveAspectRatio$1] = null;
  this[viewBox$] = null;
  svg$.MarkerElement.__proto__.created.call(this);
}).prototype = svg$.MarkerElement.prototype;
dart.addTypeTests(svg$.MarkerElement);
const markerHeight = Symbol("MarkerElement.markerHeight");
const markerUnits = Symbol("MarkerElement.markerUnits");
const markerWidth = Symbol("MarkerElement.markerWidth");
const orientAngle = Symbol("MarkerElement.orientAngle");
const orientType = Symbol("MarkerElement.orientType");
const refX = Symbol("MarkerElement.refX");
const refY = Symbol("MarkerElement.refY");
const preserveAspectRatio$1 = Symbol("MarkerElement.preserveAspectRatio");
const viewBox$ = Symbol("MarkerElement.viewBox");
svg$.MarkerElement[dart.implements] = () => [svg$.FitToViewBox];
dart.setMethodSignature(svg$.MarkerElement, () => ({
  __proto__: dart.getMethods(svg$.MarkerElement.__proto__),
  [$setOrientToAngle]: dart.fnType(dart.void, [svg$.Angle]),
  [$setOrientToAuto]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(svg$.MarkerElement, () => ({
  __proto__: dart.getFields(svg$.MarkerElement.__proto__),
  [$markerHeight]: dart.finalFieldType(svg$.AnimatedLength),
  [$markerUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$markerWidth]: dart.finalFieldType(svg$.AnimatedLength),
  [$orientAngle]: dart.finalFieldType(svg$.AnimatedAngle),
  [$orientType]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$refX]: dart.finalFieldType(svg$.AnimatedLength),
  [$refY]: dart.finalFieldType(svg$.AnimatedLength),
  [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
  [$viewBox]: dart.finalFieldType(svg$.AnimatedRect)
}));
dart.defineLazy(svg$.MarkerElement, {
  /*svg$.MarkerElement.SVG_MARKERUNITS_STROKEWIDTH*/get SVG_MARKERUNITS_STROKEWIDTH() {
    return 2;
  },
  /*svg$.MarkerElement.SVG_MARKERUNITS_UNKNOWN*/get SVG_MARKERUNITS_UNKNOWN() {
    return 0;
  },
  /*svg$.MarkerElement.SVG_MARKERUNITS_USERSPACEONUSE*/get SVG_MARKERUNITS_USERSPACEONUSE() {
    return 1;
  },
  /*svg$.MarkerElement.SVG_MARKER_ORIENT_ANGLE*/get SVG_MARKER_ORIENT_ANGLE() {
    return 2;
  },
  /*svg$.MarkerElement.SVG_MARKER_ORIENT_AUTO*/get SVG_MARKER_ORIENT_AUTO() {
    return 1;
  },
  /*svg$.MarkerElement.SVG_MARKER_ORIENT_UNKNOWN*/get SVG_MARKER_ORIENT_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGMarkerElement", svg$.MarkerElement);
svg$.MaskElement = class MaskElement extends svg$.SvgElement {
  static new() {
    return svg$.MaskElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("mask"));
  }
  get [$height]() {
    return this.height;
  }
  get [$maskContentUnits]() {
    return this.maskContentUnits;
  }
  get [$maskUnits]() {
    return this.maskUnits;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$requiredExtensions]() {
    return this.requiredExtensions;
  }
  get [$systemLanguage]() {
    return this.systemLanguage;
  }
};
(svg$.MaskElement.created = function() {
  this[height$34] = null;
  this[maskContentUnits] = null;
  this[maskUnits] = null;
  this[width$36] = null;
  this[x$29] = null;
  this[y$28] = null;
  this[requiredExtensions$0] = null;
  this[systemLanguage$0] = null;
  svg$.MaskElement.__proto__.created.call(this);
}).prototype = svg$.MaskElement.prototype;
dart.addTypeTests(svg$.MaskElement);
const height$34 = Symbol("MaskElement.height");
const maskContentUnits = Symbol("MaskElement.maskContentUnits");
const maskUnits = Symbol("MaskElement.maskUnits");
const width$36 = Symbol("MaskElement.width");
const x$29 = Symbol("MaskElement.x");
const y$28 = Symbol("MaskElement.y");
const requiredExtensions$0 = Symbol("MaskElement.requiredExtensions");
const systemLanguage$0 = Symbol("MaskElement.systemLanguage");
svg$.MaskElement[dart.implements] = () => [svg$.Tests];
dart.setFieldSignature(svg$.MaskElement, () => ({
  __proto__: dart.getFields(svg$.MaskElement.__proto__),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$maskContentUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$maskUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength),
  [$requiredExtensions]: dart.finalFieldType(svg$.StringList),
  [$systemLanguage]: dart.finalFieldType(svg$.StringList)
}));
dart.registerExtension("SVGMaskElement", svg$.MaskElement);
svg$.Matrix = class Matrix extends _interceptors.Interceptor {
  get [$a]() {
    return this.a;
  }
  set [$a](value) {
    this.a = value;
  }
  get [$b]() {
    return this.b;
  }
  set [$b](value) {
    this.b = value;
  }
  get [$c]() {
    return this.c;
  }
  set [$c](value) {
    this.c = value;
  }
  get [$d]() {
    return this.d;
  }
  set [$d](value) {
    this.d = value;
  }
  get [$e]() {
    return this.e;
  }
  set [$e](value) {
    this.e = value;
  }
  get [$f]() {
    return this.f;
  }
  set [$f](value) {
    this.f = value;
  }
  [$flipX](...args) {
    return this.flipX.apply(this, args);
  }
  [$flipY](...args) {
    return this.flipY.apply(this, args);
  }
  [$inverse](...args) {
    return this.inverse.apply(this, args);
  }
  [$multiply](...args) {
    return this.multiply.apply(this, args);
  }
  [$rotate](...args) {
    return this.rotate.apply(this, args);
  }
  [$rotateFromVector](...args) {
    return this.rotateFromVector.apply(this, args);
  }
  [$scale](...args) {
    return this.scale.apply(this, args);
  }
  [$scaleNonUniform](...args) {
    return this.scaleNonUniform.apply(this, args);
  }
  [$skewX](...args) {
    return this.skewX.apply(this, args);
  }
  [$skewY](...args) {
    return this.skewY.apply(this, args);
  }
  [$translate](...args) {
    return this.translate.apply(this, args);
  }
};
dart.addTypeTests(svg$.Matrix);
const a = Symbol("Matrix.a");
const b = Symbol("Matrix.b");
const c = Symbol("Matrix.c");
const d = Symbol("Matrix.d");
const e = Symbol("Matrix.e");
const f = Symbol("Matrix.f");
dart.setMethodSignature(svg$.Matrix, () => ({
  __proto__: dart.getMethods(svg$.Matrix.__proto__),
  [$flipX]: dart.fnType(svg$.Matrix, []),
  [$flipY]: dart.fnType(svg$.Matrix, []),
  [$inverse]: dart.fnType(svg$.Matrix, []),
  [$multiply]: dart.fnType(svg$.Matrix, [svg$.Matrix]),
  [$rotate]: dart.fnType(svg$.Matrix, [core.num]),
  [$rotateFromVector]: dart.fnType(svg$.Matrix, [core.num, core.num]),
  [$scale]: dart.fnType(svg$.Matrix, [core.num]),
  [$scaleNonUniform]: dart.fnType(svg$.Matrix, [core.num, core.num]),
  [$skewX]: dart.fnType(svg$.Matrix, [core.num]),
  [$skewY]: dart.fnType(svg$.Matrix, [core.num]),
  [$translate]: dart.fnType(svg$.Matrix, [core.num, core.num])
}));
dart.setFieldSignature(svg$.Matrix, () => ({
  __proto__: dart.getFields(svg$.Matrix.__proto__),
  [$a]: dart.fieldType(core.num),
  [$b]: dart.fieldType(core.num),
  [$c]: dart.fieldType(core.num),
  [$d]: dart.fieldType(core.num),
  [$e]: dart.fieldType(core.num),
  [$f]: dart.fieldType(core.num)
}));
dart.registerExtension("SVGMatrix", svg$.Matrix);
svg$.MetadataElement = class MetadataElement extends svg$.SvgElement {};
(svg$.MetadataElement.created = function() {
  svg$.MetadataElement.__proto__.created.call(this);
}).prototype = svg$.MetadataElement.prototype;
dart.addTypeTests(svg$.MetadataElement);
dart.registerExtension("SVGMetadataElement", svg$.MetadataElement);
svg$.Number = class Number extends _interceptors.Interceptor {
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
};
dart.addTypeTests(svg$.Number);
const value$20 = Symbol("Number.value");
dart.setFieldSignature(svg$.Number, () => ({
  __proto__: dart.getFields(svg$.Number.__proto__),
  [$value]: dart.fieldType(core.num)
}));
dart.registerExtension("SVGNumber", svg$.Number);
const Interceptor_ListMixin$$14 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$14.new = function() {
  Interceptor_ListMixin$$14.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$14.prototype;
dart.applyMixin(Interceptor_ListMixin$$14, collection.ListMixin$(svg$.Number));
const Interceptor_ImmutableListMixin$$14 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$14 {};
(Interceptor_ImmutableListMixin$$14.new = function() {
  Interceptor_ImmutableListMixin$$14.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$14.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$14, html$.ImmutableListMixin$(svg$.Number));
svg$.NumberList = class NumberList extends Interceptor_ImmutableListMixin$$14 {
  get [$length]() {
    return this.length;
  }
  get [$numberOfItems]() {
    return this.numberOfItems;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this.getItem(index);
  }
  [$_set](index, value) {
    svg$.Number._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [__setter__$](...args) {
    return this.__setter__.apply(this, args);
  }
  [$appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [$clear](...args) {
    return this.clear.apply(this, args);
  }
  [$getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [$initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [$insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [$removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [$replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
svg$.NumberList.prototype[dart.isList] = true;
dart.addTypeTests(svg$.NumberList);
const numberOfItems$ = Symbol("NumberList.numberOfItems");
svg$.NumberList[dart.implements] = () => [ListOfNumber()];
dart.setMethodSignature(svg$.NumberList, () => ({
  __proto__: dart.getMethods(svg$.NumberList.__proto__),
  [$_get]: dart.fnType(svg$.Number, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(svg$.Number, [core.int]),
  [__setter__$]: dart.fnType(dart.void, [core.int, svg$.Number]),
  [$appendItem]: dart.fnType(svg$.Number, [svg$.Number]),
  [$clear]: dart.fnType(dart.void, []),
  [$getItem]: dart.fnType(svg$.Number, [core.int]),
  [$initialize]: dart.fnType(svg$.Number, [svg$.Number]),
  [$insertItemBefore]: dart.fnType(svg$.Number, [svg$.Number, core.int]),
  [$removeItem]: dart.fnType(svg$.Number, [core.int]),
  [$replaceItem]: dart.fnType(svg$.Number, [svg$.Number, core.int])
}));
dart.setGetterSignature(svg$.NumberList, () => ({
  __proto__: dart.getGetters(svg$.NumberList.__proto__),
  [$length]: core.int,
  [$first]: svg$.Number,
  [$last]: svg$.Number,
  [$single]: svg$.Number
}));
dart.setSetterSignature(svg$.NumberList, () => ({
  __proto__: dart.getSetters(svg$.NumberList.__proto__),
  [$length]: core.int
}));
dart.setFieldSignature(svg$.NumberList, () => ({
  __proto__: dart.getFields(svg$.NumberList.__proto__),
  [$numberOfItems]: dart.finalFieldType(core.int)
}));
dart.registerExtension("SVGNumberList", svg$.NumberList);
svg$.PathElement = class PathElement extends svg$.GeometryElement {
  static new() {
    return svg$.PathElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("path"));
  }
};
(svg$.PathElement.created = function() {
  svg$.PathElement.__proto__.created.call(this);
}).prototype = svg$.PathElement.prototype;
dart.addTypeTests(svg$.PathElement);
dart.registerExtension("SVGPathElement", svg$.PathElement);
svg$.PatternElement = class PatternElement extends svg$.SvgElement {
  static new() {
    return svg$.PatternElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("pattern"));
  }
  get [$height]() {
    return this.height;
  }
  get [$patternContentUnits]() {
    return this.patternContentUnits;
  }
  get [$patternTransform]() {
    return this.patternTransform;
  }
  get [$patternUnits]() {
    return this.patternUnits;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [$viewBox]() {
    return this.viewBox;
  }
  get [$requiredExtensions]() {
    return this.requiredExtensions;
  }
  get [$systemLanguage]() {
    return this.systemLanguage;
  }
  get [$href]() {
    return this.href;
  }
};
(svg$.PatternElement.created = function() {
  this[height$35] = null;
  this[patternContentUnits] = null;
  this[patternTransform] = null;
  this[patternUnits] = null;
  this[width$37] = null;
  this[x$30] = null;
  this[y$29] = null;
  this[preserveAspectRatio$2] = null;
  this[viewBox$0] = null;
  this[requiredExtensions$1] = null;
  this[systemLanguage$1] = null;
  this[href$13] = null;
  svg$.PatternElement.__proto__.created.call(this);
}).prototype = svg$.PatternElement.prototype;
dart.addTypeTests(svg$.PatternElement);
const height$35 = Symbol("PatternElement.height");
const patternContentUnits = Symbol("PatternElement.patternContentUnits");
const patternTransform = Symbol("PatternElement.patternTransform");
const patternUnits = Symbol("PatternElement.patternUnits");
const width$37 = Symbol("PatternElement.width");
const x$30 = Symbol("PatternElement.x");
const y$29 = Symbol("PatternElement.y");
const preserveAspectRatio$2 = Symbol("PatternElement.preserveAspectRatio");
const viewBox$0 = Symbol("PatternElement.viewBox");
const requiredExtensions$1 = Symbol("PatternElement.requiredExtensions");
const systemLanguage$1 = Symbol("PatternElement.systemLanguage");
const href$13 = Symbol("PatternElement.href");
svg$.PatternElement[dart.implements] = () => [svg$.FitToViewBox, svg$.UriReference, svg$.Tests];
dart.setFieldSignature(svg$.PatternElement, () => ({
  __proto__: dart.getFields(svg$.PatternElement.__proto__),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$patternContentUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$patternTransform]: dart.finalFieldType(svg$.AnimatedTransformList),
  [$patternUnits]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength),
  [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
  [$viewBox]: dart.finalFieldType(svg$.AnimatedRect),
  [$requiredExtensions]: dart.finalFieldType(svg$.StringList),
  [$systemLanguage]: dart.finalFieldType(svg$.StringList),
  [$href]: dart.finalFieldType(svg$.AnimatedString)
}));
dart.registerExtension("SVGPatternElement", svg$.PatternElement);
svg$.Point = class Point extends _interceptors.Interceptor {
  get [$x]() {
    return this.x;
  }
  set [$x](value) {
    this.x = value;
  }
  get [$y]() {
    return this.y;
  }
  set [$y](value) {
    this.y = value;
  }
  [$matrixTransform](...args) {
    return this.matrixTransform.apply(this, args);
  }
};
dart.addTypeTests(svg$.Point);
const x$31 = Symbol("Point.x");
const y$30 = Symbol("Point.y");
dart.setMethodSignature(svg$.Point, () => ({
  __proto__: dart.getMethods(svg$.Point.__proto__),
  [$matrixTransform]: dart.fnType(svg$.Point, [svg$.Matrix])
}));
dart.setFieldSignature(svg$.Point, () => ({
  __proto__: dart.getFields(svg$.Point.__proto__),
  [$x]: dart.fieldType(core.num),
  [$y]: dart.fieldType(core.num)
}));
dart.registerExtension("SVGPoint", svg$.Point);
svg$.PointList = class PointList extends _interceptors.Interceptor {
  get [$length]() {
    return this.length;
  }
  get [$numberOfItems]() {
    return this.numberOfItems;
  }
  [__setter__$](...args) {
    return this.__setter__.apply(this, args);
  }
  [$appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [$clear](...args) {
    return this.clear.apply(this, args);
  }
  [$getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [$initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [$insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [$removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [$replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
dart.addTypeTests(svg$.PointList);
const length$17 = Symbol("PointList.length");
const numberOfItems$0 = Symbol("PointList.numberOfItems");
dart.setMethodSignature(svg$.PointList, () => ({
  __proto__: dart.getMethods(svg$.PointList.__proto__),
  [__setter__$]: dart.fnType(dart.void, [core.int, svg$.Point]),
  [$appendItem]: dart.fnType(svg$.Point, [svg$.Point]),
  [$clear]: dart.fnType(dart.void, []),
  [$getItem]: dart.fnType(svg$.Point, [core.int]),
  [$initialize]: dart.fnType(svg$.Point, [svg$.Point]),
  [$insertItemBefore]: dart.fnType(svg$.Point, [svg$.Point, core.int]),
  [$removeItem]: dart.fnType(svg$.Point, [core.int]),
  [$replaceItem]: dart.fnType(svg$.Point, [svg$.Point, core.int])
}));
dart.setFieldSignature(svg$.PointList, () => ({
  __proto__: dart.getFields(svg$.PointList.__proto__),
  [$length]: dart.finalFieldType(core.int),
  [$numberOfItems]: dart.finalFieldType(core.int)
}));
dart.registerExtension("SVGPointList", svg$.PointList);
svg$.PolygonElement = class PolygonElement extends svg$.GeometryElement {
  static new() {
    return svg$.PolygonElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("polygon"));
  }
  get [$animatedPoints]() {
    return this.animatedPoints;
  }
  get [$points]() {
    return this.points;
  }
};
(svg$.PolygonElement.created = function() {
  this[animatedPoints] = null;
  this[points] = null;
  svg$.PolygonElement.__proto__.created.call(this);
}).prototype = svg$.PolygonElement.prototype;
dart.addTypeTests(svg$.PolygonElement);
const animatedPoints = Symbol("PolygonElement.animatedPoints");
const points = Symbol("PolygonElement.points");
dart.setFieldSignature(svg$.PolygonElement, () => ({
  __proto__: dart.getFields(svg$.PolygonElement.__proto__),
  [$animatedPoints]: dart.finalFieldType(svg$.PointList),
  [$points]: dart.finalFieldType(svg$.PointList)
}));
dart.registerExtension("SVGPolygonElement", svg$.PolygonElement);
svg$.PolylineElement = class PolylineElement extends svg$.GeometryElement {
  static new() {
    return svg$.PolylineElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("polyline"));
  }
  get [$animatedPoints]() {
    return this.animatedPoints;
  }
  get [$points]() {
    return this.points;
  }
};
(svg$.PolylineElement.created = function() {
  this[animatedPoints$] = null;
  this[points$] = null;
  svg$.PolylineElement.__proto__.created.call(this);
}).prototype = svg$.PolylineElement.prototype;
dart.addTypeTests(svg$.PolylineElement);
const animatedPoints$ = Symbol("PolylineElement.animatedPoints");
const points$ = Symbol("PolylineElement.points");
dart.setFieldSignature(svg$.PolylineElement, () => ({
  __proto__: dart.getFields(svg$.PolylineElement.__proto__),
  [$animatedPoints]: dart.finalFieldType(svg$.PointList),
  [$points]: dart.finalFieldType(svg$.PointList)
}));
dart.registerExtension("SVGPolylineElement", svg$.PolylineElement);
svg$.PreserveAspectRatio = class PreserveAspectRatio extends _interceptors.Interceptor {
  get [$align]() {
    return this.align;
  }
  set [$align](value) {
    this.align = value;
  }
  get [$meetOrSlice]() {
    return this.meetOrSlice;
  }
  set [$meetOrSlice](value) {
    this.meetOrSlice = value;
  }
};
dart.addTypeTests(svg$.PreserveAspectRatio);
const align$ = Symbol("PreserveAspectRatio.align");
const meetOrSlice = Symbol("PreserveAspectRatio.meetOrSlice");
dart.setFieldSignature(svg$.PreserveAspectRatio, () => ({
  __proto__: dart.getFields(svg$.PreserveAspectRatio.__proto__),
  [$align]: dart.fieldType(core.int),
  [$meetOrSlice]: dart.fieldType(core.int)
}));
dart.defineLazy(svg$.PreserveAspectRatio, {
  /*svg$.PreserveAspectRatio.SVG_MEETORSLICE_MEET*/get SVG_MEETORSLICE_MEET() {
    return 1;
  },
  /*svg$.PreserveAspectRatio.SVG_MEETORSLICE_SLICE*/get SVG_MEETORSLICE_SLICE() {
    return 2;
  },
  /*svg$.PreserveAspectRatio.SVG_MEETORSLICE_UNKNOWN*/get SVG_MEETORSLICE_UNKNOWN() {
    return 0;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE*/get SVG_PRESERVEASPECTRATIO_NONE() {
    return 1;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_UNKNOWN*/get SVG_PRESERVEASPECTRATIO_UNKNOWN() {
    return 0;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMAX*/get SVG_PRESERVEASPECTRATIO_XMAXYMAX() {
    return 10;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMID*/get SVG_PRESERVEASPECTRATIO_XMAXYMID() {
    return 7;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMIN*/get SVG_PRESERVEASPECTRATIO_XMAXYMIN() {
    return 4;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMAX*/get SVG_PRESERVEASPECTRATIO_XMIDYMAX() {
    return 9;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID*/get SVG_PRESERVEASPECTRATIO_XMIDYMID() {
    return 6;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN*/get SVG_PRESERVEASPECTRATIO_XMIDYMIN() {
    return 3;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMAX*/get SVG_PRESERVEASPECTRATIO_XMINYMAX() {
    return 8;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMID*/get SVG_PRESERVEASPECTRATIO_XMINYMID() {
    return 5;
  },
  /*svg$.PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMIN*/get SVG_PRESERVEASPECTRATIO_XMINYMIN() {
    return 2;
  }
});
dart.registerExtension("SVGPreserveAspectRatio", svg$.PreserveAspectRatio);
svg$.RadialGradientElement = class RadialGradientElement extends svg$._GradientElement {
  static new() {
    return svg$.RadialGradientElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("radialGradient"));
  }
  get [$cx]() {
    return this.cx;
  }
  get [$cy]() {
    return this.cy;
  }
  get [$fr]() {
    return this.fr;
  }
  get [$fx]() {
    return this.fx;
  }
  get [$fy]() {
    return this.fy;
  }
  get [$r]() {
    return this.r;
  }
};
(svg$.RadialGradientElement.created = function() {
  this[cx$0] = null;
  this[cy$0] = null;
  this[fr] = null;
  this[fx] = null;
  this[fy] = null;
  this[r$] = null;
  svg$.RadialGradientElement.__proto__.created.call(this);
}).prototype = svg$.RadialGradientElement.prototype;
dart.addTypeTests(svg$.RadialGradientElement);
const cx$0 = Symbol("RadialGradientElement.cx");
const cy$0 = Symbol("RadialGradientElement.cy");
const fr = Symbol("RadialGradientElement.fr");
const fx = Symbol("RadialGradientElement.fx");
const fy = Symbol("RadialGradientElement.fy");
const r$ = Symbol("RadialGradientElement.r");
dart.setFieldSignature(svg$.RadialGradientElement, () => ({
  __proto__: dart.getFields(svg$.RadialGradientElement.__proto__),
  [$cx]: dart.finalFieldType(svg$.AnimatedLength),
  [$cy]: dart.finalFieldType(svg$.AnimatedLength),
  [$fr]: dart.finalFieldType(svg$.AnimatedLength),
  [$fx]: dart.finalFieldType(svg$.AnimatedLength),
  [$fy]: dart.finalFieldType(svg$.AnimatedLength),
  [$r]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGRadialGradientElement", svg$.RadialGradientElement);
svg$.Rect = class Rect extends _interceptors.Interceptor {
  get [$height]() {
    return this.height;
  }
  set [$height](value) {
    this.height = value;
  }
  get [$width]() {
    return this.width;
  }
  set [$width](value) {
    this.width = value;
  }
  get [$x]() {
    return this.x;
  }
  set [$x](value) {
    this.x = value;
  }
  get [$y]() {
    return this.y;
  }
  set [$y](value) {
    this.y = value;
  }
};
dart.addTypeTests(svg$.Rect);
const height$36 = Symbol("Rect.height");
const width$38 = Symbol("Rect.width");
const x$32 = Symbol("Rect.x");
const y$31 = Symbol("Rect.y");
dart.setFieldSignature(svg$.Rect, () => ({
  __proto__: dart.getFields(svg$.Rect.__proto__),
  [$height]: dart.fieldType(core.num),
  [$width]: dart.fieldType(core.num),
  [$x]: dart.fieldType(core.num),
  [$y]: dart.fieldType(core.num)
}));
dart.registerExtension("SVGRect", svg$.Rect);
svg$.RectElement = class RectElement extends svg$.GeometryElement {
  static new() {
    return svg$.RectElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("rect"));
  }
  get [$height]() {
    return this.height;
  }
  get [$rx]() {
    return this.rx;
  }
  get [$ry]() {
    return this.ry;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.RectElement.created = function() {
  this[height$37] = null;
  this[rx$] = null;
  this[ry$] = null;
  this[width$39] = null;
  this[x$33] = null;
  this[y$32] = null;
  svg$.RectElement.__proto__.created.call(this);
}).prototype = svg$.RectElement.prototype;
dart.addTypeTests(svg$.RectElement);
const height$37 = Symbol("RectElement.height");
const rx$ = Symbol("RectElement.rx");
const ry$ = Symbol("RectElement.ry");
const width$39 = Symbol("RectElement.width");
const x$33 = Symbol("RectElement.x");
const y$32 = Symbol("RectElement.y");
dart.setFieldSignature(svg$.RectElement, () => ({
  __proto__: dart.getFields(svg$.RectElement.__proto__),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$rx]: dart.finalFieldType(svg$.AnimatedLength),
  [$ry]: dart.finalFieldType(svg$.AnimatedLength),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.registerExtension("SVGRectElement", svg$.RectElement);
svg$.ScriptElement = class ScriptElement extends svg$.SvgElement {
  static new() {
    return svg$.ScriptElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("script"));
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
  get [$href]() {
    return this.href;
  }
};
(svg$.ScriptElement.created = function() {
  this[type$39] = null;
  this[href$14] = null;
  svg$.ScriptElement.__proto__.created.call(this);
}).prototype = svg$.ScriptElement.prototype;
dart.addTypeTests(svg$.ScriptElement);
const type$39 = Symbol("ScriptElement.type");
const href$14 = Symbol("ScriptElement.href");
svg$.ScriptElement[dart.implements] = () => [svg$.UriReference];
dart.setFieldSignature(svg$.ScriptElement, () => ({
  __proto__: dart.getFields(svg$.ScriptElement.__proto__),
  [$type]: dart.fieldType(core.String),
  [$href]: dart.finalFieldType(svg$.AnimatedString)
}));
dart.registerExtension("SVGScriptElement", svg$.ScriptElement);
svg$.SetElement = class SetElement extends svg$.AnimationElement {
  static new() {
    return svg$.SetElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("set"));
  }
  static get supported() {
    return dart.test(svg$.SvgElement.isTagSupported("set")) && svg$.SetElement.is(svg$.SvgElement.tag("set"));
  }
};
(svg$.SetElement.created = function() {
  svg$.SetElement.__proto__.created.call(this);
}).prototype = svg$.SetElement.prototype;
dart.addTypeTests(svg$.SetElement);
dart.registerExtension("SVGSetElement", svg$.SetElement);
svg$.StopElement = class StopElement extends svg$.SvgElement {
  static new() {
    return svg$.StopElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("stop"));
  }
  get [$gradientOffset]() {
    return this.offset;
  }
};
(svg$.StopElement.created = function() {
  this[gradientOffset] = null;
  svg$.StopElement.__proto__.created.call(this);
}).prototype = svg$.StopElement.prototype;
dart.addTypeTests(svg$.StopElement);
const gradientOffset = Symbol("StopElement.gradientOffset");
dart.setFieldSignature(svg$.StopElement, () => ({
  __proto__: dart.getFields(svg$.StopElement.__proto__),
  [$gradientOffset]: dart.finalFieldType(svg$.AnimatedNumber)
}));
dart.registerExtension("SVGStopElement", svg$.StopElement);
const Interceptor_ListMixin$$15 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$15.new = function() {
  Interceptor_ListMixin$$15.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$15.prototype;
dart.applyMixin(Interceptor_ListMixin$$15, collection.ListMixin$(core.String));
const Interceptor_ImmutableListMixin$$15 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$15 {};
(Interceptor_ImmutableListMixin$$15.new = function() {
  Interceptor_ImmutableListMixin$$15.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$15.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$15, html$.ImmutableListMixin$(core.String));
svg$.StringList = class StringList extends Interceptor_ImmutableListMixin$$15 {
  get [$length]() {
    return this.length;
  }
  get [$numberOfItems]() {
    return this.numberOfItems;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this.getItem(index);
  }
  [$_set](index, value) {
    core.String._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [__setter__$](...args) {
    return this.__setter__.apply(this, args);
  }
  [$appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [$clear](...args) {
    return this.clear.apply(this, args);
  }
  [$getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [$initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [$insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [$removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [$replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
svg$.StringList.prototype[dart.isList] = true;
dart.addTypeTests(svg$.StringList);
const numberOfItems$1 = Symbol("StringList.numberOfItems");
svg$.StringList[dart.implements] = () => [ListOfString()];
dart.setMethodSignature(svg$.StringList, () => ({
  __proto__: dart.getMethods(svg$.StringList.__proto__),
  [$_get]: dart.fnType(core.String, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(core.String, [core.int]),
  [__setter__$]: dart.fnType(dart.void, [core.int, core.String]),
  [$appendItem]: dart.fnType(core.String, [core.String]),
  [$clear]: dart.fnType(dart.void, []),
  [$getItem]: dart.fnType(core.String, [core.int]),
  [$initialize]: dart.fnType(core.String, [core.String]),
  [$insertItemBefore]: dart.fnType(core.String, [core.String, core.int]),
  [$removeItem]: dart.fnType(core.String, [core.int]),
  [$replaceItem]: dart.fnType(core.String, [core.String, core.int])
}));
dart.setGetterSignature(svg$.StringList, () => ({
  __proto__: dart.getGetters(svg$.StringList.__proto__),
  [$length]: core.int,
  [$first]: core.String,
  [$last]: core.String,
  [$single]: core.String
}));
dart.setSetterSignature(svg$.StringList, () => ({
  __proto__: dart.getSetters(svg$.StringList.__proto__),
  [$length]: core.int
}));
dart.setFieldSignature(svg$.StringList, () => ({
  __proto__: dart.getFields(svg$.StringList.__proto__),
  [$numberOfItems]: dart.finalFieldType(core.int)
}));
dart.registerExtension("SVGStringList", svg$.StringList);
svg$.StyleElement = class StyleElement extends svg$.SvgElement {
  static new() {
    return svg$.StyleElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("style"));
  }
  get [$disabled]() {
    return this.disabled;
  }
  set [$disabled](value) {
    this.disabled = value;
  }
  get [$media]() {
    return this.media;
  }
  set [$media](value) {
    this.media = value;
  }
  get [$sheet]() {
    return this.sheet;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
};
(svg$.StyleElement.created = function() {
  this[disabled$10] = null;
  this[media$6] = null;
  this[sheet$1] = null;
  this[type$40] = null;
  svg$.StyleElement.__proto__.created.call(this);
}).prototype = svg$.StyleElement.prototype;
dart.addTypeTests(svg$.StyleElement);
const disabled$10 = Symbol("StyleElement.disabled");
const media$6 = Symbol("StyleElement.media");
const sheet$1 = Symbol("StyleElement.sheet");
const type$40 = Symbol("StyleElement.type");
dart.setFieldSignature(svg$.StyleElement, () => ({
  __proto__: dart.getFields(svg$.StyleElement.__proto__),
  [$disabled]: dart.fieldType(core.bool),
  [$media]: dart.fieldType(core.String),
  [$sheet]: dart.finalFieldType(html$.StyleSheet),
  [$type]: dart.fieldType(core.String)
}));
dart.registerExtension("SVGStyleElement", svg$.StyleElement);
const _element$0 = Symbol('_element');
svg$.AttributeClassSet = class AttributeClassSet extends html_common.CssClassSetImpl {
  readClasses() {
    let classname = this[_element$0][$attributes][$_get]("class");
    if (svg$.AnimatedString.is(classname)) {
      classname = svg$.AnimatedString.as(classname).baseVal;
    }
    let s = new (_IdentityHashSetOfString()).new();
    if (classname == null) {
      return s;
    }
    for (let name of classname[$split](" ")) {
      let trimmed = name[$trim]();
      if (!trimmed[$isEmpty]) {
        s.add(trimmed);
      }
    }
    return s;
  }
  writeClasses(s) {
    this[_element$0][$setAttribute]("class", s.join(" "));
  }
};
(svg$.AttributeClassSet.new = function(element) {
  this[_element$0] = element;
}).prototype = svg$.AttributeClassSet.prototype;
dart.addTypeTests(svg$.AttributeClassSet);
dart.setMethodSignature(svg$.AttributeClassSet, () => ({
  __proto__: dart.getMethods(svg$.AttributeClassSet.__proto__),
  readClasses: dart.fnType(core.Set$(core.String), []),
  writeClasses: dart.fnType(dart.void, [core.Set])
}));
dart.setFieldSignature(svg$.AttributeClassSet, () => ({
  __proto__: dart.getFields(svg$.AttributeClassSet.__proto__),
  [_element$0]: dart.finalFieldType(html$.Element)
}));
svg$.SvgSvgElement = class SvgSvgElement extends svg$.GraphicsElement {
  static new() {
    let el = svg$.SvgElement.tag("svg");
    el[$attributes][$_set]("version", "1.1");
    return svg$.SvgSvgElement._check(el);
  }
  get [$currentScale]() {
    return this.currentScale;
  }
  set [$currentScale](value) {
    this.currentScale = value;
  }
  get [$currentTranslate]() {
    return this.currentTranslate;
  }
  get [$height]() {
    return this.height;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  [$animationsPaused](...args) {
    return this.animationsPaused.apply(this, args);
  }
  [$checkEnclosure](...args) {
    return this.checkEnclosure.apply(this, args);
  }
  [$checkIntersection](...args) {
    return this.checkIntersection.apply(this, args);
  }
  [$createSvgAngle](...args) {
    return this.createSVGAngle.apply(this, args);
  }
  [$createSvgLength](...args) {
    return this.createSVGLength.apply(this, args);
  }
  [$createSvgMatrix](...args) {
    return this.createSVGMatrix.apply(this, args);
  }
  [$createSvgNumber](...args) {
    return this.createSVGNumber.apply(this, args);
  }
  [$createSvgPoint](...args) {
    return this.createSVGPoint.apply(this, args);
  }
  [$createSvgRect](...args) {
    return this.createSVGRect.apply(this, args);
  }
  [$createSvgTransform](...args) {
    return this.createSVGTransform.apply(this, args);
  }
  [$createSvgTransformFromMatrix](...args) {
    return this.createSVGTransformFromMatrix.apply(this, args);
  }
  [$deselectAll](...args) {
    return this.deselectAll.apply(this, args);
  }
  [$forceRedraw](...args) {
    return this.forceRedraw.apply(this, args);
  }
  [$getCurrentTime](...args) {
    return this.getCurrentTime.apply(this, args);
  }
  [$getElementById](...args) {
    return this.getElementById.apply(this, args);
  }
  [$getEnclosureList](...args) {
    return this.getEnclosureList.apply(this, args);
  }
  [$getIntersectionList](...args) {
    return this.getIntersectionList.apply(this, args);
  }
  [$pauseAnimations](...args) {
    return this.pauseAnimations.apply(this, args);
  }
  [$setCurrentTime](...args) {
    return this.setCurrentTime.apply(this, args);
  }
  [$suspendRedraw](...args) {
    return this.suspendRedraw.apply(this, args);
  }
  [$unpauseAnimations](...args) {
    return this.unpauseAnimations.apply(this, args);
  }
  [$unsuspendRedraw](...args) {
    return this.unsuspendRedraw.apply(this, args);
  }
  [$unsuspendRedrawAll](...args) {
    return this.unsuspendRedrawAll.apply(this, args);
  }
  get [$preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [$viewBox]() {
    return this.viewBox;
  }
  get [$zoomAndPan]() {
    return this.zoomAndPan;
  }
  set [$zoomAndPan](value) {
    this.zoomAndPan = value;
  }
};
(svg$.SvgSvgElement.created = function() {
  this[currentScale] = null;
  this[currentTranslate] = null;
  this[height$38] = null;
  this[width$40] = null;
  this[x$34] = null;
  this[y$33] = null;
  this[preserveAspectRatio$3] = null;
  this[viewBox$1] = null;
  this[zoomAndPan] = null;
  svg$.SvgSvgElement.__proto__.created.call(this);
}).prototype = svg$.SvgSvgElement.prototype;
dart.addTypeTests(svg$.SvgSvgElement);
const currentScale = Symbol("SvgSvgElement.currentScale");
const currentTranslate = Symbol("SvgSvgElement.currentTranslate");
const height$38 = Symbol("SvgSvgElement.height");
const width$40 = Symbol("SvgSvgElement.width");
const x$34 = Symbol("SvgSvgElement.x");
const y$33 = Symbol("SvgSvgElement.y");
const preserveAspectRatio$3 = Symbol("SvgSvgElement.preserveAspectRatio");
const viewBox$1 = Symbol("SvgSvgElement.viewBox");
const zoomAndPan = Symbol("SvgSvgElement.zoomAndPan");
svg$.SvgSvgElement[dart.implements] = () => [svg$.FitToViewBox, svg$.ZoomAndPan];
dart.setMethodSignature(svg$.SvgSvgElement, () => ({
  __proto__: dart.getMethods(svg$.SvgSvgElement.__proto__),
  [$animationsPaused]: dart.fnType(core.bool, []),
  [$checkEnclosure]: dart.fnType(core.bool, [svg$.SvgElement, svg$.Rect]),
  [$checkIntersection]: dart.fnType(core.bool, [svg$.SvgElement, svg$.Rect]),
  [$createSvgAngle]: dart.fnType(svg$.Angle, []),
  [$createSvgLength]: dart.fnType(svg$.Length, []),
  [$createSvgMatrix]: dart.fnType(svg$.Matrix, []),
  [$createSvgNumber]: dart.fnType(svg$.Number, []),
  [$createSvgPoint]: dart.fnType(svg$.Point, []),
  [$createSvgRect]: dart.fnType(svg$.Rect, []),
  [$createSvgTransform]: dart.fnType(svg$.Transform, []),
  [$createSvgTransformFromMatrix]: dart.fnType(svg$.Transform, [svg$.Matrix]),
  [$deselectAll]: dart.fnType(dart.void, []),
  [$forceRedraw]: dart.fnType(dart.void, []),
  [$getCurrentTime]: dart.fnType(core.double, []),
  [$getElementById]: dart.fnType(html$.Element, [core.String]),
  [$getEnclosureList]: dart.fnType(core.List$(html$.Node), [svg$.Rect, svg$.SvgElement]),
  [$getIntersectionList]: dart.fnType(core.List$(html$.Node), [svg$.Rect, svg$.SvgElement]),
  [$pauseAnimations]: dart.fnType(dart.void, []),
  [$setCurrentTime]: dart.fnType(dart.void, [core.num]),
  [$suspendRedraw]: dart.fnType(core.int, [core.int]),
  [$unpauseAnimations]: dart.fnType(dart.void, []),
  [$unsuspendRedraw]: dart.fnType(dart.void, [core.int]),
  [$unsuspendRedrawAll]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(svg$.SvgSvgElement, () => ({
  __proto__: dart.getFields(svg$.SvgSvgElement.__proto__),
  [$currentScale]: dart.fieldType(core.num),
  [$currentTranslate]: dart.finalFieldType(svg$.Point),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength),
  [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
  [$viewBox]: dart.finalFieldType(svg$.AnimatedRect),
  [$zoomAndPan]: dart.fieldType(core.int)
}));
dart.registerExtension("SVGSVGElement", svg$.SvgSvgElement);
svg$.SwitchElement = class SwitchElement extends svg$.GraphicsElement {
  static new() {
    return svg$.SwitchElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("switch"));
  }
};
(svg$.SwitchElement.created = function() {
  svg$.SwitchElement.__proto__.created.call(this);
}).prototype = svg$.SwitchElement.prototype;
dart.addTypeTests(svg$.SwitchElement);
dart.registerExtension("SVGSwitchElement", svg$.SwitchElement);
svg$.SymbolElement = class SymbolElement extends svg$.SvgElement {
  static new() {
    return svg$.SymbolElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("symbol"));
  }
  get [$preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [$viewBox]() {
    return this.viewBox;
  }
};
(svg$.SymbolElement.created = function() {
  this[preserveAspectRatio$4] = null;
  this[viewBox$2] = null;
  svg$.SymbolElement.__proto__.created.call(this);
}).prototype = svg$.SymbolElement.prototype;
dart.addTypeTests(svg$.SymbolElement);
const preserveAspectRatio$4 = Symbol("SymbolElement.preserveAspectRatio");
const viewBox$2 = Symbol("SymbolElement.viewBox");
svg$.SymbolElement[dart.implements] = () => [svg$.FitToViewBox];
dart.setFieldSignature(svg$.SymbolElement, () => ({
  __proto__: dart.getFields(svg$.SymbolElement.__proto__),
  [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
  [$viewBox]: dart.finalFieldType(svg$.AnimatedRect)
}));
dart.registerExtension("SVGSymbolElement", svg$.SymbolElement);
svg$.TextContentElement = class TextContentElement extends svg$.GraphicsElement {
  get [$lengthAdjust]() {
    return this.lengthAdjust;
  }
  get [$textLength]() {
    return this.textLength;
  }
  [$getCharNumAtPosition](...args) {
    return this.getCharNumAtPosition.apply(this, args);
  }
  [$getComputedTextLength](...args) {
    return this.getComputedTextLength.apply(this, args);
  }
  [$getEndPositionOfChar](...args) {
    return this.getEndPositionOfChar.apply(this, args);
  }
  [$getExtentOfChar](...args) {
    return this.getExtentOfChar.apply(this, args);
  }
  [$getNumberOfChars](...args) {
    return this.getNumberOfChars.apply(this, args);
  }
  [$getRotationOfChar](...args) {
    return this.getRotationOfChar.apply(this, args);
  }
  [$getStartPositionOfChar](...args) {
    return this.getStartPositionOfChar.apply(this, args);
  }
  [$getSubStringLength](...args) {
    return this.getSubStringLength.apply(this, args);
  }
  [$selectSubString](...args) {
    return this.selectSubString.apply(this, args);
  }
};
(svg$.TextContentElement.created = function() {
  this[lengthAdjust] = null;
  this[textLength$] = null;
  svg$.TextContentElement.__proto__.created.call(this);
}).prototype = svg$.TextContentElement.prototype;
dart.addTypeTests(svg$.TextContentElement);
const lengthAdjust = Symbol("TextContentElement.lengthAdjust");
const textLength$ = Symbol("TextContentElement.textLength");
dart.setMethodSignature(svg$.TextContentElement, () => ({
  __proto__: dart.getMethods(svg$.TextContentElement.__proto__),
  [$getCharNumAtPosition]: dart.fnType(core.int, [svg$.Point]),
  [$getComputedTextLength]: dart.fnType(core.double, []),
  [$getEndPositionOfChar]: dart.fnType(svg$.Point, [core.int]),
  [$getExtentOfChar]: dart.fnType(svg$.Rect, [core.int]),
  [$getNumberOfChars]: dart.fnType(core.int, []),
  [$getRotationOfChar]: dart.fnType(core.double, [core.int]),
  [$getStartPositionOfChar]: dart.fnType(svg$.Point, [core.int]),
  [$getSubStringLength]: dart.fnType(core.double, [core.int, core.int]),
  [$selectSubString]: dart.fnType(dart.void, [core.int, core.int])
}));
dart.setFieldSignature(svg$.TextContentElement, () => ({
  __proto__: dart.getFields(svg$.TextContentElement.__proto__),
  [$lengthAdjust]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$textLength]: dart.finalFieldType(svg$.AnimatedLength)
}));
dart.defineLazy(svg$.TextContentElement, {
  /*svg$.TextContentElement.LENGTHADJUST_SPACING*/get LENGTHADJUST_SPACING() {
    return 1;
  },
  /*svg$.TextContentElement.LENGTHADJUST_SPACINGANDGLYPHS*/get LENGTHADJUST_SPACINGANDGLYPHS() {
    return 2;
  },
  /*svg$.TextContentElement.LENGTHADJUST_UNKNOWN*/get LENGTHADJUST_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGTextContentElement", svg$.TextContentElement);
svg$.TextPositioningElement = class TextPositioningElement extends svg$.TextContentElement {
  get [$dx]() {
    return this.dx;
  }
  get [$dy]() {
    return this.dy;
  }
  get [$rotate]() {
    return this.rotate;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
};
(svg$.TextPositioningElement.created = function() {
  this[dx$] = null;
  this[dy$] = null;
  this[rotate] = null;
  this[x$35] = null;
  this[y$34] = null;
  svg$.TextPositioningElement.__proto__.created.call(this);
}).prototype = svg$.TextPositioningElement.prototype;
dart.addTypeTests(svg$.TextPositioningElement);
const dx$ = Symbol("TextPositioningElement.dx");
const dy$ = Symbol("TextPositioningElement.dy");
const rotate = Symbol("TextPositioningElement.rotate");
const x$35 = Symbol("TextPositioningElement.x");
const y$34 = Symbol("TextPositioningElement.y");
dart.setFieldSignature(svg$.TextPositioningElement, () => ({
  __proto__: dart.getFields(svg$.TextPositioningElement.__proto__),
  [$dx]: dart.finalFieldType(svg$.AnimatedLengthList),
  [$dy]: dart.finalFieldType(svg$.AnimatedLengthList),
  [$rotate]: dart.finalFieldType(svg$.AnimatedNumberList),
  [$x]: dart.finalFieldType(svg$.AnimatedLengthList),
  [$y]: dart.finalFieldType(svg$.AnimatedLengthList)
}));
dart.registerExtension("SVGTextPositioningElement", svg$.TextPositioningElement);
svg$.TSpanElement = class TSpanElement extends svg$.TextPositioningElement {
  static new() {
    return svg$.TSpanElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("tspan"));
  }
};
(svg$.TSpanElement.created = function() {
  svg$.TSpanElement.__proto__.created.call(this);
}).prototype = svg$.TSpanElement.prototype;
dart.addTypeTests(svg$.TSpanElement);
dart.registerExtension("SVGTSpanElement", svg$.TSpanElement);
svg$.Tests = class Tests extends _interceptors.Interceptor {
  get requiredExtensions() {
    return this[requiredExtensions$2];
  }
  set requiredExtensions(value) {
    super.requiredExtensions = value;
  }
  get systemLanguage() {
    return this[systemLanguage$2];
  }
  set systemLanguage(value) {
    super.systemLanguage = value;
  }
};
dart.addTypeTests(svg$.Tests);
const requiredExtensions$2 = Symbol("Tests.requiredExtensions");
const systemLanguage$2 = Symbol("Tests.systemLanguage");
dart.setFieldSignature(svg$.Tests, () => ({
  __proto__: dart.getFields(svg$.Tests.__proto__),
  requiredExtensions: dart.finalFieldType(svg$.StringList),
  systemLanguage: dart.finalFieldType(svg$.StringList)
}));
dart.defineExtensionAccessors(svg$.Tests, ['requiredExtensions', 'systemLanguage']);
svg$.TextElement = class TextElement extends svg$.TextPositioningElement {
  static new() {
    return svg$.TextElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("text"));
  }
};
(svg$.TextElement.created = function() {
  svg$.TextElement.__proto__.created.call(this);
}).prototype = svg$.TextElement.prototype;
dart.addTypeTests(svg$.TextElement);
dart.registerExtension("SVGTextElement", svg$.TextElement);
svg$.TextPathElement = class TextPathElement extends svg$.TextContentElement {
  get [$method]() {
    return this.method;
  }
  get [$spacing]() {
    return this.spacing;
  }
  get [$startOffset]() {
    return this.startOffset;
  }
  get [$href]() {
    return this.href;
  }
};
(svg$.TextPathElement.created = function() {
  this[method$] = null;
  this[spacing] = null;
  this[startOffset$0] = null;
  this[href$15] = null;
  svg$.TextPathElement.__proto__.created.call(this);
}).prototype = svg$.TextPathElement.prototype;
dart.addTypeTests(svg$.TextPathElement);
const method$ = Symbol("TextPathElement.method");
const spacing = Symbol("TextPathElement.spacing");
const startOffset$0 = Symbol("TextPathElement.startOffset");
const href$15 = Symbol("TextPathElement.href");
svg$.TextPathElement[dart.implements] = () => [svg$.UriReference];
dart.setFieldSignature(svg$.TextPathElement, () => ({
  __proto__: dart.getFields(svg$.TextPathElement.__proto__),
  [$method]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$spacing]: dart.finalFieldType(svg$.AnimatedEnumeration),
  [$startOffset]: dart.finalFieldType(svg$.AnimatedLength),
  [$href]: dart.finalFieldType(svg$.AnimatedString)
}));
dart.defineLazy(svg$.TextPathElement, {
  /*svg$.TextPathElement.TEXTPATH_METHODTYPE_ALIGN*/get TEXTPATH_METHODTYPE_ALIGN() {
    return 1;
  },
  /*svg$.TextPathElement.TEXTPATH_METHODTYPE_STRETCH*/get TEXTPATH_METHODTYPE_STRETCH() {
    return 2;
  },
  /*svg$.TextPathElement.TEXTPATH_METHODTYPE_UNKNOWN*/get TEXTPATH_METHODTYPE_UNKNOWN() {
    return 0;
  },
  /*svg$.TextPathElement.TEXTPATH_SPACINGTYPE_AUTO*/get TEXTPATH_SPACINGTYPE_AUTO() {
    return 1;
  },
  /*svg$.TextPathElement.TEXTPATH_SPACINGTYPE_EXACT*/get TEXTPATH_SPACINGTYPE_EXACT() {
    return 2;
  },
  /*svg$.TextPathElement.TEXTPATH_SPACINGTYPE_UNKNOWN*/get TEXTPATH_SPACINGTYPE_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGTextPathElement", svg$.TextPathElement);
svg$.TitleElement = class TitleElement extends svg$.SvgElement {
  static new() {
    return svg$.TitleElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("title"));
  }
};
(svg$.TitleElement.created = function() {
  svg$.TitleElement.__proto__.created.call(this);
}).prototype = svg$.TitleElement.prototype;
dart.addTypeTests(svg$.TitleElement);
dart.registerExtension("SVGTitleElement", svg$.TitleElement);
svg$.Transform = class Transform extends _interceptors.Interceptor {
  get [$angle]() {
    return this.angle;
  }
  get [$matrix]() {
    return this.matrix;
  }
  get [$type]() {
    return this.type;
  }
  [$setMatrix](...args) {
    return this.setMatrix.apply(this, args);
  }
  [$setRotate](...args) {
    return this.setRotate.apply(this, args);
  }
  [$setScale](...args) {
    return this.setScale.apply(this, args);
  }
  [$setSkewX](...args) {
    return this.setSkewX.apply(this, args);
  }
  [$setSkewY](...args) {
    return this.setSkewY.apply(this, args);
  }
  [$setTranslate](...args) {
    return this.setTranslate.apply(this, args);
  }
};
dart.addTypeTests(svg$.Transform);
const angle$0 = Symbol("Transform.angle");
const matrix$ = Symbol("Transform.matrix");
const type$41 = Symbol("Transform.type");
dart.setMethodSignature(svg$.Transform, () => ({
  __proto__: dart.getMethods(svg$.Transform.__proto__),
  [$setMatrix]: dart.fnType(dart.void, [svg$.Matrix]),
  [$setRotate]: dart.fnType(dart.void, [core.num, core.num, core.num]),
  [$setScale]: dart.fnType(dart.void, [core.num, core.num]),
  [$setSkewX]: dart.fnType(dart.void, [core.num]),
  [$setSkewY]: dart.fnType(dart.void, [core.num]),
  [$setTranslate]: dart.fnType(dart.void, [core.num, core.num])
}));
dart.setFieldSignature(svg$.Transform, () => ({
  __proto__: dart.getFields(svg$.Transform.__proto__),
  [$angle]: dart.finalFieldType(core.num),
  [$matrix]: dart.finalFieldType(svg$.Matrix),
  [$type]: dart.finalFieldType(core.int)
}));
dart.defineLazy(svg$.Transform, {
  /*svg$.Transform.SVG_TRANSFORM_MATRIX*/get SVG_TRANSFORM_MATRIX() {
    return 1;
  },
  /*svg$.Transform.SVG_TRANSFORM_ROTATE*/get SVG_TRANSFORM_ROTATE() {
    return 4;
  },
  /*svg$.Transform.SVG_TRANSFORM_SCALE*/get SVG_TRANSFORM_SCALE() {
    return 3;
  },
  /*svg$.Transform.SVG_TRANSFORM_SKEWX*/get SVG_TRANSFORM_SKEWX() {
    return 5;
  },
  /*svg$.Transform.SVG_TRANSFORM_SKEWY*/get SVG_TRANSFORM_SKEWY() {
    return 6;
  },
  /*svg$.Transform.SVG_TRANSFORM_TRANSLATE*/get SVG_TRANSFORM_TRANSLATE() {
    return 2;
  },
  /*svg$.Transform.SVG_TRANSFORM_UNKNOWN*/get SVG_TRANSFORM_UNKNOWN() {
    return 0;
  }
});
dart.registerExtension("SVGTransform", svg$.Transform);
const Interceptor_ListMixin$$16 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$16.new = function() {
  Interceptor_ListMixin$$16.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$16.prototype;
dart.applyMixin(Interceptor_ListMixin$$16, collection.ListMixin$(svg$.Transform));
const Interceptor_ImmutableListMixin$$16 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$16 {};
(Interceptor_ImmutableListMixin$$16.new = function() {
  Interceptor_ImmutableListMixin$$16.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$16.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$16, html$.ImmutableListMixin$(svg$.Transform));
svg$.TransformList = class TransformList extends Interceptor_ImmutableListMixin$$16 {
  get [$length]() {
    return this.length;
  }
  get [$numberOfItems]() {
    return this.numberOfItems;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this.getItem(index);
  }
  [$_set](index, value) {
    svg$.Transform._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [__setter__$](...args) {
    return this.__setter__.apply(this, args);
  }
  [$appendItem](...args) {
    return this.appendItem.apply(this, args);
  }
  [$clear](...args) {
    return this.clear.apply(this, args);
  }
  [$consolidate](...args) {
    return this.consolidate.apply(this, args);
  }
  [$createSvgTransformFromMatrix](...args) {
    return this.createSVGTransformFromMatrix.apply(this, args);
  }
  [$getItem](...args) {
    return this.getItem.apply(this, args);
  }
  [$initialize](...args) {
    return this.initialize.apply(this, args);
  }
  [$insertItemBefore](...args) {
    return this.insertItemBefore.apply(this, args);
  }
  [$removeItem](...args) {
    return this.removeItem.apply(this, args);
  }
  [$replaceItem](...args) {
    return this.replaceItem.apply(this, args);
  }
};
svg$.TransformList.prototype[dart.isList] = true;
dart.addTypeTests(svg$.TransformList);
const numberOfItems$2 = Symbol("TransformList.numberOfItems");
svg$.TransformList[dart.implements] = () => [ListOfTransform()];
dart.setMethodSignature(svg$.TransformList, () => ({
  __proto__: dart.getMethods(svg$.TransformList.__proto__),
  [$_get]: dart.fnType(svg$.Transform, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(svg$.Transform, [core.int]),
  [__setter__$]: dart.fnType(dart.void, [core.int, svg$.Transform]),
  [$appendItem]: dart.fnType(svg$.Transform, [svg$.Transform]),
  [$clear]: dart.fnType(dart.void, []),
  [$consolidate]: dart.fnType(svg$.Transform, []),
  [$createSvgTransformFromMatrix]: dart.fnType(svg$.Transform, [svg$.Matrix]),
  [$getItem]: dart.fnType(svg$.Transform, [core.int]),
  [$initialize]: dart.fnType(svg$.Transform, [svg$.Transform]),
  [$insertItemBefore]: dart.fnType(svg$.Transform, [svg$.Transform, core.int]),
  [$removeItem]: dart.fnType(svg$.Transform, [core.int]),
  [$replaceItem]: dart.fnType(svg$.Transform, [svg$.Transform, core.int])
}));
dart.setGetterSignature(svg$.TransformList, () => ({
  __proto__: dart.getGetters(svg$.TransformList.__proto__),
  [$length]: core.int,
  [$first]: svg$.Transform,
  [$last]: svg$.Transform,
  [$single]: svg$.Transform
}));
dart.setSetterSignature(svg$.TransformList, () => ({
  __proto__: dart.getSetters(svg$.TransformList.__proto__),
  [$length]: core.int
}));
dart.setFieldSignature(svg$.TransformList, () => ({
  __proto__: dart.getFields(svg$.TransformList.__proto__),
  [$numberOfItems]: dart.finalFieldType(core.int)
}));
dart.registerExtension("SVGTransformList", svg$.TransformList);
svg$.UnitTypes = class UnitTypes extends _interceptors.Interceptor {};
dart.addTypeTests(svg$.UnitTypes);
dart.defineLazy(svg$.UnitTypes, {
  /*svg$.UnitTypes.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX*/get SVG_UNIT_TYPE_OBJECTBOUNDINGBOX() {
    return 2;
  },
  /*svg$.UnitTypes.SVG_UNIT_TYPE_UNKNOWN*/get SVG_UNIT_TYPE_UNKNOWN() {
    return 0;
  },
  /*svg$.UnitTypes.SVG_UNIT_TYPE_USERSPACEONUSE*/get SVG_UNIT_TYPE_USERSPACEONUSE() {
    return 1;
  }
});
dart.registerExtension("SVGUnitTypes", svg$.UnitTypes);
svg$.UriReference = class UriReference extends _interceptors.Interceptor {
  get href() {
    return this[href$16];
  }
  set href(value) {
    super.href = value;
  }
};
dart.addTypeTests(svg$.UriReference);
const href$16 = Symbol("UriReference.href");
dart.setFieldSignature(svg$.UriReference, () => ({
  __proto__: dart.getFields(svg$.UriReference.__proto__),
  href: dart.finalFieldType(svg$.AnimatedString)
}));
dart.defineExtensionAccessors(svg$.UriReference, ['href']);
svg$.UseElement = class UseElement extends svg$.GraphicsElement {
  static new() {
    return svg$.UseElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("use"));
  }
  get [$height]() {
    return this.height;
  }
  get [$width]() {
    return this.width;
  }
  get [$x]() {
    return this.x;
  }
  get [$y]() {
    return this.y;
  }
  get [$href]() {
    return this.href;
  }
};
(svg$.UseElement.created = function() {
  this[height$39] = null;
  this[width$41] = null;
  this[x$36] = null;
  this[y$35] = null;
  this[href$17] = null;
  svg$.UseElement.__proto__.created.call(this);
}).prototype = svg$.UseElement.prototype;
dart.addTypeTests(svg$.UseElement);
const height$39 = Symbol("UseElement.height");
const width$41 = Symbol("UseElement.width");
const x$36 = Symbol("UseElement.x");
const y$35 = Symbol("UseElement.y");
const href$17 = Symbol("UseElement.href");
svg$.UseElement[dart.implements] = () => [svg$.UriReference];
dart.setFieldSignature(svg$.UseElement, () => ({
  __proto__: dart.getFields(svg$.UseElement.__proto__),
  [$height]: dart.finalFieldType(svg$.AnimatedLength),
  [$width]: dart.finalFieldType(svg$.AnimatedLength),
  [$x]: dart.finalFieldType(svg$.AnimatedLength),
  [$y]: dart.finalFieldType(svg$.AnimatedLength),
  [$href]: dart.finalFieldType(svg$.AnimatedString)
}));
dart.registerExtension("SVGUseElement", svg$.UseElement);
svg$.ViewElement = class ViewElement extends svg$.SvgElement {
  static new() {
    return svg$.ViewElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("view"));
  }
  get [$preserveAspectRatio]() {
    return this.preserveAspectRatio;
  }
  get [$viewBox]() {
    return this.viewBox;
  }
  get [$zoomAndPan]() {
    return this.zoomAndPan;
  }
  set [$zoomAndPan](value) {
    this.zoomAndPan = value;
  }
};
(svg$.ViewElement.created = function() {
  this[preserveAspectRatio$5] = null;
  this[viewBox$3] = null;
  this[zoomAndPan$] = null;
  svg$.ViewElement.__proto__.created.call(this);
}).prototype = svg$.ViewElement.prototype;
dart.addTypeTests(svg$.ViewElement);
const preserveAspectRatio$5 = Symbol("ViewElement.preserveAspectRatio");
const viewBox$3 = Symbol("ViewElement.viewBox");
const zoomAndPan$ = Symbol("ViewElement.zoomAndPan");
svg$.ViewElement[dart.implements] = () => [svg$.FitToViewBox, svg$.ZoomAndPan];
dart.setFieldSignature(svg$.ViewElement, () => ({
  __proto__: dart.getFields(svg$.ViewElement.__proto__),
  [$preserveAspectRatio]: dart.finalFieldType(svg$.AnimatedPreserveAspectRatio),
  [$viewBox]: dart.finalFieldType(svg$.AnimatedRect),
  [$zoomAndPan]: dart.fieldType(core.int)
}));
dart.registerExtension("SVGViewElement", svg$.ViewElement);
svg$.ZoomAndPan = class ZoomAndPan extends _interceptors.Interceptor {
  get zoomAndPan() {
    return this[zoomAndPan$0];
  }
  set zoomAndPan(value) {
    this[zoomAndPan$0] = value;
  }
};
dart.addTypeTests(svg$.ZoomAndPan);
const zoomAndPan$0 = Symbol("ZoomAndPan.zoomAndPan");
dart.setFieldSignature(svg$.ZoomAndPan, () => ({
  __proto__: dart.getFields(svg$.ZoomAndPan.__proto__),
  zoomAndPan: dart.fieldType(core.int)
}));
dart.defineExtensionAccessors(svg$.ZoomAndPan, ['zoomAndPan']);
dart.defineLazy(svg$.ZoomAndPan, {
  /*svg$.ZoomAndPan.SVG_ZOOMANDPAN_DISABLE*/get SVG_ZOOMANDPAN_DISABLE() {
    return 1;
  },
  /*svg$.ZoomAndPan.SVG_ZOOMANDPAN_MAGNIFY*/get SVG_ZOOMANDPAN_MAGNIFY() {
    return 2;
  },
  /*svg$.ZoomAndPan.SVG_ZOOMANDPAN_UNKNOWN*/get SVG_ZOOMANDPAN_UNKNOWN() {
    return 0;
  }
});
svg$._SVGFEDropShadowElement = class _SVGFEDropShadowElement extends svg$.SvgElement {};
(svg$._SVGFEDropShadowElement.created = function() {
  svg$._SVGFEDropShadowElement.__proto__.created.call(this);
}).prototype = svg$._SVGFEDropShadowElement.prototype;
dart.addTypeTests(svg$._SVGFEDropShadowElement);
svg$._SVGFEDropShadowElement[dart.implements] = () => [svg$.FilterPrimitiveStandardAttributes];
dart.registerExtension("SVGFEDropShadowElement", svg$._SVGFEDropShadowElement);
svg$._SVGMPathElement = class _SVGMPathElement extends svg$.SvgElement {
  static new() {
    return svg$._SVGMPathElement._check(svg$._SvgElementFactoryProvider.createSvgElement_tag("mpath"));
  }
};
(svg$._SVGMPathElement.created = function() {
  svg$._SVGMPathElement.__proto__.created.call(this);
}).prototype = svg$._SVGMPathElement.prototype;
dart.addTypeTests(svg$._SVGMPathElement);
svg$._SVGMPathElement[dart.implements] = () => [svg$.UriReference];
dart.registerExtension("SVGMPathElement", svg$._SVGMPathElement);
const _connect = Symbol('_connect');
web_audio.AudioNode = class AudioNode extends html$.EventTarget {
  get [$channelCount]() {
    return this.channelCount;
  }
  set [$channelCount](value) {
    this.channelCount = value;
  }
  get [$channelCountMode]() {
    return this.channelCountMode;
  }
  set [$channelCountMode](value) {
    this.channelCountMode = value;
  }
  get [$channelInterpretation]() {
    return this.channelInterpretation;
  }
  set [$channelInterpretation](value) {
    this.channelInterpretation = value;
  }
  get [$context]() {
    return this.context;
  }
  get [$numberOfInputs]() {
    return this.numberOfInputs;
  }
  get [$numberOfOutputs]() {
    return this.numberOfOutputs;
  }
  [_connect](...args) {
    return this.connect.apply(this, args);
  }
  [$disconnect](...args) {
    return this.disconnect.apply(this, args);
  }
  [$connectNode](destination, output, input) {
    if (output === void 0) output = 0;
    if (input === void 0) input = 0;
    this[_connect](destination, output, input);
  }
  [$connectParam](destination, output) {
    if (output === void 0) output = 0;
    this[_connect](destination, output);
  }
};
dart.addTypeTests(web_audio.AudioNode);
const channelCount = Symbol("AudioNode.channelCount");
const channelCountMode = Symbol("AudioNode.channelCountMode");
const channelInterpretation = Symbol("AudioNode.channelInterpretation");
const context = Symbol("AudioNode.context");
const numberOfInputs = Symbol("AudioNode.numberOfInputs");
const numberOfOutputs = Symbol("AudioNode.numberOfOutputs");
dart.setMethodSignature(web_audio.AudioNode, () => ({
  __proto__: dart.getMethods(web_audio.AudioNode.__proto__),
  [_connect]: dart.fnType(web_audio.AudioNode, [dart.dynamic], [core.int, core.int]),
  [$disconnect]: dart.fnType(dart.void, [], [dart.dynamic, core.int, core.int]),
  [$connectNode]: dart.fnType(dart.void, [web_audio.AudioNode], [core.int, core.int]),
  [$connectParam]: dart.fnType(dart.void, [web_audio.AudioParam], [core.int])
}));
dart.setFieldSignature(web_audio.AudioNode, () => ({
  __proto__: dart.getFields(web_audio.AudioNode.__proto__),
  [$channelCount]: dart.fieldType(core.int),
  [$channelCountMode]: dart.fieldType(core.String),
  [$channelInterpretation]: dart.fieldType(core.String),
  [$context]: dart.finalFieldType(web_audio.BaseAudioContext),
  [$numberOfInputs]: dart.finalFieldType(core.int),
  [$numberOfOutputs]: dart.finalFieldType(core.int)
}));
dart.registerExtension("AudioNode", web_audio.AudioNode);
web_audio.AnalyserNode = class AnalyserNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.AnalyserNode._create_1(context, options_1);
    }
    return web_audio.AnalyserNode._create_2(context);
  }
  static _create_1(context, options) {
    return new AnalyserNode(context, options);
  }
  static _create_2(context) {
    return new AnalyserNode(context);
  }
  get [$fftSize]() {
    return this.fftSize;
  }
  set [$fftSize](value) {
    this.fftSize = value;
  }
  get [$frequencyBinCount]() {
    return this.frequencyBinCount;
  }
  get [$maxDecibels]() {
    return this.maxDecibels;
  }
  set [$maxDecibels](value) {
    this.maxDecibels = value;
  }
  get [$minDecibels]() {
    return this.minDecibels;
  }
  set [$minDecibels](value) {
    this.minDecibels = value;
  }
  get [$smoothingTimeConstant]() {
    return this.smoothingTimeConstant;
  }
  set [$smoothingTimeConstant](value) {
    this.smoothingTimeConstant = value;
  }
  [$getByteFrequencyData](...args) {
    return this.getByteFrequencyData.apply(this, args);
  }
  [$getByteTimeDomainData](...args) {
    return this.getByteTimeDomainData.apply(this, args);
  }
  [$getFloatFrequencyData](...args) {
    return this.getFloatFrequencyData.apply(this, args);
  }
  [$getFloatTimeDomainData](...args) {
    return this.getFloatTimeDomainData.apply(this, args);
  }
};
dart.addTypeTests(web_audio.AnalyserNode);
const fftSize = Symbol("AnalyserNode.fftSize");
const frequencyBinCount = Symbol("AnalyserNode.frequencyBinCount");
const maxDecibels = Symbol("AnalyserNode.maxDecibels");
const minDecibels = Symbol("AnalyserNode.minDecibels");
const smoothingTimeConstant = Symbol("AnalyserNode.smoothingTimeConstant");
dart.setMethodSignature(web_audio.AnalyserNode, () => ({
  __proto__: dart.getMethods(web_audio.AnalyserNode.__proto__),
  [$getByteFrequencyData]: dart.fnType(dart.void, [typed_data.Uint8List]),
  [$getByteTimeDomainData]: dart.fnType(dart.void, [typed_data.Uint8List]),
  [$getFloatFrequencyData]: dart.fnType(dart.void, [typed_data.Float32List]),
  [$getFloatTimeDomainData]: dart.fnType(dart.void, [typed_data.Float32List])
}));
dart.setFieldSignature(web_audio.AnalyserNode, () => ({
  __proto__: dart.getFields(web_audio.AnalyserNode.__proto__),
  [$fftSize]: dart.fieldType(core.int),
  [$frequencyBinCount]: dart.finalFieldType(core.int),
  [$maxDecibels]: dart.fieldType(core.num),
  [$minDecibels]: dart.fieldType(core.num),
  [$smoothingTimeConstant]: dart.fieldType(core.num)
}));
dart.registerExtension("AnalyserNode", web_audio.AnalyserNode);
dart.registerExtension("RealtimeAnalyserNode", web_audio.AnalyserNode);
web_audio.AudioBuffer = class AudioBuffer$ extends _interceptors.Interceptor {
  static new(options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    return web_audio.AudioBuffer._create_1(options_1);
  }
  static _create_1(options) {
    return new AudioBuffer(options);
  }
  get [$duration]() {
    return this.duration;
  }
  get [$length]() {
    return this.length;
  }
  get [$numberOfChannels]() {
    return this.numberOfChannels;
  }
  get [$sampleRate]() {
    return this.sampleRate;
  }
  [$copyFromChannel](...args) {
    return this.copyFromChannel.apply(this, args);
  }
  [$copyToChannel](...args) {
    return this.copyToChannel.apply(this, args);
  }
  [$getChannelData](...args) {
    return this.getChannelData.apply(this, args);
  }
};
dart.addTypeTests(web_audio.AudioBuffer);
const duration$5 = Symbol("AudioBuffer.duration");
const length$18 = Symbol("AudioBuffer.length");
const numberOfChannels = Symbol("AudioBuffer.numberOfChannels");
const sampleRate = Symbol("AudioBuffer.sampleRate");
dart.setMethodSignature(web_audio.AudioBuffer, () => ({
  __proto__: dart.getMethods(web_audio.AudioBuffer.__proto__),
  [$copyFromChannel]: dart.fnType(dart.void, [typed_data.Float32List, core.int], [core.int]),
  [$copyToChannel]: dart.fnType(dart.void, [typed_data.Float32List, core.int], [core.int]),
  [$getChannelData]: dart.fnType(typed_data.Float32List, [core.int])
}));
dart.setFieldSignature(web_audio.AudioBuffer, () => ({
  __proto__: dart.getFields(web_audio.AudioBuffer.__proto__),
  [$duration]: dart.finalFieldType(core.num),
  [$length]: dart.finalFieldType(core.int),
  [$numberOfChannels]: dart.finalFieldType(core.int),
  [$sampleRate]: dart.finalFieldType(core.num)
}));
dart.registerExtension("AudioBuffer", web_audio.AudioBuffer);
web_audio.AudioScheduledSourceNode = class AudioScheduledSourceNode extends web_audio.AudioNode {
  [$start2](...args) {
    return this.start.apply(this, args);
  }
  [$stop](...args) {
    return this.stop.apply(this, args);
  }
  get [$onEnded]() {
    return web_audio.AudioScheduledSourceNode.endedEvent.forTarget(this);
  }
};
dart.addTypeTests(web_audio.AudioScheduledSourceNode);
dart.setMethodSignature(web_audio.AudioScheduledSourceNode, () => ({
  __proto__: dart.getMethods(web_audio.AudioScheduledSourceNode.__proto__),
  [$start2]: dart.fnType(dart.void, [], [core.num]),
  [$stop]: dart.fnType(dart.void, [], [core.num])
}));
dart.setGetterSignature(web_audio.AudioScheduledSourceNode, () => ({
  __proto__: dart.getGetters(web_audio.AudioScheduledSourceNode.__proto__),
  [$onEnded]: async.Stream$(html$.Event)
}));
dart.defineLazy(web_audio.AudioScheduledSourceNode, {
  /*web_audio.AudioScheduledSourceNode.endedEvent*/get endedEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("ended"));
  }
});
dart.registerExtension("AudioScheduledSourceNode", web_audio.AudioScheduledSourceNode);
web_audio.AudioBufferSourceNode = class AudioBufferSourceNode$ extends web_audio.AudioScheduledSourceNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.AudioBufferSourceNode._create_1(context, options_1);
    }
    return web_audio.AudioBufferSourceNode._create_2(context);
  }
  static _create_1(context, options) {
    return new AudioBufferSourceNode(context, options);
  }
  static _create_2(context) {
    return new AudioBufferSourceNode(context);
  }
  get [$buffer]() {
    return this.buffer;
  }
  set [$buffer](value) {
    this.buffer = value;
  }
  get [$detune]() {
    return this.detune;
  }
  get [$loop]() {
    return this.loop;
  }
  set [$loop](value) {
    this.loop = value;
  }
  get [$loopEnd]() {
    return this.loopEnd;
  }
  set [$loopEnd](value) {
    this.loopEnd = value;
  }
  get [$loopStart]() {
    return this.loopStart;
  }
  set [$loopStart](value) {
    this.loopStart = value;
  }
  get [$playbackRate]() {
    return this.playbackRate;
  }
  [$start](...args) {
    return this.start.apply(this, args);
  }
};
dart.addTypeTests(web_audio.AudioBufferSourceNode);
const buffer = Symbol("AudioBufferSourceNode.buffer");
const detune = Symbol("AudioBufferSourceNode.detune");
const loop$ = Symbol("AudioBufferSourceNode.loop");
const loopEnd = Symbol("AudioBufferSourceNode.loopEnd");
const loopStart = Symbol("AudioBufferSourceNode.loopStart");
const playbackRate$0 = Symbol("AudioBufferSourceNode.playbackRate");
dart.setMethodSignature(web_audio.AudioBufferSourceNode, () => ({
  __proto__: dart.getMethods(web_audio.AudioBufferSourceNode.__proto__),
  [$start]: dart.fnType(dart.void, [], [core.num, core.num, core.num])
}));
dart.setFieldSignature(web_audio.AudioBufferSourceNode, () => ({
  __proto__: dart.getFields(web_audio.AudioBufferSourceNode.__proto__),
  [$buffer]: dart.fieldType(web_audio.AudioBuffer),
  [$detune]: dart.finalFieldType(web_audio.AudioParam),
  [$loop]: dart.fieldType(core.bool),
  [$loopEnd]: dart.fieldType(core.num),
  [$loopStart]: dart.fieldType(core.num),
  [$playbackRate]: dart.finalFieldType(web_audio.AudioParam)
}));
dart.registerExtension("AudioBufferSourceNode", web_audio.AudioBufferSourceNode);
const _getOutputTimestamp_1 = Symbol('_getOutputTimestamp_1');
const _decodeAudioData = Symbol('_decodeAudioData');
const _createPeriodicWave_1 = Symbol('_createPeriodicWave_1');
const _createPeriodicWave_2 = Symbol('_createPeriodicWave_2');
web_audio.BaseAudioContext = class BaseAudioContext extends html$.EventTarget {
  get [$currentTime]() {
    return this.currentTime;
  }
  get [$destination]() {
    return this.destination;
  }
  get [$listener]() {
    return this.listener;
  }
  get [$sampleRate]() {
    return this.sampleRate;
  }
  get [$state]() {
    return this.state;
  }
  [$createAnalyser](...args) {
    return this.createAnalyser.apply(this, args);
  }
  [$createBiquadFilter](...args) {
    return this.createBiquadFilter.apply(this, args);
  }
  [$createBuffer](...args) {
    return this.createBuffer.apply(this, args);
  }
  [$createBufferSource](...args) {
    return this.createBufferSource.apply(this, args);
  }
  [$createChannelMerger](...args) {
    return this.createChannelMerger.apply(this, args);
  }
  [$createChannelSplitter](...args) {
    return this.createChannelSplitter.apply(this, args);
  }
  [$createConstantSource](...args) {
    return this.createConstantSource.apply(this, args);
  }
  [$createConvolver](...args) {
    return this.createConvolver.apply(this, args);
  }
  [$createDelay](...args) {
    return this.createDelay.apply(this, args);
  }
  [$createDynamicsCompressor](...args) {
    return this.createDynamicsCompressor.apply(this, args);
  }
  [$createGain](...args) {
    return this.createGain.apply(this, args);
  }
  [$createIirFilter](...args) {
    return this.createIIRFilter.apply(this, args);
  }
  [$createMediaElementSource](...args) {
    return this.createMediaElementSource.apply(this, args);
  }
  [$createMediaStreamDestination](...args) {
    return this.createMediaStreamDestination.apply(this, args);
  }
  [$createMediaStreamSource](...args) {
    return this.createMediaStreamSource.apply(this, args);
  }
  [$createOscillator](...args) {
    return this.createOscillator.apply(this, args);
  }
  [$createPanner](...args) {
    return this.createPanner.apply(this, args);
  }
  [$createPeriodicWave](real, imag, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return this[_createPeriodicWave_1](real, imag, options_1);
    }
    return this[_createPeriodicWave_2](real, imag);
  }
  [_createPeriodicWave_1](...args) {
    return this.createPeriodicWave.apply(this, args);
  }
  [_createPeriodicWave_2](...args) {
    return this.createPeriodicWave.apply(this, args);
  }
  [$createScriptProcessor](...args) {
    return this.createScriptProcessor.apply(this, args);
  }
  [$createStereoPanner](...args) {
    return this.createStereoPanner.apply(this, args);
  }
  [$createWaveShaper](...args) {
    return this.createWaveShaper.apply(this, args);
  }
  [$decodeAudioData](audioData, successCallback, errorCallback) {
    if (successCallback === void 0) successCallback = null;
    if (errorCallback === void 0) errorCallback = null;
    return html$.promiseToFuture(web_audio.AudioBuffer, this.decodeAudioData(audioData, successCallback, errorCallback));
  }
  [$resume]() {
    return html$.promiseToFuture(dart.dynamic, this.resume());
  }
};
dart.addTypeTests(web_audio.BaseAudioContext);
const currentTime$2 = Symbol("BaseAudioContext.currentTime");
const destination = Symbol("BaseAudioContext.destination");
const listener = Symbol("BaseAudioContext.listener");
const sampleRate$ = Symbol("BaseAudioContext.sampleRate");
const state$6 = Symbol("BaseAudioContext.state");
dart.setMethodSignature(web_audio.BaseAudioContext, () => ({
  __proto__: dart.getMethods(web_audio.BaseAudioContext.__proto__),
  [$createAnalyser]: dart.fnType(web_audio.AnalyserNode, []),
  [$createBiquadFilter]: dart.fnType(web_audio.BiquadFilterNode, []),
  [$createBuffer]: dart.fnType(web_audio.AudioBuffer, [core.int, core.int, core.num]),
  [$createBufferSource]: dart.fnType(web_audio.AudioBufferSourceNode, []),
  [$createChannelMerger]: dart.fnType(web_audio.ChannelMergerNode, [], [core.int]),
  [$createChannelSplitter]: dart.fnType(web_audio.ChannelSplitterNode, [], [core.int]),
  [$createConstantSource]: dart.fnType(web_audio.ConstantSourceNode, []),
  [$createConvolver]: dart.fnType(web_audio.ConvolverNode, []),
  [$createDelay]: dart.fnType(web_audio.DelayNode, [], [core.num]),
  [$createDynamicsCompressor]: dart.fnType(web_audio.DynamicsCompressorNode, []),
  [$createGain]: dart.fnType(web_audio.GainNode, []),
  [$createIirFilter]: dart.fnType(web_audio.IirFilterNode, [core.List$(core.num), core.List$(core.num)]),
  [$createMediaElementSource]: dart.fnType(web_audio.MediaElementAudioSourceNode, [html$.MediaElement]),
  [$createMediaStreamDestination]: dart.fnType(web_audio.MediaStreamAudioDestinationNode, []),
  [$createMediaStreamSource]: dart.fnType(web_audio.MediaStreamAudioSourceNode, [html$.MediaStream]),
  [$createOscillator]: dart.fnType(web_audio.OscillatorNode, []),
  [$createPanner]: dart.fnType(web_audio.PannerNode, []),
  [$createPeriodicWave]: dart.fnType(web_audio.PeriodicWave, [core.List$(core.num), core.List$(core.num)], [core.Map]),
  [_createPeriodicWave_1]: dart.fnType(web_audio.PeriodicWave, [core.List$(core.num), core.List$(core.num), dart.dynamic]),
  [_createPeriodicWave_2]: dart.fnType(web_audio.PeriodicWave, [core.List$(core.num), core.List$(core.num)]),
  [$createScriptProcessor]: dart.fnType(web_audio.ScriptProcessorNode, [], [core.int, core.int, core.int]),
  [$createStereoPanner]: dart.fnType(web_audio.StereoPannerNode, []),
  [$createWaveShaper]: dart.fnType(web_audio.WaveShaperNode, []),
  [$decodeAudioData]: dart.fnType(async.Future$(web_audio.AudioBuffer), [typed_data.ByteBuffer], [dart.fnType(dart.void, [web_audio.AudioBuffer]), dart.fnType(dart.void, [html$.DomException])]),
  [$resume]: dart.fnType(async.Future, [])
}));
dart.setFieldSignature(web_audio.BaseAudioContext, () => ({
  __proto__: dart.getFields(web_audio.BaseAudioContext.__proto__),
  [$currentTime]: dart.finalFieldType(core.num),
  [$destination]: dart.finalFieldType(web_audio.AudioDestinationNode),
  [$listener]: dart.finalFieldType(web_audio.AudioListener),
  [$sampleRate]: dart.finalFieldType(core.num),
  [$state]: dart.finalFieldType(core.String)
}));
dart.registerExtension("BaseAudioContext", web_audio.BaseAudioContext);
web_audio.AudioContext = class AudioContext extends web_audio.BaseAudioContext {
  static get supported() {
    return !!(window.AudioContext || window.webkitAudioContext);
  }
  get [$baseLatency]() {
    return this.baseLatency;
  }
  [$close]() {
    return html$.promiseToFuture(dart.dynamic, this.close());
  }
  [$getOutputTimestamp]() {
    return html_common.convertNativeToDart_Dictionary(this[_getOutputTimestamp_1]());
  }
  [_getOutputTimestamp_1](...args) {
    return this.getOutputTimestamp.apply(this, args);
  }
  [$suspend]() {
    return html$.promiseToFuture(dart.dynamic, this.suspend());
  }
  static new() {
    return new (window.AudioContext || window.webkitAudioContext)();
  }
  [$createGain]() {
    if (this.createGain !== undefined) {
      return this.createGain();
    } else {
      return this.createGainNode();
    }
  }
  [$createScriptProcessor](bufferSize, numberOfInputChannels, numberOfOutputChannels) {
    if (bufferSize === void 0) bufferSize = null;
    if (numberOfInputChannels === void 0) numberOfInputChannels = null;
    if (numberOfOutputChannels === void 0) numberOfOutputChannels = null;
    let func = this.createScriptProcessor || this.createJavaScriptNode;
    if (numberOfOutputChannels != null) {
      return func.call(this, bufferSize, numberOfInputChannels, numberOfOutputChannels);
    } else if (numberOfInputChannels != null) {
      return func.call(this, bufferSize, numberOfInputChannels);
    } else if (bufferSize != null) {
      return func.call(this, bufferSize);
    } else {
      return func.call(this);
    }
  }
  [_decodeAudioData](...args) {
    return this.decodeAudioData.apply(this, args);
  }
  [$decodeAudioData](audioData, successCallback, errorCallback) {
    if (successCallback === void 0) successCallback = null;
    if (errorCallback === void 0) errorCallback = null;
    if (successCallback != null && errorCallback != null) {
      return FutureOfAudioBuffer()._check(this[_decodeAudioData](audioData, successCallback, errorCallback));
    }
    let completer = CompleterOfAudioBuffer().new();
    this[_decodeAudioData](audioData, dart.fn(value => {
      completer.complete(value);
    }, AudioBufferToNull()), dart.fn(error => {
      if (error == null) {
        completer.completeError("");
      } else {
        completer.completeError(error);
      }
    }, DomExceptionToNull()));
    return completer.future;
  }
};
dart.addTypeTests(web_audio.AudioContext);
const baseLatency = Symbol("AudioContext.baseLatency");
dart.setMethodSignature(web_audio.AudioContext, () => ({
  __proto__: dart.getMethods(web_audio.AudioContext.__proto__),
  [$close]: dart.fnType(async.Future, []),
  [$getOutputTimestamp]: dart.fnType(core.Map, []),
  [_getOutputTimestamp_1]: dart.fnType(dart.dynamic, []),
  [$suspend]: dart.fnType(async.Future, []),
  [_decodeAudioData]: dart.fnType(async.Future, [typed_data.ByteBuffer], [dart.fnType(dart.void, [web_audio.AudioBuffer]), dart.fnType(dart.void, [html$.DomException])])
}));
dart.setFieldSignature(web_audio.AudioContext, () => ({
  __proto__: dart.getFields(web_audio.AudioContext.__proto__),
  [$baseLatency]: dart.finalFieldType(core.num)
}));
dart.registerExtension("AudioContext", web_audio.AudioContext);
dart.registerExtension("webkitAudioContext", web_audio.AudioContext);
web_audio.AudioDestinationNode = class AudioDestinationNode extends web_audio.AudioNode {
  get [$maxChannelCount]() {
    return this.maxChannelCount;
  }
};
dart.addTypeTests(web_audio.AudioDestinationNode);
const maxChannelCount = Symbol("AudioDestinationNode.maxChannelCount");
dart.setFieldSignature(web_audio.AudioDestinationNode, () => ({
  __proto__: dart.getFields(web_audio.AudioDestinationNode.__proto__),
  [$maxChannelCount]: dart.finalFieldType(core.int)
}));
dart.registerExtension("AudioDestinationNode", web_audio.AudioDestinationNode);
web_audio.AudioListener = class AudioListener extends _interceptors.Interceptor {
  get [$forwardX]() {
    return this.forwardX;
  }
  get [$forwardY]() {
    return this.forwardY;
  }
  get [$forwardZ]() {
    return this.forwardZ;
  }
  get [$positionX]() {
    return this.positionX;
  }
  get [$positionY]() {
    return this.positionY;
  }
  get [$positionZ]() {
    return this.positionZ;
  }
  get [$upX]() {
    return this.upX;
  }
  get [$upY]() {
    return this.upY;
  }
  get [$upZ]() {
    return this.upZ;
  }
  [$setOrientation](...args) {
    return this.setOrientation.apply(this, args);
  }
  [$setPosition](...args) {
    return this.setPosition.apply(this, args);
  }
};
dart.addTypeTests(web_audio.AudioListener);
const forwardX = Symbol("AudioListener.forwardX");
const forwardY = Symbol("AudioListener.forwardY");
const forwardZ = Symbol("AudioListener.forwardZ");
const positionX$ = Symbol("AudioListener.positionX");
const positionY$ = Symbol("AudioListener.positionY");
const positionZ = Symbol("AudioListener.positionZ");
const upX = Symbol("AudioListener.upX");
const upY = Symbol("AudioListener.upY");
const upZ = Symbol("AudioListener.upZ");
dart.setMethodSignature(web_audio.AudioListener, () => ({
  __proto__: dart.getMethods(web_audio.AudioListener.__proto__),
  [$setOrientation]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num, core.num, core.num]),
  [$setPosition]: dart.fnType(dart.void, [core.num, core.num, core.num])
}));
dart.setFieldSignature(web_audio.AudioListener, () => ({
  __proto__: dart.getFields(web_audio.AudioListener.__proto__),
  [$forwardX]: dart.finalFieldType(web_audio.AudioParam),
  [$forwardY]: dart.finalFieldType(web_audio.AudioParam),
  [$forwardZ]: dart.finalFieldType(web_audio.AudioParam),
  [$positionX]: dart.finalFieldType(web_audio.AudioParam),
  [$positionY]: dart.finalFieldType(web_audio.AudioParam),
  [$positionZ]: dart.finalFieldType(web_audio.AudioParam),
  [$upX]: dart.finalFieldType(web_audio.AudioParam),
  [$upY]: dart.finalFieldType(web_audio.AudioParam),
  [$upZ]: dart.finalFieldType(web_audio.AudioParam)
}));
dart.registerExtension("AudioListener", web_audio.AudioListener);
web_audio.AudioParam = class AudioParam extends _interceptors.Interceptor {
  get [$defaultValue]() {
    return this.defaultValue;
  }
  get [$maxValue]() {
    return this.maxValue;
  }
  get [$minValue]() {
    return this.minValue;
  }
  get [$value]() {
    return this.value;
  }
  set [$value](value) {
    this.value = value;
  }
  [$cancelAndHoldAtTime](...args) {
    return this.cancelAndHoldAtTime.apply(this, args);
  }
  [$cancelScheduledValues](...args) {
    return this.cancelScheduledValues.apply(this, args);
  }
  [$exponentialRampToValueAtTime](...args) {
    return this.exponentialRampToValueAtTime.apply(this, args);
  }
  [$linearRampToValueAtTime](...args) {
    return this.linearRampToValueAtTime.apply(this, args);
  }
  [$setTargetAtTime](...args) {
    return this.setTargetAtTime.apply(this, args);
  }
  [$setValueAtTime](...args) {
    return this.setValueAtTime.apply(this, args);
  }
  [$setValueCurveAtTime](...args) {
    return this.setValueCurveAtTime.apply(this, args);
  }
};
dart.addTypeTests(web_audio.AudioParam);
const defaultValue$3 = Symbol("AudioParam.defaultValue");
const maxValue = Symbol("AudioParam.maxValue");
const minValue = Symbol("AudioParam.minValue");
const value$21 = Symbol("AudioParam.value");
dart.setMethodSignature(web_audio.AudioParam, () => ({
  __proto__: dart.getMethods(web_audio.AudioParam.__proto__),
  [$cancelAndHoldAtTime]: dart.fnType(web_audio.AudioParam, [core.num]),
  [$cancelScheduledValues]: dart.fnType(web_audio.AudioParam, [core.num]),
  [$exponentialRampToValueAtTime]: dart.fnType(web_audio.AudioParam, [core.num, core.num]),
  [$linearRampToValueAtTime]: dart.fnType(web_audio.AudioParam, [core.num, core.num]),
  [$setTargetAtTime]: dart.fnType(web_audio.AudioParam, [core.num, core.num, core.num]),
  [$setValueAtTime]: dart.fnType(web_audio.AudioParam, [core.num, core.num]),
  [$setValueCurveAtTime]: dart.fnType(web_audio.AudioParam, [core.List$(core.num), core.num, core.num])
}));
dart.setFieldSignature(web_audio.AudioParam, () => ({
  __proto__: dart.getFields(web_audio.AudioParam.__proto__),
  [$defaultValue]: dart.finalFieldType(core.num),
  [$maxValue]: dart.finalFieldType(core.num),
  [$minValue]: dart.finalFieldType(core.num),
  [$value]: dart.fieldType(core.num)
}));
dart.registerExtension("AudioParam", web_audio.AudioParam);
const _getItem$ = Symbol('_getItem');
const Interceptor_MapMixin$$2 = class Interceptor_MapMixin extends _interceptors.Interceptor {};
(Interceptor_MapMixin$$2.new = function() {
  Interceptor_MapMixin$$2.__proto__.new.call(this);
}).prototype = Interceptor_MapMixin$$2.prototype;
dart.applyMixin(Interceptor_MapMixin$$2, collection.MapMixin$(core.String, dart.dynamic));
web_audio.AudioParamMap = class AudioParamMap extends Interceptor_MapMixin$$2 {
  [_getItem$](key) {
    return html_common.convertNativeToDart_Dictionary(this.get(key));
  }
  [$addAll](other) {
    MapOfString$dynamic()._check(other);
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$containsValue](value) {
    return this[$values][$any](dart.fn(e => dart.equals(e, value), MapTobool()));
  }
  [$containsKey](key) {
    return this[_getItem$](core.String._check(key)) != null;
  }
  [$_get](key) {
    return this[_getItem$](core.String._check(key));
  }
  [$forEach](f) {
    let entries = this.entries();
    while (true) {
      let entry = entries.next();
      if (entry.done) return;
      f(entry.value[0], html_common.convertNativeToDart_Dictionary(entry.value[1]));
    }
  }
  get [$keys]() {
    let keys = JSArrayOfString().of([]);
    this[$forEach](dart.fn((k, v) => keys[$add](k), StringAnddynamicTovoid()));
    return keys;
  }
  get [$values]() {
    let values = JSArrayOfMap().of([]);
    this[$forEach](dart.fn((k, v) => values[$add](core.Map._check(v)), StringAnddynamicTovoid()));
    return values;
  }
  get [$length]() {
    return this.size;
  }
  get [$isEmpty]() {
    return this[$length] === 0;
  }
  get [$isNotEmpty]() {
    return !dart.test(this[$isEmpty]);
  }
  [$_set](key, value) {
    core.String._check(key);
    dart.throw(new core.UnsupportedError.new("Not supported"));
    return value;
  }
  [$putIfAbsent](key, ifAbsent) {
    core.String._check(key);
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$remove](key) {
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
  [$clear]() {
    dart.throw(new core.UnsupportedError.new("Not supported"));
  }
};
dart.addTypeTests(web_audio.AudioParamMap);
dart.setMethodSignature(web_audio.AudioParamMap, () => ({
  __proto__: dart.getMethods(web_audio.AudioParamMap.__proto__),
  [_getItem$]: dart.fnType(core.Map, [core.String]),
  [$addAll]: dart.fnType(dart.void, [core.Object]),
  [$containsValue]: dart.fnType(core.bool, [dart.dynamic]),
  [$containsKey]: dart.fnType(core.bool, [dart.dynamic]),
  [$_get]: dart.fnType(core.Map, [dart.dynamic]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, dart.dynamic])]),
  [$_set]: dart.fnType(dart.void, [core.Object, dart.dynamic]),
  [$putIfAbsent]: dart.fnType(dart.dynamic, [core.Object, dart.fnType(dart.dynamic, [])]),
  [$remove]: dart.fnType(core.String, [dart.dynamic]),
  [$clear]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(web_audio.AudioParamMap, () => ({
  __proto__: dart.getGetters(web_audio.AudioParamMap.__proto__),
  [$keys]: core.Iterable$(core.String),
  [$values]: core.Iterable$(core.Map),
  [$length]: core.int,
  [$isEmpty]: core.bool,
  [$isNotEmpty]: core.bool
}));
dart.registerExtension("AudioParamMap", web_audio.AudioParamMap);
web_audio.AudioProcessingEvent = class AudioProcessingEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return web_audio.AudioProcessingEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new AudioProcessingEvent(type, eventInitDict);
  }
  get [$inputBuffer]() {
    return this.inputBuffer;
  }
  get [$outputBuffer]() {
    return this.outputBuffer;
  }
  get [$playbackTime]() {
    return this.playbackTime;
  }
};
dart.addTypeTests(web_audio.AudioProcessingEvent);
const inputBuffer = Symbol("AudioProcessingEvent.inputBuffer");
const outputBuffer = Symbol("AudioProcessingEvent.outputBuffer");
const playbackTime = Symbol("AudioProcessingEvent.playbackTime");
dart.setFieldSignature(web_audio.AudioProcessingEvent, () => ({
  __proto__: dart.getFields(web_audio.AudioProcessingEvent.__proto__),
  [$inputBuffer]: dart.finalFieldType(web_audio.AudioBuffer),
  [$outputBuffer]: dart.finalFieldType(web_audio.AudioBuffer),
  [$playbackTime]: dart.finalFieldType(core.num)
}));
dart.registerExtension("AudioProcessingEvent", web_audio.AudioProcessingEvent);
web_audio.AudioTrack = class AudioTrack extends _interceptors.Interceptor {
  get [$enabled]() {
    return this.enabled;
  }
  set [$enabled](value) {
    this.enabled = value;
  }
  get [$id]() {
    return this.id;
  }
  get [$kind]() {
    return this.kind;
  }
  get [$label]() {
    return this.label;
  }
  get [$language]() {
    return this.language;
  }
  get [$sourceBuffer]() {
    return this.sourceBuffer;
  }
};
dart.addTypeTests(web_audio.AudioTrack);
const enabled$ = Symbol("AudioTrack.enabled");
const id$18 = Symbol("AudioTrack.id");
const kind$4 = Symbol("AudioTrack.kind");
const label$8 = Symbol("AudioTrack.label");
const language$2 = Symbol("AudioTrack.language");
const sourceBuffer$ = Symbol("AudioTrack.sourceBuffer");
dart.setFieldSignature(web_audio.AudioTrack, () => ({
  __proto__: dart.getFields(web_audio.AudioTrack.__proto__),
  [$enabled]: dart.fieldType(core.bool),
  [$id]: dart.finalFieldType(core.String),
  [$kind]: dart.finalFieldType(core.String),
  [$label]: dart.finalFieldType(core.String),
  [$language]: dart.finalFieldType(core.String),
  [$sourceBuffer]: dart.finalFieldType(html$.SourceBuffer)
}));
dart.registerExtension("AudioTrack", web_audio.AudioTrack);
const __getter__$ = Symbol('__getter__');
web_audio.AudioTrackList = class AudioTrackList extends html$.EventTarget {
  get [$length]() {
    return this.length;
  }
  [__getter__$](...args) {
    return this.__getter__.apply(this, args);
  }
  [$getTrackById](...args) {
    return this.getTrackById.apply(this, args);
  }
  get [$onChange]() {
    return web_audio.AudioTrackList.changeEvent.forTarget(this);
  }
};
dart.addTypeTests(web_audio.AudioTrackList);
const length$19 = Symbol("AudioTrackList.length");
dart.setMethodSignature(web_audio.AudioTrackList, () => ({
  __proto__: dart.getMethods(web_audio.AudioTrackList.__proto__),
  [__getter__$]: dart.fnType(web_audio.AudioTrack, [core.int]),
  [$getTrackById]: dart.fnType(web_audio.AudioTrack, [core.String])
}));
dart.setGetterSignature(web_audio.AudioTrackList, () => ({
  __proto__: dart.getGetters(web_audio.AudioTrackList.__proto__),
  [$onChange]: async.Stream$(html$.Event)
}));
dart.setFieldSignature(web_audio.AudioTrackList, () => ({
  __proto__: dart.getFields(web_audio.AudioTrackList.__proto__),
  [$length]: dart.finalFieldType(core.int)
}));
dart.defineLazy(web_audio.AudioTrackList, {
  /*web_audio.AudioTrackList.changeEvent*/get changeEvent() {
    return dart.const(new (EventStreamProviderOfEvent()).new("change"));
  }
});
dart.registerExtension("AudioTrackList", web_audio.AudioTrackList);
web_audio.AudioWorkletGlobalScope = class AudioWorkletGlobalScope extends html$.WorkletGlobalScope {
  get [$currentTime]() {
    return this.currentTime;
  }
  get [$sampleRate]() {
    return this.sampleRate;
  }
  [$registerProcessor](...args) {
    return this.registerProcessor.apply(this, args);
  }
};
dart.addTypeTests(web_audio.AudioWorkletGlobalScope);
const currentTime$3 = Symbol("AudioWorkletGlobalScope.currentTime");
const sampleRate$0 = Symbol("AudioWorkletGlobalScope.sampleRate");
dart.setMethodSignature(web_audio.AudioWorkletGlobalScope, () => ({
  __proto__: dart.getMethods(web_audio.AudioWorkletGlobalScope.__proto__),
  [$registerProcessor]: dart.fnType(dart.void, [core.String, core.Object])
}));
dart.setFieldSignature(web_audio.AudioWorkletGlobalScope, () => ({
  __proto__: dart.getFields(web_audio.AudioWorkletGlobalScope.__proto__),
  [$currentTime]: dart.finalFieldType(core.num),
  [$sampleRate]: dart.finalFieldType(core.num)
}));
dart.registerExtension("AudioWorkletGlobalScope", web_audio.AudioWorkletGlobalScope);
web_audio.AudioWorkletNode = class AudioWorkletNode$ extends web_audio.AudioNode {
  static new(context, name, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.AudioWorkletNode._create_1(context, name, options_1);
    }
    return web_audio.AudioWorkletNode._create_2(context, name);
  }
  static _create_1(context, name, options) {
    return new AudioWorkletNode(context, name, options);
  }
  static _create_2(context, name) {
    return new AudioWorkletNode(context, name);
  }
  get [$parameters]() {
    return this.parameters;
  }
};
dart.addTypeTests(web_audio.AudioWorkletNode);
const parameters = Symbol("AudioWorkletNode.parameters");
dart.setFieldSignature(web_audio.AudioWorkletNode, () => ({
  __proto__: dart.getFields(web_audio.AudioWorkletNode.__proto__),
  [$parameters]: dart.finalFieldType(web_audio.AudioParamMap)
}));
dart.registerExtension("AudioWorkletNode", web_audio.AudioWorkletNode);
web_audio.AudioWorkletProcessor = class AudioWorkletProcessor extends _interceptors.Interceptor {};
dart.addTypeTests(web_audio.AudioWorkletProcessor);
dart.registerExtension("AudioWorkletProcessor", web_audio.AudioWorkletProcessor);
web_audio.BiquadFilterNode = class BiquadFilterNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.BiquadFilterNode._create_1(context, options_1);
    }
    return web_audio.BiquadFilterNode._create_2(context);
  }
  static _create_1(context, options) {
    return new BiquadFilterNode(context, options);
  }
  static _create_2(context) {
    return new BiquadFilterNode(context);
  }
  get [$Q]() {
    return this.Q;
  }
  get [$detune]() {
    return this.detune;
  }
  get [$frequency]() {
    return this.frequency;
  }
  get [$gain]() {
    return this.gain;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
  [$getFrequencyResponse](...args) {
    return this.getFrequencyResponse.apply(this, args);
  }
};
dart.addTypeTests(web_audio.BiquadFilterNode);
const Q = Symbol("BiquadFilterNode.Q");
const detune$ = Symbol("BiquadFilterNode.detune");
const frequency = Symbol("BiquadFilterNode.frequency");
const gain = Symbol("BiquadFilterNode.gain");
const type$42 = Symbol("BiquadFilterNode.type");
dart.setMethodSignature(web_audio.BiquadFilterNode, () => ({
  __proto__: dart.getMethods(web_audio.BiquadFilterNode.__proto__),
  [$getFrequencyResponse]: dart.fnType(dart.void, [typed_data.Float32List, typed_data.Float32List, typed_data.Float32List])
}));
dart.setFieldSignature(web_audio.BiquadFilterNode, () => ({
  __proto__: dart.getFields(web_audio.BiquadFilterNode.__proto__),
  [$Q]: dart.finalFieldType(web_audio.AudioParam),
  [$detune]: dart.finalFieldType(web_audio.AudioParam),
  [$frequency]: dart.finalFieldType(web_audio.AudioParam),
  [$gain]: dart.finalFieldType(web_audio.AudioParam),
  [$type]: dart.fieldType(core.String)
}));
dart.registerExtension("BiquadFilterNode", web_audio.BiquadFilterNode);
web_audio.ChannelMergerNode = class ChannelMergerNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.ChannelMergerNode._create_1(context, options_1);
    }
    return web_audio.ChannelMergerNode._create_2(context);
  }
  static _create_1(context, options) {
    return new ChannelMergerNode(context, options);
  }
  static _create_2(context) {
    return new ChannelMergerNode(context);
  }
};
dart.addTypeTests(web_audio.ChannelMergerNode);
dart.registerExtension("ChannelMergerNode", web_audio.ChannelMergerNode);
dart.registerExtension("AudioChannelMerger", web_audio.ChannelMergerNode);
web_audio.ChannelSplitterNode = class ChannelSplitterNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.ChannelSplitterNode._create_1(context, options_1);
    }
    return web_audio.ChannelSplitterNode._create_2(context);
  }
  static _create_1(context, options) {
    return new ChannelSplitterNode(context, options);
  }
  static _create_2(context) {
    return new ChannelSplitterNode(context);
  }
};
dart.addTypeTests(web_audio.ChannelSplitterNode);
dart.registerExtension("ChannelSplitterNode", web_audio.ChannelSplitterNode);
dart.registerExtension("AudioChannelSplitter", web_audio.ChannelSplitterNode);
web_audio.ConstantSourceNode = class ConstantSourceNode$ extends web_audio.AudioScheduledSourceNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.ConstantSourceNode._create_1(context, options_1);
    }
    return web_audio.ConstantSourceNode._create_2(context);
  }
  static _create_1(context, options) {
    return new ConstantSourceNode(context, options);
  }
  static _create_2(context) {
    return new ConstantSourceNode(context);
  }
  get [$offset]() {
    return this.offset;
  }
};
dart.addTypeTests(web_audio.ConstantSourceNode);
const offset$0 = Symbol("ConstantSourceNode.offset");
dart.setFieldSignature(web_audio.ConstantSourceNode, () => ({
  __proto__: dart.getFields(web_audio.ConstantSourceNode.__proto__),
  [$offset]: dart.finalFieldType(web_audio.AudioParam)
}));
dart.registerExtension("ConstantSourceNode", web_audio.ConstantSourceNode);
web_audio.ConvolverNode = class ConvolverNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.ConvolverNode._create_1(context, options_1);
    }
    return web_audio.ConvolverNode._create_2(context);
  }
  static _create_1(context, options) {
    return new ConvolverNode(context, options);
  }
  static _create_2(context) {
    return new ConvolverNode(context);
  }
  get [$buffer]() {
    return this.buffer;
  }
  set [$buffer](value) {
    this.buffer = value;
  }
  get [$normalize]() {
    return this.normalize;
  }
  set [$normalize](value) {
    this.normalize = value;
  }
};
dart.addTypeTests(web_audio.ConvolverNode);
const buffer$ = Symbol("ConvolverNode.buffer");
const normalize = Symbol("ConvolverNode.normalize");
dart.setFieldSignature(web_audio.ConvolverNode, () => ({
  __proto__: dart.getFields(web_audio.ConvolverNode.__proto__),
  [$buffer]: dart.fieldType(web_audio.AudioBuffer),
  [$normalize]: dart.fieldType(core.bool)
}));
dart.registerExtension("ConvolverNode", web_audio.ConvolverNode);
web_audio.DelayNode = class DelayNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.DelayNode._create_1(context, options_1);
    }
    return web_audio.DelayNode._create_2(context);
  }
  static _create_1(context, options) {
    return new DelayNode(context, options);
  }
  static _create_2(context) {
    return new DelayNode(context);
  }
  get [$delayTime]() {
    return this.delayTime;
  }
};
dart.addTypeTests(web_audio.DelayNode);
const delayTime = Symbol("DelayNode.delayTime");
dart.setFieldSignature(web_audio.DelayNode, () => ({
  __proto__: dart.getFields(web_audio.DelayNode.__proto__),
  [$delayTime]: dart.finalFieldType(web_audio.AudioParam)
}));
dart.registerExtension("DelayNode", web_audio.DelayNode);
web_audio.DynamicsCompressorNode = class DynamicsCompressorNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.DynamicsCompressorNode._create_1(context, options_1);
    }
    return web_audio.DynamicsCompressorNode._create_2(context);
  }
  static _create_1(context, options) {
    return new DynamicsCompressorNode(context, options);
  }
  static _create_2(context) {
    return new DynamicsCompressorNode(context);
  }
  get [$attack]() {
    return this.attack;
  }
  get [$knee]() {
    return this.knee;
  }
  get [$ratio]() {
    return this.ratio;
  }
  get [$reduction]() {
    return this.reduction;
  }
  get [$release]() {
    return this.release;
  }
  get [$threshold]() {
    return this.threshold;
  }
};
dart.addTypeTests(web_audio.DynamicsCompressorNode);
const attack = Symbol("DynamicsCompressorNode.attack");
const knee = Symbol("DynamicsCompressorNode.knee");
const ratio = Symbol("DynamicsCompressorNode.ratio");
const reduction = Symbol("DynamicsCompressorNode.reduction");
const release = Symbol("DynamicsCompressorNode.release");
const threshold = Symbol("DynamicsCompressorNode.threshold");
dart.setFieldSignature(web_audio.DynamicsCompressorNode, () => ({
  __proto__: dart.getFields(web_audio.DynamicsCompressorNode.__proto__),
  [$attack]: dart.finalFieldType(web_audio.AudioParam),
  [$knee]: dart.finalFieldType(web_audio.AudioParam),
  [$ratio]: dart.finalFieldType(web_audio.AudioParam),
  [$reduction]: dart.finalFieldType(core.num),
  [$release]: dart.finalFieldType(web_audio.AudioParam),
  [$threshold]: dart.finalFieldType(web_audio.AudioParam)
}));
dart.registerExtension("DynamicsCompressorNode", web_audio.DynamicsCompressorNode);
web_audio.GainNode = class GainNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.GainNode._create_1(context, options_1);
    }
    return web_audio.GainNode._create_2(context);
  }
  static _create_1(context, options) {
    return new GainNode(context, options);
  }
  static _create_2(context) {
    return new GainNode(context);
  }
  get [$gain]() {
    return this.gain;
  }
};
dart.addTypeTests(web_audio.GainNode);
const gain$ = Symbol("GainNode.gain");
dart.setFieldSignature(web_audio.GainNode, () => ({
  __proto__: dart.getFields(web_audio.GainNode.__proto__),
  [$gain]: dart.finalFieldType(web_audio.AudioParam)
}));
dart.registerExtension("GainNode", web_audio.GainNode);
dart.registerExtension("AudioGainNode", web_audio.GainNode);
web_audio.IirFilterNode = class IirFilterNode extends web_audio.AudioNode {
  static new(context, options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    return web_audio.IirFilterNode._create_1(context, options_1);
  }
  static _create_1(context, options) {
    return new IIRFilterNode(context, options);
  }
  [$getFrequencyResponse](...args) {
    return this.getFrequencyResponse.apply(this, args);
  }
};
dart.addTypeTests(web_audio.IirFilterNode);
dart.setMethodSignature(web_audio.IirFilterNode, () => ({
  __proto__: dart.getMethods(web_audio.IirFilterNode.__proto__),
  [$getFrequencyResponse]: dart.fnType(dart.void, [typed_data.Float32List, typed_data.Float32List, typed_data.Float32List])
}));
dart.registerExtension("IIRFilterNode", web_audio.IirFilterNode);
web_audio.MediaElementAudioSourceNode = class MediaElementAudioSourceNode$ extends web_audio.AudioNode {
  static new(context, options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    return web_audio.MediaElementAudioSourceNode._create_1(context, options_1);
  }
  static _create_1(context, options) {
    return new MediaElementAudioSourceNode(context, options);
  }
  get [$mediaElement]() {
    return this.mediaElement;
  }
};
dart.addTypeTests(web_audio.MediaElementAudioSourceNode);
const mediaElement = Symbol("MediaElementAudioSourceNode.mediaElement");
dart.setFieldSignature(web_audio.MediaElementAudioSourceNode, () => ({
  __proto__: dart.getFields(web_audio.MediaElementAudioSourceNode.__proto__),
  [$mediaElement]: dart.finalFieldType(html$.MediaElement)
}));
dart.registerExtension("MediaElementAudioSourceNode", web_audio.MediaElementAudioSourceNode);
web_audio.MediaStreamAudioDestinationNode = class MediaStreamAudioDestinationNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.MediaStreamAudioDestinationNode._create_1(context, options_1);
    }
    return web_audio.MediaStreamAudioDestinationNode._create_2(context);
  }
  static _create_1(context, options) {
    return new MediaStreamAudioDestinationNode(context, options);
  }
  static _create_2(context) {
    return new MediaStreamAudioDestinationNode(context);
  }
  get [$stream]() {
    return this.stream;
  }
};
dart.addTypeTests(web_audio.MediaStreamAudioDestinationNode);
const stream$0 = Symbol("MediaStreamAudioDestinationNode.stream");
dart.setFieldSignature(web_audio.MediaStreamAudioDestinationNode, () => ({
  __proto__: dart.getFields(web_audio.MediaStreamAudioDestinationNode.__proto__),
  [$stream]: dart.finalFieldType(html$.MediaStream)
}));
dart.registerExtension("MediaStreamAudioDestinationNode", web_audio.MediaStreamAudioDestinationNode);
web_audio.MediaStreamAudioSourceNode = class MediaStreamAudioSourceNode$ extends web_audio.AudioNode {
  static new(context, options) {
    let options_1 = html_common.convertDartToNative_Dictionary(options);
    return web_audio.MediaStreamAudioSourceNode._create_1(context, options_1);
  }
  static _create_1(context, options) {
    return new MediaStreamAudioSourceNode(context, options);
  }
  get [$mediaStream]() {
    return this.mediaStream;
  }
};
dart.addTypeTests(web_audio.MediaStreamAudioSourceNode);
const mediaStream = Symbol("MediaStreamAudioSourceNode.mediaStream");
dart.setFieldSignature(web_audio.MediaStreamAudioSourceNode, () => ({
  __proto__: dart.getFields(web_audio.MediaStreamAudioSourceNode.__proto__),
  [$mediaStream]: dart.finalFieldType(html$.MediaStream)
}));
dart.registerExtension("MediaStreamAudioSourceNode", web_audio.MediaStreamAudioSourceNode);
web_audio.OfflineAudioCompletionEvent = class OfflineAudioCompletionEvent$ extends html$.Event {
  static new(type, eventInitDict) {
    let eventInitDict_1 = html_common.convertDartToNative_Dictionary(eventInitDict);
    return web_audio.OfflineAudioCompletionEvent._create_1(type, eventInitDict_1);
  }
  static _create_1(type, eventInitDict) {
    return new OfflineAudioCompletionEvent(type, eventInitDict);
  }
  get [$renderedBuffer]() {
    return this.renderedBuffer;
  }
};
dart.addTypeTests(web_audio.OfflineAudioCompletionEvent);
const renderedBuffer = Symbol("OfflineAudioCompletionEvent.renderedBuffer");
dart.setFieldSignature(web_audio.OfflineAudioCompletionEvent, () => ({
  __proto__: dart.getFields(web_audio.OfflineAudioCompletionEvent.__proto__),
  [$renderedBuffer]: dart.finalFieldType(web_audio.AudioBuffer)
}));
dart.registerExtension("OfflineAudioCompletionEvent", web_audio.OfflineAudioCompletionEvent);
web_audio.OfflineAudioContext = class OfflineAudioContext$ extends web_audio.BaseAudioContext {
  static new(numberOfChannels_OR_options, numberOfFrames, sampleRate) {
    if (numberOfFrames === void 0) numberOfFrames = null;
    if (sampleRate === void 0) sampleRate = null;
    if (typeof sampleRate == 'number' && core.int.is(numberOfFrames) && core.int.is(numberOfChannels_OR_options)) {
      return web_audio.OfflineAudioContext._create_1(numberOfChannels_OR_options, numberOfFrames, sampleRate);
    }
    if (core.Map.is(numberOfChannels_OR_options) && numberOfFrames == null && sampleRate == null) {
      let options_1 = html_common.convertDartToNative_Dictionary(numberOfChannels_OR_options);
      return web_audio.OfflineAudioContext._create_2(options_1);
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  static _create_1(numberOfChannels_OR_options, numberOfFrames, sampleRate) {
    return new OfflineAudioContext(numberOfChannels_OR_options, numberOfFrames, sampleRate);
  }
  static _create_2(numberOfChannels_OR_options) {
    return new OfflineAudioContext(numberOfChannels_OR_options);
  }
  get [$length]() {
    return this.length;
  }
  [$startRendering]() {
    return html$.promiseToFuture(web_audio.AudioBuffer, this.startRendering());
  }
  [$suspendFor](suspendTime) {
    return html$.promiseToFuture(dart.dynamic, this.suspendFor(suspendTime));
  }
};
dart.addTypeTests(web_audio.OfflineAudioContext);
const length$20 = Symbol("OfflineAudioContext.length");
dart.setMethodSignature(web_audio.OfflineAudioContext, () => ({
  __proto__: dart.getMethods(web_audio.OfflineAudioContext.__proto__),
  [$startRendering]: dart.fnType(async.Future$(web_audio.AudioBuffer), []),
  [$suspendFor]: dart.fnType(async.Future, [core.num])
}));
dart.setFieldSignature(web_audio.OfflineAudioContext, () => ({
  __proto__: dart.getFields(web_audio.OfflineAudioContext.__proto__),
  [$length]: dart.finalFieldType(core.int)
}));
dart.registerExtension("OfflineAudioContext", web_audio.OfflineAudioContext);
web_audio.OscillatorNode = class OscillatorNode$ extends web_audio.AudioScheduledSourceNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.OscillatorNode._create_1(context, options_1);
    }
    return web_audio.OscillatorNode._create_2(context);
  }
  static _create_1(context, options) {
    return new OscillatorNode(context, options);
  }
  static _create_2(context) {
    return new OscillatorNode(context);
  }
  get [$detune]() {
    return this.detune;
  }
  get [$frequency]() {
    return this.frequency;
  }
  get [$type]() {
    return this.type;
  }
  set [$type](value) {
    this.type = value;
  }
  [$setPeriodicWave](...args) {
    return this.setPeriodicWave.apply(this, args);
  }
};
dart.addTypeTests(web_audio.OscillatorNode);
const detune$0 = Symbol("OscillatorNode.detune");
const frequency$ = Symbol("OscillatorNode.frequency");
const type$43 = Symbol("OscillatorNode.type");
dart.setMethodSignature(web_audio.OscillatorNode, () => ({
  __proto__: dart.getMethods(web_audio.OscillatorNode.__proto__),
  [$setPeriodicWave]: dart.fnType(dart.void, [web_audio.PeriodicWave])
}));
dart.setFieldSignature(web_audio.OscillatorNode, () => ({
  __proto__: dart.getFields(web_audio.OscillatorNode.__proto__),
  [$detune]: dart.finalFieldType(web_audio.AudioParam),
  [$frequency]: dart.finalFieldType(web_audio.AudioParam),
  [$type]: dart.fieldType(core.String)
}));
dart.registerExtension("OscillatorNode", web_audio.OscillatorNode);
dart.registerExtension("Oscillator", web_audio.OscillatorNode);
web_audio.PannerNode = class PannerNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.PannerNode._create_1(context, options_1);
    }
    return web_audio.PannerNode._create_2(context);
  }
  static _create_1(context, options) {
    return new PannerNode(context, options);
  }
  static _create_2(context) {
    return new PannerNode(context);
  }
  get [$coneInnerAngle]() {
    return this.coneInnerAngle;
  }
  set [$coneInnerAngle](value) {
    this.coneInnerAngle = value;
  }
  get [$coneOuterAngle]() {
    return this.coneOuterAngle;
  }
  set [$coneOuterAngle](value) {
    this.coneOuterAngle = value;
  }
  get [$coneOuterGain]() {
    return this.coneOuterGain;
  }
  set [$coneOuterGain](value) {
    this.coneOuterGain = value;
  }
  get [$distanceModel]() {
    return this.distanceModel;
  }
  set [$distanceModel](value) {
    this.distanceModel = value;
  }
  get [$maxDistance]() {
    return this.maxDistance;
  }
  set [$maxDistance](value) {
    this.maxDistance = value;
  }
  get [$orientationX]() {
    return this.orientationX;
  }
  get [$orientationY]() {
    return this.orientationY;
  }
  get [$orientationZ]() {
    return this.orientationZ;
  }
  get [$panningModel]() {
    return this.panningModel;
  }
  set [$panningModel](value) {
    this.panningModel = value;
  }
  get [$positionX]() {
    return this.positionX;
  }
  get [$positionY]() {
    return this.positionY;
  }
  get [$positionZ]() {
    return this.positionZ;
  }
  get [$refDistance]() {
    return this.refDistance;
  }
  set [$refDistance](value) {
    this.refDistance = value;
  }
  get [$rolloffFactor]() {
    return this.rolloffFactor;
  }
  set [$rolloffFactor](value) {
    this.rolloffFactor = value;
  }
  [$setOrientation](...args) {
    return this.setOrientation.apply(this, args);
  }
  [$setPosition](...args) {
    return this.setPosition.apply(this, args);
  }
};
dart.addTypeTests(web_audio.PannerNode);
const coneInnerAngle = Symbol("PannerNode.coneInnerAngle");
const coneOuterAngle = Symbol("PannerNode.coneOuterAngle");
const coneOuterGain = Symbol("PannerNode.coneOuterGain");
const distanceModel = Symbol("PannerNode.distanceModel");
const maxDistance = Symbol("PannerNode.maxDistance");
const orientationX = Symbol("PannerNode.orientationX");
const orientationY = Symbol("PannerNode.orientationY");
const orientationZ = Symbol("PannerNode.orientationZ");
const panningModel = Symbol("PannerNode.panningModel");
const positionX$0 = Symbol("PannerNode.positionX");
const positionY$0 = Symbol("PannerNode.positionY");
const positionZ$ = Symbol("PannerNode.positionZ");
const refDistance = Symbol("PannerNode.refDistance");
const rolloffFactor = Symbol("PannerNode.rolloffFactor");
dart.setMethodSignature(web_audio.PannerNode, () => ({
  __proto__: dart.getMethods(web_audio.PannerNode.__proto__),
  [$setOrientation]: dart.fnType(dart.void, [core.num, core.num, core.num]),
  [$setPosition]: dart.fnType(dart.void, [core.num, core.num, core.num])
}));
dart.setFieldSignature(web_audio.PannerNode, () => ({
  __proto__: dart.getFields(web_audio.PannerNode.__proto__),
  [$coneInnerAngle]: dart.fieldType(core.num),
  [$coneOuterAngle]: dart.fieldType(core.num),
  [$coneOuterGain]: dart.fieldType(core.num),
  [$distanceModel]: dart.fieldType(core.String),
  [$maxDistance]: dart.fieldType(core.num),
  [$orientationX]: dart.finalFieldType(web_audio.AudioParam),
  [$orientationY]: dart.finalFieldType(web_audio.AudioParam),
  [$orientationZ]: dart.finalFieldType(web_audio.AudioParam),
  [$panningModel]: dart.fieldType(core.String),
  [$positionX]: dart.finalFieldType(web_audio.AudioParam),
  [$positionY]: dart.finalFieldType(web_audio.AudioParam),
  [$positionZ]: dart.finalFieldType(web_audio.AudioParam),
  [$refDistance]: dart.fieldType(core.num),
  [$rolloffFactor]: dart.fieldType(core.num)
}));
dart.registerExtension("PannerNode", web_audio.PannerNode);
dart.registerExtension("AudioPannerNode", web_audio.PannerNode);
dart.registerExtension("webkitAudioPannerNode", web_audio.PannerNode);
web_audio.PeriodicWave = class PeriodicWave$ extends _interceptors.Interceptor {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.PeriodicWave._create_1(context, options_1);
    }
    return web_audio.PeriodicWave._create_2(context);
  }
  static _create_1(context, options) {
    return new PeriodicWave(context, options);
  }
  static _create_2(context) {
    return new PeriodicWave(context);
  }
};
dart.addTypeTests(web_audio.PeriodicWave);
dart.registerExtension("PeriodicWave", web_audio.PeriodicWave);
web_audio.ScriptProcessorNode = class ScriptProcessorNode extends web_audio.AudioNode {
  get [$bufferSize]() {
    return this.bufferSize;
  }
  [$setEventListener](...args) {
    return this.setEventListener.apply(this, args);
  }
  get [$onAudioProcess]() {
    return web_audio.ScriptProcessorNode.audioProcessEvent.forTarget(this);
  }
};
dart.addTypeTests(web_audio.ScriptProcessorNode);
const bufferSize = Symbol("ScriptProcessorNode.bufferSize");
dart.setMethodSignature(web_audio.ScriptProcessorNode, () => ({
  __proto__: dart.getMethods(web_audio.ScriptProcessorNode.__proto__),
  [$setEventListener]: dart.fnType(dart.void, [dart.fnType(dart.dynamic, [html$.Event])])
}));
dart.setGetterSignature(web_audio.ScriptProcessorNode, () => ({
  __proto__: dart.getGetters(web_audio.ScriptProcessorNode.__proto__),
  [$onAudioProcess]: async.Stream$(web_audio.AudioProcessingEvent)
}));
dart.setFieldSignature(web_audio.ScriptProcessorNode, () => ({
  __proto__: dart.getFields(web_audio.ScriptProcessorNode.__proto__),
  [$bufferSize]: dart.finalFieldType(core.int)
}));
dart.defineLazy(web_audio.ScriptProcessorNode, {
  /*web_audio.ScriptProcessorNode.audioProcessEvent*/get audioProcessEvent() {
    return dart.const(new (EventStreamProviderOfAudioProcessingEvent()).new("audioprocess"));
  }
});
dart.registerExtension("ScriptProcessorNode", web_audio.ScriptProcessorNode);
dart.registerExtension("JavaScriptAudioNode", web_audio.ScriptProcessorNode);
web_audio.StereoPannerNode = class StereoPannerNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.StereoPannerNode._create_1(context, options_1);
    }
    return web_audio.StereoPannerNode._create_2(context);
  }
  static _create_1(context, options) {
    return new StereoPannerNode(context, options);
  }
  static _create_2(context) {
    return new StereoPannerNode(context);
  }
  get [$pan]() {
    return this.pan;
  }
};
dart.addTypeTests(web_audio.StereoPannerNode);
const pan = Symbol("StereoPannerNode.pan");
dart.setFieldSignature(web_audio.StereoPannerNode, () => ({
  __proto__: dart.getFields(web_audio.StereoPannerNode.__proto__),
  [$pan]: dart.finalFieldType(web_audio.AudioParam)
}));
dart.registerExtension("StereoPannerNode", web_audio.StereoPannerNode);
web_audio.WaveShaperNode = class WaveShaperNode$ extends web_audio.AudioNode {
  static new(context, options) {
    if (options === void 0) options = null;
    if (options != null) {
      let options_1 = html_common.convertDartToNative_Dictionary(options);
      return web_audio.WaveShaperNode._create_1(context, options_1);
    }
    return web_audio.WaveShaperNode._create_2(context);
  }
  static _create_1(context, options) {
    return new WaveShaperNode(context, options);
  }
  static _create_2(context) {
    return new WaveShaperNode(context);
  }
  get [$curve]() {
    return this.curve;
  }
  set [$curve](value) {
    this.curve = value;
  }
  get [$oversample]() {
    return this.oversample;
  }
  set [$oversample](value) {
    this.oversample = value;
  }
};
dart.addTypeTests(web_audio.WaveShaperNode);
const curve = Symbol("WaveShaperNode.curve");
const oversample = Symbol("WaveShaperNode.oversample");
dart.setFieldSignature(web_audio.WaveShaperNode, () => ({
  __proto__: dart.getFields(web_audio.WaveShaperNode.__proto__),
  [$curve]: dart.fieldType(typed_data.Float32List),
  [$oversample]: dart.fieldType(core.String)
}));
dart.registerExtension("WaveShaperNode", web_audio.WaveShaperNode);
web_gl.ActiveInfo = class ActiveInfo extends _interceptors.Interceptor {
  get [$name]() {
    return this.name;
  }
  get [$size]() {
    return this.size;
  }
  get [$type]() {
    return this.type;
  }
};
dart.addTypeTests(web_gl.ActiveInfo);
const name$40 = Symbol("ActiveInfo.name");
const size$7 = Symbol("ActiveInfo.size");
const type$44 = Symbol("ActiveInfo.type");
dart.setFieldSignature(web_gl.ActiveInfo, () => ({
  __proto__: dart.getFields(web_gl.ActiveInfo.__proto__),
  [$name]: dart.finalFieldType(core.String),
  [$size]: dart.finalFieldType(core.int),
  [$type]: dart.finalFieldType(core.int)
}));
dart.registerExtension("WebGLActiveInfo", web_gl.ActiveInfo);
web_gl.AngleInstancedArrays = class AngleInstancedArrays extends _interceptors.Interceptor {
  [$drawArraysInstancedAngle](...args) {
    return this.drawArraysInstancedANGLE.apply(this, args);
  }
  [$drawElementsInstancedAngle](...args) {
    return this.drawElementsInstancedANGLE.apply(this, args);
  }
  [$vertexAttribDivisorAngle](...args) {
    return this.vertexAttribDivisorANGLE.apply(this, args);
  }
};
dart.addTypeTests(web_gl.AngleInstancedArrays);
dart.setMethodSignature(web_gl.AngleInstancedArrays, () => ({
  __proto__: dart.getMethods(web_gl.AngleInstancedArrays.__proto__),
  [$drawArraysInstancedAngle]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$drawElementsInstancedAngle]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
  [$vertexAttribDivisorAngle]: dart.fnType(dart.void, [core.int, core.int])
}));
dart.defineLazy(web_gl.AngleInstancedArrays, {
  /*web_gl.AngleInstancedArrays.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE*/get VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE() {
    return 35070;
  }
});
dart.registerExtension("ANGLEInstancedArrays", web_gl.AngleInstancedArrays);
dart.registerExtension("ANGLE_instanced_arrays", web_gl.AngleInstancedArrays);
web_gl.Buffer = class Buffer extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.Buffer);
dart.registerExtension("WebGLBuffer", web_gl.Buffer);
web_gl.Canvas = class Canvas extends _interceptors.Interceptor {
  get [$canvas]() {
    return this.canvas;
  }
  get [$offscreenCanvas]() {
    return this.canvas;
  }
};
dart.addTypeTests(web_gl.Canvas);
const canvas$2 = Symbol("Canvas.canvas");
const offscreenCanvas = Symbol("Canvas.offscreenCanvas");
dart.setFieldSignature(web_gl.Canvas, () => ({
  __proto__: dart.getFields(web_gl.Canvas.__proto__),
  [$canvas]: dart.finalFieldType(html$.CanvasElement),
  [$offscreenCanvas]: dart.finalFieldType(html$.OffscreenCanvas)
}));
dart.registerExtension("WebGLCanvas", web_gl.Canvas);
web_gl.ColorBufferFloat = class ColorBufferFloat extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.ColorBufferFloat);
dart.registerExtension("WebGLColorBufferFloat", web_gl.ColorBufferFloat);
web_gl.CompressedTextureAstc = class CompressedTextureAstc extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.CompressedTextureAstc);
dart.defineLazy(web_gl.CompressedTextureAstc, {
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_10x10_KHR*/get COMPRESSED_RGBA_ASTC_10x10_KHR() {
    return 37819;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_10x5_KHR*/get COMPRESSED_RGBA_ASTC_10x5_KHR() {
    return 37816;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_10x6_KHR*/get COMPRESSED_RGBA_ASTC_10x6_KHR() {
    return 37817;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_10x8_KHR*/get COMPRESSED_RGBA_ASTC_10x8_KHR() {
    return 37818;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_12x10_KHR*/get COMPRESSED_RGBA_ASTC_12x10_KHR() {
    return 37820;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_12x12_KHR*/get COMPRESSED_RGBA_ASTC_12x12_KHR() {
    return 37821;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_4x4_KHR*/get COMPRESSED_RGBA_ASTC_4x4_KHR() {
    return 37808;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_5x4_KHR*/get COMPRESSED_RGBA_ASTC_5x4_KHR() {
    return 37809;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_5x5_KHR*/get COMPRESSED_RGBA_ASTC_5x5_KHR() {
    return 37810;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_6x5_KHR*/get COMPRESSED_RGBA_ASTC_6x5_KHR() {
    return 37811;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_6x6_KHR*/get COMPRESSED_RGBA_ASTC_6x6_KHR() {
    return 37812;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_8x5_KHR*/get COMPRESSED_RGBA_ASTC_8x5_KHR() {
    return 37813;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_8x6_KHR*/get COMPRESSED_RGBA_ASTC_8x6_KHR() {
    return 37814;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_RGBA_ASTC_8x8_KHR*/get COMPRESSED_RGBA_ASTC_8x8_KHR() {
    return 37815;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR() {
    return 37851;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR() {
    return 37848;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR() {
    return 37849;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR() {
    return 37850;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR() {
    return 37852;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR() {
    return 37853;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR() {
    return 37840;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR() {
    return 37841;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR() {
    return 37842;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR() {
    return 37843;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR() {
    return 37844;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR() {
    return 37845;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR() {
    return 37846;
  },
  /*web_gl.CompressedTextureAstc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR*/get COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR() {
    return 37847;
  }
});
dart.registerExtension("WebGLCompressedTextureASTC", web_gl.CompressedTextureAstc);
web_gl.CompressedTextureAtc = class CompressedTextureAtc extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.CompressedTextureAtc);
dart.defineLazy(web_gl.CompressedTextureAtc, {
  /*web_gl.CompressedTextureAtc.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL*/get COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL() {
    return 35987;
  },
  /*web_gl.CompressedTextureAtc.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL*/get COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL() {
    return 34798;
  },
  /*web_gl.CompressedTextureAtc.COMPRESSED_RGB_ATC_WEBGL*/get COMPRESSED_RGB_ATC_WEBGL() {
    return 35986;
  }
});
dart.registerExtension("WebGLCompressedTextureATC", web_gl.CompressedTextureAtc);
dart.registerExtension("WEBGL_compressed_texture_atc", web_gl.CompressedTextureAtc);
web_gl.CompressedTextureETC1 = class CompressedTextureETC1 extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.CompressedTextureETC1);
dart.defineLazy(web_gl.CompressedTextureETC1, {
  /*web_gl.CompressedTextureETC1.COMPRESSED_RGB_ETC1_WEBGL*/get COMPRESSED_RGB_ETC1_WEBGL() {
    return 36196;
  }
});
dart.registerExtension("WebGLCompressedTextureETC1", web_gl.CompressedTextureETC1);
dart.registerExtension("WEBGL_compressed_texture_etc1", web_gl.CompressedTextureETC1);
web_gl.CompressedTextureEtc = class CompressedTextureEtc extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.CompressedTextureEtc);
dart.defineLazy(web_gl.CompressedTextureEtc, {
  /*web_gl.CompressedTextureEtc.COMPRESSED_R11_EAC*/get COMPRESSED_R11_EAC() {
    return 37488;
  },
  /*web_gl.CompressedTextureEtc.COMPRESSED_RG11_EAC*/get COMPRESSED_RG11_EAC() {
    return 37490;
  },
  /*web_gl.CompressedTextureEtc.COMPRESSED_RGB8_ETC2*/get COMPRESSED_RGB8_ETC2() {
    return 37492;
  },
  /*web_gl.CompressedTextureEtc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2*/get COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2() {
    return 37494;
  },
  /*web_gl.CompressedTextureEtc.COMPRESSED_RGBA8_ETC2_EAC*/get COMPRESSED_RGBA8_ETC2_EAC() {
    return 37496;
  },
  /*web_gl.CompressedTextureEtc.COMPRESSED_SIGNED_R11_EAC*/get COMPRESSED_SIGNED_R11_EAC() {
    return 37489;
  },
  /*web_gl.CompressedTextureEtc.COMPRESSED_SIGNED_RG11_EAC*/get COMPRESSED_SIGNED_RG11_EAC() {
    return 37491;
  },
  /*web_gl.CompressedTextureEtc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC*/get COMPRESSED_SRGB8_ALPHA8_ETC2_EAC() {
    return 37497;
  },
  /*web_gl.CompressedTextureEtc.COMPRESSED_SRGB8_ETC2*/get COMPRESSED_SRGB8_ETC2() {
    return 37493;
  },
  /*web_gl.CompressedTextureEtc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2*/get COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2() {
    return 37495;
  }
});
dart.registerExtension("WebGLCompressedTextureETC", web_gl.CompressedTextureEtc);
web_gl.CompressedTexturePvrtc = class CompressedTexturePvrtc extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.CompressedTexturePvrtc);
dart.defineLazy(web_gl.CompressedTexturePvrtc, {
  /*web_gl.CompressedTexturePvrtc.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG*/get COMPRESSED_RGBA_PVRTC_2BPPV1_IMG() {
    return 35843;
  },
  /*web_gl.CompressedTexturePvrtc.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG*/get COMPRESSED_RGBA_PVRTC_4BPPV1_IMG() {
    return 35842;
  },
  /*web_gl.CompressedTexturePvrtc.COMPRESSED_RGB_PVRTC_2BPPV1_IMG*/get COMPRESSED_RGB_PVRTC_2BPPV1_IMG() {
    return 35841;
  },
  /*web_gl.CompressedTexturePvrtc.COMPRESSED_RGB_PVRTC_4BPPV1_IMG*/get COMPRESSED_RGB_PVRTC_4BPPV1_IMG() {
    return 35840;
  }
});
dart.registerExtension("WebGLCompressedTexturePVRTC", web_gl.CompressedTexturePvrtc);
dart.registerExtension("WEBGL_compressed_texture_pvrtc", web_gl.CompressedTexturePvrtc);
web_gl.CompressedTextureS3TC = class CompressedTextureS3TC extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.CompressedTextureS3TC);
dart.defineLazy(web_gl.CompressedTextureS3TC, {
  /*web_gl.CompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT1_EXT*/get COMPRESSED_RGBA_S3TC_DXT1_EXT() {
    return 33777;
  },
  /*web_gl.CompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT3_EXT*/get COMPRESSED_RGBA_S3TC_DXT3_EXT() {
    return 33778;
  },
  /*web_gl.CompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT5_EXT*/get COMPRESSED_RGBA_S3TC_DXT5_EXT() {
    return 33779;
  },
  /*web_gl.CompressedTextureS3TC.COMPRESSED_RGB_S3TC_DXT1_EXT*/get COMPRESSED_RGB_S3TC_DXT1_EXT() {
    return 33776;
  }
});
dart.registerExtension("WebGLCompressedTextureS3TC", web_gl.CompressedTextureS3TC);
dart.registerExtension("WEBGL_compressed_texture_s3tc", web_gl.CompressedTextureS3TC);
web_gl.CompressedTextureS3TCsRgb = class CompressedTextureS3TCsRgb extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.CompressedTextureS3TCsRgb);
dart.defineLazy(web_gl.CompressedTextureS3TCsRgb, {
  /*web_gl.CompressedTextureS3TCsRgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT*/get COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT() {
    return 35917;
  },
  /*web_gl.CompressedTextureS3TCsRgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT*/get COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT() {
    return 35918;
  },
  /*web_gl.CompressedTextureS3TCsRgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT*/get COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT() {
    return 35919;
  },
  /*web_gl.CompressedTextureS3TCsRgb.COMPRESSED_SRGB_S3TC_DXT1_EXT*/get COMPRESSED_SRGB_S3TC_DXT1_EXT() {
    return 35916;
  }
});
dart.registerExtension("WebGLCompressedTextureS3TCsRGB", web_gl.CompressedTextureS3TCsRgb);
web_gl.ContextEvent = class ContextEvent extends html$.Event {
  static new(type, eventInit) {
    if (eventInit === void 0) eventInit = null;
    if (eventInit != null) {
      let eventInit_1 = html_common.convertDartToNative_Dictionary(eventInit);
      return web_gl.ContextEvent._create_1(type, eventInit_1);
    }
    return web_gl.ContextEvent._create_2(type);
  }
  static _create_1(type, eventInit) {
    return new WebGLContextEvent(type, eventInit);
  }
  static _create_2(type) {
    return new WebGLContextEvent(type);
  }
  get [$statusMessage]() {
    return this.statusMessage;
  }
};
dart.addTypeTests(web_gl.ContextEvent);
const statusMessage = Symbol("ContextEvent.statusMessage");
dart.setFieldSignature(web_gl.ContextEvent, () => ({
  __proto__: dart.getFields(web_gl.ContextEvent.__proto__),
  [$statusMessage]: dart.finalFieldType(core.String)
}));
dart.registerExtension("WebGLContextEvent", web_gl.ContextEvent);
web_gl.DebugRendererInfo = class DebugRendererInfo extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.DebugRendererInfo);
dart.defineLazy(web_gl.DebugRendererInfo, {
  /*web_gl.DebugRendererInfo.UNMASKED_RENDERER_WEBGL*/get UNMASKED_RENDERER_WEBGL() {
    return 37446;
  },
  /*web_gl.DebugRendererInfo.UNMASKED_VENDOR_WEBGL*/get UNMASKED_VENDOR_WEBGL() {
    return 37445;
  }
});
dart.registerExtension("WebGLDebugRendererInfo", web_gl.DebugRendererInfo);
dart.registerExtension("WEBGL_debug_renderer_info", web_gl.DebugRendererInfo);
web_gl.DebugShaders = class DebugShaders extends _interceptors.Interceptor {
  [$getTranslatedShaderSource](...args) {
    return this.getTranslatedShaderSource.apply(this, args);
  }
};
dart.addTypeTests(web_gl.DebugShaders);
dart.setMethodSignature(web_gl.DebugShaders, () => ({
  __proto__: dart.getMethods(web_gl.DebugShaders.__proto__),
  [$getTranslatedShaderSource]: dart.fnType(core.String, [web_gl.Shader])
}));
dart.registerExtension("WebGLDebugShaders", web_gl.DebugShaders);
dart.registerExtension("WEBGL_debug_shaders", web_gl.DebugShaders);
web_gl.DepthTexture = class DepthTexture extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.DepthTexture);
dart.defineLazy(web_gl.DepthTexture, {
  /*web_gl.DepthTexture.UNSIGNED_INT_24_8_WEBGL*/get UNSIGNED_INT_24_8_WEBGL() {
    return 34042;
  }
});
dart.registerExtension("WebGLDepthTexture", web_gl.DepthTexture);
dart.registerExtension("WEBGL_depth_texture", web_gl.DepthTexture);
web_gl.DrawBuffers = class DrawBuffers extends _interceptors.Interceptor {
  [$drawBuffersWebgl](...args) {
    return this.drawBuffersWEBGL.apply(this, args);
  }
};
dart.addTypeTests(web_gl.DrawBuffers);
dart.setMethodSignature(web_gl.DrawBuffers, () => ({
  __proto__: dart.getMethods(web_gl.DrawBuffers.__proto__),
  [$drawBuffersWebgl]: dart.fnType(dart.void, [core.List$(core.int)])
}));
dart.registerExtension("WebGLDrawBuffers", web_gl.DrawBuffers);
dart.registerExtension("WEBGL_draw_buffers", web_gl.DrawBuffers);
web_gl.EXTsRgb = class EXTsRgb extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.EXTsRgb);
dart.defineLazy(web_gl.EXTsRgb, {
  /*web_gl.EXTsRgb.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT*/get FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT() {
    return 33296;
  },
  /*web_gl.EXTsRgb.SRGB8_ALPHA8_EXT*/get SRGB8_ALPHA8_EXT() {
    return 35907;
  },
  /*web_gl.EXTsRgb.SRGB_ALPHA_EXT*/get SRGB_ALPHA_EXT() {
    return 35906;
  },
  /*web_gl.EXTsRgb.SRGB_EXT*/get SRGB_EXT() {
    return 35904;
  }
});
dart.registerExtension("EXTsRGB", web_gl.EXTsRgb);
dart.registerExtension("EXT_sRGB", web_gl.EXTsRgb);
web_gl.ExtBlendMinMax = class ExtBlendMinMax extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.ExtBlendMinMax);
dart.defineLazy(web_gl.ExtBlendMinMax, {
  /*web_gl.ExtBlendMinMax.MAX_EXT*/get MAX_EXT() {
    return 32776;
  },
  /*web_gl.ExtBlendMinMax.MIN_EXT*/get MIN_EXT() {
    return 32775;
  }
});
dart.registerExtension("EXTBlendMinMax", web_gl.ExtBlendMinMax);
dart.registerExtension("EXT_blend_minmax", web_gl.ExtBlendMinMax);
web_gl.ExtColorBufferFloat = class ExtColorBufferFloat extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.ExtColorBufferFloat);
dart.registerExtension("EXTColorBufferFloat", web_gl.ExtColorBufferFloat);
web_gl.ExtColorBufferHalfFloat = class ExtColorBufferHalfFloat extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.ExtColorBufferHalfFloat);
dart.registerExtension("EXTColorBufferHalfFloat", web_gl.ExtColorBufferHalfFloat);
web_gl.ExtDisjointTimerQuery = class ExtDisjointTimerQuery extends _interceptors.Interceptor {
  [$beginQueryExt](...args) {
    return this.beginQueryEXT.apply(this, args);
  }
  [$createQueryExt](...args) {
    return this.createQueryEXT.apply(this, args);
  }
  [$deleteQueryExt](...args) {
    return this.deleteQueryEXT.apply(this, args);
  }
  [$endQueryExt](...args) {
    return this.endQueryEXT.apply(this, args);
  }
  [$getQueryExt](...args) {
    return this.getQueryEXT.apply(this, args);
  }
  [$getQueryObjectExt](...args) {
    return this.getQueryObjectEXT.apply(this, args);
  }
  [$isQueryExt](...args) {
    return this.isQueryEXT.apply(this, args);
  }
  [$queryCounterExt](...args) {
    return this.queryCounterEXT.apply(this, args);
  }
};
dart.addTypeTests(web_gl.ExtDisjointTimerQuery);
dart.setMethodSignature(web_gl.ExtDisjointTimerQuery, () => ({
  __proto__: dart.getMethods(web_gl.ExtDisjointTimerQuery.__proto__),
  [$beginQueryExt]: dart.fnType(dart.void, [core.int, web_gl.TimerQueryExt]),
  [$createQueryExt]: dart.fnType(web_gl.TimerQueryExt, []),
  [$deleteQueryExt]: dart.fnType(dart.void, [web_gl.TimerQueryExt]),
  [$endQueryExt]: dart.fnType(dart.void, [core.int]),
  [$getQueryExt]: dart.fnType(core.Object, [core.int, core.int]),
  [$getQueryObjectExt]: dart.fnType(core.Object, [web_gl.TimerQueryExt, core.int]),
  [$isQueryExt]: dart.fnType(core.bool, [web_gl.TimerQueryExt]),
  [$queryCounterExt]: dart.fnType(dart.void, [web_gl.TimerQueryExt, core.int])
}));
dart.defineLazy(web_gl.ExtDisjointTimerQuery, {
  /*web_gl.ExtDisjointTimerQuery.CURRENT_QUERY_EXT*/get CURRENT_QUERY_EXT() {
    return 34917;
  },
  /*web_gl.ExtDisjointTimerQuery.GPU_DISJOINT_EXT*/get GPU_DISJOINT_EXT() {
    return 36795;
  },
  /*web_gl.ExtDisjointTimerQuery.QUERY_COUNTER_BITS_EXT*/get QUERY_COUNTER_BITS_EXT() {
    return 34916;
  },
  /*web_gl.ExtDisjointTimerQuery.QUERY_RESULT_AVAILABLE_EXT*/get QUERY_RESULT_AVAILABLE_EXT() {
    return 34919;
  },
  /*web_gl.ExtDisjointTimerQuery.QUERY_RESULT_EXT*/get QUERY_RESULT_EXT() {
    return 34918;
  },
  /*web_gl.ExtDisjointTimerQuery.TIMESTAMP_EXT*/get TIMESTAMP_EXT() {
    return 36392;
  },
  /*web_gl.ExtDisjointTimerQuery.TIME_ELAPSED_EXT*/get TIME_ELAPSED_EXT() {
    return 35007;
  }
});
dart.registerExtension("EXTDisjointTimerQuery", web_gl.ExtDisjointTimerQuery);
web_gl.ExtDisjointTimerQueryWebGL2 = class ExtDisjointTimerQueryWebGL2 extends _interceptors.Interceptor {
  [$queryCounterExt](...args) {
    return this.queryCounterEXT.apply(this, args);
  }
};
dart.addTypeTests(web_gl.ExtDisjointTimerQueryWebGL2);
dart.setMethodSignature(web_gl.ExtDisjointTimerQueryWebGL2, () => ({
  __proto__: dart.getMethods(web_gl.ExtDisjointTimerQueryWebGL2.__proto__),
  [$queryCounterExt]: dart.fnType(dart.void, [web_gl.Query, core.int])
}));
dart.defineLazy(web_gl.ExtDisjointTimerQueryWebGL2, {
  /*web_gl.ExtDisjointTimerQueryWebGL2.GPU_DISJOINT_EXT*/get GPU_DISJOINT_EXT() {
    return 36795;
  },
  /*web_gl.ExtDisjointTimerQueryWebGL2.QUERY_COUNTER_BITS_EXT*/get QUERY_COUNTER_BITS_EXT() {
    return 34916;
  },
  /*web_gl.ExtDisjointTimerQueryWebGL2.TIMESTAMP_EXT*/get TIMESTAMP_EXT() {
    return 36392;
  },
  /*web_gl.ExtDisjointTimerQueryWebGL2.TIME_ELAPSED_EXT*/get TIME_ELAPSED_EXT() {
    return 35007;
  }
});
dart.registerExtension("EXTDisjointTimerQueryWebGL2", web_gl.ExtDisjointTimerQueryWebGL2);
web_gl.ExtFragDepth = class ExtFragDepth extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.ExtFragDepth);
dart.registerExtension("EXTFragDepth", web_gl.ExtFragDepth);
dart.registerExtension("EXT_frag_depth", web_gl.ExtFragDepth);
web_gl.ExtShaderTextureLod = class ExtShaderTextureLod extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.ExtShaderTextureLod);
dart.registerExtension("EXTShaderTextureLOD", web_gl.ExtShaderTextureLod);
dart.registerExtension("EXT_shader_texture_lod", web_gl.ExtShaderTextureLod);
web_gl.ExtTextureFilterAnisotropic = class ExtTextureFilterAnisotropic extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.ExtTextureFilterAnisotropic);
dart.defineLazy(web_gl.ExtTextureFilterAnisotropic, {
  /*web_gl.ExtTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT*/get MAX_TEXTURE_MAX_ANISOTROPY_EXT() {
    return 34047;
  },
  /*web_gl.ExtTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT*/get TEXTURE_MAX_ANISOTROPY_EXT() {
    return 34046;
  }
});
dart.registerExtension("EXTTextureFilterAnisotropic", web_gl.ExtTextureFilterAnisotropic);
dart.registerExtension("EXT_texture_filter_anisotropic", web_gl.ExtTextureFilterAnisotropic);
web_gl.Framebuffer = class Framebuffer extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.Framebuffer);
dart.registerExtension("WebGLFramebuffer", web_gl.Framebuffer);
web_gl.GetBufferSubDataAsync = class GetBufferSubDataAsync extends _interceptors.Interceptor {
  [$getBufferSubDataAsync](target, srcByteOffset, dstData, dstOffset, length) {
    if (dstOffset === void 0) dstOffset = null;
    if (length === void 0) length = null;
    return html$.promiseToFuture(dart.dynamic, this.getBufferSubDataAsync(target, srcByteOffset, dstData, dstOffset, length));
  }
};
dart.addTypeTests(web_gl.GetBufferSubDataAsync);
dart.setMethodSignature(web_gl.GetBufferSubDataAsync, () => ({
  __proto__: dart.getMethods(web_gl.GetBufferSubDataAsync.__proto__),
  [$getBufferSubDataAsync]: dart.fnType(async.Future, [core.int, core.int, typed_data.TypedData], [core.int, core.int])
}));
dart.registerExtension("WebGLGetBufferSubDataAsync", web_gl.GetBufferSubDataAsync);
web_gl.LoseContext = class LoseContext extends _interceptors.Interceptor {
  [$loseContext](...args) {
    return this.loseContext.apply(this, args);
  }
  [$restoreContext](...args) {
    return this.restoreContext.apply(this, args);
  }
};
dart.addTypeTests(web_gl.LoseContext);
dart.setMethodSignature(web_gl.LoseContext, () => ({
  __proto__: dart.getMethods(web_gl.LoseContext.__proto__),
  [$loseContext]: dart.fnType(dart.void, []),
  [$restoreContext]: dart.fnType(dart.void, [])
}));
dart.registerExtension("WebGLLoseContext", web_gl.LoseContext);
dart.registerExtension("WebGLExtensionLoseContext", web_gl.LoseContext);
dart.registerExtension("WEBGL_lose_context", web_gl.LoseContext);
web_gl.OesElementIndexUint = class OesElementIndexUint extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.OesElementIndexUint);
dart.registerExtension("OESElementIndexUint", web_gl.OesElementIndexUint);
dart.registerExtension("OES_element_index_uint", web_gl.OesElementIndexUint);
web_gl.OesStandardDerivatives = class OesStandardDerivatives extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.OesStandardDerivatives);
dart.defineLazy(web_gl.OesStandardDerivatives, {
  /*web_gl.OesStandardDerivatives.FRAGMENT_SHADER_DERIVATIVE_HINT_OES*/get FRAGMENT_SHADER_DERIVATIVE_HINT_OES() {
    return 35723;
  }
});
dart.registerExtension("OESStandardDerivatives", web_gl.OesStandardDerivatives);
dart.registerExtension("OES_standard_derivatives", web_gl.OesStandardDerivatives);
web_gl.OesTextureFloat = class OesTextureFloat extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.OesTextureFloat);
dart.registerExtension("OESTextureFloat", web_gl.OesTextureFloat);
dart.registerExtension("OES_texture_float", web_gl.OesTextureFloat);
web_gl.OesTextureFloatLinear = class OesTextureFloatLinear extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.OesTextureFloatLinear);
dart.registerExtension("OESTextureFloatLinear", web_gl.OesTextureFloatLinear);
dart.registerExtension("OES_texture_float_linear", web_gl.OesTextureFloatLinear);
web_gl.OesTextureHalfFloat = class OesTextureHalfFloat extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.OesTextureHalfFloat);
dart.defineLazy(web_gl.OesTextureHalfFloat, {
  /*web_gl.OesTextureHalfFloat.HALF_FLOAT_OES*/get HALF_FLOAT_OES() {
    return 36193;
  }
});
dart.registerExtension("OESTextureHalfFloat", web_gl.OesTextureHalfFloat);
dart.registerExtension("OES_texture_half_float", web_gl.OesTextureHalfFloat);
web_gl.OesTextureHalfFloatLinear = class OesTextureHalfFloatLinear extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.OesTextureHalfFloatLinear);
dart.registerExtension("OESTextureHalfFloatLinear", web_gl.OesTextureHalfFloatLinear);
dart.registerExtension("OES_texture_half_float_linear", web_gl.OesTextureHalfFloatLinear);
web_gl.OesVertexArrayObject = class OesVertexArrayObject extends _interceptors.Interceptor {
  [$bindVertexArray](...args) {
    return this.bindVertexArrayOES.apply(this, args);
  }
  [$createVertexArray](...args) {
    return this.createVertexArrayOES.apply(this, args);
  }
  [$deleteVertexArray](...args) {
    return this.deleteVertexArrayOES.apply(this, args);
  }
  [$isVertexArray](...args) {
    return this.isVertexArrayOES.apply(this, args);
  }
};
dart.addTypeTests(web_gl.OesVertexArrayObject);
dart.setMethodSignature(web_gl.OesVertexArrayObject, () => ({
  __proto__: dart.getMethods(web_gl.OesVertexArrayObject.__proto__),
  [$bindVertexArray]: dart.fnType(dart.void, [web_gl.VertexArrayObjectOes]),
  [$createVertexArray]: dart.fnType(web_gl.VertexArrayObjectOes, []),
  [$deleteVertexArray]: dart.fnType(dart.void, [web_gl.VertexArrayObjectOes]),
  [$isVertexArray]: dart.fnType(core.bool, [web_gl.VertexArrayObjectOes])
}));
dart.defineLazy(web_gl.OesVertexArrayObject, {
  /*web_gl.OesVertexArrayObject.VERTEX_ARRAY_BINDING_OES*/get VERTEX_ARRAY_BINDING_OES() {
    return 34229;
  }
});
dart.registerExtension("OESVertexArrayObject", web_gl.OesVertexArrayObject);
dart.registerExtension("OES_vertex_array_object", web_gl.OesVertexArrayObject);
web_gl.Program = class Program extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.Program);
dart.registerExtension("WebGLProgram", web_gl.Program);
web_gl.Query = class Query extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.Query);
dart.registerExtension("WebGLQuery", web_gl.Query);
web_gl.Renderbuffer = class Renderbuffer extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.Renderbuffer);
dart.registerExtension("WebGLRenderbuffer", web_gl.Renderbuffer);
const _getContextAttributes_1$ = Symbol('_getContextAttributes_1');
const _readPixels = Symbol('_readPixels');
const _texImage2D_1 = Symbol('_texImage2D_1');
const _texImage2D_2 = Symbol('_texImage2D_2');
const _texImage2D_3 = Symbol('_texImage2D_3');
const _texImage2D_4 = Symbol('_texImage2D_4');
const _texImage2D_5 = Symbol('_texImage2D_5');
const _texImage2D_6 = Symbol('_texImage2D_6');
const _texSubImage2D_1 = Symbol('_texSubImage2D_1');
const _texSubImage2D_2 = Symbol('_texSubImage2D_2');
const _texSubImage2D_3 = Symbol('_texSubImage2D_3');
const _texSubImage2D_4 = Symbol('_texSubImage2D_4');
const _texSubImage2D_5 = Symbol('_texSubImage2D_5');
const _texSubImage2D_6 = Symbol('_texSubImage2D_6');
web_gl.RenderingContext = class RenderingContext extends _interceptors.Interceptor {
  static get supported() {
    return !!window.WebGLRenderingContext;
  }
  get [$canvas]() {
    return this.canvas;
  }
  get [$drawingBufferHeight]() {
    return this.drawingBufferHeight;
  }
  get [$drawingBufferWidth]() {
    return this.drawingBufferWidth;
  }
  [$activeTexture](...args) {
    return this.activeTexture.apply(this, args);
  }
  [$attachShader](...args) {
    return this.attachShader.apply(this, args);
  }
  [$bindAttribLocation](...args) {
    return this.bindAttribLocation.apply(this, args);
  }
  [$bindBuffer](...args) {
    return this.bindBuffer.apply(this, args);
  }
  [$bindFramebuffer](...args) {
    return this.bindFramebuffer.apply(this, args);
  }
  [$bindRenderbuffer](...args) {
    return this.bindRenderbuffer.apply(this, args);
  }
  [$bindTexture](...args) {
    return this.bindTexture.apply(this, args);
  }
  [$blendColor](...args) {
    return this.blendColor.apply(this, args);
  }
  [$blendEquation](...args) {
    return this.blendEquation.apply(this, args);
  }
  [$blendEquationSeparate](...args) {
    return this.blendEquationSeparate.apply(this, args);
  }
  [$blendFunc](...args) {
    return this.blendFunc.apply(this, args);
  }
  [$blendFuncSeparate](...args) {
    return this.blendFuncSeparate.apply(this, args);
  }
  [$bufferData](...args) {
    return this.bufferData.apply(this, args);
  }
  [$bufferSubData](...args) {
    return this.bufferSubData.apply(this, args);
  }
  [$checkFramebufferStatus](...args) {
    return this.checkFramebufferStatus.apply(this, args);
  }
  [$clear](...args) {
    return this.clear.apply(this, args);
  }
  [$clearColor](...args) {
    return this.clearColor.apply(this, args);
  }
  [$clearDepth](...args) {
    return this.clearDepth.apply(this, args);
  }
  [$clearStencil](...args) {
    return this.clearStencil.apply(this, args);
  }
  [$colorMask](...args) {
    return this.colorMask.apply(this, args);
  }
  [$commit]() {
    return html$.promiseToFuture(dart.dynamic, this.commit());
  }
  [$compileShader](...args) {
    return this.compileShader.apply(this, args);
  }
  [$compressedTexImage2D](...args) {
    return this.compressedTexImage2D.apply(this, args);
  }
  [$compressedTexSubImage2D](...args) {
    return this.compressedTexSubImage2D.apply(this, args);
  }
  [$copyTexImage2D](...args) {
    return this.copyTexImage2D.apply(this, args);
  }
  [$copyTexSubImage2D](...args) {
    return this.copyTexSubImage2D.apply(this, args);
  }
  [$createBuffer](...args) {
    return this.createBuffer.apply(this, args);
  }
  [$createFramebuffer](...args) {
    return this.createFramebuffer.apply(this, args);
  }
  [$createProgram](...args) {
    return this.createProgram.apply(this, args);
  }
  [$createRenderbuffer](...args) {
    return this.createRenderbuffer.apply(this, args);
  }
  [$createShader](...args) {
    return this.createShader.apply(this, args);
  }
  [$createTexture](...args) {
    return this.createTexture.apply(this, args);
  }
  [$cullFace](...args) {
    return this.cullFace.apply(this, args);
  }
  [$deleteBuffer](...args) {
    return this.deleteBuffer.apply(this, args);
  }
  [$deleteFramebuffer](...args) {
    return this.deleteFramebuffer.apply(this, args);
  }
  [$deleteProgram](...args) {
    return this.deleteProgram.apply(this, args);
  }
  [$deleteRenderbuffer](...args) {
    return this.deleteRenderbuffer.apply(this, args);
  }
  [$deleteShader](...args) {
    return this.deleteShader.apply(this, args);
  }
  [$deleteTexture](...args) {
    return this.deleteTexture.apply(this, args);
  }
  [$depthFunc](...args) {
    return this.depthFunc.apply(this, args);
  }
  [$depthMask](...args) {
    return this.depthMask.apply(this, args);
  }
  [$depthRange](...args) {
    return this.depthRange.apply(this, args);
  }
  [$detachShader](...args) {
    return this.detachShader.apply(this, args);
  }
  [$disable](...args) {
    return this.disable.apply(this, args);
  }
  [$disableVertexAttribArray](...args) {
    return this.disableVertexAttribArray.apply(this, args);
  }
  [$drawArrays](...args) {
    return this.drawArrays.apply(this, args);
  }
  [$drawElements](...args) {
    return this.drawElements.apply(this, args);
  }
  [$enable](...args) {
    return this.enable.apply(this, args);
  }
  [$enableVertexAttribArray](...args) {
    return this.enableVertexAttribArray.apply(this, args);
  }
  [$finish](...args) {
    return this.finish.apply(this, args);
  }
  [$flush](...args) {
    return this.flush.apply(this, args);
  }
  [$framebufferRenderbuffer](...args) {
    return this.framebufferRenderbuffer.apply(this, args);
  }
  [$framebufferTexture2D](...args) {
    return this.framebufferTexture2D.apply(this, args);
  }
  [$frontFace](...args) {
    return this.frontFace.apply(this, args);
  }
  [$generateMipmap](...args) {
    return this.generateMipmap.apply(this, args);
  }
  [$getActiveAttrib](...args) {
    return this.getActiveAttrib.apply(this, args);
  }
  [$getActiveUniform](...args) {
    return this.getActiveUniform.apply(this, args);
  }
  [$getAttachedShaders](...args) {
    return this.getAttachedShaders.apply(this, args);
  }
  [$getAttribLocation](...args) {
    return this.getAttribLocation.apply(this, args);
  }
  [$getBufferParameter](...args) {
    return this.getBufferParameter.apply(this, args);
  }
  [$getContextAttributes]() {
    return html_common.convertNativeToDart_Dictionary(this[_getContextAttributes_1$]());
  }
  [_getContextAttributes_1$](...args) {
    return this.getContextAttributes.apply(this, args);
  }
  [$getError](...args) {
    return this.getError.apply(this, args);
  }
  [$getExtension](...args) {
    return this.getExtension.apply(this, args);
  }
  [$getFramebufferAttachmentParameter](...args) {
    return this.getFramebufferAttachmentParameter.apply(this, args);
  }
  [$getParameter](...args) {
    return this.getParameter.apply(this, args);
  }
  [$getProgramInfoLog](...args) {
    return this.getProgramInfoLog.apply(this, args);
  }
  [$getProgramParameter](...args) {
    return this.getProgramParameter.apply(this, args);
  }
  [$getRenderbufferParameter](...args) {
    return this.getRenderbufferParameter.apply(this, args);
  }
  [$getShaderInfoLog](...args) {
    return this.getShaderInfoLog.apply(this, args);
  }
  [$getShaderParameter](...args) {
    return this.getShaderParameter.apply(this, args);
  }
  [$getShaderPrecisionFormat](...args) {
    return this.getShaderPrecisionFormat.apply(this, args);
  }
  [$getShaderSource](...args) {
    return this.getShaderSource.apply(this, args);
  }
  [$getSupportedExtensions](...args) {
    return this.getSupportedExtensions.apply(this, args);
  }
  [$getTexParameter](...args) {
    return this.getTexParameter.apply(this, args);
  }
  [$getUniform](...args) {
    return this.getUniform.apply(this, args);
  }
  [$getUniformLocation](...args) {
    return this.getUniformLocation.apply(this, args);
  }
  [$getVertexAttrib](...args) {
    return this.getVertexAttrib.apply(this, args);
  }
  [$getVertexAttribOffset](...args) {
    return this.getVertexAttribOffset.apply(this, args);
  }
  [$hint](...args) {
    return this.hint.apply(this, args);
  }
  [$isBuffer](...args) {
    return this.isBuffer.apply(this, args);
  }
  [$isContextLost](...args) {
    return this.isContextLost.apply(this, args);
  }
  [$isEnabled](...args) {
    return this.isEnabled.apply(this, args);
  }
  [$isFramebuffer](...args) {
    return this.isFramebuffer.apply(this, args);
  }
  [$isProgram](...args) {
    return this.isProgram.apply(this, args);
  }
  [$isRenderbuffer](...args) {
    return this.isRenderbuffer.apply(this, args);
  }
  [$isShader](...args) {
    return this.isShader.apply(this, args);
  }
  [$isTexture](...args) {
    return this.isTexture.apply(this, args);
  }
  [$lineWidth](...args) {
    return this.lineWidth.apply(this, args);
  }
  [$linkProgram](...args) {
    return this.linkProgram.apply(this, args);
  }
  [$pixelStorei](...args) {
    return this.pixelStorei.apply(this, args);
  }
  [$polygonOffset](...args) {
    return this.polygonOffset.apply(this, args);
  }
  [_readPixels](...args) {
    return this.readPixels.apply(this, args);
  }
  [$renderbufferStorage](...args) {
    return this.renderbufferStorage.apply(this, args);
  }
  [$sampleCoverage](...args) {
    return this.sampleCoverage.apply(this, args);
  }
  [$scissor](...args) {
    return this.scissor.apply(this, args);
  }
  [$shaderSource](...args) {
    return this.shaderSource.apply(this, args);
  }
  [$stencilFunc](...args) {
    return this.stencilFunc.apply(this, args);
  }
  [$stencilFuncSeparate](...args) {
    return this.stencilFuncSeparate.apply(this, args);
  }
  [$stencilMask](...args) {
    return this.stencilMask.apply(this, args);
  }
  [$stencilMaskSeparate](...args) {
    return this.stencilMaskSeparate.apply(this, args);
  }
  [$stencilOp](...args) {
    return this.stencilOp.apply(this, args);
  }
  [$stencilOpSeparate](...args) {
    return this.stencilOpSeparate.apply(this, args);
  }
  [$texImage2D](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels) {
    if (format === void 0) format = null;
    if (type === void 0) type = null;
    if (pixels === void 0) pixels = null;
    if (type != null && format != null && core.int.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video)) {
      this[_texImage2D_1](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels);
      return;
    }
    if (html$.ImageData.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      let pixels_1 = html_common.convertDartToNative_ImageData(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
      this[_texImage2D_2](target, level, internalformat, format_OR_width, height_OR_type, pixels_1);
      return;
    }
    if (html$.ImageElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_3](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.CanvasElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_4](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.VideoElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_5](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.ImageBitmap.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_6](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_texImage2D_1](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_2](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_3](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_4](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_5](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_6](...args) {
    return this.texImage2D.apply(this, args);
  }
  [$texParameterf](...args) {
    return this.texParameterf.apply(this, args);
  }
  [$texParameteri](...args) {
    return this.texParameteri.apply(this, args);
  }
  [$texSubImage2D](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels) {
    if (type === void 0) type = null;
    if (pixels === void 0) pixels = null;
    if (type != null && core.int.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video)) {
      this[_texSubImage2D_1](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels);
      return;
    }
    if (html$.ImageData.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      let pixels_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
      this[_texSubImage2D_2](target, level, xoffset, yoffset, format_OR_width, height_OR_type, pixels_1);
      return;
    }
    if (html$.ImageElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_3](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.CanvasElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_4](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.VideoElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_5](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_6](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_texSubImage2D_1](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_2](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_3](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_4](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_5](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_6](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [$uniform1f](...args) {
    return this.uniform1f.apply(this, args);
  }
  [$uniform1fv](...args) {
    return this.uniform1fv.apply(this, args);
  }
  [$uniform1i](...args) {
    return this.uniform1i.apply(this, args);
  }
  [$uniform1iv](...args) {
    return this.uniform1iv.apply(this, args);
  }
  [$uniform2f](...args) {
    return this.uniform2f.apply(this, args);
  }
  [$uniform2fv](...args) {
    return this.uniform2fv.apply(this, args);
  }
  [$uniform2i](...args) {
    return this.uniform2i.apply(this, args);
  }
  [$uniform2iv](...args) {
    return this.uniform2iv.apply(this, args);
  }
  [$uniform3f](...args) {
    return this.uniform3f.apply(this, args);
  }
  [$uniform3fv](...args) {
    return this.uniform3fv.apply(this, args);
  }
  [$uniform3i](...args) {
    return this.uniform3i.apply(this, args);
  }
  [$uniform3iv](...args) {
    return this.uniform3iv.apply(this, args);
  }
  [$uniform4f](...args) {
    return this.uniform4f.apply(this, args);
  }
  [$uniform4fv](...args) {
    return this.uniform4fv.apply(this, args);
  }
  [$uniform4i](...args) {
    return this.uniform4i.apply(this, args);
  }
  [$uniform4iv](...args) {
    return this.uniform4iv.apply(this, args);
  }
  [$uniformMatrix2fv](...args) {
    return this.uniformMatrix2fv.apply(this, args);
  }
  [$uniformMatrix3fv](...args) {
    return this.uniformMatrix3fv.apply(this, args);
  }
  [$uniformMatrix4fv](...args) {
    return this.uniformMatrix4fv.apply(this, args);
  }
  [$useProgram](...args) {
    return this.useProgram.apply(this, args);
  }
  [$validateProgram](...args) {
    return this.validateProgram.apply(this, args);
  }
  [$vertexAttrib1f](...args) {
    return this.vertexAttrib1f.apply(this, args);
  }
  [$vertexAttrib1fv](...args) {
    return this.vertexAttrib1fv.apply(this, args);
  }
  [$vertexAttrib2f](...args) {
    return this.vertexAttrib2f.apply(this, args);
  }
  [$vertexAttrib2fv](...args) {
    return this.vertexAttrib2fv.apply(this, args);
  }
  [$vertexAttrib3f](...args) {
    return this.vertexAttrib3f.apply(this, args);
  }
  [$vertexAttrib3fv](...args) {
    return this.vertexAttrib3fv.apply(this, args);
  }
  [$vertexAttrib4f](...args) {
    return this.vertexAttrib4f.apply(this, args);
  }
  [$vertexAttrib4fv](...args) {
    return this.vertexAttrib4fv.apply(this, args);
  }
  [$vertexAttribPointer](...args) {
    return this.vertexAttribPointer.apply(this, args);
  }
  [$viewport](...args) {
    return this.viewport.apply(this, args);
  }
  [$readPixels](x, y, width, height, format, type, pixels) {
    this[_readPixels](x, y, width, height, format, type, pixels);
  }
  [$texImage2DUntyped](targetTexture, levelOfDetail, internalFormat, format, type, data) {
    this[$texImage2D](targetTexture, levelOfDetail, internalFormat, format, type, data);
  }
  [$texImage2DTyped](targetTexture, levelOfDetail, internalFormat, width, height, border, format, type, data) {
    this[$texImage2D](targetTexture, levelOfDetail, internalFormat, width, height, border, format, type, data);
  }
  [$texSubImage2DUntyped](targetTexture, levelOfDetail, xOffset, yOffset, format, type, data) {
    this[$texSubImage2D](targetTexture, levelOfDetail, xOffset, yOffset, format, type, data);
  }
  [$texSubImage2DTyped](targetTexture, levelOfDetail, xOffset, yOffset, width, height, border, format, type, data) {
    this[$texSubImage2D](targetTexture, levelOfDetail, xOffset, yOffset, width, height, format, type, data);
  }
  [$bufferDataTyped](target, data, usage) {
    this.bufferData(target, data, usage);
  }
  [$bufferSubDataTyped](target, offset, data) {
    this.bufferSubData(target, offset, data);
  }
};
dart.addTypeTests(web_gl.RenderingContext);
const canvas$3 = Symbol("RenderingContext.canvas");
const drawingBufferHeight = Symbol("RenderingContext.drawingBufferHeight");
const drawingBufferWidth = Symbol("RenderingContext.drawingBufferWidth");
web_gl.RenderingContext[dart.implements] = () => [html$.CanvasRenderingContext];
dart.setMethodSignature(web_gl.RenderingContext, () => ({
  __proto__: dart.getMethods(web_gl.RenderingContext.__proto__),
  [$activeTexture]: dart.fnType(dart.void, [core.int]),
  [$attachShader]: dart.fnType(dart.void, [web_gl.Program, web_gl.Shader]),
  [$bindAttribLocation]: dart.fnType(dart.void, [web_gl.Program, core.int, core.String]),
  [$bindBuffer]: dart.fnType(dart.void, [core.int, web_gl.Buffer]),
  [$bindFramebuffer]: dart.fnType(dart.void, [core.int, web_gl.Framebuffer]),
  [$bindRenderbuffer]: dart.fnType(dart.void, [core.int, web_gl.Renderbuffer]),
  [$bindTexture]: dart.fnType(dart.void, [core.int, web_gl.Texture]),
  [$blendColor]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$blendEquation]: dart.fnType(dart.void, [core.int]),
  [$blendEquationSeparate]: dart.fnType(dart.void, [core.int, core.int]),
  [$blendFunc]: dart.fnType(dart.void, [core.int, core.int]),
  [$blendFuncSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$bufferData]: dart.fnType(dart.void, [core.int, dart.dynamic, core.int]),
  [$bufferSubData]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic]),
  [$checkFramebufferStatus]: dart.fnType(core.int, [core.int]),
  [$clear]: dart.fnType(dart.void, [core.int]),
  [$clearColor]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$clearDepth]: dart.fnType(dart.void, [core.num]),
  [$clearStencil]: dart.fnType(dart.void, [core.int]),
  [$colorMask]: dart.fnType(dart.void, [core.bool, core.bool, core.bool, core.bool]),
  [$commit]: dart.fnType(async.Future, []),
  [$compileShader]: dart.fnType(dart.void, [web_gl.Shader]),
  [$compressedTexImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
  [$compressedTexSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
  [$copyTexImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
  [$copyTexSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
  [$createBuffer]: dart.fnType(web_gl.Buffer, []),
  [$createFramebuffer]: dart.fnType(web_gl.Framebuffer, []),
  [$createProgram]: dart.fnType(web_gl.Program, []),
  [$createRenderbuffer]: dart.fnType(web_gl.Renderbuffer, []),
  [$createShader]: dart.fnType(web_gl.Shader, [core.int]),
  [$createTexture]: dart.fnType(web_gl.Texture, []),
  [$cullFace]: dart.fnType(dart.void, [core.int]),
  [$deleteBuffer]: dart.fnType(dart.void, [web_gl.Buffer]),
  [$deleteFramebuffer]: dart.fnType(dart.void, [web_gl.Framebuffer]),
  [$deleteProgram]: dart.fnType(dart.void, [web_gl.Program]),
  [$deleteRenderbuffer]: dart.fnType(dart.void, [web_gl.Renderbuffer]),
  [$deleteShader]: dart.fnType(dart.void, [web_gl.Shader]),
  [$deleteTexture]: dart.fnType(dart.void, [web_gl.Texture]),
  [$depthFunc]: dart.fnType(dart.void, [core.int]),
  [$depthMask]: dart.fnType(dart.void, [core.bool]),
  [$depthRange]: dart.fnType(dart.void, [core.num, core.num]),
  [$detachShader]: dart.fnType(dart.void, [web_gl.Program, web_gl.Shader]),
  [$disable]: dart.fnType(dart.void, [core.int]),
  [$disableVertexAttribArray]: dart.fnType(dart.void, [core.int]),
  [$drawArrays]: dart.fnType(dart.void, [core.int, core.int, core.int]),
  [$drawElements]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$enable]: dart.fnType(dart.void, [core.int]),
  [$enableVertexAttribArray]: dart.fnType(dart.void, [core.int]),
  [$finish]: dart.fnType(dart.void, []),
  [$flush]: dart.fnType(dart.void, []),
  [$framebufferRenderbuffer]: dart.fnType(dart.void, [core.int, core.int, core.int, web_gl.Renderbuffer]),
  [$framebufferTexture2D]: dart.fnType(dart.void, [core.int, core.int, core.int, web_gl.Texture, core.int]),
  [$frontFace]: dart.fnType(dart.void, [core.int]),
  [$generateMipmap]: dart.fnType(dart.void, [core.int]),
  [$getActiveAttrib]: dart.fnType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
  [$getActiveUniform]: dart.fnType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
  [$getAttachedShaders]: dart.fnType(core.List$(web_gl.Shader), [web_gl.Program]),
  [$getAttribLocation]: dart.fnType(core.int, [web_gl.Program, core.String]),
  [$getBufferParameter]: dart.fnType(core.Object, [core.int, core.int]),
  [$getContextAttributes]: dart.fnType(core.Map, []),
  [_getContextAttributes_1$]: dart.fnType(dart.dynamic, []),
  [$getError]: dart.fnType(core.int, []),
  [$getExtension]: dart.fnType(core.Object, [core.String]),
  [$getFramebufferAttachmentParameter]: dart.fnType(core.Object, [core.int, core.int, core.int]),
  [$getParameter]: dart.fnType(core.Object, [core.int]),
  [$getProgramInfoLog]: dart.fnType(core.String, [web_gl.Program]),
  [$getProgramParameter]: dart.fnType(core.Object, [web_gl.Program, core.int]),
  [$getRenderbufferParameter]: dart.fnType(core.Object, [core.int, core.int]),
  [$getShaderInfoLog]: dart.fnType(core.String, [web_gl.Shader]),
  [$getShaderParameter]: dart.fnType(core.Object, [web_gl.Shader, core.int]),
  [$getShaderPrecisionFormat]: dart.fnType(web_gl.ShaderPrecisionFormat, [core.int, core.int]),
  [$getShaderSource]: dart.fnType(core.String, [web_gl.Shader]),
  [$getSupportedExtensions]: dart.fnType(core.List$(core.String), []),
  [$getTexParameter]: dart.fnType(core.Object, [core.int, core.int]),
  [$getUniform]: dart.fnType(core.Object, [web_gl.Program, web_gl.UniformLocation]),
  [$getUniformLocation]: dart.fnType(web_gl.UniformLocation, [web_gl.Program, core.String]),
  [$getVertexAttrib]: dart.fnType(core.Object, [core.int, core.int]),
  [$getVertexAttribOffset]: dart.fnType(core.int, [core.int, core.int]),
  [$hint]: dart.fnType(dart.void, [core.int, core.int]),
  [$isBuffer]: dart.fnType(core.bool, [web_gl.Buffer]),
  [$isContextLost]: dart.fnType(core.bool, []),
  [$isEnabled]: dart.fnType(core.bool, [core.int]),
  [$isFramebuffer]: dart.fnType(core.bool, [web_gl.Framebuffer]),
  [$isProgram]: dart.fnType(core.bool, [web_gl.Program]),
  [$isRenderbuffer]: dart.fnType(core.bool, [web_gl.Renderbuffer]),
  [$isShader]: dart.fnType(core.bool, [web_gl.Shader]),
  [$isTexture]: dart.fnType(core.bool, [web_gl.Texture]),
  [$lineWidth]: dart.fnType(dart.void, [core.num]),
  [$linkProgram]: dart.fnType(dart.void, [web_gl.Program]),
  [$pixelStorei]: dart.fnType(dart.void, [core.int, core.int]),
  [$polygonOffset]: dart.fnType(dart.void, [core.num, core.num]),
  [_readPixels]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
  [$renderbufferStorage]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$sampleCoverage]: dart.fnType(dart.void, [core.num, core.bool]),
  [$scissor]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$shaderSource]: dart.fnType(dart.void, [web_gl.Shader, core.String]),
  [$stencilFunc]: dart.fnType(dart.void, [core.int, core.int, core.int]),
  [$stencilFuncSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$stencilMask]: dart.fnType(dart.void, [core.int]),
  [$stencilMaskSeparate]: dart.fnType(dart.void, [core.int, core.int]),
  [$stencilOp]: dart.fnType(dart.void, [core.int, core.int, core.int]),
  [$stencilOpSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$texImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int, core.int, typed_data.TypedData]),
  [_texImage2D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int, dart.dynamic, dart.dynamic, typed_data.TypedData]),
  [_texImage2D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_texImage2D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
  [_texImage2D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
  [_texImage2D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
  [_texImage2D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
  [$texParameterf]: dart.fnType(dart.void, [core.int, core.int, core.num]),
  [$texParameteri]: dart.fnType(dart.void, [core.int, core.int, core.int]),
  [$texSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int, typed_data.TypedData]),
  [_texSubImage2D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int, dart.dynamic, typed_data.TypedData]),
  [_texSubImage2D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_texSubImage2D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
  [_texSubImage2D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
  [_texSubImage2D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
  [_texSubImage2D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
  [$uniform1f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num]),
  [$uniform1fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform1i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int]),
  [$uniform1iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform2f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num]),
  [$uniform2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform2i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int]),
  [$uniform2iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform3f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num, core.num]),
  [$uniform3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform3i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int]),
  [$uniform3iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform4f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num, core.num, core.num]),
  [$uniform4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform4i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int, core.int]),
  [$uniform4iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniformMatrix2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
  [$uniformMatrix3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
  [$uniformMatrix4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
  [$useProgram]: dart.fnType(dart.void, [web_gl.Program]),
  [$validateProgram]: dart.fnType(dart.void, [web_gl.Program]),
  [$vertexAttrib1f]: dart.fnType(dart.void, [core.int, core.num]),
  [$vertexAttrib1fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
  [$vertexAttrib2f]: dart.fnType(dart.void, [core.int, core.num, core.num]),
  [$vertexAttrib2fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
  [$vertexAttrib3f]: dart.fnType(dart.void, [core.int, core.num, core.num, core.num]),
  [$vertexAttrib3fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
  [$vertexAttrib4f]: dart.fnType(dart.void, [core.int, core.num, core.num, core.num, core.num]),
  [$vertexAttrib4fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
  [$vertexAttribPointer]: dart.fnType(dart.void, [core.int, core.int, core.int, core.bool, core.int, core.int]),
  [$viewport]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$readPixels]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
  [$texImage2DUntyped]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, dart.dynamic]),
  [$texImage2DTyped]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
  [$texSubImage2DUntyped]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic]),
  [$texSubImage2DTyped]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
  [$bufferDataTyped]: dart.fnType(dart.void, [core.int, typed_data.TypedData, core.int]),
  [$bufferSubDataTyped]: dart.fnType(dart.void, [core.int, core.int, typed_data.TypedData])
}));
dart.setFieldSignature(web_gl.RenderingContext, () => ({
  __proto__: dart.getFields(web_gl.RenderingContext.__proto__),
  [$canvas]: dart.finalFieldType(html$.CanvasElement),
  [$drawingBufferHeight]: dart.finalFieldType(core.int),
  [$drawingBufferWidth]: dart.finalFieldType(core.int)
}));
dart.registerExtension("WebGLRenderingContext", web_gl.RenderingContext);
const _getUniformIndices_1 = Symbol('_getUniformIndices_1');
const _texImage2D2_1 = Symbol('_texImage2D2_1');
const _texImage2D2_2 = Symbol('_texImage2D2_2');
const _texImage2D2_3 = Symbol('_texImage2D2_3');
const _texImage2D2_4 = Symbol('_texImage2D2_4');
const _texImage2D2_5 = Symbol('_texImage2D2_5');
const _texImage2D2_6 = Symbol('_texImage2D2_6');
const _texImage2D2_7 = Symbol('_texImage2D2_7');
const _texImage3D_1 = Symbol('_texImage3D_1');
const _texImage3D_2 = Symbol('_texImage3D_2');
const _texImage3D_3 = Symbol('_texImage3D_3');
const _texImage3D_4 = Symbol('_texImage3D_4');
const _texImage3D_5 = Symbol('_texImage3D_5');
const _texImage3D_6 = Symbol('_texImage3D_6');
const _texImage3D_7 = Symbol('_texImage3D_7');
const _texImage3D_8 = Symbol('_texImage3D_8');
const _texSubImage2D2_1 = Symbol('_texSubImage2D2_1');
const _texSubImage2D2_2 = Symbol('_texSubImage2D2_2');
const _texSubImage2D2_3 = Symbol('_texSubImage2D2_3');
const _texSubImage2D2_4 = Symbol('_texSubImage2D2_4');
const _texSubImage2D2_5 = Symbol('_texSubImage2D2_5');
const _texSubImage2D2_6 = Symbol('_texSubImage2D2_6');
const _texSubImage2D2_7 = Symbol('_texSubImage2D2_7');
const _texSubImage3D_1 = Symbol('_texSubImage3D_1');
const _texSubImage3D_2 = Symbol('_texSubImage3D_2');
const _texSubImage3D_3 = Symbol('_texSubImage3D_3');
const _texSubImage3D_4 = Symbol('_texSubImage3D_4');
const _texSubImage3D_5 = Symbol('_texSubImage3D_5');
const _texSubImage3D_6 = Symbol('_texSubImage3D_6');
const _texSubImage3D_7 = Symbol('_texSubImage3D_7');
const _texSubImage3D_8 = Symbol('_texSubImage3D_8');
const _transformFeedbackVaryings_1 = Symbol('_transformFeedbackVaryings_1');
web_gl.RenderingContext2 = class RenderingContext2 extends _interceptors.Interceptor {
  get [$canvas]() {
    return this.canvas;
  }
  [$beginQuery](...args) {
    return this.beginQuery.apply(this, args);
  }
  [$beginTransformFeedback](...args) {
    return this.beginTransformFeedback.apply(this, args);
  }
  [$bindBufferBase](...args) {
    return this.bindBufferBase.apply(this, args);
  }
  [$bindBufferRange](...args) {
    return this.bindBufferRange.apply(this, args);
  }
  [$bindSampler](...args) {
    return this.bindSampler.apply(this, args);
  }
  [$bindTransformFeedback](...args) {
    return this.bindTransformFeedback.apply(this, args);
  }
  [$bindVertexArray](...args) {
    return this.bindVertexArray.apply(this, args);
  }
  [$blitFramebuffer](...args) {
    return this.blitFramebuffer.apply(this, args);
  }
  [$bufferData2](...args) {
    return this.bufferData.apply(this, args);
  }
  [$bufferSubData2](...args) {
    return this.bufferSubData.apply(this, args);
  }
  [$clearBufferfi](...args) {
    return this.clearBufferfi.apply(this, args);
  }
  [$clearBufferfv](...args) {
    return this.clearBufferfv.apply(this, args);
  }
  [$clearBufferiv](...args) {
    return this.clearBufferiv.apply(this, args);
  }
  [$clearBufferuiv](...args) {
    return this.clearBufferuiv.apply(this, args);
  }
  [$clientWaitSync](...args) {
    return this.clientWaitSync.apply(this, args);
  }
  [$compressedTexImage2D2](...args) {
    return this.compressedTexImage2D.apply(this, args);
  }
  [$compressedTexImage2D3](...args) {
    return this.compressedTexImage2D.apply(this, args);
  }
  [$compressedTexImage3D](...args) {
    return this.compressedTexImage3D.apply(this, args);
  }
  [$compressedTexImage3D2](...args) {
    return this.compressedTexImage3D.apply(this, args);
  }
  [$compressedTexSubImage2D2](...args) {
    return this.compressedTexSubImage2D.apply(this, args);
  }
  [$compressedTexSubImage2D3](...args) {
    return this.compressedTexSubImage2D.apply(this, args);
  }
  [$compressedTexSubImage3D](...args) {
    return this.compressedTexSubImage3D.apply(this, args);
  }
  [$compressedTexSubImage3D2](...args) {
    return this.compressedTexSubImage3D.apply(this, args);
  }
  [$copyBufferSubData](...args) {
    return this.copyBufferSubData.apply(this, args);
  }
  [$copyTexSubImage3D](...args) {
    return this.copyTexSubImage3D.apply(this, args);
  }
  [$createQuery](...args) {
    return this.createQuery.apply(this, args);
  }
  [$createSampler](...args) {
    return this.createSampler.apply(this, args);
  }
  [$createTransformFeedback](...args) {
    return this.createTransformFeedback.apply(this, args);
  }
  [$createVertexArray](...args) {
    return this.createVertexArray.apply(this, args);
  }
  [$deleteQuery](...args) {
    return this.deleteQuery.apply(this, args);
  }
  [$deleteSampler](...args) {
    return this.deleteSampler.apply(this, args);
  }
  [$deleteSync](...args) {
    return this.deleteSync.apply(this, args);
  }
  [$deleteTransformFeedback](...args) {
    return this.deleteTransformFeedback.apply(this, args);
  }
  [$deleteVertexArray](...args) {
    return this.deleteVertexArray.apply(this, args);
  }
  [$drawArraysInstanced](...args) {
    return this.drawArraysInstanced.apply(this, args);
  }
  [$drawBuffers](...args) {
    return this.drawBuffers.apply(this, args);
  }
  [$drawElementsInstanced](...args) {
    return this.drawElementsInstanced.apply(this, args);
  }
  [$drawRangeElements](...args) {
    return this.drawRangeElements.apply(this, args);
  }
  [$endQuery](...args) {
    return this.endQuery.apply(this, args);
  }
  [$endTransformFeedback](...args) {
    return this.endTransformFeedback.apply(this, args);
  }
  [$fenceSync](...args) {
    return this.fenceSync.apply(this, args);
  }
  [$framebufferTextureLayer](...args) {
    return this.framebufferTextureLayer.apply(this, args);
  }
  [$getActiveUniformBlockName](...args) {
    return this.getActiveUniformBlockName.apply(this, args);
  }
  [$getActiveUniformBlockParameter](...args) {
    return this.getActiveUniformBlockParameter.apply(this, args);
  }
  [$getActiveUniforms](...args) {
    return this.getActiveUniforms.apply(this, args);
  }
  [$getBufferSubData](...args) {
    return this.getBufferSubData.apply(this, args);
  }
  [$getFragDataLocation](...args) {
    return this.getFragDataLocation.apply(this, args);
  }
  [$getIndexedParameter](...args) {
    return this.getIndexedParameter.apply(this, args);
  }
  [$getInternalformatParameter](...args) {
    return this.getInternalformatParameter.apply(this, args);
  }
  [$getQuery](...args) {
    return this.getQuery.apply(this, args);
  }
  [$getQueryParameter](...args) {
    return this.getQueryParameter.apply(this, args);
  }
  [$getSamplerParameter](...args) {
    return this.getSamplerParameter.apply(this, args);
  }
  [$getSyncParameter](...args) {
    return this.getSyncParameter.apply(this, args);
  }
  [$getTransformFeedbackVarying](...args) {
    return this.getTransformFeedbackVarying.apply(this, args);
  }
  [$getUniformBlockIndex](...args) {
    return this.getUniformBlockIndex.apply(this, args);
  }
  [$getUniformIndices](program, uniformNames) {
    let uniformNames_1 = html_common.convertDartToNative_StringArray(uniformNames);
    return this[_getUniformIndices_1](program, uniformNames_1);
  }
  [_getUniformIndices_1](...args) {
    return this.getUniformIndices.apply(this, args);
  }
  [$invalidateFramebuffer](...args) {
    return this.invalidateFramebuffer.apply(this, args);
  }
  [$invalidateSubFramebuffer](...args) {
    return this.invalidateSubFramebuffer.apply(this, args);
  }
  [$isQuery](...args) {
    return this.isQuery.apply(this, args);
  }
  [$isSampler](...args) {
    return this.isSampler.apply(this, args);
  }
  [$isSync](...args) {
    return this.isSync.apply(this, args);
  }
  [$isTransformFeedback](...args) {
    return this.isTransformFeedback.apply(this, args);
  }
  [$isVertexArray](...args) {
    return this.isVertexArray.apply(this, args);
  }
  [$pauseTransformFeedback](...args) {
    return this.pauseTransformFeedback.apply(this, args);
  }
  [$readBuffer](...args) {
    return this.readBuffer.apply(this, args);
  }
  [$readPixels2](...args) {
    return this.readPixels.apply(this, args);
  }
  [$renderbufferStorageMultisample](...args) {
    return this.renderbufferStorageMultisample.apply(this, args);
  }
  [$resumeTransformFeedback](...args) {
    return this.resumeTransformFeedback.apply(this, args);
  }
  [$samplerParameterf](...args) {
    return this.samplerParameterf.apply(this, args);
  }
  [$samplerParameteri](...args) {
    return this.samplerParameteri.apply(this, args);
  }
  [$texImage2D2](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video, srcOffset) {
    if (srcOffset === void 0) srcOffset = null;
    if (core.int.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      this[_texImage2D2_1](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      return;
    }
    if (html$.ImageData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      let data_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      this[_texImage2D2_2](target, level, internalformat, width, height, border, format, type, data_1);
      return;
    }
    if (html$.ImageElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      this[_texImage2D2_3](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      return;
    }
    if (html$.CanvasElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      this[_texImage2D2_4](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      return;
    }
    if (html$.VideoElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      this[_texImage2D2_5](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      return;
    }
    if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      this[_texImage2D2_6](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      return;
    }
    if (srcOffset != null && typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video)) {
      this[_texImage2D2_7](target, level, internalformat, width, height, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video, srcOffset);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_texImage2D2_1](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D2_2](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D2_3](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D2_4](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D2_5](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D2_6](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D2_7](...args) {
    return this.texImage2D.apply(this, args);
  }
  [$texImage3D](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video, srcOffset) {
    if (srcOffset === void 0) srcOffset = null;
    if (core.int.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texImage3D_1](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if (html$.ImageData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      let data_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      this[_texImage3D_2](target, level, internalformat, width, height, depth, border, format, type, data_1);
      return;
    }
    if (html$.ImageElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texImage3D_3](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if (html$.CanvasElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texImage3D_4](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if (html$.VideoElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texImage3D_5](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texImage3D_6](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if ((typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) || bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video == null) && srcOffset == null) {
      this[_texImage3D_7](target, level, internalformat, width, height, depth, border, format, type, typed_data.TypedData._check(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video));
      return;
    }
    if (srcOffset != null && typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video)) {
      this[_texImage3D_8](target, level, internalformat, width, height, depth, border, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video, srcOffset);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_texImage3D_1](...args) {
    return this.texImage3D.apply(this, args);
  }
  [_texImage3D_2](...args) {
    return this.texImage3D.apply(this, args);
  }
  [_texImage3D_3](...args) {
    return this.texImage3D.apply(this, args);
  }
  [_texImage3D_4](...args) {
    return this.texImage3D.apply(this, args);
  }
  [_texImage3D_5](...args) {
    return this.texImage3D.apply(this, args);
  }
  [_texImage3D_6](...args) {
    return this.texImage3D.apply(this, args);
  }
  [_texImage3D_7](...args) {
    return this.texImage3D.apply(this, args);
  }
  [_texImage3D_8](...args) {
    return this.texImage3D.apply(this, args);
  }
  [$texStorage2D](...args) {
    return this.texStorage2D.apply(this, args);
  }
  [$texStorage3D](...args) {
    return this.texStorage3D.apply(this, args);
  }
  [$texSubImage2D2](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video, srcOffset) {
    if (srcOffset === void 0) srcOffset = null;
    if (core.int.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      this[_texSubImage2D2_1](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      return;
    }
    if (html$.ImageData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      let data_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      this[_texSubImage2D2_2](target, level, xoffset, yoffset, width, height, format, type, data_1);
      return;
    }
    if (html$.ImageElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      this[_texSubImage2D2_3](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      return;
    }
    if (html$.CanvasElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      this[_texSubImage2D2_4](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      return;
    }
    if (html$.VideoElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      this[_texSubImage2D2_5](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      return;
    }
    if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video) && srcOffset == null) {
      this[_texSubImage2D2_6](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video);
      return;
    }
    if (srcOffset != null && typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video)) {
      this[_texSubImage2D2_7](target, level, xoffset, yoffset, width, height, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_srcData_OR_video, srcOffset);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_texSubImage2D2_1](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D2_2](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D2_3](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D2_4](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D2_5](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D2_6](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D2_7](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [$texSubImage3D](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video, srcOffset) {
    if (srcOffset === void 0) srcOffset = null;
    if (core.int.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texSubImage3D_1](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if (html$.ImageData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      let data_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      this[_texSubImage3D_2](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data_1);
      return;
    }
    if (html$.ImageElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texSubImage3D_3](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if (html$.CanvasElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texSubImage3D_4](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if (html$.VideoElement.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texSubImage3D_5](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texSubImage3D_6](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if (typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video) && srcOffset == null) {
      this[_texSubImage3D_7](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video);
      return;
    }
    if (srcOffset != null && typed_data.TypedData.is(bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video)) {
      this[_texSubImage3D_8](target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bitmap_OR_canvas_OR_data_OR_image_OR_offset_OR_pixels_OR_video, srcOffset);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_texSubImage3D_1](...args) {
    return this.texSubImage3D.apply(this, args);
  }
  [_texSubImage3D_2](...args) {
    return this.texSubImage3D.apply(this, args);
  }
  [_texSubImage3D_3](...args) {
    return this.texSubImage3D.apply(this, args);
  }
  [_texSubImage3D_4](...args) {
    return this.texSubImage3D.apply(this, args);
  }
  [_texSubImage3D_5](...args) {
    return this.texSubImage3D.apply(this, args);
  }
  [_texSubImage3D_6](...args) {
    return this.texSubImage3D.apply(this, args);
  }
  [_texSubImage3D_7](...args) {
    return this.texSubImage3D.apply(this, args);
  }
  [_texSubImage3D_8](...args) {
    return this.texSubImage3D.apply(this, args);
  }
  [$transformFeedbackVaryings](program, varyings, bufferMode) {
    let varyings_1 = html_common.convertDartToNative_StringArray(varyings);
    this[_transformFeedbackVaryings_1](program, varyings_1, bufferMode);
    return;
  }
  [_transformFeedbackVaryings_1](...args) {
    return this.transformFeedbackVaryings.apply(this, args);
  }
  [$uniform1fv2](...args) {
    return this.uniform1fv.apply(this, args);
  }
  [$uniform1iv2](...args) {
    return this.uniform1iv.apply(this, args);
  }
  [$uniform1ui](...args) {
    return this.uniform1ui.apply(this, args);
  }
  [$uniform1uiv](...args) {
    return this.uniform1uiv.apply(this, args);
  }
  [$uniform2fv2](...args) {
    return this.uniform2fv.apply(this, args);
  }
  [$uniform2iv2](...args) {
    return this.uniform2iv.apply(this, args);
  }
  [$uniform2ui](...args) {
    return this.uniform2ui.apply(this, args);
  }
  [$uniform2uiv](...args) {
    return this.uniform2uiv.apply(this, args);
  }
  [$uniform3fv2](...args) {
    return this.uniform3fv.apply(this, args);
  }
  [$uniform3iv2](...args) {
    return this.uniform3iv.apply(this, args);
  }
  [$uniform3ui](...args) {
    return this.uniform3ui.apply(this, args);
  }
  [$uniform3uiv](...args) {
    return this.uniform3uiv.apply(this, args);
  }
  [$uniform4fv2](...args) {
    return this.uniform4fv.apply(this, args);
  }
  [$uniform4iv2](...args) {
    return this.uniform4iv.apply(this, args);
  }
  [$uniform4ui](...args) {
    return this.uniform4ui.apply(this, args);
  }
  [$uniform4uiv](...args) {
    return this.uniform4uiv.apply(this, args);
  }
  [$uniformBlockBinding](...args) {
    return this.uniformBlockBinding.apply(this, args);
  }
  [$uniformMatrix2fv2](...args) {
    return this.uniformMatrix2fv.apply(this, args);
  }
  [$uniformMatrix2x3fv](...args) {
    return this.uniformMatrix2x3fv.apply(this, args);
  }
  [$uniformMatrix2x4fv](...args) {
    return this.uniformMatrix2x4fv.apply(this, args);
  }
  [$uniformMatrix3fv2](...args) {
    return this.uniformMatrix3fv.apply(this, args);
  }
  [$uniformMatrix3x2fv](...args) {
    return this.uniformMatrix3x2fv.apply(this, args);
  }
  [$uniformMatrix3x4fv](...args) {
    return this.uniformMatrix3x4fv.apply(this, args);
  }
  [$uniformMatrix4fv2](...args) {
    return this.uniformMatrix4fv.apply(this, args);
  }
  [$uniformMatrix4x2fv](...args) {
    return this.uniformMatrix4x2fv.apply(this, args);
  }
  [$uniformMatrix4x3fv](...args) {
    return this.uniformMatrix4x3fv.apply(this, args);
  }
  [$vertexAttribDivisor](...args) {
    return this.vertexAttribDivisor.apply(this, args);
  }
  [$vertexAttribI4i](...args) {
    return this.vertexAttribI4i.apply(this, args);
  }
  [$vertexAttribI4iv](...args) {
    return this.vertexAttribI4iv.apply(this, args);
  }
  [$vertexAttribI4ui](...args) {
    return this.vertexAttribI4ui.apply(this, args);
  }
  [$vertexAttribI4uiv](...args) {
    return this.vertexAttribI4uiv.apply(this, args);
  }
  [$vertexAttribIPointer](...args) {
    return this.vertexAttribIPointer.apply(this, args);
  }
  [$waitSync](...args) {
    return this.waitSync.apply(this, args);
  }
  get [$drawingBufferHeight]() {
    return this.drawingBufferHeight;
  }
  get [$drawingBufferWidth]() {
    return this.drawingBufferWidth;
  }
  [$activeTexture](...args) {
    return this.activeTexture.apply(this, args);
  }
  [$attachShader](...args) {
    return this.attachShader.apply(this, args);
  }
  [$bindAttribLocation](...args) {
    return this.bindAttribLocation.apply(this, args);
  }
  [$bindBuffer](...args) {
    return this.bindBuffer.apply(this, args);
  }
  [$bindFramebuffer](...args) {
    return this.bindFramebuffer.apply(this, args);
  }
  [$bindRenderbuffer](...args) {
    return this.bindRenderbuffer.apply(this, args);
  }
  [$bindTexture](...args) {
    return this.bindTexture.apply(this, args);
  }
  [$blendColor](...args) {
    return this.blendColor.apply(this, args);
  }
  [$blendEquation](...args) {
    return this.blendEquation.apply(this, args);
  }
  [$blendEquationSeparate](...args) {
    return this.blendEquationSeparate.apply(this, args);
  }
  [$blendFunc](...args) {
    return this.blendFunc.apply(this, args);
  }
  [$blendFuncSeparate](...args) {
    return this.blendFuncSeparate.apply(this, args);
  }
  [$bufferData](...args) {
    return this.bufferData.apply(this, args);
  }
  [$bufferSubData](...args) {
    return this.bufferSubData.apply(this, args);
  }
  [$checkFramebufferStatus](...args) {
    return this.checkFramebufferStatus.apply(this, args);
  }
  [$clear](...args) {
    return this.clear.apply(this, args);
  }
  [$clearColor](...args) {
    return this.clearColor.apply(this, args);
  }
  [$clearDepth](...args) {
    return this.clearDepth.apply(this, args);
  }
  [$clearStencil](...args) {
    return this.clearStencil.apply(this, args);
  }
  [$colorMask](...args) {
    return this.colorMask.apply(this, args);
  }
  [$commit]() {
    return html$.promiseToFuture(dart.dynamic, this.commit());
  }
  [$compileShader](...args) {
    return this.compileShader.apply(this, args);
  }
  [$compressedTexImage2D](...args) {
    return this.compressedTexImage2D.apply(this, args);
  }
  [$compressedTexSubImage2D](...args) {
    return this.compressedTexSubImage2D.apply(this, args);
  }
  [$copyTexImage2D](...args) {
    return this.copyTexImage2D.apply(this, args);
  }
  [$copyTexSubImage2D](...args) {
    return this.copyTexSubImage2D.apply(this, args);
  }
  [$createBuffer](...args) {
    return this.createBuffer.apply(this, args);
  }
  [$createFramebuffer](...args) {
    return this.createFramebuffer.apply(this, args);
  }
  [$createProgram](...args) {
    return this.createProgram.apply(this, args);
  }
  [$createRenderbuffer](...args) {
    return this.createRenderbuffer.apply(this, args);
  }
  [$createShader](...args) {
    return this.createShader.apply(this, args);
  }
  [$createTexture](...args) {
    return this.createTexture.apply(this, args);
  }
  [$cullFace](...args) {
    return this.cullFace.apply(this, args);
  }
  [$deleteBuffer](...args) {
    return this.deleteBuffer.apply(this, args);
  }
  [$deleteFramebuffer](...args) {
    return this.deleteFramebuffer.apply(this, args);
  }
  [$deleteProgram](...args) {
    return this.deleteProgram.apply(this, args);
  }
  [$deleteRenderbuffer](...args) {
    return this.deleteRenderbuffer.apply(this, args);
  }
  [$deleteShader](...args) {
    return this.deleteShader.apply(this, args);
  }
  [$deleteTexture](...args) {
    return this.deleteTexture.apply(this, args);
  }
  [$depthFunc](...args) {
    return this.depthFunc.apply(this, args);
  }
  [$depthMask](...args) {
    return this.depthMask.apply(this, args);
  }
  [$depthRange](...args) {
    return this.depthRange.apply(this, args);
  }
  [$detachShader](...args) {
    return this.detachShader.apply(this, args);
  }
  [$disable](...args) {
    return this.disable.apply(this, args);
  }
  [$disableVertexAttribArray](...args) {
    return this.disableVertexAttribArray.apply(this, args);
  }
  [$drawArrays](...args) {
    return this.drawArrays.apply(this, args);
  }
  [$drawElements](...args) {
    return this.drawElements.apply(this, args);
  }
  [$enable](...args) {
    return this.enable.apply(this, args);
  }
  [$enableVertexAttribArray](...args) {
    return this.enableVertexAttribArray.apply(this, args);
  }
  [$finish](...args) {
    return this.finish.apply(this, args);
  }
  [$flush](...args) {
    return this.flush.apply(this, args);
  }
  [$framebufferRenderbuffer](...args) {
    return this.framebufferRenderbuffer.apply(this, args);
  }
  [$framebufferTexture2D](...args) {
    return this.framebufferTexture2D.apply(this, args);
  }
  [$frontFace](...args) {
    return this.frontFace.apply(this, args);
  }
  [$generateMipmap](...args) {
    return this.generateMipmap.apply(this, args);
  }
  [$getActiveAttrib](...args) {
    return this.getActiveAttrib.apply(this, args);
  }
  [$getActiveUniform](...args) {
    return this.getActiveUniform.apply(this, args);
  }
  [$getAttachedShaders](...args) {
    return this.getAttachedShaders.apply(this, args);
  }
  [$getAttribLocation](...args) {
    return this.getAttribLocation.apply(this, args);
  }
  [$getBufferParameter](...args) {
    return this.getBufferParameter.apply(this, args);
  }
  [$getContextAttributes]() {
    return html_common.convertNativeToDart_Dictionary(this[_getContextAttributes_1$]());
  }
  [_getContextAttributes_1$](...args) {
    return this.getContextAttributes.apply(this, args);
  }
  [$getError](...args) {
    return this.getError.apply(this, args);
  }
  [$getExtension](...args) {
    return this.getExtension.apply(this, args);
  }
  [$getFramebufferAttachmentParameter](...args) {
    return this.getFramebufferAttachmentParameter.apply(this, args);
  }
  [$getParameter](...args) {
    return this.getParameter.apply(this, args);
  }
  [$getProgramInfoLog](...args) {
    return this.getProgramInfoLog.apply(this, args);
  }
  [$getProgramParameter](...args) {
    return this.getProgramParameter.apply(this, args);
  }
  [$getRenderbufferParameter](...args) {
    return this.getRenderbufferParameter.apply(this, args);
  }
  [$getShaderInfoLog](...args) {
    return this.getShaderInfoLog.apply(this, args);
  }
  [$getShaderParameter](...args) {
    return this.getShaderParameter.apply(this, args);
  }
  [$getShaderPrecisionFormat](...args) {
    return this.getShaderPrecisionFormat.apply(this, args);
  }
  [$getShaderSource](...args) {
    return this.getShaderSource.apply(this, args);
  }
  [$getSupportedExtensions](...args) {
    return this.getSupportedExtensions.apply(this, args);
  }
  [$getTexParameter](...args) {
    return this.getTexParameter.apply(this, args);
  }
  [$getUniform](...args) {
    return this.getUniform.apply(this, args);
  }
  [$getUniformLocation](...args) {
    return this.getUniformLocation.apply(this, args);
  }
  [$getVertexAttrib](...args) {
    return this.getVertexAttrib.apply(this, args);
  }
  [$getVertexAttribOffset](...args) {
    return this.getVertexAttribOffset.apply(this, args);
  }
  [$hint](...args) {
    return this.hint.apply(this, args);
  }
  [$isBuffer](...args) {
    return this.isBuffer.apply(this, args);
  }
  [$isContextLost](...args) {
    return this.isContextLost.apply(this, args);
  }
  [$isEnabled](...args) {
    return this.isEnabled.apply(this, args);
  }
  [$isFramebuffer](...args) {
    return this.isFramebuffer.apply(this, args);
  }
  [$isProgram](...args) {
    return this.isProgram.apply(this, args);
  }
  [$isRenderbuffer](...args) {
    return this.isRenderbuffer.apply(this, args);
  }
  [$isShader](...args) {
    return this.isShader.apply(this, args);
  }
  [$isTexture](...args) {
    return this.isTexture.apply(this, args);
  }
  [$lineWidth](...args) {
    return this.lineWidth.apply(this, args);
  }
  [$linkProgram](...args) {
    return this.linkProgram.apply(this, args);
  }
  [$pixelStorei](...args) {
    return this.pixelStorei.apply(this, args);
  }
  [$polygonOffset](...args) {
    return this.polygonOffset.apply(this, args);
  }
  [_readPixels](...args) {
    return this.readPixels.apply(this, args);
  }
  [$renderbufferStorage](...args) {
    return this.renderbufferStorage.apply(this, args);
  }
  [$sampleCoverage](...args) {
    return this.sampleCoverage.apply(this, args);
  }
  [$scissor](...args) {
    return this.scissor.apply(this, args);
  }
  [$shaderSource](...args) {
    return this.shaderSource.apply(this, args);
  }
  [$stencilFunc](...args) {
    return this.stencilFunc.apply(this, args);
  }
  [$stencilFuncSeparate](...args) {
    return this.stencilFuncSeparate.apply(this, args);
  }
  [$stencilMask](...args) {
    return this.stencilMask.apply(this, args);
  }
  [$stencilMaskSeparate](...args) {
    return this.stencilMaskSeparate.apply(this, args);
  }
  [$stencilOp](...args) {
    return this.stencilOp.apply(this, args);
  }
  [$stencilOpSeparate](...args) {
    return this.stencilOpSeparate.apply(this, args);
  }
  [$texImage2D](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels) {
    if (format === void 0) format = null;
    if (type === void 0) type = null;
    if (pixels === void 0) pixels = null;
    if (type != null && format != null && core.int.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video)) {
      this[_texImage2D_1](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels);
      return;
    }
    if (html$.ImageData.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      let pixels_1 = html_common.convertDartToNative_ImageData(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
      this[_texImage2D_2](target, level, internalformat, format_OR_width, height_OR_type, pixels_1);
      return;
    }
    if (html$.ImageElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_3](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.CanvasElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_4](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.VideoElement.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_5](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.ImageBitmap.is(bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video) && format == null && type == null && pixels == null) {
      this[_texImage2D_6](target, level, internalformat, format_OR_width, height_OR_type, bitmap_OR_border_OR_canvas_OR_image_OR_pixels_OR_video);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_texImage2D_1](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_2](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_3](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_4](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_5](...args) {
    return this.texImage2D.apply(this, args);
  }
  [_texImage2D_6](...args) {
    return this.texImage2D.apply(this, args);
  }
  [$texParameterf](...args) {
    return this.texParameterf.apply(this, args);
  }
  [$texParameteri](...args) {
    return this.texParameteri.apply(this, args);
  }
  [$texSubImage2D](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels) {
    if (type === void 0) type = null;
    if (pixels === void 0) pixels = null;
    if (type != null && core.int.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video)) {
      this[_texSubImage2D_1](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels);
      return;
    }
    if (html$.ImageData.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      let pixels_1 = html_common.convertDartToNative_ImageData(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
      this[_texSubImage2D_2](target, level, xoffset, yoffset, format_OR_width, height_OR_type, pixels_1);
      return;
    }
    if (html$.ImageElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_3](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.CanvasElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_4](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.VideoElement.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_5](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    if (html$.ImageBitmap.is(bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video) && type == null && pixels == null) {
      this[_texSubImage2D_6](target, level, xoffset, yoffset, format_OR_width, height_OR_type, bitmap_OR_canvas_OR_format_OR_image_OR_pixels_OR_video);
      return;
    }
    dart.throw(new core.ArgumentError.new("Incorrect number or type of arguments"));
  }
  [_texSubImage2D_1](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_2](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_3](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_4](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_5](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [_texSubImage2D_6](...args) {
    return this.texSubImage2D.apply(this, args);
  }
  [$uniform1f](...args) {
    return this.uniform1f.apply(this, args);
  }
  [$uniform1fv](...args) {
    return this.uniform1fv.apply(this, args);
  }
  [$uniform1i](...args) {
    return this.uniform1i.apply(this, args);
  }
  [$uniform1iv](...args) {
    return this.uniform1iv.apply(this, args);
  }
  [$uniform2f](...args) {
    return this.uniform2f.apply(this, args);
  }
  [$uniform2fv](...args) {
    return this.uniform2fv.apply(this, args);
  }
  [$uniform2i](...args) {
    return this.uniform2i.apply(this, args);
  }
  [$uniform2iv](...args) {
    return this.uniform2iv.apply(this, args);
  }
  [$uniform3f](...args) {
    return this.uniform3f.apply(this, args);
  }
  [$uniform3fv](...args) {
    return this.uniform3fv.apply(this, args);
  }
  [$uniform3i](...args) {
    return this.uniform3i.apply(this, args);
  }
  [$uniform3iv](...args) {
    return this.uniform3iv.apply(this, args);
  }
  [$uniform4f](...args) {
    return this.uniform4f.apply(this, args);
  }
  [$uniform4fv](...args) {
    return this.uniform4fv.apply(this, args);
  }
  [$uniform4i](...args) {
    return this.uniform4i.apply(this, args);
  }
  [$uniform4iv](...args) {
    return this.uniform4iv.apply(this, args);
  }
  [$uniformMatrix2fv](...args) {
    return this.uniformMatrix2fv.apply(this, args);
  }
  [$uniformMatrix3fv](...args) {
    return this.uniformMatrix3fv.apply(this, args);
  }
  [$uniformMatrix4fv](...args) {
    return this.uniformMatrix4fv.apply(this, args);
  }
  [$useProgram](...args) {
    return this.useProgram.apply(this, args);
  }
  [$validateProgram](...args) {
    return this.validateProgram.apply(this, args);
  }
  [$vertexAttrib1f](...args) {
    return this.vertexAttrib1f.apply(this, args);
  }
  [$vertexAttrib1fv](...args) {
    return this.vertexAttrib1fv.apply(this, args);
  }
  [$vertexAttrib2f](...args) {
    return this.vertexAttrib2f.apply(this, args);
  }
  [$vertexAttrib2fv](...args) {
    return this.vertexAttrib2fv.apply(this, args);
  }
  [$vertexAttrib3f](...args) {
    return this.vertexAttrib3f.apply(this, args);
  }
  [$vertexAttrib3fv](...args) {
    return this.vertexAttrib3fv.apply(this, args);
  }
  [$vertexAttrib4f](...args) {
    return this.vertexAttrib4f.apply(this, args);
  }
  [$vertexAttrib4fv](...args) {
    return this.vertexAttrib4fv.apply(this, args);
  }
  [$vertexAttribPointer](...args) {
    return this.vertexAttribPointer.apply(this, args);
  }
  [$viewport](...args) {
    return this.viewport.apply(this, args);
  }
  [$readPixels](x, y, width, height, format, type, pixels) {
    this[_readPixels](x, y, width, height, format, type, pixels);
  }
};
dart.addTypeTests(web_gl.RenderingContext2);
const canvas$4 = Symbol("RenderingContext2.canvas");
const drawingBufferHeight$ = Symbol("RenderingContext2.drawingBufferHeight");
const drawingBufferWidth$ = Symbol("RenderingContext2.drawingBufferWidth");
web_gl.RenderingContext2[dart.implements] = () => [web_gl._WebGL2RenderingContextBase, web_gl._WebGLRenderingContextBase];
dart.setMethodSignature(web_gl.RenderingContext2, () => ({
  __proto__: dart.getMethods(web_gl.RenderingContext2.__proto__),
  [$beginQuery]: dart.fnType(dart.void, [core.int, web_gl.Query]),
  [$beginTransformFeedback]: dart.fnType(dart.void, [core.int]),
  [$bindBufferBase]: dart.fnType(dart.void, [core.int, core.int, web_gl.Buffer]),
  [$bindBufferRange]: dart.fnType(dart.void, [core.int, core.int, web_gl.Buffer, core.int, core.int]),
  [$bindSampler]: dart.fnType(dart.void, [core.int, web_gl.Sampler]),
  [$bindTransformFeedback]: dart.fnType(dart.void, [core.int, web_gl.TransformFeedback]),
  [$bindVertexArray]: dart.fnType(dart.void, [web_gl.VertexArrayObject]),
  [$blitFramebuffer]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
  [$bufferData2]: dart.fnType(dart.void, [core.int, typed_data.TypedData, core.int, core.int], [core.int]),
  [$bufferSubData2]: dart.fnType(dart.void, [core.int, core.int, typed_data.TypedData, core.int], [core.int]),
  [$clearBufferfi]: dart.fnType(dart.void, [core.int, core.int, core.num, core.int]),
  [$clearBufferfv]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic], [core.int]),
  [$clearBufferiv]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic], [core.int]),
  [$clearBufferuiv]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic], [core.int]),
  [$clientWaitSync]: dart.fnType(core.int, [web_gl.Sync, core.int, core.int]),
  [$compressedTexImage2D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData, core.int], [core.int]),
  [$compressedTexImage2D3]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
  [$compressedTexImage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData], [core.int, core.int]),
  [$compressedTexImage3D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
  [$compressedTexSubImage2D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData, core.int], [core.int]),
  [$compressedTexSubImage2D3]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
  [$compressedTexSubImage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData], [core.int, core.int]),
  [$compressedTexSubImage3D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
  [$copyBufferSubData]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
  [$copyTexSubImage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
  [$createQuery]: dart.fnType(web_gl.Query, []),
  [$createSampler]: dart.fnType(web_gl.Sampler, []),
  [$createTransformFeedback]: dart.fnType(web_gl.TransformFeedback, []),
  [$createVertexArray]: dart.fnType(web_gl.VertexArrayObject, []),
  [$deleteQuery]: dart.fnType(dart.void, [web_gl.Query]),
  [$deleteSampler]: dart.fnType(dart.void, [web_gl.Sampler]),
  [$deleteSync]: dart.fnType(dart.void, [web_gl.Sync]),
  [$deleteTransformFeedback]: dart.fnType(dart.void, [web_gl.TransformFeedback]),
  [$deleteVertexArray]: dart.fnType(dart.void, [web_gl.VertexArrayObject]),
  [$drawArraysInstanced]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$drawBuffers]: dart.fnType(dart.void, [core.List$(core.int)]),
  [$drawElementsInstanced]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
  [$drawRangeElements]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int]),
  [$endQuery]: dart.fnType(dart.void, [core.int]),
  [$endTransformFeedback]: dart.fnType(dart.void, []),
  [$fenceSync]: dart.fnType(web_gl.Sync, [core.int, core.int]),
  [$framebufferTextureLayer]: dart.fnType(dart.void, [core.int, core.int, web_gl.Texture, core.int, core.int]),
  [$getActiveUniformBlockName]: dart.fnType(core.String, [web_gl.Program, core.int]),
  [$getActiveUniformBlockParameter]: dart.fnType(core.Object, [web_gl.Program, core.int, core.int]),
  [$getActiveUniforms]: dart.fnType(core.Object, [web_gl.Program, core.List$(core.int), core.int]),
  [$getBufferSubData]: dart.fnType(dart.void, [core.int, core.int, typed_data.TypedData], [core.int, core.int]),
  [$getFragDataLocation]: dart.fnType(core.int, [web_gl.Program, core.String]),
  [$getIndexedParameter]: dart.fnType(core.Object, [core.int, core.int]),
  [$getInternalformatParameter]: dart.fnType(core.Object, [core.int, core.int, core.int]),
  [$getQuery]: dart.fnType(core.Object, [core.int, core.int]),
  [$getQueryParameter]: dart.fnType(core.Object, [web_gl.Query, core.int]),
  [$getSamplerParameter]: dart.fnType(core.Object, [web_gl.Sampler, core.int]),
  [$getSyncParameter]: dart.fnType(core.Object, [web_gl.Sync, core.int]),
  [$getTransformFeedbackVarying]: dart.fnType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
  [$getUniformBlockIndex]: dart.fnType(core.int, [web_gl.Program, core.String]),
  [$getUniformIndices]: dart.fnType(core.List$(core.int), [web_gl.Program, core.List$(core.String)]),
  [_getUniformIndices_1]: dart.fnType(core.List$(core.int), [web_gl.Program, core.List]),
  [$invalidateFramebuffer]: dart.fnType(dart.void, [core.int, core.List$(core.int)]),
  [$invalidateSubFramebuffer]: dart.fnType(dart.void, [core.int, core.List$(core.int), core.int, core.int, core.int, core.int]),
  [$isQuery]: dart.fnType(core.bool, [web_gl.Query]),
  [$isSampler]: dart.fnType(core.bool, [web_gl.Sampler]),
  [$isSync]: dart.fnType(core.bool, [web_gl.Sync]),
  [$isTransformFeedback]: dart.fnType(core.bool, [web_gl.TransformFeedback]),
  [$isVertexArray]: dart.fnType(core.bool, [web_gl.VertexArrayObject]),
  [$pauseTransformFeedback]: dart.fnType(dart.void, []),
  [$readBuffer]: dart.fnType(dart.void, [core.int]),
  [$readPixels2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int]),
  [$renderbufferStorageMultisample]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
  [$resumeTransformFeedback]: dart.fnType(dart.void, []),
  [$samplerParameterf]: dart.fnType(dart.void, [web_gl.Sampler, core.int, core.num]),
  [$samplerParameteri]: dart.fnType(dart.void, [web_gl.Sampler, core.int, core.int]),
  [$texImage2D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int]),
  [_texImage2D2_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int]),
  [_texImage2D2_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_texImage2D2_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
  [_texImage2D2_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
  [_texImage2D2_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
  [_texImage2D2_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
  [_texImage2D2_7]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData, dart.dynamic]),
  [$texImage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int]),
  [_texImage3D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int]),
  [_texImage3D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_texImage3D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
  [_texImage3D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
  [_texImage3D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
  [_texImage3D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
  [_texImage3D_7]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData]),
  [_texImage3D_8]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData, dart.dynamic]),
  [$texStorage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
  [$texStorage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int]),
  [$texSubImage2D2]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int]),
  [_texSubImage2D2_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int]),
  [_texSubImage2D2_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_texSubImage2D2_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
  [_texSubImage2D2_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
  [_texSubImage2D2_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
  [_texSubImage2D2_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
  [_texSubImage2D2_7]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData, dart.dynamic]),
  [$texSubImage3D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int]),
  [_texSubImage3D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int]),
  [_texSubImage3D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_texSubImage3D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
  [_texSubImage3D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
  [_texSubImage3D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
  [_texSubImage3D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
  [_texSubImage3D_7]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData]),
  [_texSubImage3D_8]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, typed_data.TypedData, dart.dynamic]),
  [$transformFeedbackVaryings]: dart.fnType(dart.void, [web_gl.Program, core.List$(core.String), core.int]),
  [_transformFeedbackVaryings_1]: dart.fnType(dart.void, [web_gl.Program, core.List, dart.dynamic]),
  [$uniform1fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
  [$uniform1iv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
  [$uniform1ui]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int]),
  [$uniform1uiv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic], [core.int, core.int]),
  [$uniform2fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
  [$uniform2iv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
  [$uniform2ui]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int]),
  [$uniform2uiv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic], [core.int, core.int]),
  [$uniform3fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
  [$uniform3iv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
  [$uniform3ui]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int]),
  [$uniform3uiv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic], [core.int, core.int]),
  [$uniform4fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
  [$uniform4iv2]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic, core.int], [core.int]),
  [$uniform4ui]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int, core.int]),
  [$uniform4uiv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic], [core.int, core.int]),
  [$uniformBlockBinding]: dart.fnType(dart.void, [web_gl.Program, core.int, core.int]),
  [$uniformMatrix2fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic, core.int], [core.int]),
  [$uniformMatrix2x3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
  [$uniformMatrix2x4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
  [$uniformMatrix3fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic, core.int], [core.int]),
  [$uniformMatrix3x2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
  [$uniformMatrix3x4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
  [$uniformMatrix4fv2]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic, core.int], [core.int]),
  [$uniformMatrix4x2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
  [$uniformMatrix4x3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic], [core.int, core.int]),
  [$vertexAttribDivisor]: dart.fnType(dart.void, [core.int, core.int]),
  [$vertexAttribI4i]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
  [$vertexAttribI4iv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
  [$vertexAttribI4ui]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
  [$vertexAttribI4uiv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
  [$vertexAttribIPointer]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int]),
  [$waitSync]: dart.fnType(dart.void, [web_gl.Sync, core.int, core.int]),
  [$activeTexture]: dart.fnType(dart.void, [core.int]),
  [$attachShader]: dart.fnType(dart.void, [web_gl.Program, web_gl.Shader]),
  [$bindAttribLocation]: dart.fnType(dart.void, [web_gl.Program, core.int, core.String]),
  [$bindBuffer]: dart.fnType(dart.void, [core.int, web_gl.Buffer]),
  [$bindFramebuffer]: dart.fnType(dart.void, [core.int, web_gl.Framebuffer]),
  [$bindRenderbuffer]: dart.fnType(dart.void, [core.int, web_gl.Renderbuffer]),
  [$bindTexture]: dart.fnType(dart.void, [core.int, web_gl.Texture]),
  [$blendColor]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$blendEquation]: dart.fnType(dart.void, [core.int]),
  [$blendEquationSeparate]: dart.fnType(dart.void, [core.int, core.int]),
  [$blendFunc]: dart.fnType(dart.void, [core.int, core.int]),
  [$blendFuncSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$bufferData]: dart.fnType(dart.void, [core.int, dart.dynamic, core.int]),
  [$bufferSubData]: dart.fnType(dart.void, [core.int, core.int, dart.dynamic]),
  [$checkFramebufferStatus]: dart.fnType(core.int, [core.int]),
  [$clear]: dart.fnType(dart.void, [core.int]),
  [$clearColor]: dart.fnType(dart.void, [core.num, core.num, core.num, core.num]),
  [$clearDepth]: dart.fnType(dart.void, [core.num]),
  [$clearStencil]: dart.fnType(dart.void, [core.int]),
  [$colorMask]: dart.fnType(dart.void, [core.bool, core.bool, core.bool, core.bool]),
  [$commit]: dart.fnType(async.Future, []),
  [$compileShader]: dart.fnType(dart.void, [web_gl.Shader]),
  [$compressedTexImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
  [$compressedTexSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
  [$copyTexImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
  [$copyTexSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, core.int, core.int]),
  [$createBuffer]: dart.fnType(web_gl.Buffer, []),
  [$createFramebuffer]: dart.fnType(web_gl.Framebuffer, []),
  [$createProgram]: dart.fnType(web_gl.Program, []),
  [$createRenderbuffer]: dart.fnType(web_gl.Renderbuffer, []),
  [$createShader]: dart.fnType(web_gl.Shader, [core.int]),
  [$createTexture]: dart.fnType(web_gl.Texture, []),
  [$cullFace]: dart.fnType(dart.void, [core.int]),
  [$deleteBuffer]: dart.fnType(dart.void, [web_gl.Buffer]),
  [$deleteFramebuffer]: dart.fnType(dart.void, [web_gl.Framebuffer]),
  [$deleteProgram]: dart.fnType(dart.void, [web_gl.Program]),
  [$deleteRenderbuffer]: dart.fnType(dart.void, [web_gl.Renderbuffer]),
  [$deleteShader]: dart.fnType(dart.void, [web_gl.Shader]),
  [$deleteTexture]: dart.fnType(dart.void, [web_gl.Texture]),
  [$depthFunc]: dart.fnType(dart.void, [core.int]),
  [$depthMask]: dart.fnType(dart.void, [core.bool]),
  [$depthRange]: dart.fnType(dart.void, [core.num, core.num]),
  [$detachShader]: dart.fnType(dart.void, [web_gl.Program, web_gl.Shader]),
  [$disable]: dart.fnType(dart.void, [core.int]),
  [$disableVertexAttribArray]: dart.fnType(dart.void, [core.int]),
  [$drawArrays]: dart.fnType(dart.void, [core.int, core.int, core.int]),
  [$drawElements]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$enable]: dart.fnType(dart.void, [core.int]),
  [$enableVertexAttribArray]: dart.fnType(dart.void, [core.int]),
  [$finish]: dart.fnType(dart.void, []),
  [$flush]: dart.fnType(dart.void, []),
  [$framebufferRenderbuffer]: dart.fnType(dart.void, [core.int, core.int, core.int, web_gl.Renderbuffer]),
  [$framebufferTexture2D]: dart.fnType(dart.void, [core.int, core.int, core.int, web_gl.Texture, core.int]),
  [$frontFace]: dart.fnType(dart.void, [core.int]),
  [$generateMipmap]: dart.fnType(dart.void, [core.int]),
  [$getActiveAttrib]: dart.fnType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
  [$getActiveUniform]: dart.fnType(web_gl.ActiveInfo, [web_gl.Program, core.int]),
  [$getAttachedShaders]: dart.fnType(core.List$(web_gl.Shader), [web_gl.Program]),
  [$getAttribLocation]: dart.fnType(core.int, [web_gl.Program, core.String]),
  [$getBufferParameter]: dart.fnType(core.Object, [core.int, core.int]),
  [$getContextAttributes]: dart.fnType(core.Map, []),
  [_getContextAttributes_1$]: dart.fnType(dart.dynamic, []),
  [$getError]: dart.fnType(core.int, []),
  [$getExtension]: dart.fnType(core.Object, [core.String]),
  [$getFramebufferAttachmentParameter]: dart.fnType(core.Object, [core.int, core.int, core.int]),
  [$getParameter]: dart.fnType(core.Object, [core.int]),
  [$getProgramInfoLog]: dart.fnType(core.String, [web_gl.Program]),
  [$getProgramParameter]: dart.fnType(core.Object, [web_gl.Program, core.int]),
  [$getRenderbufferParameter]: dart.fnType(core.Object, [core.int, core.int]),
  [$getShaderInfoLog]: dart.fnType(core.String, [web_gl.Shader]),
  [$getShaderParameter]: dart.fnType(core.Object, [web_gl.Shader, core.int]),
  [$getShaderPrecisionFormat]: dart.fnType(web_gl.ShaderPrecisionFormat, [core.int, core.int]),
  [$getShaderSource]: dart.fnType(core.String, [web_gl.Shader]),
  [$getSupportedExtensions]: dart.fnType(core.List$(core.String), []),
  [$getTexParameter]: dart.fnType(core.Object, [core.int, core.int]),
  [$getUniform]: dart.fnType(core.Object, [web_gl.Program, web_gl.UniformLocation]),
  [$getUniformLocation]: dart.fnType(web_gl.UniformLocation, [web_gl.Program, core.String]),
  [$getVertexAttrib]: dart.fnType(core.Object, [core.int, core.int]),
  [$getVertexAttribOffset]: dart.fnType(core.int, [core.int, core.int]),
  [$hint]: dart.fnType(dart.void, [core.int, core.int]),
  [$isBuffer]: dart.fnType(core.bool, [web_gl.Buffer]),
  [$isContextLost]: dart.fnType(core.bool, []),
  [$isEnabled]: dart.fnType(core.bool, [core.int]),
  [$isFramebuffer]: dart.fnType(core.bool, [web_gl.Framebuffer]),
  [$isProgram]: dart.fnType(core.bool, [web_gl.Program]),
  [$isRenderbuffer]: dart.fnType(core.bool, [web_gl.Renderbuffer]),
  [$isShader]: dart.fnType(core.bool, [web_gl.Shader]),
  [$isTexture]: dart.fnType(core.bool, [web_gl.Texture]),
  [$lineWidth]: dart.fnType(dart.void, [core.num]),
  [$linkProgram]: dart.fnType(dart.void, [web_gl.Program]),
  [$pixelStorei]: dart.fnType(dart.void, [core.int, core.int]),
  [$polygonOffset]: dart.fnType(dart.void, [core.num, core.num]),
  [_readPixels]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData]),
  [$renderbufferStorage]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$sampleCoverage]: dart.fnType(dart.void, [core.num, core.bool]),
  [$scissor]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$shaderSource]: dart.fnType(dart.void, [web_gl.Shader, core.String]),
  [$stencilFunc]: dart.fnType(dart.void, [core.int, core.int, core.int]),
  [$stencilFuncSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$stencilMask]: dart.fnType(dart.void, [core.int]),
  [$stencilMaskSeparate]: dart.fnType(dart.void, [core.int, core.int]),
  [$stencilOp]: dart.fnType(dart.void, [core.int, core.int, core.int]),
  [$stencilOpSeparate]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$texImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int, core.int, typed_data.TypedData]),
  [_texImage2D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int, dart.dynamic, dart.dynamic, typed_data.TypedData]),
  [_texImage2D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_texImage2D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
  [_texImage2D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
  [_texImage2D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
  [_texImage2D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
  [$texParameterf]: dart.fnType(dart.void, [core.int, core.int, core.num]),
  [$texParameteri]: dart.fnType(dart.void, [core.int, core.int, core.int]),
  [$texSubImage2D]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, dart.dynamic], [core.int, typed_data.TypedData]),
  [_texSubImage2D_1]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, core.int, dart.dynamic, typed_data.TypedData]),
  [_texSubImage2D_2]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic]),
  [_texSubImage2D_3]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageElement]),
  [_texSubImage2D_4]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.CanvasElement]),
  [_texSubImage2D_5]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.VideoElement]),
  [_texSubImage2D_6]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, dart.dynamic, html$.ImageBitmap]),
  [$uniform1f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num]),
  [$uniform1fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform1i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int]),
  [$uniform1iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform2f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num]),
  [$uniform2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform2i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int]),
  [$uniform2iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform3f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num, core.num]),
  [$uniform3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform3i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int]),
  [$uniform3iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform4f]: dart.fnType(dart.void, [web_gl.UniformLocation, core.num, core.num, core.num, core.num]),
  [$uniform4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniform4i]: dart.fnType(dart.void, [web_gl.UniformLocation, core.int, core.int, core.int, core.int]),
  [$uniform4iv]: dart.fnType(dart.void, [web_gl.UniformLocation, dart.dynamic]),
  [$uniformMatrix2fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
  [$uniformMatrix3fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
  [$uniformMatrix4fv]: dart.fnType(dart.void, [web_gl.UniformLocation, core.bool, dart.dynamic]),
  [$useProgram]: dart.fnType(dart.void, [web_gl.Program]),
  [$validateProgram]: dart.fnType(dart.void, [web_gl.Program]),
  [$vertexAttrib1f]: dart.fnType(dart.void, [core.int, core.num]),
  [$vertexAttrib1fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
  [$vertexAttrib2f]: dart.fnType(dart.void, [core.int, core.num, core.num]),
  [$vertexAttrib2fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
  [$vertexAttrib3f]: dart.fnType(dart.void, [core.int, core.num, core.num, core.num]),
  [$vertexAttrib3fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
  [$vertexAttrib4f]: dart.fnType(dart.void, [core.int, core.num, core.num, core.num, core.num]),
  [$vertexAttrib4fv]: dart.fnType(dart.void, [core.int, dart.dynamic]),
  [$vertexAttribPointer]: dart.fnType(dart.void, [core.int, core.int, core.int, core.bool, core.int, core.int]),
  [$viewport]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int]),
  [$readPixels]: dart.fnType(dart.void, [core.int, core.int, core.int, core.int, core.int, core.int, typed_data.TypedData])
}));
dart.setFieldSignature(web_gl.RenderingContext2, () => ({
  __proto__: dart.getFields(web_gl.RenderingContext2.__proto__),
  [$canvas]: dart.finalFieldType(web_gl.Canvas),
  [$drawingBufferHeight]: dart.finalFieldType(core.int),
  [$drawingBufferWidth]: dart.finalFieldType(core.int)
}));
dart.registerExtension("WebGL2RenderingContext", web_gl.RenderingContext2);
web_gl.Sampler = class Sampler extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.Sampler);
dart.registerExtension("WebGLSampler", web_gl.Sampler);
web_gl.Shader = class Shader extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.Shader);
dart.registerExtension("WebGLShader", web_gl.Shader);
web_gl.ShaderPrecisionFormat = class ShaderPrecisionFormat extends _interceptors.Interceptor {
  get [$precision]() {
    return this.precision;
  }
  get [$rangeMax]() {
    return this.rangeMax;
  }
  get [$rangeMin]() {
    return this.rangeMin;
  }
};
dart.addTypeTests(web_gl.ShaderPrecisionFormat);
const precision = Symbol("ShaderPrecisionFormat.precision");
const rangeMax = Symbol("ShaderPrecisionFormat.rangeMax");
const rangeMin = Symbol("ShaderPrecisionFormat.rangeMin");
dart.setFieldSignature(web_gl.ShaderPrecisionFormat, () => ({
  __proto__: dart.getFields(web_gl.ShaderPrecisionFormat.__proto__),
  [$precision]: dart.finalFieldType(core.int),
  [$rangeMax]: dart.finalFieldType(core.int),
  [$rangeMin]: dart.finalFieldType(core.int)
}));
dart.registerExtension("WebGLShaderPrecisionFormat", web_gl.ShaderPrecisionFormat);
web_gl.Sync = class Sync extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.Sync);
dart.registerExtension("WebGLSync", web_gl.Sync);
web_gl.Texture = class Texture extends _interceptors.Interceptor {
  get [$lastUploadedVideoFrameWasSkipped]() {
    return this.lastUploadedVideoFrameWasSkipped;
  }
  get [$lastUploadedVideoHeight]() {
    return this.lastUploadedVideoHeight;
  }
  get [$lastUploadedVideoTimestamp]() {
    return this.lastUploadedVideoTimestamp;
  }
  get [$lastUploadedVideoWidth]() {
    return this.lastUploadedVideoWidth;
  }
};
dart.addTypeTests(web_gl.Texture);
const lastUploadedVideoFrameWasSkipped = Symbol("Texture.lastUploadedVideoFrameWasSkipped");
const lastUploadedVideoHeight = Symbol("Texture.lastUploadedVideoHeight");
const lastUploadedVideoTimestamp = Symbol("Texture.lastUploadedVideoTimestamp");
const lastUploadedVideoWidth = Symbol("Texture.lastUploadedVideoWidth");
dart.setFieldSignature(web_gl.Texture, () => ({
  __proto__: dart.getFields(web_gl.Texture.__proto__),
  [$lastUploadedVideoFrameWasSkipped]: dart.finalFieldType(core.bool),
  [$lastUploadedVideoHeight]: dart.finalFieldType(core.int),
  [$lastUploadedVideoTimestamp]: dart.finalFieldType(core.num),
  [$lastUploadedVideoWidth]: dart.finalFieldType(core.int)
}));
dart.registerExtension("WebGLTexture", web_gl.Texture);
web_gl.TimerQueryExt = class TimerQueryExt extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.TimerQueryExt);
dart.registerExtension("WebGLTimerQueryEXT", web_gl.TimerQueryExt);
web_gl.TransformFeedback = class TransformFeedback extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.TransformFeedback);
dart.registerExtension("WebGLTransformFeedback", web_gl.TransformFeedback);
web_gl.UniformLocation = class UniformLocation extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.UniformLocation);
dart.registerExtension("WebGLUniformLocation", web_gl.UniformLocation);
web_gl.VertexArrayObject = class VertexArrayObject extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.VertexArrayObject);
dart.registerExtension("WebGLVertexArrayObject", web_gl.VertexArrayObject);
web_gl.VertexArrayObjectOes = class VertexArrayObjectOes extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl.VertexArrayObjectOes);
dart.registerExtension("WebGLVertexArrayObjectOES", web_gl.VertexArrayObjectOes);
web_gl.WebGL = class WebGL extends core.Object {};
(web_gl.WebGL[dart.mixinNew] = function() {
}).prototype = web_gl.WebGL.prototype;
dart.addTypeTests(web_gl.WebGL);
dart.defineLazy(web_gl.WebGL, {
  /*web_gl.WebGL.ACTIVE_ATTRIBUTES*/get ACTIVE_ATTRIBUTES() {
    return 35721;
  },
  /*web_gl.WebGL.ACTIVE_TEXTURE*/get ACTIVE_TEXTURE() {
    return 34016;
  },
  /*web_gl.WebGL.ACTIVE_UNIFORMS*/get ACTIVE_UNIFORMS() {
    return 35718;
  },
  /*web_gl.WebGL.ACTIVE_UNIFORM_BLOCKS*/get ACTIVE_UNIFORM_BLOCKS() {
    return 35382;
  },
  /*web_gl.WebGL.ALIASED_LINE_WIDTH_RANGE*/get ALIASED_LINE_WIDTH_RANGE() {
    return 33902;
  },
  /*web_gl.WebGL.ALIASED_POINT_SIZE_RANGE*/get ALIASED_POINT_SIZE_RANGE() {
    return 33901;
  },
  /*web_gl.WebGL.ALPHA*/get ALPHA() {
    return 6406;
  },
  /*web_gl.WebGL.ALPHA_BITS*/get ALPHA_BITS() {
    return 3413;
  },
  /*web_gl.WebGL.ALREADY_SIGNALED*/get ALREADY_SIGNALED() {
    return 37146;
  },
  /*web_gl.WebGL.ALWAYS*/get ALWAYS() {
    return 519;
  },
  /*web_gl.WebGL.ANY_SAMPLES_PASSED*/get ANY_SAMPLES_PASSED() {
    return 35887;
  },
  /*web_gl.WebGL.ANY_SAMPLES_PASSED_CONSERVATIVE*/get ANY_SAMPLES_PASSED_CONSERVATIVE() {
    return 36202;
  },
  /*web_gl.WebGL.ARRAY_BUFFER*/get ARRAY_BUFFER() {
    return 34962;
  },
  /*web_gl.WebGL.ARRAY_BUFFER_BINDING*/get ARRAY_BUFFER_BINDING() {
    return 34964;
  },
  /*web_gl.WebGL.ATTACHED_SHADERS*/get ATTACHED_SHADERS() {
    return 35717;
  },
  /*web_gl.WebGL.BACK*/get BACK() {
    return 1029;
  },
  /*web_gl.WebGL.BLEND*/get BLEND() {
    return 3042;
  },
  /*web_gl.WebGL.BLEND_COLOR*/get BLEND_COLOR() {
    return 32773;
  },
  /*web_gl.WebGL.BLEND_DST_ALPHA*/get BLEND_DST_ALPHA() {
    return 32970;
  },
  /*web_gl.WebGL.BLEND_DST_RGB*/get BLEND_DST_RGB() {
    return 32968;
  },
  /*web_gl.WebGL.BLEND_EQUATION*/get BLEND_EQUATION() {
    return 32777;
  },
  /*web_gl.WebGL.BLEND_EQUATION_ALPHA*/get BLEND_EQUATION_ALPHA() {
    return 34877;
  },
  /*web_gl.WebGL.BLEND_EQUATION_RGB*/get BLEND_EQUATION_RGB() {
    return 32777;
  },
  /*web_gl.WebGL.BLEND_SRC_ALPHA*/get BLEND_SRC_ALPHA() {
    return 32971;
  },
  /*web_gl.WebGL.BLEND_SRC_RGB*/get BLEND_SRC_RGB() {
    return 32969;
  },
  /*web_gl.WebGL.BLUE_BITS*/get BLUE_BITS() {
    return 3412;
  },
  /*web_gl.WebGL.BOOL*/get BOOL() {
    return 35670;
  },
  /*web_gl.WebGL.BOOL_VEC2*/get BOOL_VEC2() {
    return 35671;
  },
  /*web_gl.WebGL.BOOL_VEC3*/get BOOL_VEC3() {
    return 35672;
  },
  /*web_gl.WebGL.BOOL_VEC4*/get BOOL_VEC4() {
    return 35673;
  },
  /*web_gl.WebGL.BROWSER_DEFAULT_WEBGL*/get BROWSER_DEFAULT_WEBGL() {
    return 37444;
  },
  /*web_gl.WebGL.BUFFER_SIZE*/get BUFFER_SIZE() {
    return 34660;
  },
  /*web_gl.WebGL.BUFFER_USAGE*/get BUFFER_USAGE() {
    return 34661;
  },
  /*web_gl.WebGL.BYTE*/get BYTE() {
    return 5120;
  },
  /*web_gl.WebGL.CCW*/get CCW() {
    return 2305;
  },
  /*web_gl.WebGL.CLAMP_TO_EDGE*/get CLAMP_TO_EDGE() {
    return 33071;
  },
  /*web_gl.WebGL.COLOR*/get COLOR() {
    return 6144;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT0*/get COLOR_ATTACHMENT0() {
    return 36064;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT0_WEBGL*/get COLOR_ATTACHMENT0_WEBGL() {
    return 36064;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT1*/get COLOR_ATTACHMENT1() {
    return 36065;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT10*/get COLOR_ATTACHMENT10() {
    return 36074;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT10_WEBGL*/get COLOR_ATTACHMENT10_WEBGL() {
    return 36074;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT11*/get COLOR_ATTACHMENT11() {
    return 36075;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT11_WEBGL*/get COLOR_ATTACHMENT11_WEBGL() {
    return 36075;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT12*/get COLOR_ATTACHMENT12() {
    return 36076;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT12_WEBGL*/get COLOR_ATTACHMENT12_WEBGL() {
    return 36076;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT13*/get COLOR_ATTACHMENT13() {
    return 36077;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT13_WEBGL*/get COLOR_ATTACHMENT13_WEBGL() {
    return 36077;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT14*/get COLOR_ATTACHMENT14() {
    return 36078;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT14_WEBGL*/get COLOR_ATTACHMENT14_WEBGL() {
    return 36078;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT15*/get COLOR_ATTACHMENT15() {
    return 36079;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT15_WEBGL*/get COLOR_ATTACHMENT15_WEBGL() {
    return 36079;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT1_WEBGL*/get COLOR_ATTACHMENT1_WEBGL() {
    return 36065;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT2*/get COLOR_ATTACHMENT2() {
    return 36066;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT2_WEBGL*/get COLOR_ATTACHMENT2_WEBGL() {
    return 36066;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT3*/get COLOR_ATTACHMENT3() {
    return 36067;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT3_WEBGL*/get COLOR_ATTACHMENT3_WEBGL() {
    return 36067;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT4*/get COLOR_ATTACHMENT4() {
    return 36068;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT4_WEBGL*/get COLOR_ATTACHMENT4_WEBGL() {
    return 36068;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT5*/get COLOR_ATTACHMENT5() {
    return 36069;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT5_WEBGL*/get COLOR_ATTACHMENT5_WEBGL() {
    return 36069;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT6*/get COLOR_ATTACHMENT6() {
    return 36070;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT6_WEBGL*/get COLOR_ATTACHMENT6_WEBGL() {
    return 36070;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT7*/get COLOR_ATTACHMENT7() {
    return 36071;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT7_WEBGL*/get COLOR_ATTACHMENT7_WEBGL() {
    return 36071;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT8*/get COLOR_ATTACHMENT8() {
    return 36072;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT8_WEBGL*/get COLOR_ATTACHMENT8_WEBGL() {
    return 36072;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT9*/get COLOR_ATTACHMENT9() {
    return 36073;
  },
  /*web_gl.WebGL.COLOR_ATTACHMENT9_WEBGL*/get COLOR_ATTACHMENT9_WEBGL() {
    return 36073;
  },
  /*web_gl.WebGL.COLOR_BUFFER_BIT*/get COLOR_BUFFER_BIT() {
    return 16384;
  },
  /*web_gl.WebGL.COLOR_CLEAR_VALUE*/get COLOR_CLEAR_VALUE() {
    return 3106;
  },
  /*web_gl.WebGL.COLOR_WRITEMASK*/get COLOR_WRITEMASK() {
    return 3107;
  },
  /*web_gl.WebGL.COMPARE_REF_TO_TEXTURE*/get COMPARE_REF_TO_TEXTURE() {
    return 34894;
  },
  /*web_gl.WebGL.COMPILE_STATUS*/get COMPILE_STATUS() {
    return 35713;
  },
  /*web_gl.WebGL.COMPRESSED_TEXTURE_FORMATS*/get COMPRESSED_TEXTURE_FORMATS() {
    return 34467;
  },
  /*web_gl.WebGL.CONDITION_SATISFIED*/get CONDITION_SATISFIED() {
    return 37148;
  },
  /*web_gl.WebGL.CONSTANT_ALPHA*/get CONSTANT_ALPHA() {
    return 32771;
  },
  /*web_gl.WebGL.CONSTANT_COLOR*/get CONSTANT_COLOR() {
    return 32769;
  },
  /*web_gl.WebGL.CONTEXT_LOST_WEBGL*/get CONTEXT_LOST_WEBGL() {
    return 37442;
  },
  /*web_gl.WebGL.COPY_READ_BUFFER*/get COPY_READ_BUFFER() {
    return 36662;
  },
  /*web_gl.WebGL.COPY_READ_BUFFER_BINDING*/get COPY_READ_BUFFER_BINDING() {
    return 36662;
  },
  /*web_gl.WebGL.COPY_WRITE_BUFFER*/get COPY_WRITE_BUFFER() {
    return 36663;
  },
  /*web_gl.WebGL.COPY_WRITE_BUFFER_BINDING*/get COPY_WRITE_BUFFER_BINDING() {
    return 36663;
  },
  /*web_gl.WebGL.CULL_FACE*/get CULL_FACE() {
    return 2884;
  },
  /*web_gl.WebGL.CULL_FACE_MODE*/get CULL_FACE_MODE() {
    return 2885;
  },
  /*web_gl.WebGL.CURRENT_PROGRAM*/get CURRENT_PROGRAM() {
    return 35725;
  },
  /*web_gl.WebGL.CURRENT_QUERY*/get CURRENT_QUERY() {
    return 34917;
  },
  /*web_gl.WebGL.CURRENT_VERTEX_ATTRIB*/get CURRENT_VERTEX_ATTRIB() {
    return 34342;
  },
  /*web_gl.WebGL.CW*/get CW() {
    return 2304;
  },
  /*web_gl.WebGL.DECR*/get DECR() {
    return 7683;
  },
  /*web_gl.WebGL.DECR_WRAP*/get DECR_WRAP() {
    return 34056;
  },
  /*web_gl.WebGL.DELETE_STATUS*/get DELETE_STATUS() {
    return 35712;
  },
  /*web_gl.WebGL.DEPTH*/get DEPTH() {
    return 6145;
  },
  /*web_gl.WebGL.DEPTH24_STENCIL8*/get DEPTH24_STENCIL8() {
    return 35056;
  },
  /*web_gl.WebGL.DEPTH32F_STENCIL8*/get DEPTH32F_STENCIL8() {
    return 36013;
  },
  /*web_gl.WebGL.DEPTH_ATTACHMENT*/get DEPTH_ATTACHMENT() {
    return 36096;
  },
  /*web_gl.WebGL.DEPTH_BITS*/get DEPTH_BITS() {
    return 3414;
  },
  /*web_gl.WebGL.DEPTH_BUFFER_BIT*/get DEPTH_BUFFER_BIT() {
    return 256;
  },
  /*web_gl.WebGL.DEPTH_CLEAR_VALUE*/get DEPTH_CLEAR_VALUE() {
    return 2931;
  },
  /*web_gl.WebGL.DEPTH_COMPONENT*/get DEPTH_COMPONENT() {
    return 6402;
  },
  /*web_gl.WebGL.DEPTH_COMPONENT16*/get DEPTH_COMPONENT16() {
    return 33189;
  },
  /*web_gl.WebGL.DEPTH_COMPONENT24*/get DEPTH_COMPONENT24() {
    return 33190;
  },
  /*web_gl.WebGL.DEPTH_COMPONENT32F*/get DEPTH_COMPONENT32F() {
    return 36012;
  },
  /*web_gl.WebGL.DEPTH_FUNC*/get DEPTH_FUNC() {
    return 2932;
  },
  /*web_gl.WebGL.DEPTH_RANGE*/get DEPTH_RANGE() {
    return 2928;
  },
  /*web_gl.WebGL.DEPTH_STENCIL*/get DEPTH_STENCIL() {
    return 34041;
  },
  /*web_gl.WebGL.DEPTH_STENCIL_ATTACHMENT*/get DEPTH_STENCIL_ATTACHMENT() {
    return 33306;
  },
  /*web_gl.WebGL.DEPTH_TEST*/get DEPTH_TEST() {
    return 2929;
  },
  /*web_gl.WebGL.DEPTH_WRITEMASK*/get DEPTH_WRITEMASK() {
    return 2930;
  },
  /*web_gl.WebGL.DITHER*/get DITHER() {
    return 3024;
  },
  /*web_gl.WebGL.DONT_CARE*/get DONT_CARE() {
    return 4352;
  },
  /*web_gl.WebGL.DRAW_BUFFER0*/get DRAW_BUFFER0() {
    return 34853;
  },
  /*web_gl.WebGL.DRAW_BUFFER0_WEBGL*/get DRAW_BUFFER0_WEBGL() {
    return 34853;
  },
  /*web_gl.WebGL.DRAW_BUFFER1*/get DRAW_BUFFER1() {
    return 34854;
  },
  /*web_gl.WebGL.DRAW_BUFFER10*/get DRAW_BUFFER10() {
    return 34863;
  },
  /*web_gl.WebGL.DRAW_BUFFER10_WEBGL*/get DRAW_BUFFER10_WEBGL() {
    return 34863;
  },
  /*web_gl.WebGL.DRAW_BUFFER11*/get DRAW_BUFFER11() {
    return 34864;
  },
  /*web_gl.WebGL.DRAW_BUFFER11_WEBGL*/get DRAW_BUFFER11_WEBGL() {
    return 34864;
  },
  /*web_gl.WebGL.DRAW_BUFFER12*/get DRAW_BUFFER12() {
    return 34865;
  },
  /*web_gl.WebGL.DRAW_BUFFER12_WEBGL*/get DRAW_BUFFER12_WEBGL() {
    return 34865;
  },
  /*web_gl.WebGL.DRAW_BUFFER13*/get DRAW_BUFFER13() {
    return 34866;
  },
  /*web_gl.WebGL.DRAW_BUFFER13_WEBGL*/get DRAW_BUFFER13_WEBGL() {
    return 34866;
  },
  /*web_gl.WebGL.DRAW_BUFFER14*/get DRAW_BUFFER14() {
    return 34867;
  },
  /*web_gl.WebGL.DRAW_BUFFER14_WEBGL*/get DRAW_BUFFER14_WEBGL() {
    return 34867;
  },
  /*web_gl.WebGL.DRAW_BUFFER15*/get DRAW_BUFFER15() {
    return 34868;
  },
  /*web_gl.WebGL.DRAW_BUFFER15_WEBGL*/get DRAW_BUFFER15_WEBGL() {
    return 34868;
  },
  /*web_gl.WebGL.DRAW_BUFFER1_WEBGL*/get DRAW_BUFFER1_WEBGL() {
    return 34854;
  },
  /*web_gl.WebGL.DRAW_BUFFER2*/get DRAW_BUFFER2() {
    return 34855;
  },
  /*web_gl.WebGL.DRAW_BUFFER2_WEBGL*/get DRAW_BUFFER2_WEBGL() {
    return 34855;
  },
  /*web_gl.WebGL.DRAW_BUFFER3*/get DRAW_BUFFER3() {
    return 34856;
  },
  /*web_gl.WebGL.DRAW_BUFFER3_WEBGL*/get DRAW_BUFFER3_WEBGL() {
    return 34856;
  },
  /*web_gl.WebGL.DRAW_BUFFER4*/get DRAW_BUFFER4() {
    return 34857;
  },
  /*web_gl.WebGL.DRAW_BUFFER4_WEBGL*/get DRAW_BUFFER4_WEBGL() {
    return 34857;
  },
  /*web_gl.WebGL.DRAW_BUFFER5*/get DRAW_BUFFER5() {
    return 34858;
  },
  /*web_gl.WebGL.DRAW_BUFFER5_WEBGL*/get DRAW_BUFFER5_WEBGL() {
    return 34858;
  },
  /*web_gl.WebGL.DRAW_BUFFER6*/get DRAW_BUFFER6() {
    return 34859;
  },
  /*web_gl.WebGL.DRAW_BUFFER6_WEBGL*/get DRAW_BUFFER6_WEBGL() {
    return 34859;
  },
  /*web_gl.WebGL.DRAW_BUFFER7*/get DRAW_BUFFER7() {
    return 34860;
  },
  /*web_gl.WebGL.DRAW_BUFFER7_WEBGL*/get DRAW_BUFFER7_WEBGL() {
    return 34860;
  },
  /*web_gl.WebGL.DRAW_BUFFER8*/get DRAW_BUFFER8() {
    return 34861;
  },
  /*web_gl.WebGL.DRAW_BUFFER8_WEBGL*/get DRAW_BUFFER8_WEBGL() {
    return 34861;
  },
  /*web_gl.WebGL.DRAW_BUFFER9*/get DRAW_BUFFER9() {
    return 34862;
  },
  /*web_gl.WebGL.DRAW_BUFFER9_WEBGL*/get DRAW_BUFFER9_WEBGL() {
    return 34862;
  },
  /*web_gl.WebGL.DRAW_FRAMEBUFFER*/get DRAW_FRAMEBUFFER() {
    return 36009;
  },
  /*web_gl.WebGL.DRAW_FRAMEBUFFER_BINDING*/get DRAW_FRAMEBUFFER_BINDING() {
    return 36006;
  },
  /*web_gl.WebGL.DST_ALPHA*/get DST_ALPHA() {
    return 772;
  },
  /*web_gl.WebGL.DST_COLOR*/get DST_COLOR() {
    return 774;
  },
  /*web_gl.WebGL.DYNAMIC_COPY*/get DYNAMIC_COPY() {
    return 35050;
  },
  /*web_gl.WebGL.DYNAMIC_DRAW*/get DYNAMIC_DRAW() {
    return 35048;
  },
  /*web_gl.WebGL.DYNAMIC_READ*/get DYNAMIC_READ() {
    return 35049;
  },
  /*web_gl.WebGL.ELEMENT_ARRAY_BUFFER*/get ELEMENT_ARRAY_BUFFER() {
    return 34963;
  },
  /*web_gl.WebGL.ELEMENT_ARRAY_BUFFER_BINDING*/get ELEMENT_ARRAY_BUFFER_BINDING() {
    return 34965;
  },
  /*web_gl.WebGL.EQUAL*/get EQUAL() {
    return 514;
  },
  /*web_gl.WebGL.FASTEST*/get FASTEST() {
    return 4353;
  },
  /*web_gl.WebGL.FLOAT*/get FLOAT() {
    return 5126;
  },
  /*web_gl.WebGL.FLOAT_32_UNSIGNED_INT_24_8_REV*/get FLOAT_32_UNSIGNED_INT_24_8_REV() {
    return 36269;
  },
  /*web_gl.WebGL.FLOAT_MAT2*/get FLOAT_MAT2() {
    return 35674;
  },
  /*web_gl.WebGL.FLOAT_MAT2x3*/get FLOAT_MAT2x3() {
    return 35685;
  },
  /*web_gl.WebGL.FLOAT_MAT2x4*/get FLOAT_MAT2x4() {
    return 35686;
  },
  /*web_gl.WebGL.FLOAT_MAT3*/get FLOAT_MAT3() {
    return 35675;
  },
  /*web_gl.WebGL.FLOAT_MAT3x2*/get FLOAT_MAT3x2() {
    return 35687;
  },
  /*web_gl.WebGL.FLOAT_MAT3x4*/get FLOAT_MAT3x4() {
    return 35688;
  },
  /*web_gl.WebGL.FLOAT_MAT4*/get FLOAT_MAT4() {
    return 35676;
  },
  /*web_gl.WebGL.FLOAT_MAT4x2*/get FLOAT_MAT4x2() {
    return 35689;
  },
  /*web_gl.WebGL.FLOAT_MAT4x3*/get FLOAT_MAT4x3() {
    return 35690;
  },
  /*web_gl.WebGL.FLOAT_VEC2*/get FLOAT_VEC2() {
    return 35664;
  },
  /*web_gl.WebGL.FLOAT_VEC3*/get FLOAT_VEC3() {
    return 35665;
  },
  /*web_gl.WebGL.FLOAT_VEC4*/get FLOAT_VEC4() {
    return 35666;
  },
  /*web_gl.WebGL.FRAGMENT_SHADER*/get FRAGMENT_SHADER() {
    return 35632;
  },
  /*web_gl.WebGL.FRAGMENT_SHADER_DERIVATIVE_HINT*/get FRAGMENT_SHADER_DERIVATIVE_HINT() {
    return 35723;
  },
  /*web_gl.WebGL.FRAMEBUFFER*/get FRAMEBUFFER() {
    return 36160;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE*/get FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE() {
    return 33301;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE*/get FRAMEBUFFER_ATTACHMENT_BLUE_SIZE() {
    return 33300;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING*/get FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING() {
    return 33296;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE*/get FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE() {
    return 33297;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE*/get FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE() {
    return 33302;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE*/get FRAMEBUFFER_ATTACHMENT_GREEN_SIZE() {
    return 33299;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME*/get FRAMEBUFFER_ATTACHMENT_OBJECT_NAME() {
    return 36049;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE*/get FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE() {
    return 36048;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_RED_SIZE*/get FRAMEBUFFER_ATTACHMENT_RED_SIZE() {
    return 33298;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE*/get FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE() {
    return 33303;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE*/get FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE() {
    return 36051;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER*/get FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER() {
    return 36052;
  },
  /*web_gl.WebGL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL*/get FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL() {
    return 36050;
  },
  /*web_gl.WebGL.FRAMEBUFFER_BINDING*/get FRAMEBUFFER_BINDING() {
    return 36006;
  },
  /*web_gl.WebGL.FRAMEBUFFER_COMPLETE*/get FRAMEBUFFER_COMPLETE() {
    return 36053;
  },
  /*web_gl.WebGL.FRAMEBUFFER_DEFAULT*/get FRAMEBUFFER_DEFAULT() {
    return 33304;
  },
  /*web_gl.WebGL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT*/get FRAMEBUFFER_INCOMPLETE_ATTACHMENT() {
    return 36054;
  },
  /*web_gl.WebGL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS*/get FRAMEBUFFER_INCOMPLETE_DIMENSIONS() {
    return 36057;
  },
  /*web_gl.WebGL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT*/get FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT() {
    return 36055;
  },
  /*web_gl.WebGL.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE*/get FRAMEBUFFER_INCOMPLETE_MULTISAMPLE() {
    return 36182;
  },
  /*web_gl.WebGL.FRAMEBUFFER_UNSUPPORTED*/get FRAMEBUFFER_UNSUPPORTED() {
    return 36061;
  },
  /*web_gl.WebGL.FRONT*/get FRONT() {
    return 1028;
  },
  /*web_gl.WebGL.FRONT_AND_BACK*/get FRONT_AND_BACK() {
    return 1032;
  },
  /*web_gl.WebGL.FRONT_FACE*/get FRONT_FACE() {
    return 2886;
  },
  /*web_gl.WebGL.FUNC_ADD*/get FUNC_ADD() {
    return 32774;
  },
  /*web_gl.WebGL.FUNC_REVERSE_SUBTRACT*/get FUNC_REVERSE_SUBTRACT() {
    return 32779;
  },
  /*web_gl.WebGL.FUNC_SUBTRACT*/get FUNC_SUBTRACT() {
    return 32778;
  },
  /*web_gl.WebGL.GENERATE_MIPMAP_HINT*/get GENERATE_MIPMAP_HINT() {
    return 33170;
  },
  /*web_gl.WebGL.GEQUAL*/get GEQUAL() {
    return 518;
  },
  /*web_gl.WebGL.GREATER*/get GREATER() {
    return 516;
  },
  /*web_gl.WebGL.GREEN_BITS*/get GREEN_BITS() {
    return 3411;
  },
  /*web_gl.WebGL.HALF_FLOAT*/get HALF_FLOAT() {
    return 5131;
  },
  /*web_gl.WebGL.HIGH_FLOAT*/get HIGH_FLOAT() {
    return 36338;
  },
  /*web_gl.WebGL.HIGH_INT*/get HIGH_INT() {
    return 36341;
  },
  /*web_gl.WebGL.IMPLEMENTATION_COLOR_READ_FORMAT*/get IMPLEMENTATION_COLOR_READ_FORMAT() {
    return 35739;
  },
  /*web_gl.WebGL.IMPLEMENTATION_COLOR_READ_TYPE*/get IMPLEMENTATION_COLOR_READ_TYPE() {
    return 35738;
  },
  /*web_gl.WebGL.INCR*/get INCR() {
    return 7682;
  },
  /*web_gl.WebGL.INCR_WRAP*/get INCR_WRAP() {
    return 34055;
  },
  /*web_gl.WebGL.INT*/get INT() {
    return 5124;
  },
  /*web_gl.WebGL.INTERLEAVED_ATTRIBS*/get INTERLEAVED_ATTRIBS() {
    return 35980;
  },
  /*web_gl.WebGL.INT_2_10_10_10_REV*/get INT_2_10_10_10_REV() {
    return 36255;
  },
  /*web_gl.WebGL.INT_SAMPLER_2D*/get INT_SAMPLER_2D() {
    return 36298;
  },
  /*web_gl.WebGL.INT_SAMPLER_2D_ARRAY*/get INT_SAMPLER_2D_ARRAY() {
    return 36303;
  },
  /*web_gl.WebGL.INT_SAMPLER_3D*/get INT_SAMPLER_3D() {
    return 36299;
  },
  /*web_gl.WebGL.INT_SAMPLER_CUBE*/get INT_SAMPLER_CUBE() {
    return 36300;
  },
  /*web_gl.WebGL.INT_VEC2*/get INT_VEC2() {
    return 35667;
  },
  /*web_gl.WebGL.INT_VEC3*/get INT_VEC3() {
    return 35668;
  },
  /*web_gl.WebGL.INT_VEC4*/get INT_VEC4() {
    return 35669;
  },
  /*web_gl.WebGL.INVALID_ENUM*/get INVALID_ENUM() {
    return 1280;
  },
  /*web_gl.WebGL.INVALID_FRAMEBUFFER_OPERATION*/get INVALID_FRAMEBUFFER_OPERATION() {
    return 1286;
  },
  /*web_gl.WebGL.INVALID_INDEX*/get INVALID_INDEX() {
    return 4294967295;
  },
  /*web_gl.WebGL.INVALID_OPERATION*/get INVALID_OPERATION() {
    return 1282;
  },
  /*web_gl.WebGL.INVALID_VALUE*/get INVALID_VALUE() {
    return 1281;
  },
  /*web_gl.WebGL.INVERT*/get INVERT() {
    return 5386;
  },
  /*web_gl.WebGL.KEEP*/get KEEP() {
    return 7680;
  },
  /*web_gl.WebGL.LEQUAL*/get LEQUAL() {
    return 515;
  },
  /*web_gl.WebGL.LESS*/get LESS() {
    return 513;
  },
  /*web_gl.WebGL.LINEAR*/get LINEAR() {
    return 9729;
  },
  /*web_gl.WebGL.LINEAR_MIPMAP_LINEAR*/get LINEAR_MIPMAP_LINEAR() {
    return 9987;
  },
  /*web_gl.WebGL.LINEAR_MIPMAP_NEAREST*/get LINEAR_MIPMAP_NEAREST() {
    return 9985;
  },
  /*web_gl.WebGL.LINES*/get LINES() {
    return 1;
  },
  /*web_gl.WebGL.LINE_LOOP*/get LINE_LOOP() {
    return 2;
  },
  /*web_gl.WebGL.LINE_STRIP*/get LINE_STRIP() {
    return 3;
  },
  /*web_gl.WebGL.LINE_WIDTH*/get LINE_WIDTH() {
    return 2849;
  },
  /*web_gl.WebGL.LINK_STATUS*/get LINK_STATUS() {
    return 35714;
  },
  /*web_gl.WebGL.LOW_FLOAT*/get LOW_FLOAT() {
    return 36336;
  },
  /*web_gl.WebGL.LOW_INT*/get LOW_INT() {
    return 36339;
  },
  /*web_gl.WebGL.LUMINANCE*/get LUMINANCE() {
    return 6409;
  },
  /*web_gl.WebGL.LUMINANCE_ALPHA*/get LUMINANCE_ALPHA() {
    return 6410;
  },
  /*web_gl.WebGL.MAX*/get MAX() {
    return 32776;
  },
  /*web_gl.WebGL.MAX_3D_TEXTURE_SIZE*/get MAX_3D_TEXTURE_SIZE() {
    return 32883;
  },
  /*web_gl.WebGL.MAX_ARRAY_TEXTURE_LAYERS*/get MAX_ARRAY_TEXTURE_LAYERS() {
    return 35071;
  },
  /*web_gl.WebGL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL*/get MAX_CLIENT_WAIT_TIMEOUT_WEBGL() {
    return 37447;
  },
  /*web_gl.WebGL.MAX_COLOR_ATTACHMENTS*/get MAX_COLOR_ATTACHMENTS() {
    return 36063;
  },
  /*web_gl.WebGL.MAX_COLOR_ATTACHMENTS_WEBGL*/get MAX_COLOR_ATTACHMENTS_WEBGL() {
    return 36063;
  },
  /*web_gl.WebGL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS*/get MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS() {
    return 35379;
  },
  /*web_gl.WebGL.MAX_COMBINED_TEXTURE_IMAGE_UNITS*/get MAX_COMBINED_TEXTURE_IMAGE_UNITS() {
    return 35661;
  },
  /*web_gl.WebGL.MAX_COMBINED_UNIFORM_BLOCKS*/get MAX_COMBINED_UNIFORM_BLOCKS() {
    return 35374;
  },
  /*web_gl.WebGL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS*/get MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS() {
    return 35377;
  },
  /*web_gl.WebGL.MAX_CUBE_MAP_TEXTURE_SIZE*/get MAX_CUBE_MAP_TEXTURE_SIZE() {
    return 34076;
  },
  /*web_gl.WebGL.MAX_DRAW_BUFFERS*/get MAX_DRAW_BUFFERS() {
    return 34852;
  },
  /*web_gl.WebGL.MAX_DRAW_BUFFERS_WEBGL*/get MAX_DRAW_BUFFERS_WEBGL() {
    return 34852;
  },
  /*web_gl.WebGL.MAX_ELEMENTS_INDICES*/get MAX_ELEMENTS_INDICES() {
    return 33001;
  },
  /*web_gl.WebGL.MAX_ELEMENTS_VERTICES*/get MAX_ELEMENTS_VERTICES() {
    return 33000;
  },
  /*web_gl.WebGL.MAX_ELEMENT_INDEX*/get MAX_ELEMENT_INDEX() {
    return 36203;
  },
  /*web_gl.WebGL.MAX_FRAGMENT_INPUT_COMPONENTS*/get MAX_FRAGMENT_INPUT_COMPONENTS() {
    return 37157;
  },
  /*web_gl.WebGL.MAX_FRAGMENT_UNIFORM_BLOCKS*/get MAX_FRAGMENT_UNIFORM_BLOCKS() {
    return 35373;
  },
  /*web_gl.WebGL.MAX_FRAGMENT_UNIFORM_COMPONENTS*/get MAX_FRAGMENT_UNIFORM_COMPONENTS() {
    return 35657;
  },
  /*web_gl.WebGL.MAX_FRAGMENT_UNIFORM_VECTORS*/get MAX_FRAGMENT_UNIFORM_VECTORS() {
    return 36349;
  },
  /*web_gl.WebGL.MAX_PROGRAM_TEXEL_OFFSET*/get MAX_PROGRAM_TEXEL_OFFSET() {
    return 35077;
  },
  /*web_gl.WebGL.MAX_RENDERBUFFER_SIZE*/get MAX_RENDERBUFFER_SIZE() {
    return 34024;
  },
  /*web_gl.WebGL.MAX_SAMPLES*/get MAX_SAMPLES() {
    return 36183;
  },
  /*web_gl.WebGL.MAX_SERVER_WAIT_TIMEOUT*/get MAX_SERVER_WAIT_TIMEOUT() {
    return 37137;
  },
  /*web_gl.WebGL.MAX_TEXTURE_IMAGE_UNITS*/get MAX_TEXTURE_IMAGE_UNITS() {
    return 34930;
  },
  /*web_gl.WebGL.MAX_TEXTURE_LOD_BIAS*/get MAX_TEXTURE_LOD_BIAS() {
    return 34045;
  },
  /*web_gl.WebGL.MAX_TEXTURE_SIZE*/get MAX_TEXTURE_SIZE() {
    return 3379;
  },
  /*web_gl.WebGL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS*/get MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS() {
    return 35978;
  },
  /*web_gl.WebGL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS*/get MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS() {
    return 35979;
  },
  /*web_gl.WebGL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS*/get MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS() {
    return 35968;
  },
  /*web_gl.WebGL.MAX_UNIFORM_BLOCK_SIZE*/get MAX_UNIFORM_BLOCK_SIZE() {
    return 35376;
  },
  /*web_gl.WebGL.MAX_UNIFORM_BUFFER_BINDINGS*/get MAX_UNIFORM_BUFFER_BINDINGS() {
    return 35375;
  },
  /*web_gl.WebGL.MAX_VARYING_COMPONENTS*/get MAX_VARYING_COMPONENTS() {
    return 35659;
  },
  /*web_gl.WebGL.MAX_VARYING_VECTORS*/get MAX_VARYING_VECTORS() {
    return 36348;
  },
  /*web_gl.WebGL.MAX_VERTEX_ATTRIBS*/get MAX_VERTEX_ATTRIBS() {
    return 34921;
  },
  /*web_gl.WebGL.MAX_VERTEX_OUTPUT_COMPONENTS*/get MAX_VERTEX_OUTPUT_COMPONENTS() {
    return 37154;
  },
  /*web_gl.WebGL.MAX_VERTEX_TEXTURE_IMAGE_UNITS*/get MAX_VERTEX_TEXTURE_IMAGE_UNITS() {
    return 35660;
  },
  /*web_gl.WebGL.MAX_VERTEX_UNIFORM_BLOCKS*/get MAX_VERTEX_UNIFORM_BLOCKS() {
    return 35371;
  },
  /*web_gl.WebGL.MAX_VERTEX_UNIFORM_COMPONENTS*/get MAX_VERTEX_UNIFORM_COMPONENTS() {
    return 35658;
  },
  /*web_gl.WebGL.MAX_VERTEX_UNIFORM_VECTORS*/get MAX_VERTEX_UNIFORM_VECTORS() {
    return 36347;
  },
  /*web_gl.WebGL.MAX_VIEWPORT_DIMS*/get MAX_VIEWPORT_DIMS() {
    return 3386;
  },
  /*web_gl.WebGL.MEDIUM_FLOAT*/get MEDIUM_FLOAT() {
    return 36337;
  },
  /*web_gl.WebGL.MEDIUM_INT*/get MEDIUM_INT() {
    return 36340;
  },
  /*web_gl.WebGL.MIN*/get MIN() {
    return 32775;
  },
  /*web_gl.WebGL.MIN_PROGRAM_TEXEL_OFFSET*/get MIN_PROGRAM_TEXEL_OFFSET() {
    return 35076;
  },
  /*web_gl.WebGL.MIRRORED_REPEAT*/get MIRRORED_REPEAT() {
    return 33648;
  },
  /*web_gl.WebGL.NEAREST*/get NEAREST() {
    return 9728;
  },
  /*web_gl.WebGL.NEAREST_MIPMAP_LINEAR*/get NEAREST_MIPMAP_LINEAR() {
    return 9986;
  },
  /*web_gl.WebGL.NEAREST_MIPMAP_NEAREST*/get NEAREST_MIPMAP_NEAREST() {
    return 9984;
  },
  /*web_gl.WebGL.NEVER*/get NEVER() {
    return 512;
  },
  /*web_gl.WebGL.NICEST*/get NICEST() {
    return 4354;
  },
  /*web_gl.WebGL.NONE*/get NONE() {
    return 0;
  },
  /*web_gl.WebGL.NOTEQUAL*/get NOTEQUAL() {
    return 517;
  },
  /*web_gl.WebGL.NO_ERROR*/get NO_ERROR() {
    return 0;
  },
  /*web_gl.WebGL.OBJECT_TYPE*/get OBJECT_TYPE() {
    return 37138;
  },
  /*web_gl.WebGL.ONE*/get ONE() {
    return 1;
  },
  /*web_gl.WebGL.ONE_MINUS_CONSTANT_ALPHA*/get ONE_MINUS_CONSTANT_ALPHA() {
    return 32772;
  },
  /*web_gl.WebGL.ONE_MINUS_CONSTANT_COLOR*/get ONE_MINUS_CONSTANT_COLOR() {
    return 32770;
  },
  /*web_gl.WebGL.ONE_MINUS_DST_ALPHA*/get ONE_MINUS_DST_ALPHA() {
    return 773;
  },
  /*web_gl.WebGL.ONE_MINUS_DST_COLOR*/get ONE_MINUS_DST_COLOR() {
    return 775;
  },
  /*web_gl.WebGL.ONE_MINUS_SRC_ALPHA*/get ONE_MINUS_SRC_ALPHA() {
    return 771;
  },
  /*web_gl.WebGL.ONE_MINUS_SRC_COLOR*/get ONE_MINUS_SRC_COLOR() {
    return 769;
  },
  /*web_gl.WebGL.OUT_OF_MEMORY*/get OUT_OF_MEMORY() {
    return 1285;
  },
  /*web_gl.WebGL.PACK_ALIGNMENT*/get PACK_ALIGNMENT() {
    return 3333;
  },
  /*web_gl.WebGL.PACK_ROW_LENGTH*/get PACK_ROW_LENGTH() {
    return 3330;
  },
  /*web_gl.WebGL.PACK_SKIP_PIXELS*/get PACK_SKIP_PIXELS() {
    return 3332;
  },
  /*web_gl.WebGL.PACK_SKIP_ROWS*/get PACK_SKIP_ROWS() {
    return 3331;
  },
  /*web_gl.WebGL.PIXEL_PACK_BUFFER*/get PIXEL_PACK_BUFFER() {
    return 35051;
  },
  /*web_gl.WebGL.PIXEL_PACK_BUFFER_BINDING*/get PIXEL_PACK_BUFFER_BINDING() {
    return 35053;
  },
  /*web_gl.WebGL.PIXEL_UNPACK_BUFFER*/get PIXEL_UNPACK_BUFFER() {
    return 35052;
  },
  /*web_gl.WebGL.PIXEL_UNPACK_BUFFER_BINDING*/get PIXEL_UNPACK_BUFFER_BINDING() {
    return 35055;
  },
  /*web_gl.WebGL.POINTS*/get POINTS() {
    return 0;
  },
  /*web_gl.WebGL.POLYGON_OFFSET_FACTOR*/get POLYGON_OFFSET_FACTOR() {
    return 32824;
  },
  /*web_gl.WebGL.POLYGON_OFFSET_FILL*/get POLYGON_OFFSET_FILL() {
    return 32823;
  },
  /*web_gl.WebGL.POLYGON_OFFSET_UNITS*/get POLYGON_OFFSET_UNITS() {
    return 10752;
  },
  /*web_gl.WebGL.QUERY_RESULT*/get QUERY_RESULT() {
    return 34918;
  },
  /*web_gl.WebGL.QUERY_RESULT_AVAILABLE*/get QUERY_RESULT_AVAILABLE() {
    return 34919;
  },
  /*web_gl.WebGL.R11F_G11F_B10F*/get R11F_G11F_B10F() {
    return 35898;
  },
  /*web_gl.WebGL.R16F*/get R16F() {
    return 33325;
  },
  /*web_gl.WebGL.R16I*/get R16I() {
    return 33331;
  },
  /*web_gl.WebGL.R16UI*/get R16UI() {
    return 33332;
  },
  /*web_gl.WebGL.R32F*/get R32F() {
    return 33326;
  },
  /*web_gl.WebGL.R32I*/get R32I() {
    return 33333;
  },
  /*web_gl.WebGL.R32UI*/get R32UI() {
    return 33334;
  },
  /*web_gl.WebGL.R8*/get R8() {
    return 33321;
  },
  /*web_gl.WebGL.R8I*/get R8I() {
    return 33329;
  },
  /*web_gl.WebGL.R8UI*/get R8UI() {
    return 33330;
  },
  /*web_gl.WebGL.R8_SNORM*/get R8_SNORM() {
    return 36756;
  },
  /*web_gl.WebGL.RASTERIZER_DISCARD*/get RASTERIZER_DISCARD() {
    return 35977;
  },
  /*web_gl.WebGL.READ_BUFFER*/get READ_BUFFER() {
    return 3074;
  },
  /*web_gl.WebGL.READ_FRAMEBUFFER*/get READ_FRAMEBUFFER() {
    return 36008;
  },
  /*web_gl.WebGL.READ_FRAMEBUFFER_BINDING*/get READ_FRAMEBUFFER_BINDING() {
    return 36010;
  },
  /*web_gl.WebGL.RED*/get RED() {
    return 6403;
  },
  /*web_gl.WebGL.RED_BITS*/get RED_BITS() {
    return 3410;
  },
  /*web_gl.WebGL.RED_INTEGER*/get RED_INTEGER() {
    return 36244;
  },
  /*web_gl.WebGL.RENDERBUFFER*/get RENDERBUFFER() {
    return 36161;
  },
  /*web_gl.WebGL.RENDERBUFFER_ALPHA_SIZE*/get RENDERBUFFER_ALPHA_SIZE() {
    return 36179;
  },
  /*web_gl.WebGL.RENDERBUFFER_BINDING*/get RENDERBUFFER_BINDING() {
    return 36007;
  },
  /*web_gl.WebGL.RENDERBUFFER_BLUE_SIZE*/get RENDERBUFFER_BLUE_SIZE() {
    return 36178;
  },
  /*web_gl.WebGL.RENDERBUFFER_DEPTH_SIZE*/get RENDERBUFFER_DEPTH_SIZE() {
    return 36180;
  },
  /*web_gl.WebGL.RENDERBUFFER_GREEN_SIZE*/get RENDERBUFFER_GREEN_SIZE() {
    return 36177;
  },
  /*web_gl.WebGL.RENDERBUFFER_HEIGHT*/get RENDERBUFFER_HEIGHT() {
    return 36163;
  },
  /*web_gl.WebGL.RENDERBUFFER_INTERNAL_FORMAT*/get RENDERBUFFER_INTERNAL_FORMAT() {
    return 36164;
  },
  /*web_gl.WebGL.RENDERBUFFER_RED_SIZE*/get RENDERBUFFER_RED_SIZE() {
    return 36176;
  },
  /*web_gl.WebGL.RENDERBUFFER_SAMPLES*/get RENDERBUFFER_SAMPLES() {
    return 36011;
  },
  /*web_gl.WebGL.RENDERBUFFER_STENCIL_SIZE*/get RENDERBUFFER_STENCIL_SIZE() {
    return 36181;
  },
  /*web_gl.WebGL.RENDERBUFFER_WIDTH*/get RENDERBUFFER_WIDTH() {
    return 36162;
  },
  /*web_gl.WebGL.RENDERER*/get RENDERER() {
    return 7937;
  },
  /*web_gl.WebGL.REPEAT*/get REPEAT() {
    return 10497;
  },
  /*web_gl.WebGL.REPLACE*/get REPLACE() {
    return 7681;
  },
  /*web_gl.WebGL.RG*/get RG() {
    return 33319;
  },
  /*web_gl.WebGL.RG16F*/get RG16F() {
    return 33327;
  },
  /*web_gl.WebGL.RG16I*/get RG16I() {
    return 33337;
  },
  /*web_gl.WebGL.RG16UI*/get RG16UI() {
    return 33338;
  },
  /*web_gl.WebGL.RG32F*/get RG32F() {
    return 33328;
  },
  /*web_gl.WebGL.RG32I*/get RG32I() {
    return 33339;
  },
  /*web_gl.WebGL.RG32UI*/get RG32UI() {
    return 33340;
  },
  /*web_gl.WebGL.RG8*/get RG8() {
    return 33323;
  },
  /*web_gl.WebGL.RG8I*/get RG8I() {
    return 33335;
  },
  /*web_gl.WebGL.RG8UI*/get RG8UI() {
    return 33336;
  },
  /*web_gl.WebGL.RG8_SNORM*/get RG8_SNORM() {
    return 36757;
  },
  /*web_gl.WebGL.RGB*/get RGB() {
    return 6407;
  },
  /*web_gl.WebGL.RGB10_A2*/get RGB10_A2() {
    return 32857;
  },
  /*web_gl.WebGL.RGB10_A2UI*/get RGB10_A2UI() {
    return 36975;
  },
  /*web_gl.WebGL.RGB16F*/get RGB16F() {
    return 34843;
  },
  /*web_gl.WebGL.RGB16I*/get RGB16I() {
    return 36233;
  },
  /*web_gl.WebGL.RGB16UI*/get RGB16UI() {
    return 36215;
  },
  /*web_gl.WebGL.RGB32F*/get RGB32F() {
    return 34837;
  },
  /*web_gl.WebGL.RGB32I*/get RGB32I() {
    return 36227;
  },
  /*web_gl.WebGL.RGB32UI*/get RGB32UI() {
    return 36209;
  },
  /*web_gl.WebGL.RGB565*/get RGB565() {
    return 36194;
  },
  /*web_gl.WebGL.RGB5_A1*/get RGB5_A1() {
    return 32855;
  },
  /*web_gl.WebGL.RGB8*/get RGB8() {
    return 32849;
  },
  /*web_gl.WebGL.RGB8I*/get RGB8I() {
    return 36239;
  },
  /*web_gl.WebGL.RGB8UI*/get RGB8UI() {
    return 36221;
  },
  /*web_gl.WebGL.RGB8_SNORM*/get RGB8_SNORM() {
    return 36758;
  },
  /*web_gl.WebGL.RGB9_E5*/get RGB9_E5() {
    return 35901;
  },
  /*web_gl.WebGL.RGBA*/get RGBA() {
    return 6408;
  },
  /*web_gl.WebGL.RGBA16F*/get RGBA16F() {
    return 34842;
  },
  /*web_gl.WebGL.RGBA16I*/get RGBA16I() {
    return 36232;
  },
  /*web_gl.WebGL.RGBA16UI*/get RGBA16UI() {
    return 36214;
  },
  /*web_gl.WebGL.RGBA32F*/get RGBA32F() {
    return 34836;
  },
  /*web_gl.WebGL.RGBA32I*/get RGBA32I() {
    return 36226;
  },
  /*web_gl.WebGL.RGBA32UI*/get RGBA32UI() {
    return 36208;
  },
  /*web_gl.WebGL.RGBA4*/get RGBA4() {
    return 32854;
  },
  /*web_gl.WebGL.RGBA8*/get RGBA8() {
    return 32856;
  },
  /*web_gl.WebGL.RGBA8I*/get RGBA8I() {
    return 36238;
  },
  /*web_gl.WebGL.RGBA8UI*/get RGBA8UI() {
    return 36220;
  },
  /*web_gl.WebGL.RGBA8_SNORM*/get RGBA8_SNORM() {
    return 36759;
  },
  /*web_gl.WebGL.RGBA_INTEGER*/get RGBA_INTEGER() {
    return 36249;
  },
  /*web_gl.WebGL.RGB_INTEGER*/get RGB_INTEGER() {
    return 36248;
  },
  /*web_gl.WebGL.RG_INTEGER*/get RG_INTEGER() {
    return 33320;
  },
  /*web_gl.WebGL.SAMPLER_2D*/get SAMPLER_2D() {
    return 35678;
  },
  /*web_gl.WebGL.SAMPLER_2D_ARRAY*/get SAMPLER_2D_ARRAY() {
    return 36289;
  },
  /*web_gl.WebGL.SAMPLER_2D_ARRAY_SHADOW*/get SAMPLER_2D_ARRAY_SHADOW() {
    return 36292;
  },
  /*web_gl.WebGL.SAMPLER_2D_SHADOW*/get SAMPLER_2D_SHADOW() {
    return 35682;
  },
  /*web_gl.WebGL.SAMPLER_3D*/get SAMPLER_3D() {
    return 35679;
  },
  /*web_gl.WebGL.SAMPLER_BINDING*/get SAMPLER_BINDING() {
    return 35097;
  },
  /*web_gl.WebGL.SAMPLER_CUBE*/get SAMPLER_CUBE() {
    return 35680;
  },
  /*web_gl.WebGL.SAMPLER_CUBE_SHADOW*/get SAMPLER_CUBE_SHADOW() {
    return 36293;
  },
  /*web_gl.WebGL.SAMPLES*/get SAMPLES() {
    return 32937;
  },
  /*web_gl.WebGL.SAMPLE_ALPHA_TO_COVERAGE*/get SAMPLE_ALPHA_TO_COVERAGE() {
    return 32926;
  },
  /*web_gl.WebGL.SAMPLE_BUFFERS*/get SAMPLE_BUFFERS() {
    return 32936;
  },
  /*web_gl.WebGL.SAMPLE_COVERAGE*/get SAMPLE_COVERAGE() {
    return 32928;
  },
  /*web_gl.WebGL.SAMPLE_COVERAGE_INVERT*/get SAMPLE_COVERAGE_INVERT() {
    return 32939;
  },
  /*web_gl.WebGL.SAMPLE_COVERAGE_VALUE*/get SAMPLE_COVERAGE_VALUE() {
    return 32938;
  },
  /*web_gl.WebGL.SCISSOR_BOX*/get SCISSOR_BOX() {
    return 3088;
  },
  /*web_gl.WebGL.SCISSOR_TEST*/get SCISSOR_TEST() {
    return 3089;
  },
  /*web_gl.WebGL.SEPARATE_ATTRIBS*/get SEPARATE_ATTRIBS() {
    return 35981;
  },
  /*web_gl.WebGL.SHADER_TYPE*/get SHADER_TYPE() {
    return 35663;
  },
  /*web_gl.WebGL.SHADING_LANGUAGE_VERSION*/get SHADING_LANGUAGE_VERSION() {
    return 35724;
  },
  /*web_gl.WebGL.SHORT*/get SHORT() {
    return 5122;
  },
  /*web_gl.WebGL.SIGNALED*/get SIGNALED() {
    return 37145;
  },
  /*web_gl.WebGL.SIGNED_NORMALIZED*/get SIGNED_NORMALIZED() {
    return 36764;
  },
  /*web_gl.WebGL.SRC_ALPHA*/get SRC_ALPHA() {
    return 770;
  },
  /*web_gl.WebGL.SRC_ALPHA_SATURATE*/get SRC_ALPHA_SATURATE() {
    return 776;
  },
  /*web_gl.WebGL.SRC_COLOR*/get SRC_COLOR() {
    return 768;
  },
  /*web_gl.WebGL.SRGB*/get SRGB() {
    return 35904;
  },
  /*web_gl.WebGL.SRGB8*/get SRGB8() {
    return 35905;
  },
  /*web_gl.WebGL.SRGB8_ALPHA8*/get SRGB8_ALPHA8() {
    return 35907;
  },
  /*web_gl.WebGL.STATIC_COPY*/get STATIC_COPY() {
    return 35046;
  },
  /*web_gl.WebGL.STATIC_DRAW*/get STATIC_DRAW() {
    return 35044;
  },
  /*web_gl.WebGL.STATIC_READ*/get STATIC_READ() {
    return 35045;
  },
  /*web_gl.WebGL.STENCIL*/get STENCIL() {
    return 6146;
  },
  /*web_gl.WebGL.STENCIL_ATTACHMENT*/get STENCIL_ATTACHMENT() {
    return 36128;
  },
  /*web_gl.WebGL.STENCIL_BACK_FAIL*/get STENCIL_BACK_FAIL() {
    return 34817;
  },
  /*web_gl.WebGL.STENCIL_BACK_FUNC*/get STENCIL_BACK_FUNC() {
    return 34816;
  },
  /*web_gl.WebGL.STENCIL_BACK_PASS_DEPTH_FAIL*/get STENCIL_BACK_PASS_DEPTH_FAIL() {
    return 34818;
  },
  /*web_gl.WebGL.STENCIL_BACK_PASS_DEPTH_PASS*/get STENCIL_BACK_PASS_DEPTH_PASS() {
    return 34819;
  },
  /*web_gl.WebGL.STENCIL_BACK_REF*/get STENCIL_BACK_REF() {
    return 36003;
  },
  /*web_gl.WebGL.STENCIL_BACK_VALUE_MASK*/get STENCIL_BACK_VALUE_MASK() {
    return 36004;
  },
  /*web_gl.WebGL.STENCIL_BACK_WRITEMASK*/get STENCIL_BACK_WRITEMASK() {
    return 36005;
  },
  /*web_gl.WebGL.STENCIL_BITS*/get STENCIL_BITS() {
    return 3415;
  },
  /*web_gl.WebGL.STENCIL_BUFFER_BIT*/get STENCIL_BUFFER_BIT() {
    return 1024;
  },
  /*web_gl.WebGL.STENCIL_CLEAR_VALUE*/get STENCIL_CLEAR_VALUE() {
    return 2961;
  },
  /*web_gl.WebGL.STENCIL_FAIL*/get STENCIL_FAIL() {
    return 2964;
  },
  /*web_gl.WebGL.STENCIL_FUNC*/get STENCIL_FUNC() {
    return 2962;
  },
  /*web_gl.WebGL.STENCIL_INDEX8*/get STENCIL_INDEX8() {
    return 36168;
  },
  /*web_gl.WebGL.STENCIL_PASS_DEPTH_FAIL*/get STENCIL_PASS_DEPTH_FAIL() {
    return 2965;
  },
  /*web_gl.WebGL.STENCIL_PASS_DEPTH_PASS*/get STENCIL_PASS_DEPTH_PASS() {
    return 2966;
  },
  /*web_gl.WebGL.STENCIL_REF*/get STENCIL_REF() {
    return 2967;
  },
  /*web_gl.WebGL.STENCIL_TEST*/get STENCIL_TEST() {
    return 2960;
  },
  /*web_gl.WebGL.STENCIL_VALUE_MASK*/get STENCIL_VALUE_MASK() {
    return 2963;
  },
  /*web_gl.WebGL.STENCIL_WRITEMASK*/get STENCIL_WRITEMASK() {
    return 2968;
  },
  /*web_gl.WebGL.STREAM_COPY*/get STREAM_COPY() {
    return 35042;
  },
  /*web_gl.WebGL.STREAM_DRAW*/get STREAM_DRAW() {
    return 35040;
  },
  /*web_gl.WebGL.STREAM_READ*/get STREAM_READ() {
    return 35041;
  },
  /*web_gl.WebGL.SUBPIXEL_BITS*/get SUBPIXEL_BITS() {
    return 3408;
  },
  /*web_gl.WebGL.SYNC_CONDITION*/get SYNC_CONDITION() {
    return 37139;
  },
  /*web_gl.WebGL.SYNC_FENCE*/get SYNC_FENCE() {
    return 37142;
  },
  /*web_gl.WebGL.SYNC_FLAGS*/get SYNC_FLAGS() {
    return 37141;
  },
  /*web_gl.WebGL.SYNC_FLUSH_COMMANDS_BIT*/get SYNC_FLUSH_COMMANDS_BIT() {
    return 1;
  },
  /*web_gl.WebGL.SYNC_GPU_COMMANDS_COMPLETE*/get SYNC_GPU_COMMANDS_COMPLETE() {
    return 37143;
  },
  /*web_gl.WebGL.SYNC_STATUS*/get SYNC_STATUS() {
    return 37140;
  },
  /*web_gl.WebGL.TEXTURE*/get TEXTURE() {
    return 5890;
  },
  /*web_gl.WebGL.TEXTURE0*/get TEXTURE0() {
    return 33984;
  },
  /*web_gl.WebGL.TEXTURE1*/get TEXTURE1() {
    return 33985;
  },
  /*web_gl.WebGL.TEXTURE10*/get TEXTURE10() {
    return 33994;
  },
  /*web_gl.WebGL.TEXTURE11*/get TEXTURE11() {
    return 33995;
  },
  /*web_gl.WebGL.TEXTURE12*/get TEXTURE12() {
    return 33996;
  },
  /*web_gl.WebGL.TEXTURE13*/get TEXTURE13() {
    return 33997;
  },
  /*web_gl.WebGL.TEXTURE14*/get TEXTURE14() {
    return 33998;
  },
  /*web_gl.WebGL.TEXTURE15*/get TEXTURE15() {
    return 33999;
  },
  /*web_gl.WebGL.TEXTURE16*/get TEXTURE16() {
    return 34000;
  },
  /*web_gl.WebGL.TEXTURE17*/get TEXTURE17() {
    return 34001;
  },
  /*web_gl.WebGL.TEXTURE18*/get TEXTURE18() {
    return 34002;
  },
  /*web_gl.WebGL.TEXTURE19*/get TEXTURE19() {
    return 34003;
  },
  /*web_gl.WebGL.TEXTURE2*/get TEXTURE2() {
    return 33986;
  },
  /*web_gl.WebGL.TEXTURE20*/get TEXTURE20() {
    return 34004;
  },
  /*web_gl.WebGL.TEXTURE21*/get TEXTURE21() {
    return 34005;
  },
  /*web_gl.WebGL.TEXTURE22*/get TEXTURE22() {
    return 34006;
  },
  /*web_gl.WebGL.TEXTURE23*/get TEXTURE23() {
    return 34007;
  },
  /*web_gl.WebGL.TEXTURE24*/get TEXTURE24() {
    return 34008;
  },
  /*web_gl.WebGL.TEXTURE25*/get TEXTURE25() {
    return 34009;
  },
  /*web_gl.WebGL.TEXTURE26*/get TEXTURE26() {
    return 34010;
  },
  /*web_gl.WebGL.TEXTURE27*/get TEXTURE27() {
    return 34011;
  },
  /*web_gl.WebGL.TEXTURE28*/get TEXTURE28() {
    return 34012;
  },
  /*web_gl.WebGL.TEXTURE29*/get TEXTURE29() {
    return 34013;
  },
  /*web_gl.WebGL.TEXTURE3*/get TEXTURE3() {
    return 33987;
  },
  /*web_gl.WebGL.TEXTURE30*/get TEXTURE30() {
    return 34014;
  },
  /*web_gl.WebGL.TEXTURE31*/get TEXTURE31() {
    return 34015;
  },
  /*web_gl.WebGL.TEXTURE4*/get TEXTURE4() {
    return 33988;
  },
  /*web_gl.WebGL.TEXTURE5*/get TEXTURE5() {
    return 33989;
  },
  /*web_gl.WebGL.TEXTURE6*/get TEXTURE6() {
    return 33990;
  },
  /*web_gl.WebGL.TEXTURE7*/get TEXTURE7() {
    return 33991;
  },
  /*web_gl.WebGL.TEXTURE8*/get TEXTURE8() {
    return 33992;
  },
  /*web_gl.WebGL.TEXTURE9*/get TEXTURE9() {
    return 33993;
  },
  /*web_gl.WebGL.TEXTURE_2D*/get TEXTURE_2D() {
    return 3553;
  },
  /*web_gl.WebGL.TEXTURE_2D_ARRAY*/get TEXTURE_2D_ARRAY() {
    return 35866;
  },
  /*web_gl.WebGL.TEXTURE_3D*/get TEXTURE_3D() {
    return 32879;
  },
  /*web_gl.WebGL.TEXTURE_BASE_LEVEL*/get TEXTURE_BASE_LEVEL() {
    return 33084;
  },
  /*web_gl.WebGL.TEXTURE_BINDING_2D*/get TEXTURE_BINDING_2D() {
    return 32873;
  },
  /*web_gl.WebGL.TEXTURE_BINDING_2D_ARRAY*/get TEXTURE_BINDING_2D_ARRAY() {
    return 35869;
  },
  /*web_gl.WebGL.TEXTURE_BINDING_3D*/get TEXTURE_BINDING_3D() {
    return 32874;
  },
  /*web_gl.WebGL.TEXTURE_BINDING_CUBE_MAP*/get TEXTURE_BINDING_CUBE_MAP() {
    return 34068;
  },
  /*web_gl.WebGL.TEXTURE_COMPARE_FUNC*/get TEXTURE_COMPARE_FUNC() {
    return 34893;
  },
  /*web_gl.WebGL.TEXTURE_COMPARE_MODE*/get TEXTURE_COMPARE_MODE() {
    return 34892;
  },
  /*web_gl.WebGL.TEXTURE_CUBE_MAP*/get TEXTURE_CUBE_MAP() {
    return 34067;
  },
  /*web_gl.WebGL.TEXTURE_CUBE_MAP_NEGATIVE_X*/get TEXTURE_CUBE_MAP_NEGATIVE_X() {
    return 34070;
  },
  /*web_gl.WebGL.TEXTURE_CUBE_MAP_NEGATIVE_Y*/get TEXTURE_CUBE_MAP_NEGATIVE_Y() {
    return 34072;
  },
  /*web_gl.WebGL.TEXTURE_CUBE_MAP_NEGATIVE_Z*/get TEXTURE_CUBE_MAP_NEGATIVE_Z() {
    return 34074;
  },
  /*web_gl.WebGL.TEXTURE_CUBE_MAP_POSITIVE_X*/get TEXTURE_CUBE_MAP_POSITIVE_X() {
    return 34069;
  },
  /*web_gl.WebGL.TEXTURE_CUBE_MAP_POSITIVE_Y*/get TEXTURE_CUBE_MAP_POSITIVE_Y() {
    return 34071;
  },
  /*web_gl.WebGL.TEXTURE_CUBE_MAP_POSITIVE_Z*/get TEXTURE_CUBE_MAP_POSITIVE_Z() {
    return 34073;
  },
  /*web_gl.WebGL.TEXTURE_IMMUTABLE_FORMAT*/get TEXTURE_IMMUTABLE_FORMAT() {
    return 37167;
  },
  /*web_gl.WebGL.TEXTURE_IMMUTABLE_LEVELS*/get TEXTURE_IMMUTABLE_LEVELS() {
    return 33503;
  },
  /*web_gl.WebGL.TEXTURE_MAG_FILTER*/get TEXTURE_MAG_FILTER() {
    return 10240;
  },
  /*web_gl.WebGL.TEXTURE_MAX_LEVEL*/get TEXTURE_MAX_LEVEL() {
    return 33085;
  },
  /*web_gl.WebGL.TEXTURE_MAX_LOD*/get TEXTURE_MAX_LOD() {
    return 33083;
  },
  /*web_gl.WebGL.TEXTURE_MIN_FILTER*/get TEXTURE_MIN_FILTER() {
    return 10241;
  },
  /*web_gl.WebGL.TEXTURE_MIN_LOD*/get TEXTURE_MIN_LOD() {
    return 33082;
  },
  /*web_gl.WebGL.TEXTURE_WRAP_R*/get TEXTURE_WRAP_R() {
    return 32882;
  },
  /*web_gl.WebGL.TEXTURE_WRAP_S*/get TEXTURE_WRAP_S() {
    return 10242;
  },
  /*web_gl.WebGL.TEXTURE_WRAP_T*/get TEXTURE_WRAP_T() {
    return 10243;
  },
  /*web_gl.WebGL.TIMEOUT_EXPIRED*/get TIMEOUT_EXPIRED() {
    return 37147;
  },
  /*web_gl.WebGL.TIMEOUT_IGNORED*/get TIMEOUT_IGNORED() {
    return -1;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK*/get TRANSFORM_FEEDBACK() {
    return 36386;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK_ACTIVE*/get TRANSFORM_FEEDBACK_ACTIVE() {
    return 36388;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK_BINDING*/get TRANSFORM_FEEDBACK_BINDING() {
    return 36389;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK_BUFFER*/get TRANSFORM_FEEDBACK_BUFFER() {
    return 35982;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK_BUFFER_BINDING*/get TRANSFORM_FEEDBACK_BUFFER_BINDING() {
    return 35983;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK_BUFFER_MODE*/get TRANSFORM_FEEDBACK_BUFFER_MODE() {
    return 35967;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK_BUFFER_SIZE*/get TRANSFORM_FEEDBACK_BUFFER_SIZE() {
    return 35973;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK_BUFFER_START*/get TRANSFORM_FEEDBACK_BUFFER_START() {
    return 35972;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK_PAUSED*/get TRANSFORM_FEEDBACK_PAUSED() {
    return 36387;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN*/get TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN() {
    return 35976;
  },
  /*web_gl.WebGL.TRANSFORM_FEEDBACK_VARYINGS*/get TRANSFORM_FEEDBACK_VARYINGS() {
    return 35971;
  },
  /*web_gl.WebGL.TRIANGLES*/get TRIANGLES() {
    return 4;
  },
  /*web_gl.WebGL.TRIANGLE_FAN*/get TRIANGLE_FAN() {
    return 6;
  },
  /*web_gl.WebGL.TRIANGLE_STRIP*/get TRIANGLE_STRIP() {
    return 5;
  },
  /*web_gl.WebGL.UNIFORM_ARRAY_STRIDE*/get UNIFORM_ARRAY_STRIDE() {
    return 35388;
  },
  /*web_gl.WebGL.UNIFORM_BLOCK_ACTIVE_UNIFORMS*/get UNIFORM_BLOCK_ACTIVE_UNIFORMS() {
    return 35394;
  },
  /*web_gl.WebGL.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES*/get UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES() {
    return 35395;
  },
  /*web_gl.WebGL.UNIFORM_BLOCK_BINDING*/get UNIFORM_BLOCK_BINDING() {
    return 35391;
  },
  /*web_gl.WebGL.UNIFORM_BLOCK_DATA_SIZE*/get UNIFORM_BLOCK_DATA_SIZE() {
    return 35392;
  },
  /*web_gl.WebGL.UNIFORM_BLOCK_INDEX*/get UNIFORM_BLOCK_INDEX() {
    return 35386;
  },
  /*web_gl.WebGL.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER*/get UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER() {
    return 35398;
  },
  /*web_gl.WebGL.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER*/get UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER() {
    return 35396;
  },
  /*web_gl.WebGL.UNIFORM_BUFFER*/get UNIFORM_BUFFER() {
    return 35345;
  },
  /*web_gl.WebGL.UNIFORM_BUFFER_BINDING*/get UNIFORM_BUFFER_BINDING() {
    return 35368;
  },
  /*web_gl.WebGL.UNIFORM_BUFFER_OFFSET_ALIGNMENT*/get UNIFORM_BUFFER_OFFSET_ALIGNMENT() {
    return 35380;
  },
  /*web_gl.WebGL.UNIFORM_BUFFER_SIZE*/get UNIFORM_BUFFER_SIZE() {
    return 35370;
  },
  /*web_gl.WebGL.UNIFORM_BUFFER_START*/get UNIFORM_BUFFER_START() {
    return 35369;
  },
  /*web_gl.WebGL.UNIFORM_IS_ROW_MAJOR*/get UNIFORM_IS_ROW_MAJOR() {
    return 35390;
  },
  /*web_gl.WebGL.UNIFORM_MATRIX_STRIDE*/get UNIFORM_MATRIX_STRIDE() {
    return 35389;
  },
  /*web_gl.WebGL.UNIFORM_OFFSET*/get UNIFORM_OFFSET() {
    return 35387;
  },
  /*web_gl.WebGL.UNIFORM_SIZE*/get UNIFORM_SIZE() {
    return 35384;
  },
  /*web_gl.WebGL.UNIFORM_TYPE*/get UNIFORM_TYPE() {
    return 35383;
  },
  /*web_gl.WebGL.UNPACK_ALIGNMENT*/get UNPACK_ALIGNMENT() {
    return 3317;
  },
  /*web_gl.WebGL.UNPACK_COLORSPACE_CONVERSION_WEBGL*/get UNPACK_COLORSPACE_CONVERSION_WEBGL() {
    return 37443;
  },
  /*web_gl.WebGL.UNPACK_FLIP_Y_WEBGL*/get UNPACK_FLIP_Y_WEBGL() {
    return 37440;
  },
  /*web_gl.WebGL.UNPACK_IMAGE_HEIGHT*/get UNPACK_IMAGE_HEIGHT() {
    return 32878;
  },
  /*web_gl.WebGL.UNPACK_PREMULTIPLY_ALPHA_WEBGL*/get UNPACK_PREMULTIPLY_ALPHA_WEBGL() {
    return 37441;
  },
  /*web_gl.WebGL.UNPACK_ROW_LENGTH*/get UNPACK_ROW_LENGTH() {
    return 3314;
  },
  /*web_gl.WebGL.UNPACK_SKIP_IMAGES*/get UNPACK_SKIP_IMAGES() {
    return 32877;
  },
  /*web_gl.WebGL.UNPACK_SKIP_PIXELS*/get UNPACK_SKIP_PIXELS() {
    return 3316;
  },
  /*web_gl.WebGL.UNPACK_SKIP_ROWS*/get UNPACK_SKIP_ROWS() {
    return 3315;
  },
  /*web_gl.WebGL.UNSIGNALED*/get UNSIGNALED() {
    return 37144;
  },
  /*web_gl.WebGL.UNSIGNED_BYTE*/get UNSIGNED_BYTE() {
    return 5121;
  },
  /*web_gl.WebGL.UNSIGNED_INT*/get UNSIGNED_INT() {
    return 5125;
  },
  /*web_gl.WebGL.UNSIGNED_INT_10F_11F_11F_REV*/get UNSIGNED_INT_10F_11F_11F_REV() {
    return 35899;
  },
  /*web_gl.WebGL.UNSIGNED_INT_24_8*/get UNSIGNED_INT_24_8() {
    return 34042;
  },
  /*web_gl.WebGL.UNSIGNED_INT_2_10_10_10_REV*/get UNSIGNED_INT_2_10_10_10_REV() {
    return 33640;
  },
  /*web_gl.WebGL.UNSIGNED_INT_5_9_9_9_REV*/get UNSIGNED_INT_5_9_9_9_REV() {
    return 35902;
  },
  /*web_gl.WebGL.UNSIGNED_INT_SAMPLER_2D*/get UNSIGNED_INT_SAMPLER_2D() {
    return 36306;
  },
  /*web_gl.WebGL.UNSIGNED_INT_SAMPLER_2D_ARRAY*/get UNSIGNED_INT_SAMPLER_2D_ARRAY() {
    return 36311;
  },
  /*web_gl.WebGL.UNSIGNED_INT_SAMPLER_3D*/get UNSIGNED_INT_SAMPLER_3D() {
    return 36307;
  },
  /*web_gl.WebGL.UNSIGNED_INT_SAMPLER_CUBE*/get UNSIGNED_INT_SAMPLER_CUBE() {
    return 36308;
  },
  /*web_gl.WebGL.UNSIGNED_INT_VEC2*/get UNSIGNED_INT_VEC2() {
    return 36294;
  },
  /*web_gl.WebGL.UNSIGNED_INT_VEC3*/get UNSIGNED_INT_VEC3() {
    return 36295;
  },
  /*web_gl.WebGL.UNSIGNED_INT_VEC4*/get UNSIGNED_INT_VEC4() {
    return 36296;
  },
  /*web_gl.WebGL.UNSIGNED_NORMALIZED*/get UNSIGNED_NORMALIZED() {
    return 35863;
  },
  /*web_gl.WebGL.UNSIGNED_SHORT*/get UNSIGNED_SHORT() {
    return 5123;
  },
  /*web_gl.WebGL.UNSIGNED_SHORT_4_4_4_4*/get UNSIGNED_SHORT_4_4_4_4() {
    return 32819;
  },
  /*web_gl.WebGL.UNSIGNED_SHORT_5_5_5_1*/get UNSIGNED_SHORT_5_5_5_1() {
    return 32820;
  },
  /*web_gl.WebGL.UNSIGNED_SHORT_5_6_5*/get UNSIGNED_SHORT_5_6_5() {
    return 33635;
  },
  /*web_gl.WebGL.VALIDATE_STATUS*/get VALIDATE_STATUS() {
    return 35715;
  },
  /*web_gl.WebGL.VENDOR*/get VENDOR() {
    return 7936;
  },
  /*web_gl.WebGL.VERSION*/get VERSION() {
    return 7938;
  },
  /*web_gl.WebGL.VERTEX_ARRAY_BINDING*/get VERTEX_ARRAY_BINDING() {
    return 34229;
  },
  /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING*/get VERTEX_ATTRIB_ARRAY_BUFFER_BINDING() {
    return 34975;
  },
  /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_DIVISOR*/get VERTEX_ATTRIB_ARRAY_DIVISOR() {
    return 35070;
  },
  /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_ENABLED*/get VERTEX_ATTRIB_ARRAY_ENABLED() {
    return 34338;
  },
  /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_INTEGER*/get VERTEX_ATTRIB_ARRAY_INTEGER() {
    return 35069;
  },
  /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_NORMALIZED*/get VERTEX_ATTRIB_ARRAY_NORMALIZED() {
    return 34922;
  },
  /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_POINTER*/get VERTEX_ATTRIB_ARRAY_POINTER() {
    return 34373;
  },
  /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_SIZE*/get VERTEX_ATTRIB_ARRAY_SIZE() {
    return 34339;
  },
  /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_STRIDE*/get VERTEX_ATTRIB_ARRAY_STRIDE() {
    return 34340;
  },
  /*web_gl.WebGL.VERTEX_ATTRIB_ARRAY_TYPE*/get VERTEX_ATTRIB_ARRAY_TYPE() {
    return 34341;
  },
  /*web_gl.WebGL.VERTEX_SHADER*/get VERTEX_SHADER() {
    return 35633;
  },
  /*web_gl.WebGL.VIEWPORT*/get VIEWPORT() {
    return 2978;
  },
  /*web_gl.WebGL.WAIT_FAILED*/get WAIT_FAILED() {
    return 37149;
  },
  /*web_gl.WebGL.ZERO*/get ZERO() {
    return 0;
  }
});
dart.registerExtension("WebGL", web_gl.WebGL);
web_gl._WebGL2RenderingContextBase = class _WebGL2RenderingContextBase extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl._WebGL2RenderingContextBase);
web_gl._WebGL2RenderingContextBase[dart.implements] = () => [web_gl._WebGLRenderingContextBase];
dart.registerExtension("WebGL2RenderingContextBase", web_gl._WebGL2RenderingContextBase);
web_gl._WebGLRenderingContextBase = class _WebGLRenderingContextBase extends _interceptors.Interceptor {};
dart.addTypeTests(web_gl._WebGLRenderingContextBase);
const _changeVersion = Symbol('_changeVersion');
const _readTransaction = Symbol('_readTransaction');
web_sql.SqlDatabase = class SqlDatabase extends _interceptors.Interceptor {
  static get supported() {
    return !!window.openDatabase;
  }
  get [$version]() {
    return this.version;
  }
  [_changeVersion](...args) {
    return this.changeVersion.apply(this, args);
  }
  [$changeVersion](oldVersion, newVersion) {
    let completer = CompleterOfSqlTransaction().new();
    this[_changeVersion](oldVersion, newVersion, dart.fn(value => {
      completer.complete(value);
    }, SqlTransactionToNull()), dart.fn(error => {
      completer.completeError(error);
    }, SqlErrorToNull()));
    return completer.future;
  }
  [_readTransaction](...args) {
    return this.readTransaction.apply(this, args);
  }
  [$readTransaction]() {
    let completer = CompleterOfSqlTransaction().new();
    this[_readTransaction](dart.fn(value => {
      completer.complete(value);
    }, SqlTransactionToNull()), dart.fn(error => {
      completer.completeError(error);
    }, SqlErrorToNull()));
    return completer.future;
  }
  [$transaction](...args) {
    return this.transaction.apply(this, args);
  }
  [$transaction_future]() {
    let completer = CompleterOfSqlTransaction().new();
    this.transaction(dart.fn(value => {
      _js_helper.applyExtension("SQLTransaction", value);
      completer.complete(value);
    }, SqlTransactionToNull()), dart.fn(error => {
      completer.completeError(error);
    }, SqlErrorToNull()));
    return completer.future;
  }
};
dart.addTypeTests(web_sql.SqlDatabase);
const version$1 = Symbol("SqlDatabase.version");
dart.setMethodSignature(web_sql.SqlDatabase, () => ({
  __proto__: dart.getMethods(web_sql.SqlDatabase.__proto__),
  [_changeVersion]: dart.fnType(dart.void, [core.String, core.String], [dart.fnType(dart.void, [web_sql.SqlTransaction]), dart.fnType(dart.void, [web_sql.SqlError]), dart.fnType(dart.void, [])]),
  [$changeVersion]: dart.fnType(async.Future$(web_sql.SqlTransaction), [core.String, core.String]),
  [_readTransaction]: dart.fnType(dart.void, [dart.fnType(dart.void, [web_sql.SqlTransaction])], [dart.fnType(dart.void, [web_sql.SqlError]), dart.fnType(dart.void, [])]),
  [$readTransaction]: dart.fnType(async.Future$(web_sql.SqlTransaction), []),
  [$transaction]: dart.fnType(dart.void, [dart.fnType(dart.void, [web_sql.SqlTransaction])], [dart.fnType(dart.void, [web_sql.SqlError]), dart.fnType(dart.void, [])]),
  [$transaction_future]: dart.fnType(async.Future$(web_sql.SqlTransaction), [])
}));
dart.setFieldSignature(web_sql.SqlDatabase, () => ({
  __proto__: dart.getFields(web_sql.SqlDatabase.__proto__),
  [$version]: dart.finalFieldType(core.String)
}));
dart.registerExtension("Database", web_sql.SqlDatabase);
web_sql.SqlError = class SqlError extends _interceptors.Interceptor {
  get [$code]() {
    return this.code;
  }
  get [$message]() {
    return this.message;
  }
};
dart.addTypeTests(web_sql.SqlError);
const code$2 = Symbol("SqlError.code");
const message$28 = Symbol("SqlError.message");
dart.setFieldSignature(web_sql.SqlError, () => ({
  __proto__: dart.getFields(web_sql.SqlError.__proto__),
  [$code]: dart.finalFieldType(core.int),
  [$message]: dart.finalFieldType(core.String)
}));
dart.defineLazy(web_sql.SqlError, {
  /*web_sql.SqlError.CONSTRAINT_ERR*/get CONSTRAINT_ERR() {
    return 6;
  },
  /*web_sql.SqlError.DATABASE_ERR*/get DATABASE_ERR() {
    return 1;
  },
  /*web_sql.SqlError.QUOTA_ERR*/get QUOTA_ERR() {
    return 4;
  },
  /*web_sql.SqlError.SYNTAX_ERR*/get SYNTAX_ERR() {
    return 5;
  },
  /*web_sql.SqlError.TIMEOUT_ERR*/get TIMEOUT_ERR() {
    return 7;
  },
  /*web_sql.SqlError.TOO_LARGE_ERR*/get TOO_LARGE_ERR() {
    return 3;
  },
  /*web_sql.SqlError.UNKNOWN_ERR*/get UNKNOWN_ERR() {
    return 0;
  },
  /*web_sql.SqlError.VERSION_ERR*/get VERSION_ERR() {
    return 2;
  }
});
dart.registerExtension("SQLError", web_sql.SqlError);
web_sql.SqlResultSet = class SqlResultSet extends _interceptors.Interceptor {
  get [$insertId]() {
    return this.insertId;
  }
  get [$rows]() {
    return this.rows;
  }
  get [$rowsAffected]() {
    return this.rowsAffected;
  }
};
dart.addTypeTests(web_sql.SqlResultSet);
const insertId = Symbol("SqlResultSet.insertId");
const rows$ = Symbol("SqlResultSet.rows");
const rowsAffected = Symbol("SqlResultSet.rowsAffected");
dart.setFieldSignature(web_sql.SqlResultSet, () => ({
  __proto__: dart.getFields(web_sql.SqlResultSet.__proto__),
  [$insertId]: dart.finalFieldType(core.int),
  [$rows]: dart.finalFieldType(web_sql.SqlResultSetRowList),
  [$rowsAffected]: dart.finalFieldType(core.int)
}));
dart.registerExtension("SQLResultSet", web_sql.SqlResultSet);
const _item_1 = Symbol('_item_1');
const Interceptor_ListMixin$$17 = class Interceptor_ListMixin extends _interceptors.Interceptor {};
(Interceptor_ListMixin$$17.new = function() {
  Interceptor_ListMixin$$17.__proto__.new.call(this);
}).prototype = Interceptor_ListMixin$$17.prototype;
dart.applyMixin(Interceptor_ListMixin$$17, collection.ListMixin$(core.Map));
const Interceptor_ImmutableListMixin$$17 = class Interceptor_ImmutableListMixin extends Interceptor_ListMixin$$17 {};
(Interceptor_ImmutableListMixin$$17.new = function() {
  Interceptor_ImmutableListMixin$$17.__proto__.new.call(this);
}).prototype = Interceptor_ImmutableListMixin$$17.prototype;
dart.applyMixin(Interceptor_ImmutableListMixin$$17, html$.ImmutableListMixin$(core.Map));
web_sql.SqlResultSetRowList = class SqlResultSetRowList extends Interceptor_ImmutableListMixin$$17 {
  get [$length]() {
    return this.length;
  }
  [$_get](index) {
    if (index >>> 0 !== index || index >= this[$length]) dart.throw(core.RangeError.index(index, this));
    return this[$item](index);
  }
  [$_set](index, value) {
    core.Map._check(value);
    dart.throw(new core.UnsupportedError.new("Cannot assign element of immutable List."));
    return value;
  }
  set [$length](value) {
    dart.throw(new core.UnsupportedError.new("Cannot resize immutable List."));
  }
  get [$first]() {
    if (dart.notNull(this[$length]) > 0) {
      return this[0];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$first](value) {
    super[$first] = value;
  }
  get [$last]() {
    let len = this[$length];
    if (dart.notNull(len) > 0) {
      return this[dart.notNull(len) - 1];
    }
    dart.throw(new core.StateError.new("No elements"));
  }
  set [$last](value) {
    super[$last] = value;
  }
  get [$single]() {
    let len = this[$length];
    if (len === 1) {
      return this[0];
    }
    if (len === 0) dart.throw(new core.StateError.new("No elements"));
    dart.throw(new core.StateError.new("More than one element"));
  }
  [$elementAt](index) {
    return this[$_get](index);
  }
  [$item](index) {
    return html_common.convertNativeToDart_Dictionary(this[_item_1](index));
  }
  [_item_1](...args) {
    return this.item.apply(this, args);
  }
};
web_sql.SqlResultSetRowList.prototype[dart.isList] = true;
dart.addTypeTests(web_sql.SqlResultSetRowList);
web_sql.SqlResultSetRowList[dart.implements] = () => [ListOfMap()];
dart.setMethodSignature(web_sql.SqlResultSetRowList, () => ({
  __proto__: dart.getMethods(web_sql.SqlResultSetRowList.__proto__),
  [$_get]: dart.fnType(core.Map, [core.int]),
  [$_set]: dart.fnType(dart.void, [core.int, core.Object]),
  [$elementAt]: dart.fnType(core.Map, [core.int]),
  [$item]: dart.fnType(core.Map, [core.int]),
  [_item_1]: dart.fnType(dart.dynamic, [dart.dynamic])
}));
dart.setGetterSignature(web_sql.SqlResultSetRowList, () => ({
  __proto__: dart.getGetters(web_sql.SqlResultSetRowList.__proto__),
  [$length]: core.int,
  [$first]: core.Map,
  [$last]: core.Map,
  [$single]: core.Map
}));
dart.setSetterSignature(web_sql.SqlResultSetRowList, () => ({
  __proto__: dart.getSetters(web_sql.SqlResultSetRowList.__proto__),
  [$length]: core.int
}));
dart.registerExtension("SQLResultSetRowList", web_sql.SqlResultSetRowList);
const _executeSql = Symbol('_executeSql');
web_sql.SqlTransaction = class SqlTransaction extends _interceptors.Interceptor {
  [_executeSql](...args) {
    return this.executeSql.apply(this, args);
  }
  [$executeSql](sqlStatement, arguments$0) {
    if (arguments$0 === void 0) arguments$0 = null;
    let completer = CompleterOfSqlResultSet().new();
    this[_executeSql](sqlStatement, arguments$0, dart.fn((transaction, resultSet) => {
      _js_helper.applyExtension("SQLResultSet", resultSet);
      _js_helper.applyExtension("SQLResultSetRowList", resultSet.rows);
      completer.complete(resultSet);
    }, SqlTransactionAndSqlResultSetToNull()), dart.fn((transaction, error) => {
      completer.completeError(error);
    }, SqlTransactionAndSqlErrorToNull()));
    return completer.future;
  }
};
dart.addTypeTests(web_sql.SqlTransaction);
dart.setMethodSignature(web_sql.SqlTransaction, () => ({
  __proto__: dart.getMethods(web_sql.SqlTransaction.__proto__),
  [_executeSql]: dart.fnType(dart.void, [core.String], [core.List, dart.fnType(dart.void, [web_sql.SqlTransaction, web_sql.SqlResultSet]), dart.fnType(dart.void, [web_sql.SqlTransaction, web_sql.SqlError])]),
  [$executeSql]: dart.fnType(async.Future$(web_sql.SqlResultSet), [core.String], [core.List])
}));
dart.registerExtension("SQLTransaction", web_sql.SqlTransaction);
_http.HttpServer = class HttpServer extends core.Object {
  static bind(address, port, opts) {
    let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
    let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
    let shared = opts && 'shared' in opts ? opts.shared : false;
    return _http._HttpServer.bind(address, port, backlog, v6Only, shared);
  }
  static bindSecure(address, port, context, opts) {
    let backlog = opts && 'backlog' in opts ? opts.backlog : 0;
    let v6Only = opts && 'v6Only' in opts ? opts.v6Only : false;
    let requestClientCertificate = opts && 'requestClientCertificate' in opts ? opts.requestClientCertificate : false;
    let shared = opts && 'shared' in opts ? opts.shared : false;
    return _http._HttpServer.bindSecure(address, port, context, backlog, v6Only, requestClientCertificate, shared);
  }
  static listenOn(serverSocket) {
    return new _http._HttpServer.listenOn(serverSocket);
  }
};
(_http.HttpServer[dart.mixinNew] = function() {
  this.serverHeader = null;
  this.autoCompress = null;
  this.idleTimeout = null;
}).prototype = _http.HttpServer.prototype;
_http.HttpServer.prototype[dart.isStream] = true;
dart.addTypeTests(_http.HttpServer);
_http.HttpServer[dart.implements] = () => [StreamOfHttpRequest()];
dart.setFieldSignature(_http.HttpServer, () => ({
  __proto__: dart.getFields(_http.HttpServer.__proto__),
  serverHeader: dart.fieldType(core.String),
  autoCompress: dart.fieldType(core.bool),
  idleTimeout: dart.fieldType(core.Duration)
}));
_http.HttpConnectionsInfo = class HttpConnectionsInfo extends core.Object {};
(_http.HttpConnectionsInfo.new = function() {
  this.total = 0;
  this.active = 0;
  this.idle = 0;
  this.closing = 0;
}).prototype = _http.HttpConnectionsInfo.prototype;
dart.addTypeTests(_http.HttpConnectionsInfo);
dart.setFieldSignature(_http.HttpConnectionsInfo, () => ({
  __proto__: dart.getFields(_http.HttpConnectionsInfo.__proto__),
  total: dart.fieldType(core.int),
  active: dart.fieldType(core.int),
  idle: dart.fieldType(core.int),
  closing: dart.fieldType(core.int)
}));
_http.HttpHeaders = class HttpHeaders extends core.Object {};
(_http.HttpHeaders.new = function() {
  this.date = null;
  this.expires = null;
  this.ifModifiedSince = null;
  this.host = null;
  this.port = null;
  this.contentType = null;
  this.contentLength = null;
  this.persistentConnection = null;
  this.chunkedTransferEncoding = null;
}).prototype = _http.HttpHeaders.prototype;
dart.addTypeTests(_http.HttpHeaders);
dart.setFieldSignature(_http.HttpHeaders, () => ({
  __proto__: dart.getFields(_http.HttpHeaders.__proto__),
  date: dart.fieldType(core.DateTime),
  expires: dart.fieldType(core.DateTime),
  ifModifiedSince: dart.fieldType(core.DateTime),
  host: dart.fieldType(core.String),
  port: dart.fieldType(core.int),
  contentType: dart.fieldType(_http.ContentType),
  contentLength: dart.fieldType(core.int),
  persistentConnection: dart.fieldType(core.bool),
  chunkedTransferEncoding: dart.fieldType(core.bool)
}));
dart.defineLazy(_http.HttpHeaders, {
  /*_http.HttpHeaders.acceptHeader*/get acceptHeader() {
    return "accept";
  },
  /*_http.HttpHeaders.acceptCharsetHeader*/get acceptCharsetHeader() {
    return "accept-charset";
  },
  /*_http.HttpHeaders.acceptEncodingHeader*/get acceptEncodingHeader() {
    return "accept-encoding";
  },
  /*_http.HttpHeaders.acceptLanguageHeader*/get acceptLanguageHeader() {
    return "accept-language";
  },
  /*_http.HttpHeaders.acceptRangesHeader*/get acceptRangesHeader() {
    return "accept-ranges";
  },
  /*_http.HttpHeaders.ageHeader*/get ageHeader() {
    return "age";
  },
  /*_http.HttpHeaders.allowHeader*/get allowHeader() {
    return "allow";
  },
  /*_http.HttpHeaders.authorizationHeader*/get authorizationHeader() {
    return "authorization";
  },
  /*_http.HttpHeaders.cacheControlHeader*/get cacheControlHeader() {
    return "cache-control";
  },
  /*_http.HttpHeaders.connectionHeader*/get connectionHeader() {
    return "connection";
  },
  /*_http.HttpHeaders.contentEncodingHeader*/get contentEncodingHeader() {
    return "content-encoding";
  },
  /*_http.HttpHeaders.contentLanguageHeader*/get contentLanguageHeader() {
    return "content-language";
  },
  /*_http.HttpHeaders.contentLengthHeader*/get contentLengthHeader() {
    return "content-length";
  },
  /*_http.HttpHeaders.contentLocationHeader*/get contentLocationHeader() {
    return "content-location";
  },
  /*_http.HttpHeaders.contentMD5Header*/get contentMD5Header() {
    return "content-md5";
  },
  /*_http.HttpHeaders.contentRangeHeader*/get contentRangeHeader() {
    return "content-range";
  },
  /*_http.HttpHeaders.contentTypeHeader*/get contentTypeHeader() {
    return "content-type";
  },
  /*_http.HttpHeaders.dateHeader*/get dateHeader() {
    return "date";
  },
  /*_http.HttpHeaders.etagHeader*/get etagHeader() {
    return "etag";
  },
  /*_http.HttpHeaders.expectHeader*/get expectHeader() {
    return "expect";
  },
  /*_http.HttpHeaders.expiresHeader*/get expiresHeader() {
    return "expires";
  },
  /*_http.HttpHeaders.fromHeader*/get fromHeader() {
    return "from";
  },
  /*_http.HttpHeaders.hostHeader*/get hostHeader() {
    return "host";
  },
  /*_http.HttpHeaders.ifMatchHeader*/get ifMatchHeader() {
    return "if-match";
  },
  /*_http.HttpHeaders.ifModifiedSinceHeader*/get ifModifiedSinceHeader() {
    return "if-modified-since";
  },
  /*_http.HttpHeaders.ifNoneMatchHeader*/get ifNoneMatchHeader() {
    return "if-none-match";
  },
  /*_http.HttpHeaders.ifRangeHeader*/get ifRangeHeader() {
    return "if-range";
  },
  /*_http.HttpHeaders.ifUnmodifiedSinceHeader*/get ifUnmodifiedSinceHeader() {
    return "if-unmodified-since";
  },
  /*_http.HttpHeaders.lastModifiedHeader*/get lastModifiedHeader() {
    return "last-modified";
  },
  /*_http.HttpHeaders.locationHeader*/get locationHeader() {
    return "location";
  },
  /*_http.HttpHeaders.maxForwardsHeader*/get maxForwardsHeader() {
    return "max-forwards";
  },
  /*_http.HttpHeaders.pragmaHeader*/get pragmaHeader() {
    return "pragma";
  },
  /*_http.HttpHeaders.proxyAuthenticateHeader*/get proxyAuthenticateHeader() {
    return "proxy-authenticate";
  },
  /*_http.HttpHeaders.proxyAuthorizationHeader*/get proxyAuthorizationHeader() {
    return "proxy-authorization";
  },
  /*_http.HttpHeaders.rangeHeader*/get rangeHeader() {
    return "range";
  },
  /*_http.HttpHeaders.refererHeader*/get refererHeader() {
    return "referer";
  },
  /*_http.HttpHeaders.retryAfterHeader*/get retryAfterHeader() {
    return "retry-after";
  },
  /*_http.HttpHeaders.serverHeader*/get serverHeader() {
    return "server";
  },
  /*_http.HttpHeaders.teHeader*/get teHeader() {
    return "te";
  },
  /*_http.HttpHeaders.trailerHeader*/get trailerHeader() {
    return "trailer";
  },
  /*_http.HttpHeaders.transferEncodingHeader*/get transferEncodingHeader() {
    return "transfer-encoding";
  },
  /*_http.HttpHeaders.upgradeHeader*/get upgradeHeader() {
    return "upgrade";
  },
  /*_http.HttpHeaders.userAgentHeader*/get userAgentHeader() {
    return "user-agent";
  },
  /*_http.HttpHeaders.varyHeader*/get varyHeader() {
    return "vary";
  },
  /*_http.HttpHeaders.viaHeader*/get viaHeader() {
    return "via";
  },
  /*_http.HttpHeaders.warningHeader*/get warningHeader() {
    return "warning";
  },
  /*_http.HttpHeaders.wwwAuthenticateHeader*/get wwwAuthenticateHeader() {
    return "www-authenticate";
  },
  /*_http.HttpHeaders.ACCEPT*/get ACCEPT() {
    return "accept";
  },
  /*_http.HttpHeaders.ACCEPT_CHARSET*/get ACCEPT_CHARSET() {
    return "accept-charset";
  },
  /*_http.HttpHeaders.ACCEPT_ENCODING*/get ACCEPT_ENCODING() {
    return "accept-encoding";
  },
  /*_http.HttpHeaders.ACCEPT_LANGUAGE*/get ACCEPT_LANGUAGE() {
    return "accept-language";
  },
  /*_http.HttpHeaders.ACCEPT_RANGES*/get ACCEPT_RANGES() {
    return "accept-ranges";
  },
  /*_http.HttpHeaders.AGE*/get AGE() {
    return "age";
  },
  /*_http.HttpHeaders.ALLOW*/get ALLOW() {
    return "allow";
  },
  /*_http.HttpHeaders.AUTHORIZATION*/get AUTHORIZATION() {
    return "authorization";
  },
  /*_http.HttpHeaders.CACHE_CONTROL*/get CACHE_CONTROL() {
    return "cache-control";
  },
  /*_http.HttpHeaders.CONNECTION*/get CONNECTION() {
    return "connection";
  },
  /*_http.HttpHeaders.CONTENT_ENCODING*/get CONTENT_ENCODING() {
    return "content-encoding";
  },
  /*_http.HttpHeaders.CONTENT_LANGUAGE*/get CONTENT_LANGUAGE() {
    return "content-language";
  },
  /*_http.HttpHeaders.CONTENT_LENGTH*/get CONTENT_LENGTH() {
    return "content-length";
  },
  /*_http.HttpHeaders.CONTENT_LOCATION*/get CONTENT_LOCATION() {
    return "content-location";
  },
  /*_http.HttpHeaders.CONTENT_MD5*/get CONTENT_MD5() {
    return "content-md5";
  },
  /*_http.HttpHeaders.CONTENT_RANGE*/get CONTENT_RANGE() {
    return "content-range";
  },
  /*_http.HttpHeaders.CONTENT_TYPE*/get CONTENT_TYPE() {
    return "content-type";
  },
  /*_http.HttpHeaders.DATE*/get DATE() {
    return "date";
  },
  /*_http.HttpHeaders.ETAG*/get ETAG() {
    return "etag";
  },
  /*_http.HttpHeaders.EXPECT*/get EXPECT() {
    return "expect";
  },
  /*_http.HttpHeaders.EXPIRES*/get EXPIRES() {
    return "expires";
  },
  /*_http.HttpHeaders.FROM*/get FROM() {
    return "from";
  },
  /*_http.HttpHeaders.HOST*/get HOST() {
    return "host";
  },
  /*_http.HttpHeaders.IF_MATCH*/get IF_MATCH() {
    return "if-match";
  },
  /*_http.HttpHeaders.IF_MODIFIED_SINCE*/get IF_MODIFIED_SINCE() {
    return "if-modified-since";
  },
  /*_http.HttpHeaders.IF_NONE_MATCH*/get IF_NONE_MATCH() {
    return "if-none-match";
  },
  /*_http.HttpHeaders.IF_RANGE*/get IF_RANGE() {
    return "if-range";
  },
  /*_http.HttpHeaders.IF_UNMODIFIED_SINCE*/get IF_UNMODIFIED_SINCE() {
    return "if-unmodified-since";
  },
  /*_http.HttpHeaders.LAST_MODIFIED*/get LAST_MODIFIED() {
    return "last-modified";
  },
  /*_http.HttpHeaders.LOCATION*/get LOCATION() {
    return "location";
  },
  /*_http.HttpHeaders.MAX_FORWARDS*/get MAX_FORWARDS() {
    return "max-forwards";
  },
  /*_http.HttpHeaders.PRAGMA*/get PRAGMA() {
    return "pragma";
  },
  /*_http.HttpHeaders.PROXY_AUTHENTICATE*/get PROXY_AUTHENTICATE() {
    return "proxy-authenticate";
  },
  /*_http.HttpHeaders.PROXY_AUTHORIZATION*/get PROXY_AUTHORIZATION() {
    return "proxy-authorization";
  },
  /*_http.HttpHeaders.RANGE*/get RANGE() {
    return "range";
  },
  /*_http.HttpHeaders.REFERER*/get REFERER() {
    return "referer";
  },
  /*_http.HttpHeaders.RETRY_AFTER*/get RETRY_AFTER() {
    return "retry-after";
  },
  /*_http.HttpHeaders.SERVER*/get SERVER() {
    return "server";
  },
  /*_http.HttpHeaders.TE*/get TE() {
    return "te";
  },
  /*_http.HttpHeaders.TRAILER*/get TRAILER() {
    return "trailer";
  },
  /*_http.HttpHeaders.TRANSFER_ENCODING*/get TRANSFER_ENCODING() {
    return "transfer-encoding";
  },
  /*_http.HttpHeaders.UPGRADE*/get UPGRADE() {
    return "upgrade";
  },
  /*_http.HttpHeaders.USER_AGENT*/get USER_AGENT() {
    return "user-agent";
  },
  /*_http.HttpHeaders.VARY*/get VARY() {
    return "vary";
  },
  /*_http.HttpHeaders.VIA*/get VIA() {
    return "via";
  },
  /*_http.HttpHeaders.WARNING*/get WARNING() {
    return "warning";
  },
  /*_http.HttpHeaders.WWW_AUTHENTICATE*/get WWW_AUTHENTICATE() {
    return "www-authenticate";
  },
  /*_http.HttpHeaders.cookieHeader*/get cookieHeader() {
    return "cookie";
  },
  /*_http.HttpHeaders.setCookieHeader*/get setCookieHeader() {
    return "set-cookie";
  },
  /*_http.HttpHeaders.COOKIE*/get COOKIE() {
    return "cookie";
  },
  /*_http.HttpHeaders.SET_COOKIE*/get SET_COOKIE() {
    return "set-cookie";
  },
  /*_http.HttpHeaders.generalHeaders*/get generalHeaders() {
    return dart.constList(["cache-control", "connection", "date", "pragma", "trailer", "transfer-encoding", "upgrade", "via", "warning"], core.String);
  },
  /*_http.HttpHeaders.GENERAL_HEADERS*/get GENERAL_HEADERS() {
    return _http.HttpHeaders.generalHeaders;
  },
  /*_http.HttpHeaders.entityHeaders*/get entityHeaders() {
    return dart.constList(["allow", "content-encoding", "content-language", "content-length", "content-location", "content-md5", "content-range", "content-type", "expires", "last-modified"], core.String);
  },
  /*_http.HttpHeaders.ENTITY_HEADERS*/get ENTITY_HEADERS() {
    return _http.HttpHeaders.entityHeaders;
  },
  /*_http.HttpHeaders.responseHeaders*/get responseHeaders() {
    return dart.constList(["accept-ranges", "age", "etag", "location", "proxy-authenticate", "retry-after", "server", "vary", "www-authenticate"], core.String);
  },
  /*_http.HttpHeaders.RESPONSE_HEADERS*/get RESPONSE_HEADERS() {
    return _http.HttpHeaders.responseHeaders;
  },
  /*_http.HttpHeaders.requestHeaders*/get requestHeaders() {
    return dart.constList(["accept", "accept-charset", "accept-encoding", "accept-language", "authorization", "expect", "from", "host", "if-match", "if-modified-since", "if-none-match", "if-range", "if-unmodified-since", "max-forwards", "proxy-authorization", "range", "referer", "te", "user-agent"], core.String);
  },
  /*_http.HttpHeaders.REQUEST_HEADERS*/get REQUEST_HEADERS() {
    return _http.HttpHeaders.requestHeaders;
  }
});
_http.HeaderValue = class HeaderValue extends core.Object {
  static new(value, parameters) {
    if (value === void 0) value = "";
    if (parameters === void 0) parameters = null;
    return new _http._HeaderValue.new(value, parameters);
  }
  static parse(value, opts) {
    let parameterSeparator = opts && 'parameterSeparator' in opts ? opts.parameterSeparator : ";";
    let valueSeparator = opts && 'valueSeparator' in opts ? opts.valueSeparator : null;
    let preserveBackslash = opts && 'preserveBackslash' in opts ? opts.preserveBackslash : false;
    return _http._HeaderValue.parse(value, {parameterSeparator: parameterSeparator, valueSeparator: valueSeparator, preserveBackslash: preserveBackslash});
  }
};
(_http.HeaderValue[dart.mixinNew] = function() {
}).prototype = _http.HeaderValue.prototype;
dart.addTypeTests(_http.HeaderValue);
_http.HttpSession = class HttpSession extends core.Object {};
(_http.HttpSession.new = function() {
}).prototype = _http.HttpSession.prototype;
_http.HttpSession.prototype[dart.isMap] = true;
dart.addTypeTests(_http.HttpSession);
_http.HttpSession[dart.implements] = () => [core.Map];
_http.ContentType = class ContentType extends core.Object {
  static new(primaryType, subType, opts) {
    let charset = opts && 'charset' in opts ? opts.charset : null;
    let parameters = opts && 'parameters' in opts ? opts.parameters : null;
    return new _http._ContentType.new(primaryType, subType, charset, parameters);
  }
  static parse(value) {
    return _http._ContentType.parse(value);
  }
};
(_http.ContentType[dart.mixinNew] = function() {
}).prototype = _http.ContentType.prototype;
dart.addTypeTests(_http.ContentType);
_http.ContentType[dart.implements] = () => [_http.HeaderValue];
dart.defineLazy(_http.ContentType, {
  /*_http.ContentType.text*/get text() {
    return _http.ContentType.new("text", "plain", {charset: "utf-8"});
  },
  /*_http.ContentType.TEXT*/get TEXT() {
    return _http.ContentType.text;
  },
  /*_http.ContentType.html*/get html() {
    return _http.ContentType.new("text", "html", {charset: "utf-8"});
  },
  /*_http.ContentType.HTML*/get HTML() {
    return _http.ContentType.html;
  },
  /*_http.ContentType.json*/get json() {
    return _http.ContentType.new("application", "json", {charset: "utf-8"});
  },
  /*_http.ContentType.JSON*/get JSON() {
    return _http.ContentType.json;
  },
  /*_http.ContentType.binary*/get binary() {
    return _http.ContentType.new("application", "octet-stream");
  },
  /*_http.ContentType.BINARY*/get BINARY() {
    return _http.ContentType.binary;
  }
});
_http.Cookie = class Cookie extends core.Object {
  static new(name, value) {
    if (name === void 0) name = null;
    if (value === void 0) value = null;
    return new _http._Cookie.new(name, value);
  }
  static fromSetCookieValue(value) {
    return new _http._Cookie.fromSetCookieValue(value);
  }
};
(_http.Cookie[dart.mixinNew] = function() {
  this.name = null;
  this.value = null;
  this.expires = null;
  this.maxAge = null;
  this.domain = null;
  this.path = null;
  this.secure = null;
  this.httpOnly = null;
}).prototype = _http.Cookie.prototype;
dart.addTypeTests(_http.Cookie);
dart.setFieldSignature(_http.Cookie, () => ({
  __proto__: dart.getFields(_http.Cookie.__proto__),
  name: dart.fieldType(core.String),
  value: dart.fieldType(core.String),
  expires: dart.fieldType(core.DateTime),
  maxAge: dart.fieldType(core.int),
  domain: dart.fieldType(core.String),
  path: dart.fieldType(core.String),
  secure: dart.fieldType(core.bool),
  httpOnly: dart.fieldType(core.bool)
}));
_http.HttpRequest = class HttpRequest extends core.Object {};
(_http.HttpRequest.new = function() {
}).prototype = _http.HttpRequest.prototype;
_http.HttpRequest.prototype[dart.isStream] = true;
dart.addTypeTests(_http.HttpRequest);
_http.HttpRequest[dart.implements] = () => [StreamOfListOfint()];
_http.HttpResponse = class HttpResponse extends core.Object {};
(_http.HttpResponse.new = function() {
  this.contentLength = null;
  this.statusCode = null;
  this.reasonPhrase = null;
  this.persistentConnection = null;
  this.deadline = null;
  this.bufferOutput = null;
}).prototype = _http.HttpResponse.prototype;
dart.addTypeTests(_http.HttpResponse);
_http.HttpResponse[dart.implements] = () => [io.IOSink];
dart.setFieldSignature(_http.HttpResponse, () => ({
  __proto__: dart.getFields(_http.HttpResponse.__proto__),
  contentLength: dart.fieldType(core.int),
  statusCode: dart.fieldType(core.int),
  reasonPhrase: dart.fieldType(core.String),
  persistentConnection: dart.fieldType(core.bool),
  deadline: dart.fieldType(core.Duration),
  bufferOutput: dart.fieldType(core.bool)
}));
_http.HttpClient = class HttpClient extends core.Object {
  static new(opts) {
    let context = opts && 'context' in opts ? opts.context : null;
    let overrides = _http.HttpOverrides.current;
    if (overrides == null) {
      return new _http._HttpClient.new(context);
    }
    return overrides.createHttpClient(context);
  }
  static findProxyFromEnvironment(url, opts) {
    let environment = opts && 'environment' in opts ? opts.environment : null;
    let overrides = _http.HttpOverrides.current;
    if (overrides == null) {
      return _http._HttpClient._findProxyFromEnvironment(url, environment);
    }
    return overrides.findProxyFromEnvironment(url, environment);
  }
};
(_http.HttpClient[dart.mixinNew] = function() {
  this.idleTimeout = null;
  this.connectionTimeout = null;
  this.maxConnectionsPerHost = null;
  this.autoUncompress = null;
  this.userAgent = null;
}).prototype = _http.HttpClient.prototype;
dart.addTypeTests(_http.HttpClient);
dart.setFieldSignature(_http.HttpClient, () => ({
  __proto__: dart.getFields(_http.HttpClient.__proto__),
  idleTimeout: dart.fieldType(core.Duration),
  connectionTimeout: dart.fieldType(core.Duration),
  maxConnectionsPerHost: dart.fieldType(core.int),
  autoUncompress: dart.fieldType(core.bool),
  userAgent: dart.fieldType(core.String)
}));
dart.defineLazy(_http.HttpClient, {
  /*_http.HttpClient.defaultHttpPort*/get defaultHttpPort() {
    return 80;
  },
  /*_http.HttpClient.DEFAULT_HTTP_PORT*/get DEFAULT_HTTP_PORT() {
    return 80;
  },
  /*_http.HttpClient.defaultHttpsPort*/get defaultHttpsPort() {
    return 443;
  },
  /*_http.HttpClient.DEFAULT_HTTPS_PORT*/get DEFAULT_HTTPS_PORT() {
    return 443;
  }
});
_http.HttpClientRequest = class HttpClientRequest extends core.Object {};
(_http.HttpClientRequest.new = function() {
  this.persistentConnection = null;
  this.followRedirects = null;
  this.maxRedirects = null;
  this.contentLength = null;
  this.bufferOutput = null;
}).prototype = _http.HttpClientRequest.prototype;
dart.addTypeTests(_http.HttpClientRequest);
_http.HttpClientRequest[dart.implements] = () => [io.IOSink];
dart.setFieldSignature(_http.HttpClientRequest, () => ({
  __proto__: dart.getFields(_http.HttpClientRequest.__proto__),
  persistentConnection: dart.fieldType(core.bool),
  followRedirects: dart.fieldType(core.bool),
  maxRedirects: dart.fieldType(core.int),
  contentLength: dart.fieldType(core.int),
  bufferOutput: dart.fieldType(core.bool)
}));
_http.HttpClientResponse = class HttpClientResponse extends core.Object {};
(_http.HttpClientResponse.new = function() {
}).prototype = _http.HttpClientResponse.prototype;
_http.HttpClientResponse.prototype[dart.isStream] = true;
dart.addTypeTests(_http.HttpClientResponse);
_http.HttpClientResponse[dart.implements] = () => [StreamOfListOfint()];
_http.HttpClientCredentials = class HttpClientCredentials extends core.Object {};
(_http.HttpClientCredentials.new = function() {
}).prototype = _http.HttpClientCredentials.prototype;
dart.addTypeTests(_http.HttpClientCredentials);
_http.HttpClientBasicCredentials = class HttpClientBasicCredentials extends _http.HttpClientCredentials {
  static new(username, password) {
    return new _http._HttpClientBasicCredentials.new(username, password);
  }
};
dart.addTypeTests(_http.HttpClientBasicCredentials);
_http.HttpClientDigestCredentials = class HttpClientDigestCredentials extends _http.HttpClientCredentials {
  static new(username, password) {
    return new _http._HttpClientDigestCredentials.new(username, password);
  }
};
dart.addTypeTests(_http.HttpClientDigestCredentials);
_http.HttpConnectionInfo = class HttpConnectionInfo extends core.Object {};
(_http.HttpConnectionInfo.new = function() {
}).prototype = _http.HttpConnectionInfo.prototype;
dart.addTypeTests(_http.HttpConnectionInfo);
_http.RedirectInfo = class RedirectInfo extends core.Object {};
(_http.RedirectInfo.new = function() {
}).prototype = _http.RedirectInfo.prototype;
dart.addTypeTests(_http.RedirectInfo);
_http.DetachedSocket = class DetachedSocket extends core.Object {};
(_http.DetachedSocket.new = function() {
}).prototype = _http.DetachedSocket.prototype;
dart.addTypeTests(_http.DetachedSocket);
_http.HttpException = class HttpException extends core.Object {
  toString() {
    let b = new core.StringBuffer.new();
    b.write("HttpException: ");
    b.write(this.message);
    if (this.uri != null) {
      b.write(", uri = " + dart.str(this.uri));
    }
    return b.toString();
  }
};
(_http.HttpException.new = function(message, opts) {
  let uri = opts && 'uri' in opts ? opts.uri : null;
  this.message = message;
  this.uri = uri;
}).prototype = _http.HttpException.prototype;
dart.addTypeTests(_http.HttpException);
_http.HttpException[dart.implements] = () => [io.IOException];
dart.setFieldSignature(_http.HttpException, () => ({
  __proto__: dart.getFields(_http.HttpException.__proto__),
  message: dart.finalFieldType(core.String),
  uri: dart.finalFieldType(core.Uri)
}));
dart.defineExtensionMethods(_http.HttpException, ['toString']);
_http.RedirectException = class RedirectException extends core.Object {
  toString() {
    return "RedirectException: " + dart.str(this.message);
  }
  get uri() {
    return this.redirects[$last].location;
  }
};
(_http.RedirectException.new = function(message, redirects) {
  this.message = message;
  this.redirects = redirects;
}).prototype = _http.RedirectException.prototype;
dart.addTypeTests(_http.RedirectException);
_http.RedirectException[dart.implements] = () => [_http.HttpException];
dart.setGetterSignature(_http.RedirectException, () => ({
  __proto__: dart.getGetters(_http.RedirectException.__proto__),
  uri: core.Uri
}));
dart.setFieldSignature(_http.RedirectException, () => ({
  __proto__: dart.getFields(_http.RedirectException.__proto__),
  message: dart.finalFieldType(core.String),
  redirects: dart.finalFieldType(ListOfRedirectInfo())
}));
dart.defineExtensionMethods(_http.RedirectException, ['toString']);
_http._CryptoUtils = class _CryptoUtils extends core.Object {
  static getRandomBytes(count) {
    let result = typed_data.Uint8List.new(count);
    for (let i = 0; i < dart.notNull(count); i++) {
      result[$_set](i, _http._CryptoUtils._rng.nextInt(255));
    }
    return result;
  }
  static bytesToHex(bytes) {
    let result = new core.StringBuffer.new();
    for (let part of bytes) {
      result.write((dart.notNull(part) < 16 ? "0" : "") + part[$toRadixString](16));
    }
    return result.toString();
  }
  static bytesToBase64(bytes, urlSafe, addLineSeparator) {
    if (urlSafe === void 0) urlSafe = false;
    if (addLineSeparator === void 0) addLineSeparator = false;
    let len = bytes[$length];
    if (len === 0) {
      return "";
    }
    let lookup = dart.test(urlSafe) ? "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    let remainderLength = dart.asInt(len[$remainder](3));
    let chunkLength = dart.notNull(len) - dart.notNull(remainderLength);
    let outputLen = (dart.notNull(len) / 3)[$truncate]() * 4 + (dart.notNull(remainderLength) > 0 ? 4 : 0);
    if (dart.test(addLineSeparator)) {
      outputLen = outputLen + (((outputLen - 1) / 76)[$truncate]() << 1 >>> 0);
    }
    let out = ListOfint().new(outputLen);
    let j = 0, i = 0, c = 0;
    while (i < chunkLength) {
      let x = (dart.notNull(bytes[$_get](i++)) << 16 & 16777215 | dart.notNull(bytes[$_get](i++)) << 8 & 16777215 | dart.notNull(bytes[$_get](i++))) >>> 0;
      out[$_set](j++, lookup[$codeUnitAt](x[$rightShift](18)));
      out[$_set](j++, lookup[$codeUnitAt](x >> 12 & 63));
      out[$_set](j++, lookup[$codeUnitAt](x >> 6 & 63));
      out[$_set](j++, lookup[$codeUnitAt](x & 63));
      if (dart.test(addLineSeparator) && ++c === 19 && j < outputLen - 2) {
        out[$_set](j++, 13);
        out[$_set](j++, 10);
        c = 0;
      }
    }
    if (remainderLength === 1) {
      let x = bytes[$_get](i);
      out[$_set](j++, lookup[$codeUnitAt](x[$rightShift](2)));
      out[$_set](j++, lookup[$codeUnitAt](dart.notNull(x) << 4 & 63));
      out[$_set](j++, 61);
      out[$_set](j++, 61);
    } else if (remainderLength === 2) {
      let x = bytes[$_get](i);
      let y = bytes[$_get](i + 1);
      out[$_set](j++, lookup[$codeUnitAt](x[$rightShift](2)));
      out[$_set](j++, lookup[$codeUnitAt]((dart.notNull(x) << 4 | dart.notNull(y) >> 4) & 63));
      out[$_set](j++, lookup[$codeUnitAt](dart.notNull(y) << 2 & 63));
      out[$_set](j++, 61);
    }
    return core.String.fromCharCodes(out);
  }
  static base64StringToBytes(input, ignoreInvalidCharacters) {
    if (ignoreInvalidCharacters === void 0) ignoreInvalidCharacters = true;
    let len = input.length;
    if (len === 0) {
      return ListOfint().new(0);
    }
    let extrasLen = 0;
    for (let i = 0; i < len; i++) {
      let c = _http._CryptoUtils._decodeTable[$_get](input[$codeUnitAt](i));
      if (dart.notNull(c) < 0) {
        extrasLen++;
        if (c === -2 && !dart.test(ignoreInvalidCharacters)) {
          dart.throw(new core.FormatException.new("Invalid character: " + dart.str(input[$_get](i))));
        }
      }
    }
    if ((len - extrasLen)[$modulo](4) !== 0) {
      dart.throw(new core.FormatException.new("Size of Base 64 characters in Input\n          must be a multiple of 4. Input: " + dart.str(input)));
    }
    let padLength = 0;
    for (let i = len - 1; i >= 0; i--) {
      let currentCodeUnit = input[$codeUnitAt](i);
      if (dart.notNull(_http._CryptoUtils._decodeTable[$_get](currentCodeUnit)) > 0) break;
      if (currentCodeUnit === 61) padLength++;
    }
    let outputLen = ((len - extrasLen) * 6)[$rightShift](3) - padLength;
    let out = ListOfint().new(outputLen);
    for (let i = 0, o = 0; o < outputLen;) {
      let x = 0;
      for (let j = 4; j > 0;) {
        let c = _http._CryptoUtils._decodeTable[$_get](input[$codeUnitAt](i++));
        if (dart.notNull(c) >= 0) {
          x = (x << 6 & 16777215 | dart.notNull(c)) >>> 0;
          j--;
        }
      }
      out[$_set](o++, x[$rightShift](16));
      if (o < outputLen) {
        out[$_set](o++, x >> 8 & 255);
        if (o < outputLen) out[$_set](o++, x & 255);
      }
    }
    return out;
  }
};
(_http._CryptoUtils.new = function() {
}).prototype = _http._CryptoUtils.prototype;
dart.addTypeTests(_http._CryptoUtils);
dart.defineLazy(_http._CryptoUtils, {
  /*_http._CryptoUtils.PAD*/get PAD() {
    return 61;
  },
  /*_http._CryptoUtils.CR*/get CR() {
    return 13;
  },
  /*_http._CryptoUtils.LF*/get LF() {
    return 10;
  },
  /*_http._CryptoUtils.LINE_LENGTH*/get LINE_LENGTH() {
    return 76;
  },
  /*_http._CryptoUtils._encodeTable*/get _encodeTable() {
    return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  },
  /*_http._CryptoUtils._encodeTableUrlSafe*/get _encodeTableUrlSafe() {
    return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
  },
  /*_http._CryptoUtils._decodeTable*/get _decodeTable() {
    return dart.constList([-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -1, -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, 62, -2, 62, -2, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, 0, -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, -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, -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, -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, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2], core.int);
  },
  /*_http._CryptoUtils._rng*/get _rng() {
    return math.Random.secure();
  },
  set _rng(_) {}
});
dart.defineLazy(_http, {
  /*_http._MASK_8*/get _MASK_8() {
    return 255;
  },
  /*_http._MASK_32*/get _MASK_32() {
    return 4294967295;
  },
  /*_http._BITS_PER_BYTE*/get _BITS_PER_BYTE() {
    return 8;
  },
  /*_http._BYTES_PER_WORD*/get _BYTES_PER_WORD() {
    return 4;
  }
});
const _chunkSizeInWords = Symbol('_chunkSizeInWords');
const _digestSizeInWords = Symbol('_digestSizeInWords');
const _bigEndianWords = Symbol('_bigEndianWords');
const _pendingData = Symbol('_pendingData');
const _lengthInBytes = Symbol('_lengthInBytes');
const _currentChunk = Symbol('_currentChunk');
const _h = Symbol('_h');
const _digestCalled = Symbol('_digestCalled');
const _iterate = Symbol('_iterate');
const _resultAsBytes = Symbol('_resultAsBytes');
const _finalizeData = Symbol('_finalizeData');
const _add32 = Symbol('_add32');
const _roundUp = Symbol('_roundUp');
const _rotl32 = Symbol('_rotl32');
const _wordToBytes = Symbol('_wordToBytes');
const _bytesToChunk = Symbol('_bytesToChunk');
const _updateHash = Symbol('_updateHash');
_http._HashBase = class _HashBase extends core.Object {
  add(data) {
    if (dart.test(this[_digestCalled])) {
      dart.throw(new core.StateError.new("Hash update method called after digest was retrieved"));
    }
    this[_lengthInBytes] = dart.notNull(this[_lengthInBytes]) + dart.notNull(data[$length]);
    this[_pendingData][$addAll](data);
    this[_iterate]();
  }
  close() {
    if (dart.test(this[_digestCalled])) {
      return this[_resultAsBytes]();
    }
    this[_digestCalled] = true;
    this[_finalizeData]();
    this[_iterate]();
    if (!(this[_pendingData][$length] === 0)) dart.assertFailed();
    return this[_resultAsBytes]();
  }
  get blockSize() {
    return dart.notNull(this[_chunkSizeInWords]) * 4;
  }
  [_add32](x, y) {
    return dart.dsend(dart.dsend(x, '+', [y]), '&', [4294967295]);
  }
  [_roundUp](val, n) {
    return dart.dsend(dart.dsend(dart.dsend(val, '+', [n]), '-', [1]), '&', [dart.dsend(n, '_negate', [])]);
  }
  [_rotl32](val, shift) {
    let mod_shift = dart.notNull(shift) & 31;
    return (val[$leftShift](mod_shift) & 4294967295 | ((dart.notNull(val) & 4294967295) >>> 0)[$rightShift](32 - mod_shift)) >>> 0;
  }
  [_resultAsBytes]() {
    let result = JSArrayOfint().of([]);
    for (let i = 0; i < dart.notNull(this[_h][$length]); i++) {
      result[$addAll](this[_wordToBytes](this[_h][$_get](i)));
    }
    return result;
  }
  [_bytesToChunk](data, dataIndex) {
    if (!(dart.notNull(data[$length]) - dart.notNull(dataIndex) >= dart.notNull(this[_chunkSizeInWords]) * 4)) dart.assertFailed();
    for (let wordIndex = 0; wordIndex < dart.notNull(this[_chunkSizeInWords]); wordIndex++) {
      let w3 = dart.test(this[_bigEndianWords]) ? data[$_get](dataIndex) : data[$_get](dart.notNull(dataIndex) + 3);
      let w2 = dart.test(this[_bigEndianWords]) ? data[$_get](dart.notNull(dataIndex) + 1) : data[$_get](dart.notNull(dataIndex) + 2);
      let w1 = dart.test(this[_bigEndianWords]) ? data[$_get](dart.notNull(dataIndex) + 2) : data[$_get](dart.notNull(dataIndex) + 1);
      let w0 = dart.test(this[_bigEndianWords]) ? data[$_get](dart.notNull(dataIndex) + 3) : data[$_get](dataIndex);
      dataIndex = dart.notNull(dataIndex) + 4;
      let word = (dart.notNull(w3) & 255) << 24 >>> 0;
      word = (word | (dart.notNull(w2) & 255) << 16) >>> 0;
      word = (word | (dart.notNull(w1) & 255) << 8) >>> 0;
      word = (word | dart.notNull(w0) & 255) >>> 0;
      this[_currentChunk][$_set](wordIndex, word);
    }
  }
  [_wordToBytes](word) {
    let bytes = ListOfint().new(4);
    bytes[$_set](0, word[$rightShift](dart.test(this[_bigEndianWords]) ? 24 : 0) & 255);
    bytes[$_set](1, word[$rightShift](dart.test(this[_bigEndianWords]) ? 16 : 8) & 255);
    bytes[$_set](2, word[$rightShift](dart.test(this[_bigEndianWords]) ? 8 : 16) & 255);
    bytes[$_set](3, word[$rightShift](dart.test(this[_bigEndianWords]) ? 0 : 24) & 255);
    return bytes;
  }
  [_iterate]() {
    let len = this[_pendingData][$length];
    let chunkSizeInBytes = dart.notNull(this[_chunkSizeInWords]) * 4;
    if (dart.notNull(len) >= chunkSizeInBytes) {
      let index = 0;
      for (; dart.notNull(len) - index >= chunkSizeInBytes; index = index + chunkSizeInBytes) {
        this[_bytesToChunk](this[_pendingData], index);
        this[_updateHash](this[_currentChunk]);
      }
      this[_pendingData] = this[_pendingData][$sublist](index, len);
    }
  }
  [_finalizeData]() {
    this[_pendingData][$add](128);
    let contentsLength = dart.notNull(this[_lengthInBytes]) + 9;
    let chunkSizeInBytes = dart.notNull(this[_chunkSizeInWords]) * 4;
    let finalizedLength = this[_roundUp](contentsLength, chunkSizeInBytes);
    let zeroPadding = dart.dsend(finalizedLength, '-', [contentsLength]);
    for (let i = 0; i < dart.notNull(core.num._check(zeroPadding)); i++) {
      this[_pendingData][$add](0);
    }
    let lengthInBits = dart.notNull(this[_lengthInBytes]) * 8;
    if (!(lengthInBits < math.pow(2, 32))) dart.assertFailed();
    if (dart.test(this[_bigEndianWords])) {
      this[_pendingData][$addAll](this[_wordToBytes](0));
      this[_pendingData][$addAll](this[_wordToBytes]((lengthInBits & 4294967295) >>> 0));
    } else {
      this[_pendingData][$addAll](this[_wordToBytes]((lengthInBits & 4294967295) >>> 0));
      this[_pendingData][$addAll](this[_wordToBytes](0));
    }
  }
};
(_http._HashBase.new = function(chunkSizeInWords, digestSizeInWords, bigEndianWords) {
  this[_lengthInBytes] = 0;
  this[_currentChunk] = null;
  this[_h] = null;
  this[_digestCalled] = false;
  this[_chunkSizeInWords] = chunkSizeInWords;
  this[_digestSizeInWords] = digestSizeInWords;
  this[_bigEndianWords] = bigEndianWords;
  this[_pendingData] = JSArrayOfint().of([]);
  this[_currentChunk] = ListOfint().new(this[_chunkSizeInWords]);
  this[_h] = ListOfint().new(this[_digestSizeInWords]);
}).prototype = _http._HashBase.prototype;
dart.addTypeTests(_http._HashBase);
dart.setMethodSignature(_http._HashBase, () => ({
  __proto__: dart.getMethods(_http._HashBase.__proto__),
  add: dart.fnType(dart.dynamic, [core.List$(core.int)]),
  close: dart.fnType(core.List$(core.int), []),
  [_add32]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic]),
  [_roundUp]: dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic]),
  [_rotl32]: dart.fnType(core.int, [core.int, core.int]),
  [_resultAsBytes]: dart.fnType(core.List$(core.int), []),
  [_bytesToChunk]: dart.fnType(dart.dynamic, [core.List$(core.int), core.int]),
  [_wordToBytes]: dart.fnType(core.List$(core.int), [core.int]),
  [_iterate]: dart.fnType(dart.dynamic, []),
  [_finalizeData]: dart.fnType(dart.dynamic, [])
}));
dart.setGetterSignature(_http._HashBase, () => ({
  __proto__: dart.getGetters(_http._HashBase.__proto__),
  blockSize: core.int
}));
dart.setFieldSignature(_http._HashBase, () => ({
  __proto__: dart.getFields(_http._HashBase.__proto__),
  [_chunkSizeInWords]: dart.finalFieldType(core.int),
  [_digestSizeInWords]: dart.finalFieldType(core.int),
  [_bigEndianWords]: dart.finalFieldType(core.bool),
  [_lengthInBytes]: dart.fieldType(core.int),
  [_pendingData]: dart.fieldType(ListOfint()),
  [_currentChunk]: dart.fieldType(ListOfint()),
  [_h]: dart.fieldType(ListOfint()),
  [_digestCalled]: dart.fieldType(core.bool)
}));
_http._MD5 = class _MD5 extends _http._HashBase {
  newInstance() {
    return new _http._MD5.new();
  }
  [_updateHash](m) {
    if (!(m[$length] === 16)) dart.assertFailed();
    let a = this[_h][$_get](0);
    let b = this[_h][$_get](1);
    let c = this[_h][$_get](2);
    let d = this[_h][$_get](3);
    let t0 = null;
    let t1 = null;
    for (let i = 0; i < 64; i++) {
      if (i < 16) {
        t0 = (dart.notNull(b) & dart.notNull(c) | ~dart.notNull(b) & 4294967295 & dart.notNull(d)) >>> 0;
        t1 = i;
      } else if (i < 32) {
        t0 = (dart.notNull(d) & dart.notNull(b) | ~dart.notNull(d) & 4294967295 & dart.notNull(c)) >>> 0;
        t1 = (5 * i + 1)[$modulo](16);
      } else if (i < 48) {
        t0 = (dart.notNull(b) ^ dart.notNull(c) ^ dart.notNull(d)) >>> 0;
        t1 = (3 * i + 5)[$modulo](16);
      } else {
        t0 = (dart.notNull(c) ^ (dart.notNull(b) | ~dart.notNull(d) & 4294967295)) >>> 0;
        t1 = (7 * i)[$modulo](16);
      }
      let temp = d;
      d = c;
      c = b;
      b = core.int._check(this[_add32](b, this[_rotl32](core.int._check(this[_add32](this[_add32](a, t0), this[_add32](_http._MD5._k[$_get](i), m[$_get](core.int._check(t1))))), _http._MD5._r[$_get](i))));
      a = temp;
    }
    this[_h][$_set](0, core.int._check(this[_add32](a, this[_h][$_get](0))));
    this[_h][$_set](1, core.int._check(this[_add32](b, this[_h][$_get](1))));
    this[_h][$_set](2, core.int._check(this[_add32](c, this[_h][$_get](2))));
    this[_h][$_set](3, core.int._check(this[_add32](d, this[_h][$_get](3))));
  }
};
(_http._MD5.new = function() {
  _http._MD5.__proto__.new.call(this, 16, 4, false);
  this[_h][$_set](0, 1732584193);
  this[_h][$_set](1, 4023233417);
  this[_h][$_set](2, 2562383102);
  this[_h][$_set](3, 271733878);
}).prototype = _http._MD5.prototype;
dart.addTypeTests(_http._MD5);
dart.setMethodSignature(_http._MD5, () => ({
  __proto__: dart.getMethods(_http._MD5.__proto__),
  newInstance: dart.fnType(_http._MD5, []),
  [_updateHash]: dart.fnType(dart.void, [core.List$(core.int)])
}));
dart.defineLazy(_http._MD5, {
  /*_http._MD5._k*/get _k() {
    return dart.constList([3614090360, 3905402710, 606105819, 3250441966, 4118548399, 1200080426, 2821735955, 4249261313, 1770035416, 2336552879, 4294925233, 2304563134, 1804603682, 4254626195, 2792965006, 1236535329, 4129170786, 3225465664, 643717713, 3921069994, 3593408605, 38016083, 3634488961, 3889429448, 568446438, 3275163606, 4107603335, 1163531501, 2850285829, 4243563512, 1735328473, 2368359562, 4294588738, 2272392833, 1839030562, 4259657740, 2763975236, 1272893353, 4139469664, 3200236656, 681279174, 3936430074, 3572445317, 76029189, 3654602809, 3873151461, 530742520, 3299628645, 4096336452, 1126891415, 2878612391, 4237533241, 1700485571, 2399980690, 4293915773, 2240044497, 1873313359, 4264355552, 2734768916, 1309151649, 4149444226, 3174756917, 718787259, 3951481745], core.int);
  },
  /*_http._MD5._r*/get _r() {
    return dart.constList([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21], core.int);
  }
});
const _w = Symbol('_w');
_http._SHA1 = class _SHA1 extends _http._HashBase {
  newInstance() {
    return new _http._SHA1.new();
  }
  [_updateHash](m) {
    if (!(m[$length] === 16)) dart.assertFailed();
    let a = this[_h][$_get](0);
    let b = this[_h][$_get](1);
    let c = this[_h][$_get](2);
    let d = this[_h][$_get](3);
    let e = this[_h][$_get](4);
    for (let i = 0; i < 80; i++) {
      if (i < 16) {
        this[_w][$_set](i, m[$_get](i));
      } else {
        let n = (dart.notNull(this[_w][$_get](i - 3)) ^ dart.notNull(this[_w][$_get](i - 8)) ^ dart.notNull(this[_w][$_get](i - 14)) ^ dart.notNull(this[_w][$_get](i - 16))) >>> 0;
        this[_w][$_set](i, this[_rotl32](n, 1));
      }
      let t = this[_add32](this[_add32](this[_rotl32](a, 5), e), this[_w][$_get](i));
      if (i < 20) {
        t = this[_add32](this[_add32](t, (dart.notNull(b) & dart.notNull(c) | ~dart.notNull(b) & dart.notNull(d)) >>> 0), 1518500249);
      } else if (i < 40) {
        t = this[_add32](this[_add32](t, (dart.notNull(b) ^ dart.notNull(c) ^ dart.notNull(d)) >>> 0), 1859775393);
      } else if (i < 60) {
        t = this[_add32](this[_add32](t, (dart.notNull(b) & dart.notNull(c) | dart.notNull(b) & dart.notNull(d) | dart.notNull(c) & dart.notNull(d)) >>> 0), 2400959708);
      } else {
        t = this[_add32](this[_add32](t, (dart.notNull(b) ^ dart.notNull(c) ^ dart.notNull(d)) >>> 0), 3395469782);
      }
      e = d;
      d = c;
      c = this[_rotl32](b, 30);
      b = a;
      a = core.int._check(dart.dsend(t, '&', [4294967295]));
    }
    this[_h][$_set](0, core.int._check(this[_add32](a, this[_h][$_get](0))));
    this[_h][$_set](1, core.int._check(this[_add32](b, this[_h][$_get](1))));
    this[_h][$_set](2, core.int._check(this[_add32](c, this[_h][$_get](2))));
    this[_h][$_set](3, core.int._check(this[_add32](d, this[_h][$_get](3))));
    this[_h][$_set](4, core.int._check(this[_add32](e, this[_h][$_get](4))));
  }
};
(_http._SHA1.new = function() {
  this[_w] = ListOfint().new(80);
  _http._SHA1.__proto__.new.call(this, 16, 5, true);
  this[_h][$_set](0, 1732584193);
  this[_h][$_set](1, 4023233417);
  this[_h][$_set](2, 2562383102);
  this[_h][$_set](3, 271733878);
  this[_h][$_set](4, 3285377520);
}).prototype = _http._SHA1.prototype;
dart.addTypeTests(_http._SHA1);
dart.setMethodSignature(_http._SHA1, () => ({
  __proto__: dart.getMethods(_http._SHA1.__proto__),
  newInstance: dart.fnType(_http._SHA1, []),
  [_updateHash]: dart.fnType(dart.void, [core.List$(core.int)])
}));
dart.setFieldSignature(_http._SHA1, () => ({
  __proto__: dart.getFields(_http._SHA1.__proto__),
  [_w]: dart.fieldType(ListOfint())
}));
let const$80;
let const$81;
let const$82;
let const$83;
let const$84;
let const$85;
let const$86;
let const$87;
let const$88;
_http.HttpDate = class HttpDate extends core.Object {
  static format(date) {
    let wkday = const$80 || (const$80 = dart.constList(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], dart.dynamic));
    let month = const$81 || (const$81 = dart.constList(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], dart.dynamic));
    let d = date.toUtc();
    let sb = new core.StringBuffer.new();
    sb.write(wkday[$_get](dart.notNull(d.weekday) - 1));
    sb.write(", ");
    sb.write(dart.notNull(d.day) <= 9 ? "0" : "");
    sb.write(dart.toString(d.day));
    sb.write(" ");
    sb.write(month[$_get](dart.notNull(d.month) - 1));
    sb.write(" ");
    sb.write(dart.toString(d.year));
    sb.write(dart.notNull(d.hour) <= 9 ? " 0" : " ");
    sb.write(dart.toString(d.hour));
    sb.write(dart.notNull(d.minute) <= 9 ? ":0" : ":");
    sb.write(dart.toString(d.minute));
    sb.write(dart.notNull(d.second) <= 9 ? ":0" : ":");
    sb.write(dart.toString(d.second));
    sb.write(" GMT");
    return sb.toString();
  }
  static parse(date) {
    let SP = 32;
    let wkdays = const$82 || (const$82 = dart.constList(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], dart.dynamic));
    let weekdays = const$83 || (const$83 = dart.constList(["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], dart.dynamic));
    let months = const$84 || (const$84 = dart.constList(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], dart.dynamic));
    let wkdaysLowerCase = const$85 || (const$85 = dart.constList(["mon", "tue", "wed", "thu", "fri", "sat", "sun"], dart.dynamic));
    let weekdaysLowerCase = const$86 || (const$86 = dart.constList(["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"], dart.dynamic));
    let monthsLowerCase = const$87 || (const$87 = dart.constList(["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"], dart.dynamic));
    let formatRfc1123 = 0;
    let formatRfc850 = 1;
    let formatAsctime = 2;
    let index = 0;
    let tmp = null;
    let format = null;
    function expect(s) {
      if (date.length - index < s.length) {
        dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
      }
      let tmp = date[$substring](index, index + s.length);
      if (tmp !== s) {
        dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
      }
      index = index + s.length;
    }
    dart.fn(expect, StringTovoid());
    function expectWeekday() {
      let weekday = null;
      let pos = date[$indexOf](",", index);
      if (pos === -1) {
        let pos = date[$indexOf](" ", index);
        if (pos === -1) dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
        tmp = date[$substring](index, pos);
        index = pos + 1;
        weekday = wkdays[$indexOf](tmp);
        if (weekday !== -1) {
          format = formatAsctime;
          return weekday;
        }
      } else {
        tmp = date[$substring](index, pos);
        index = pos + 1;
        weekday = wkdays[$indexOf](tmp);
        if (weekday !== -1) {
          format = formatRfc1123;
          return weekday;
        }
        weekday = weekdays[$indexOf](tmp);
        if (weekday !== -1) {
          format = formatRfc850;
          return weekday;
        }
      }
      dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
    }
    dart.fn(expectWeekday, VoidToint());
    function expectMonth(separator) {
      let pos = date[$indexOf](separator, index);
      if (pos - index !== 3) dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
      tmp = date[$substring](index, pos);
      index = pos + 1;
      let month = months[$indexOf](tmp);
      if (month !== -1) return month;
      dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
    }
    dart.fn(expectMonth, StringToint());
    function expectNum(separator) {
      let pos = null;
      if (separator.length > 0) {
        pos = date[$indexOf](separator, index);
      } else {
        pos = date.length;
      }
      let tmp = date[$substring](index, pos);
      index = dart.notNull(pos) + separator.length;
      try {
        let value = core.int.parse(tmp);
        return value;
      } catch (e$) {
        let e = dart.getThrown(e$);
        if (core.FormatException.is(e)) {
          dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
        } else
          throw e$;
      }
    }
    dart.fn(expectNum, StringToint());
    function expectEnd() {
      if (index !== date.length) {
        dart.throw(new _http.HttpException.new("Invalid HTTP date " + dart.str(date)));
      }
    }
    dart.fn(expectEnd, VoidTovoid());
    let weekday = expectWeekday();
    let day = null;
    let month = null;
    let year = null;
    let hours = null;
    let minutes = null;
    let seconds = null;
    if (format === formatAsctime) {
      month = expectMonth(" ");
      if (date[$codeUnitAt](index) === SP) index++;
      day = expectNum(" ");
      hours = expectNum(":");
      minutes = expectNum(":");
      seconds = expectNum(" ");
      year = expectNum("");
    } else {
      expect(" ");
      day = expectNum(format === formatRfc1123 ? " " : "-");
      month = expectMonth(format === formatRfc1123 ? " " : "-");
      year = expectNum(" ");
      hours = expectNum(":");
      minutes = expectNum(":");
      seconds = expectNum(" ");
      expect("GMT");
    }
    expectEnd();
    return new core.DateTime.utc(year, dart.notNull(month) + 1, day, hours, minutes, seconds, 0);
  }
  static _parseCookieDate(date) {
    let monthsLowerCase = const$88 || (const$88 = dart.constList(["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"], dart.dynamic));
    let position = 0;
    function error() {
      dart.throw(new _http.HttpException.new("Invalid cookie date " + dart.str(date)));
    }
    dart.fn(error, VoidTovoid());
    function isEnd() {
      return position === date.length;
    }
    dart.fn(isEnd, VoidTobool());
    function isDelimiter(s) {
      let char = s[$codeUnitAt](0);
      if (char === 9) return true;
      if (char >= 32 && char <= 47) return true;
      if (char >= 59 && char <= 64) return true;
      if (char >= 91 && char <= 96) return true;
      if (char >= 123 && char <= 126) return true;
      return false;
    }
    dart.fn(isDelimiter, StringTobool());
    function isNonDelimiter(s) {
      let char = s[$codeUnitAt](0);
      if (char >= 0 && char <= 8) return true;
      if (char >= 10 && char <= 31) return true;
      if (char >= 48 && char <= 57) return true;
      if (char === 58) return true;
      if (char >= 65 && char <= 90) return true;
      if (char >= 97 && char <= 122) return true;
      if (char >= 127 && char <= 255) return true;
      return false;
    }
    dart.fn(isNonDelimiter, StringTobool());
    function isDigit(s) {
      let char = s[$codeUnitAt](0);
      if (char > 47 && char < 58) return true;
      return false;
    }
    dart.fn(isDigit, StringTobool());
    function getMonth(month) {
      if (month.length < 3) return -1;
      return monthsLowerCase[$indexOf](month[$substring](0, 3));
    }
    dart.fn(getMonth, StringToint());
    function toInt(s) {
      let index = 0;
      for (; index < s.length && dart.test(isDigit(s[$_get](index))); index++)
        ;
      return core.int.parse(s[$substring](0, index));
    }
    dart.fn(toInt, StringToint());
    let tokens = [];
    while (!dart.test(isEnd())) {
      while (!dart.test(isEnd()) && dart.test(isDelimiter(date[$_get](position))))
        position++;
      let start = position;
      while (!dart.test(isEnd()) && dart.test(isNonDelimiter(date[$_get](position))))
        position++;
      tokens[$add](date[$substring](start, position)[$toLowerCase]());
      while (!dart.test(isEnd()) && dart.test(isDelimiter(date[$_get](position))))
        position++;
    }
    let timeStr = null;
    let dayOfMonthStr = null;
    let monthStr = null;
    let yearStr = null;
    for (let token of tokens) {
      if (dart.dtest(dart.dsend(dart.dload(token, 'length'), '<', [1]))) continue;
      if (timeStr == null && dart.dtest(dart.dsend(dart.dload(token, 'length'), '>=', [5])) && dart.test(isDigit(core.String._check(dart.dindex(token, 0)))) && (dart.equals(dart.dindex(token, 1), ":") || dart.test(isDigit(core.String._check(dart.dindex(token, 1)))) && dart.equals(dart.dindex(token, 2), ":"))) {
        timeStr = core.String._check(token);
      } else if (dayOfMonthStr == null && dart.test(isDigit(core.String._check(dart.dindex(token, 0))))) {
        dayOfMonthStr = core.String._check(token);
      } else if (monthStr == null && dart.notNull(getMonth(core.String._check(token))) >= 0) {
        monthStr = core.String._check(token);
      } else if (yearStr == null && dart.dtest(dart.dsend(dart.dload(token, 'length'), '>=', [2])) && dart.test(isDigit(core.String._check(dart.dindex(token, 0)))) && dart.test(isDigit(core.String._check(dart.dindex(token, 1))))) {
        yearStr = core.String._check(token);
      }
    }
    if (timeStr == null || dayOfMonthStr == null || monthStr == null || yearStr == null) {
      error();
    }
    let year = toInt(yearStr);
    if (dart.notNull(year) >= 70 && dart.notNull(year) <= 99) {
      year = dart.notNull(year) + 1900;
    } else if (dart.notNull(year) >= 0 && dart.notNull(year) <= 69) {
      year = dart.notNull(year) + 2000;
    }
    if (dart.notNull(year) < 1601) error();
    let dayOfMonth = toInt(dayOfMonthStr);
    if (dart.notNull(dayOfMonth) < 1 || dart.notNull(dayOfMonth) > 31) error();
    let month = dart.notNull(getMonth(monthStr)) + 1;
    let timeList = timeStr[$split](":");
    if (timeList[$length] !== 3) error();
    let hour = toInt(timeList[$_get](0));
    let minute = toInt(timeList[$_get](1));
    let second = toInt(timeList[$_get](2));
    if (dart.notNull(hour) > 23) error();
    if (dart.notNull(minute) > 59) error();
    if (dart.notNull(second) > 59) error();
    return new core.DateTime.utc(year, month, dayOfMonth, hour, minute, second, 0);
  }
};
(_http.HttpDate.new = function() {
}).prototype = _http.HttpDate.prototype;
dart.addTypeTests(_http.HttpDate);
const _headers = Symbol('_headers');
const _defaultPortForScheme = Symbol('_defaultPortForScheme');
const _mutable = Symbol('_mutable');
const _noFoldingHeaders = Symbol('_noFoldingHeaders');
const _contentLength = Symbol('_contentLength');
const _persistentConnection = Symbol('_persistentConnection');
const _chunkedTransferEncoding = Symbol('_chunkedTransferEncoding');
const _host$ = Symbol('_host');
const _port$ = Symbol('_port');
const _checkMutable = Symbol('_checkMutable');
const _addAll = Symbol('_addAll');
const _add$2 = Symbol('_add');
const _set = Symbol('_set');
const _addValue = Symbol('_addValue');
const _updateHostHeader = Symbol('_updateHostHeader');
const _addDate = Symbol('_addDate');
const _addHost = Symbol('_addHost');
const _addExpires = Symbol('_addExpires');
const _addConnection = Symbol('_addConnection');
const _addContentType = Symbol('_addContentType');
const _addContentLength = Symbol('_addContentLength');
const _addTransferEncoding = Symbol('_addTransferEncoding');
const _addIfModifiedSince = Symbol('_addIfModifiedSince');
const _foldHeader = Symbol('_foldHeader');
const _finalize = Symbol('_finalize');
const _build = Symbol('_build');
const _parseCookies = Symbol('_parseCookies');
_http._HttpHeaders = class _HttpHeaders extends core.Object {
  _get(name) {
    return this[_headers][$_get](name[$toLowerCase]());
  }
  value(name) {
    name = name[$toLowerCase]();
    let values = this[_headers][$_get](name);
    if (values == null) return null;
    if (dart.notNull(values[$length]) > 1) {
      dart.throw(new _http.HttpException.new("More than one value for header " + dart.str(name)));
    }
    return values[$_get](0);
  }
  add(name, value) {
    this[_checkMutable]();
    this[_addAll](_http._HttpHeaders._validateField(name), value);
  }
  [_addAll](name, value) {
    if (!(name == _http._HttpHeaders._validateField(name))) dart.assertFailed();
    if (core.Iterable.is(value)) {
      for (let v of value) {
        this[_add$2](name, _http._HttpHeaders._validateValue(v));
      }
    } else {
      this[_add$2](name, _http._HttpHeaders._validateValue(value));
    }
  }
  set(name, value) {
    this[_checkMutable]();
    name = _http._HttpHeaders._validateField(name);
    this[_headers][$remove](name);
    if (name === _http.HttpHeaders.transferEncodingHeader) {
      this[_chunkedTransferEncoding] = false;
    }
    this[_addAll](name, value);
  }
  remove(name, value) {
    this[_checkMutable]();
    name = _http._HttpHeaders._validateField(name);
    value = _http._HttpHeaders._validateValue(value);
    let values = this[_headers][$_get](name);
    if (values != null) {
      let index = values[$indexOf](core.String._check(value));
      if (index !== -1) {
        values[$removeRange](index, dart.notNull(index) + 1);
      }
      if (values[$length] === 0) this[_headers][$remove](name);
    }
    if (name === _http.HttpHeaders.transferEncodingHeader && dart.equals(value, "chunked")) {
      this[_chunkedTransferEncoding] = false;
    }
  }
  removeAll(name) {
    this[_checkMutable]();
    name = _http._HttpHeaders._validateField(name);
    this[_headers][$remove](name);
  }
  forEach(f) {
    this[_headers][$forEach](f);
  }
  noFolding(name) {
    if (this[_noFoldingHeaders] == null) this[_noFoldingHeaders] = JSArrayOfString().of([]);
    this[_noFoldingHeaders][$add](name);
  }
  get persistentConnection() {
    return this[_persistentConnection];
  }
  set persistentConnection(persistentConnection) {
    this[_checkMutable]();
    if (persistentConnection == this[_persistentConnection]) return;
    if (dart.test(persistentConnection)) {
      if (this.protocolVersion === "1.1") {
        this.remove(_http.HttpHeaders.connectionHeader, "close");
      } else {
        if (this[_contentLength] === -1) {
          dart.throw(new _http.HttpException.new("Trying to set 'Connection: Keep-Alive' on HTTP 1.0 headers with " + "no ContentLength"));
        }
        this.add(_http.HttpHeaders.connectionHeader, "keep-alive");
      }
    } else {
      if (this.protocolVersion === "1.1") {
        this.add(_http.HttpHeaders.connectionHeader, "close");
      } else {
        this.remove(_http.HttpHeaders.connectionHeader, "keep-alive");
      }
    }
    this[_persistentConnection] = persistentConnection;
  }
  get contentLength() {
    return this[_contentLength];
  }
  set contentLength(contentLength) {
    this[_checkMutable]();
    if (this.protocolVersion === "1.0" && dart.test(this.persistentConnection) && contentLength === -1) {
      dart.throw(new _http.HttpException.new("Trying to clear ContentLength on HTTP 1.0 headers with " + "'Connection: Keep-Alive' set"));
    }
    if (this[_contentLength] == contentLength) return;
    this[_contentLength] = contentLength;
    if (dart.notNull(this[_contentLength]) >= 0) {
      if (dart.test(this.chunkedTransferEncoding)) this.chunkedTransferEncoding = false;
      this[_set](_http.HttpHeaders.contentLengthHeader, dart.toString(contentLength));
    } else {
      this.removeAll(_http.HttpHeaders.contentLengthHeader);
      if (this.protocolVersion === "1.1") {
        this.chunkedTransferEncoding = true;
      }
    }
  }
  get chunkedTransferEncoding() {
    return this[_chunkedTransferEncoding];
  }
  set chunkedTransferEncoding(chunkedTransferEncoding) {
    this[_checkMutable]();
    if (dart.test(chunkedTransferEncoding) && this.protocolVersion === "1.0") {
      dart.throw(new _http.HttpException.new("Trying to set 'Transfer-Encoding: Chunked' on HTTP 1.0 headers"));
    }
    if (chunkedTransferEncoding == this[_chunkedTransferEncoding]) return;
    if (dart.test(chunkedTransferEncoding)) {
      let values = this[_headers][$_get](_http.HttpHeaders.transferEncodingHeader);
      if (values == null || values[$last] !== "chunked") {
        this[_addValue](_http.HttpHeaders.transferEncodingHeader, "chunked");
      }
      this.contentLength = -1;
    } else {
      this.remove(_http.HttpHeaders.transferEncodingHeader, "chunked");
    }
    this[_chunkedTransferEncoding] = chunkedTransferEncoding;
  }
  get host() {
    return this[_host$];
  }
  set host(host) {
    this[_checkMutable]();
    this[_host$] = host;
    this[_updateHostHeader]();
  }
  get port() {
    return this[_port$];
  }
  set port(port) {
    this[_checkMutable]();
    this[_port$] = port;
    this[_updateHostHeader]();
  }
  get ifModifiedSince() {
    let values = this[_headers][$_get](_http.HttpHeaders.ifModifiedSinceHeader);
    if (values != null) {
      try {
        return _http.HttpDate.parse(values[$_get](0));
      } catch (e$) {
        let e = dart.getThrown(e$);
        if (core.Exception.is(e)) {
          return null;
        } else
          throw e$;
      }
    }
    return null;
  }
  set ifModifiedSince(ifModifiedSince) {
    this[_checkMutable]();
    let formatted = _http.HttpDate.format(ifModifiedSince.toUtc());
    this[_set](_http.HttpHeaders.ifModifiedSinceHeader, formatted);
  }
  get date() {
    let values = this[_headers][$_get](_http.HttpHeaders.dateHeader);
    if (values != null) {
      try {
        return _http.HttpDate.parse(values[$_get](0));
      } catch (e$) {
        let e = dart.getThrown(e$);
        if (core.Exception.is(e)) {
          return null;
        } else
          throw e$;
      }
    }
    return null;
  }
  set date(date) {
    this[_checkMutable]();
    let formatted = _http.HttpDate.format(date.toUtc());
    this[_set]("date", formatted);
  }
  get expires() {
    let values = this[_headers][$_get](_http.HttpHeaders.expiresHeader);
    if (values != null) {
      try {
        return _http.HttpDate.parse(values[$_get](0));
      } catch (e$) {
        let e = dart.getThrown(e$);
        if (core.Exception.is(e)) {
          return null;
        } else
          throw e$;
      }
    }
    return null;
  }
  set expires(expires) {
    this[_checkMutable]();
    let formatted = _http.HttpDate.format(expires.toUtc());
    this[_set](_http.HttpHeaders.expiresHeader, formatted);
  }
  get contentType() {
    let values = this[_headers][$_get]("content-type");
    if (values != null) {
      return _http.ContentType.parse(values[$_get](0));
    } else {
      return null;
    }
  }
  set contentType(contentType) {
    this[_checkMutable]();
    this[_set](_http.HttpHeaders.contentTypeHeader, dart.toString(contentType));
  }
  clear() {
    this[_checkMutable]();
    this[_headers][$clear]();
    this[_contentLength] = -1;
    this[_persistentConnection] = true;
    this[_chunkedTransferEncoding] = false;
    this[_host$] = null;
    this[_port$] = null;
  }
  [_add$2](name, value) {
    if (!(name == _http._HttpHeaders._validateField(name))) dart.assertFailed();
    switch (name.length) {
      case 4:
      {
        if (_http.HttpHeaders.dateHeader === name) {
          this[_addDate](name, value);
          return;
        }
        if (_http.HttpHeaders.hostHeader === name) {
          this[_addHost](name, value);
          return;
        }
        break;
      }
      case 7:
      {
        if (_http.HttpHeaders.expiresHeader === name) {
          this[_addExpires](name, value);
          return;
        }
        break;
      }
      case 10:
      {
        if (_http.HttpHeaders.connectionHeader === name) {
          this[_addConnection](name, value);
          return;
        }
        break;
      }
      case 12:
      {
        if (_http.HttpHeaders.contentTypeHeader === name) {
          this[_addContentType](name, value);
          return;
        }
        break;
      }
      case 14:
      {
        if (_http.HttpHeaders.contentLengthHeader === name) {
          this[_addContentLength](name, value);
          return;
        }
        break;
      }
      case 17:
      {
        if (_http.HttpHeaders.transferEncodingHeader === name) {
          this[_addTransferEncoding](name, value);
          return;
        }
        if (_http.HttpHeaders.ifModifiedSinceHeader === name) {
          this[_addIfModifiedSince](name, value);
          return;
        }
      }
    }
    this[_addValue](name, value);
  }
  [_addContentLength](name, value) {
    if (core.int.is(value)) {
      this.contentLength = value;
    } else if (typeof value == 'string') {
      this.contentLength = core.int.parse(value);
    } else {
      dart.throw(new _http.HttpException.new("Unexpected type for header named " + dart.str(name)));
    }
  }
  [_addTransferEncoding](name, value) {
    if (dart.equals(value, "chunked")) {
      this.chunkedTransferEncoding = true;
    } else {
      this[_addValue](_http.HttpHeaders.transferEncodingHeader, value);
    }
  }
  [_addDate](name, value) {
    if (core.DateTime.is(value)) {
      this.date = value;
    } else if (typeof value == 'string') {
      this[_set](_http.HttpHeaders.dateHeader, value);
    } else {
      dart.throw(new _http.HttpException.new("Unexpected type for header named " + dart.str(name)));
    }
  }
  [_addExpires](name, value) {
    if (core.DateTime.is(value)) {
      this.expires = value;
    } else if (typeof value == 'string') {
      this[_set](_http.HttpHeaders.expiresHeader, value);
    } else {
      dart.throw(new _http.HttpException.new("Unexpected type for header named " + dart.str(name)));
    }
  }
  [_addIfModifiedSince](name, value) {
    if (core.DateTime.is(value)) {
      this.ifModifiedSince = value;
    } else if (typeof value == 'string') {
      this[_set](_http.HttpHeaders.ifModifiedSinceHeader, value);
    } else {
      dart.throw(new _http.HttpException.new("Unexpected type for header named " + dart.str(name)));
    }
  }
  [_addHost](name, value) {
    if (typeof value == 'string') {
      let pos = value[$indexOf](":");
      if (pos === -1) {
        this[_host$] = value;
        this[_port$] = _http.HttpClient.defaultHttpPort;
      } else {
        if (pos > 0) {
          this[_host$] = value[$substring](0, pos);
        } else {
          this[_host$] = null;
        }
        if (pos + 1 === value.length) {
          this[_port$] = _http.HttpClient.defaultHttpPort;
        } else {
          try {
            this[_port$] = core.int.parse(value[$substring](pos + 1));
          } catch (e$) {
            let e = dart.getThrown(e$);
            if (core.FormatException.is(e)) {
              this[_port$] = null;
            } else
              throw e$;
          }
        }
      }
      this[_set](_http.HttpHeaders.hostHeader, value);
    } else {
      dart.throw(new _http.HttpException.new("Unexpected type for header named " + dart.str(name)));
    }
  }
  [_addConnection](name, value) {
    let lowerCaseValue = dart.dsend(value, 'toLowerCase', []);
    if (dart.equals(lowerCaseValue, "close")) {
      this[_persistentConnection] = false;
    } else if (dart.equals(lowerCaseValue, "keep-alive")) {
      this[_persistentConnection] = true;
    }
    this[_addValue](name, value);
  }
  [_addContentType](name, value) {
    this[_set](_http.HttpHeaders.contentTypeHeader, core.String._check(value));
  }
  [_addValue](name, value) {
    let values = this[_headers][$_get](name);
    if (values == null) {
      values = JSArrayOfString().of([]);
      this[_headers][$_set](name, values);
    }
    if (core.DateTime.is(value)) {
      values[$add](_http.HttpDate.format(value));
    } else if (typeof value == 'string') {
      values[$add](value);
    } else {
      values[$add](core.String._check(_http._HttpHeaders._validateValue(dart.toString(value))));
    }
  }
  [_set](name, value) {
    if (!(name == _http._HttpHeaders._validateField(name))) dart.assertFailed();
    let values = JSArrayOfString().of([]);
    this[_headers][$_set](name, values);
    values[$add](value);
  }
  [_checkMutable]() {
    if (!dart.test(this[_mutable])) dart.throw(new _http.HttpException.new("HTTP headers are not mutable"));
  }
  [_updateHostHeader]() {
    let defaultPort = this[_port$] == null || this[_port$] == this[_defaultPortForScheme];
    this[_set]("host", defaultPort ? this.host : dart.str(this.host) + ":" + dart.str(this[_port$]));
  }
  [_foldHeader](name) {
    if (name === _http.HttpHeaders.setCookieHeader || this[_noFoldingHeaders] != null && this[_noFoldingHeaders][$indexOf](name) !== -1) {
      return false;
    }
    return true;
  }
  [_finalize]() {
    this[_mutable] = false;
  }
  [_build](builder) {
    for (let name of this[_headers][$keys]) {
      let values = this[_headers][$_get](name);
      let fold = core.bool._check(this[_foldHeader](name));
      let nameData = name[$codeUnits];
      builder.add(nameData);
      builder.addByte(_http._CharCode.COLON);
      builder.addByte(_http._CharCode.SP);
      for (let i = 0; i < dart.notNull(values[$length]); i++) {
        if (i > 0) {
          if (dart.test(fold)) {
            builder.addByte(_http._CharCode.COMMA);
            builder.addByte(_http._CharCode.SP);
          } else {
            builder.addByte(_http._CharCode.CR);
            builder.addByte(_http._CharCode.LF);
            builder.add(nameData);
            builder.addByte(_http._CharCode.COLON);
            builder.addByte(_http._CharCode.SP);
          }
        }
        builder.add(values[$_get](i)[$codeUnits]);
      }
      builder.addByte(_http._CharCode.CR);
      builder.addByte(_http._CharCode.LF);
    }
  }
  toString() {
    let sb = new core.StringBuffer.new();
    this[_headers][$forEach](dart.fn((name, values) => {
      sb.write(name);
      sb.write(": ");
      let fold = core.bool._check(this[_foldHeader](name));
      for (let i = 0; i < dart.notNull(values[$length]); i++) {
        if (i > 0) {
          if (dart.test(fold)) {
            sb.write(", ");
          } else {
            sb.write("\n");
            sb.write(name);
            sb.write(": ");
          }
        }
        sb.write(values[$_get](i));
      }
      sb.write("\n");
    }, StringAndListOfStringToNull()));
    return sb.toString();
  }
  [_parseCookies]() {
    let cookies = JSArrayOfCookie().of([]);
    function parseCookieString(s) {
      let index = 0;
      function done() {
        return index === -1 || index === s.length;
      }
      dart.fn(done, VoidTobool());
      function skipWS() {
        while (!dart.test(done())) {
          if (s[$_get](index) !== " " && s[$_get](index) !== "\t") return;
          index++;
        }
      }
      dart.fn(skipWS, VoidTovoid());
      function parseName() {
        let start = index;
        while (!dart.test(done())) {
          if (s[$_get](index) === " " || s[$_get](index) === "\t" || s[$_get](index) === "=") break;
          index++;
        }
        return s[$substring](start, index);
      }
      dart.fn(parseName, VoidToString());
      function parseValue() {
        let start = index;
        while (!dart.test(done())) {
          if (s[$_get](index) === " " || s[$_get](index) === "\t" || s[$_get](index) === ";") break;
          index++;
        }
        return s[$substring](start, index);
      }
      dart.fn(parseValue, VoidToString());
      function expect(expected) {
        if (dart.test(done())) return false;
        if (s[$_get](index) != expected) return false;
        index++;
        return true;
      }
      dart.fn(expect, StringTobool());
      while (!dart.test(done())) {
        skipWS();
        if (dart.test(done())) return;
        let name = parseName();
        skipWS();
        if (!dart.test(expect("="))) {
          index = s[$indexOf](";", index);
          continue;
        }
        skipWS();
        let value = parseValue();
        try {
          cookies[$add](new _http._Cookie.new(name, value));
        } catch (e) {
          let _ = dart.getThrown(e);
        }
        skipWS();
        if (dart.test(done())) return;
        if (!dart.test(expect(";"))) {
          index = s[$indexOf](";", index);
          continue;
        }
      }
    }
    dart.fn(parseCookieString, StringTovoid());
    let values = this[_headers][$_get](_http.HttpHeaders.cookieHeader);
    if (values != null) {
      values[$forEach](dart.fn(headerValue => parseCookieString(headerValue), StringTovoid()));
    }
    return cookies;
  }
  static _validateField(field) {
    for (let i = 0; i < field.length; i++) {
      if (!dart.test(_http._HttpParser._isTokenChar(field[$codeUnitAt](i)))) {
        dart.throw(new core.FormatException.new("Invalid HTTP header field name: " + dart.str(convert.json.encode(field))));
      }
    }
    return field[$toLowerCase]();
  }
  static _validateValue(value) {
    if (!(typeof value == 'string')) return value;
    for (let i = 0; i < dart.notNull(core.num._check(dart.dload(value, 'length'))); i++) {
      if (!dart.test(_http._HttpParser._isValueChar(core.int._check(dart.dsend(value, 'codeUnitAt', [i]))))) {
        dart.throw(new core.FormatException.new("Invalid HTTP header field value: " + dart.str(convert.json.encode(value))));
      }
    }
    return value;
  }
};
(_http._HttpHeaders.new = function(protocolVersion, opts) {
  let defaultPortForScheme = opts && 'defaultPortForScheme' in opts ? opts.defaultPortForScheme : _http.HttpClient.defaultHttpPort;
  let initialHeaders = opts && 'initialHeaders' in opts ? opts.initialHeaders : null;
  this[_mutable] = true;
  this[_noFoldingHeaders] = null;
  this[_contentLength] = -1;
  this[_persistentConnection] = true;
  this[_chunkedTransferEncoding] = false;
  this[_host$] = null;
  this[_port$] = null;
  this.protocolVersion = protocolVersion;
  this[_headers] = new (IdentityMapOfString$ListOfString()).new();
  this[_defaultPortForScheme] = defaultPortForScheme;
  if (initialHeaders != null) {
    initialHeaders[_headers][$forEach](dart.fn((name, value) => this[_headers][$_set](name, value), StringAndListOfStringToListOfString()));
    this[_contentLength] = initialHeaders[_contentLength];
    this[_persistentConnection] = initialHeaders[_persistentConnection];
    this[_chunkedTransferEncoding] = initialHeaders[_chunkedTransferEncoding];
    this[_host$] = initialHeaders[_host$];
    this[_port$] = initialHeaders[_port$];
  }
  if (this.protocolVersion === "1.0") {
    this[_persistentConnection] = false;
    this[_chunkedTransferEncoding] = false;
  }
}).prototype = _http._HttpHeaders.prototype;
dart.addTypeTests(_http._HttpHeaders);
_http._HttpHeaders[dart.implements] = () => [_http.HttpHeaders];
dart.setMethodSignature(_http._HttpHeaders, () => ({
  __proto__: dart.getMethods(_http._HttpHeaders.__proto__),
  _get: dart.fnType(core.List$(core.String), [core.String]),
  value: dart.fnType(core.String, [core.String]),
  add: dart.fnType(dart.void, [core.String, core.Object]),
  [_addAll]: dart.fnType(dart.void, [core.String, dart.dynamic]),
  set: dart.fnType(dart.void, [core.String, core.Object]),
  remove: dart.fnType(dart.void, [core.String, core.Object]),
  removeAll: dart.fnType(dart.void, [core.String]),
  forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [core.String, core.List$(core.String)])]),
  noFolding: dart.fnType(dart.void, [core.String]),
  clear: dart.fnType(dart.void, []),
  [_add$2]: dart.fnType(dart.void, [core.String, dart.dynamic]),
  [_addContentLength]: dart.fnType(dart.void, [core.String, dart.dynamic]),
  [_addTransferEncoding]: dart.fnType(dart.void, [core.String, dart.dynamic]),
  [_addDate]: dart.fnType(dart.void, [core.String, dart.dynamic]),
  [_addExpires]: dart.fnType(dart.void, [core.String, dart.dynamic]),
  [_addIfModifiedSince]: dart.fnType(dart.void, [core.String, dart.dynamic]),
  [_addHost]: dart.fnType(dart.void, [core.String, dart.dynamic]),
  [_addConnection]: dart.fnType(dart.void, [core.String, dart.dynamic]),
  [_addContentType]: dart.fnType(dart.void, [core.String, dart.dynamic]),
  [_addValue]: dart.fnType(dart.void, [core.String, core.Object]),
  [_set]: dart.fnType(dart.void, [core.String, core.String]),
  [_checkMutable]: dart.fnType(dart.dynamic, []),
  [_updateHostHeader]: dart.fnType(dart.dynamic, []),
  [_foldHeader]: dart.fnType(dart.dynamic, [core.String]),
  [_finalize]: dart.fnType(dart.void, []),
  [_build]: dart.fnType(dart.void, [io.BytesBuilder]),
  [_parseCookies]: dart.fnType(core.List$(_http.Cookie), [])
}));
dart.setGetterSignature(_http._HttpHeaders, () => ({
  __proto__: dart.getGetters(_http._HttpHeaders.__proto__),
  persistentConnection: core.bool,
  contentLength: core.int,
  chunkedTransferEncoding: core.bool,
  host: core.String,
  port: core.int,
  ifModifiedSince: core.DateTime,
  date: core.DateTime,
  expires: core.DateTime,
  contentType: _http.ContentType
}));
dart.setSetterSignature(_http._HttpHeaders, () => ({
  __proto__: dart.getSetters(_http._HttpHeaders.__proto__),
  persistentConnection: core.bool,
  contentLength: core.int,
  chunkedTransferEncoding: core.bool,
  host: core.String,
  port: core.int,
  ifModifiedSince: core.DateTime,
  date: core.DateTime,
  expires: core.DateTime,
  contentType: _http.ContentType
}));
dart.setFieldSignature(_http._HttpHeaders, () => ({
  __proto__: dart.getFields(_http._HttpHeaders.__proto__),
  [_headers]: dart.finalFieldType(MapOfString$ListOfString()),
  protocolVersion: dart.finalFieldType(core.String),
  [_mutable]: dart.fieldType(core.bool),
  [_noFoldingHeaders]: dart.fieldType(ListOfString()),
  [_contentLength]: dart.fieldType(core.int),
  [_persistentConnection]: dart.fieldType(core.bool),
  [_chunkedTransferEncoding]: dart.fieldType(core.bool),
  [_host$]: dart.fieldType(core.String),
  [_port$]: dart.fieldType(core.int),
  [_defaultPortForScheme]: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(_http._HttpHeaders, ['toString']);
const _value$4 = Symbol('_value');
const _parameters = Symbol('_parameters');
const _unmodifiableParameters = Symbol('_unmodifiableParameters');
const _parse = Symbol('_parse');
const _ensureParameters = Symbol('_ensureParameters');
_http._HeaderValue = class _HeaderValue extends core.Object {
  static parse(value, opts) {
    let parameterSeparator = opts && 'parameterSeparator' in opts ? opts.parameterSeparator : ";";
    let valueSeparator = opts && 'valueSeparator' in opts ? opts.valueSeparator : null;
    let preserveBackslash = opts && 'preserveBackslash' in opts ? opts.preserveBackslash : false;
    let result = new _http._HeaderValue.new();
    result[_parse](value, core.String._check(parameterSeparator), core.String._check(valueSeparator), core.bool._check(preserveBackslash));
    return result;
  }
  get value() {
    return this[_value$4];
  }
  [_ensureParameters]() {
    if (this[_parameters] == null) {
      this[_parameters] = new (IdentityMapOfString$String()).new();
    }
  }
  get parameters() {
    this[_ensureParameters]();
    if (this[_unmodifiableParameters] == null) {
      this[_unmodifiableParameters] = new (UnmodifiableMapViewOfString$String()).new(this[_parameters]);
    }
    return this[_unmodifiableParameters];
  }
  toString() {
    let sb = new core.StringBuffer.new();
    sb.write(this[_value$4]);
    if (this.parameters != null && dart.notNull(this.parameters[$length]) > 0) {
      this[_parameters][$forEach](dart.fn((name, value) => {
        sb.write("; ");
        sb.write(name);
        sb.write("=");
        sb.write(value);
      }, StringAndStringToNull()));
    }
    return sb.toString();
  }
  [_parse](s, parameterSeparator, valueSeparator, preserveBackslash) {
    let index = 0;
    function done() {
      return index === s.length;
    }
    dart.fn(done, VoidTobool());
    function skipWS() {
      while (!dart.test(done())) {
        if (s[$_get](index) !== " " && s[$_get](index) !== "\t") return;
        index++;
      }
    }
    dart.fn(skipWS, VoidTovoid());
    function parseValue() {
      let start = index;
      while (!dart.test(done())) {
        if (s[$_get](index) === " " || s[$_get](index) === "\t" || s[$_get](index) == valueSeparator || s[$_get](index) == parameterSeparator) break;
        index++;
      }
      return s[$substring](start, index);
    }
    dart.fn(parseValue, VoidToString());
    function expect(expected) {
      if (dart.test(done()) || s[$_get](index) != expected) {
        dart.throw(new _http.HttpException.new("Failed to parse header value"));
      }
      index++;
    }
    dart.fn(expect, StringTovoid());
    function maybeExpect(expected) {
      if (s[$_get](index) == expected) index++;
    }
    dart.fn(maybeExpect, StringTovoid());
    const parseParameters = (function() {
      let parameters = new (IdentityMapOfString$String()).new();
      this[_parameters] = new (UnmodifiableMapViewOfString$String()).new(parameters);
      function parseParameterName() {
        let start = index;
        while (!dart.test(done())) {
          if (s[$_get](index) === " " || s[$_get](index) === "\t" || s[$_get](index) === "=" || s[$_get](index) == parameterSeparator || s[$_get](index) == valueSeparator) break;
          index++;
        }
        return s[$substring](start, index)[$toLowerCase]();
      }
      dart.fn(parseParameterName, VoidToString());
      function parseParameterValue() {
        if (!dart.test(done()) && s[$_get](index) === "\"") {
          let sb = new core.StringBuffer.new();
          index++;
          while (!dart.test(done())) {
            if (s[$_get](index) === "\\") {
              if (index + 1 === s.length) {
                dart.throw(new _http.HttpException.new("Failed to parse header value"));
              }
              if (dart.test(preserveBackslash) && s[$_get](index + 1) !== "\"") {
                sb.write(s[$_get](index));
              }
              index++;
            } else if (s[$_get](index) === "\"") {
              index++;
              break;
            }
            sb.write(s[$_get](index));
            index++;
          }
          return sb.toString();
        } else {
          let val = parseValue();
          return val === "" ? null : val;
        }
      }
      dart.fn(parseParameterValue, VoidToString());
      while (!dart.test(done())) {
        skipWS();
        if (dart.test(done())) return;
        let name = parseParameterName();
        skipWS();
        if (dart.test(done())) {
          parameters._set(name, null);
          return;
        }
        maybeExpect("=");
        skipWS();
        if (dart.test(done())) {
          parameters._set(name, null);
          return;
        }
        let value = parseParameterValue();
        if (name === "charset" && _http._ContentType.is(this) && value != null) {
          value = value[$toLowerCase]();
        }
        parameters._set(name, value);
        skipWS();
        if (dart.test(done())) return;
        if (s[$_get](index) == valueSeparator) return;
        expect(parameterSeparator);
      }
    }).bind(this);
    dart.fn(parseParameters, VoidTovoid());
    skipWS();
    this[_value$4] = parseValue();
    skipWS();
    if (dart.test(done())) return;
    maybeExpect(parameterSeparator);
    parseParameters();
  }
};
(_http._HeaderValue.new = function(value, parameters) {
  if (value === void 0) value = "";
  if (parameters === void 0) parameters = null;
  this[_parameters] = null;
  this[_unmodifiableParameters] = null;
  this[_value$4] = value;
  if (parameters != null) {
    this[_parameters] = HashMapOfString$String().from(parameters);
  }
}).prototype = _http._HeaderValue.prototype;
dart.addTypeTests(_http._HeaderValue);
_http._HeaderValue[dart.implements] = () => [_http.HeaderValue];
dart.setMethodSignature(_http._HeaderValue, () => ({
  __proto__: dart.getMethods(_http._HeaderValue.__proto__),
  [_ensureParameters]: dart.fnType(dart.void, []),
  [_parse]: dart.fnType(dart.void, [core.String, core.String, core.String, core.bool])
}));
dart.setGetterSignature(_http._HeaderValue, () => ({
  __proto__: dart.getGetters(_http._HeaderValue.__proto__),
  value: core.String,
  parameters: core.Map$(core.String, core.String)
}));
dart.setFieldSignature(_http._HeaderValue, () => ({
  __proto__: dart.getFields(_http._HeaderValue.__proto__),
  [_value$4]: dart.fieldType(core.String),
  [_parameters]: dart.fieldType(MapOfString$String()),
  [_unmodifiableParameters]: dart.fieldType(MapOfString$String())
}));
dart.defineExtensionMethods(_http._HeaderValue, ['toString']);
const _primaryType = Symbol('_primaryType');
const _subType = Symbol('_subType');
_http._ContentType = class _ContentType extends _http._HeaderValue {
  static parse(value) {
    let result = new _http._ContentType.__();
    result[_parse](value, ";", null, false);
    let index = result[_value$4][$indexOf]("/");
    if (index === -1 || index === result[_value$4].length - 1) {
      result[_primaryType] = result[_value$4][$trim]()[$toLowerCase]();
      result[_subType] = "";
    } else {
      result[_primaryType] = result[_value$4][$substring](0, index)[$trim]()[$toLowerCase]();
      result[_subType] = result[_value$4][$substring](index + 1)[$trim]()[$toLowerCase]();
    }
    return result;
  }
  get mimeType() {
    return dart.str(this.primaryType) + "/" + dart.str(this.subType);
  }
  get primaryType() {
    return this[_primaryType];
  }
  get subType() {
    return this[_subType];
  }
  get charset() {
    return this.parameters[$_get]("charset");
  }
};
(_http._ContentType.new = function(primaryType, subType, charset, parameters) {
  this[_primaryType] = primaryType;
  this[_subType] = subType;
  _http._ContentType.__proto__.new.call(this, "");
  if (this[_primaryType] == null) this[_primaryType] = "";
  if (this[_subType] == null) this[_subType] = "";
  this[_value$4] = dart.str(this[_primaryType]) + "/" + dart.str(this[_subType]);
  if (parameters != null) {
    this[_ensureParameters]();
    parameters[$forEach](dart.fn((key, value) => {
      let lowerCaseKey = key[$toLowerCase]();
      if (lowerCaseKey === "charset") {
        value = value[$toLowerCase]();
      }
      this[_parameters][$_set](lowerCaseKey, value);
    }, StringAndStringToNull()));
  }
  if (charset != null) {
    this[_ensureParameters]();
    this[_parameters][$_set]("charset", charset[$toLowerCase]());
  }
}).prototype = _http._ContentType.prototype;
(_http._ContentType.__ = function() {
  this[_primaryType] = "";
  this[_subType] = "";
  _http._ContentType.__proto__.new.call(this);
}).prototype = _http._ContentType.prototype;
dart.addTypeTests(_http._ContentType);
_http._ContentType[dart.implements] = () => [_http.ContentType];
dart.setGetterSignature(_http._ContentType, () => ({
  __proto__: dart.getGetters(_http._ContentType.__proto__),
  mimeType: core.String,
  primaryType: core.String,
  subType: core.String,
  charset: core.String
}));
dart.setFieldSignature(_http._ContentType, () => ({
  __proto__: dart.getFields(_http._ContentType.__proto__),
  [_primaryType]: dart.fieldType(core.String),
  [_subType]: dart.fieldType(core.String)
}));
const _validate = Symbol('_validate');
const _parseSetCookieValue = Symbol('_parseSetCookieValue');
let const$89;
_http._Cookie = class _Cookie extends core.Object {
  [_parseSetCookieValue](s) {
    let index = 0;
    function done() {
      return index === s.length;
    }
    dart.fn(done, VoidTobool());
    function parseName() {
      let start = index;
      while (!dart.test(done())) {
        if (s[$_get](index) === "=") break;
        index++;
      }
      return s[$substring](start, index)[$trim]();
    }
    dart.fn(parseName, VoidToString());
    function parseValue() {
      let start = index;
      while (!dart.test(done())) {
        if (s[$_get](index) === ";") break;
        index++;
      }
      return s[$substring](start, index)[$trim]();
    }
    dart.fn(parseValue, VoidToString());
    function expect(expected) {
      if (dart.test(done())) dart.throw(new _http.HttpException.new("Failed to parse header value [" + dart.str(s) + "]"));
      if (s[$_get](index) != expected) {
        dart.throw(new _http.HttpException.new("Failed to parse header value [" + dart.str(s) + "]"));
      }
      index++;
    }
    dart.fn(expect, StringTovoid());
    const parseAttributes = (function() {
      function parseAttributeName() {
        let start = index;
        while (!dart.test(done())) {
          if (s[$_get](index) === "=" || s[$_get](index) === ";") break;
          index++;
        }
        return s[$substring](start, index)[$trim]()[$toLowerCase]();
      }
      dart.fn(parseAttributeName, VoidToString());
      function parseAttributeValue() {
        let start = index;
        while (!dart.test(done())) {
          if (s[$_get](index) === ";") break;
          index++;
        }
        return s[$substring](start, index)[$trim]()[$toLowerCase]();
      }
      dart.fn(parseAttributeValue, VoidToString());
      while (!dart.test(done())) {
        let name = parseAttributeName();
        let value = "";
        if (!dart.test(done()) && s[$_get](index) === "=") {
          index++;
          value = parseAttributeValue();
        }
        if (name === "expires") {
          this.expires = _http.HttpDate._parseCookieDate(value);
        } else if (name === "max-age") {
          this.maxAge = core.int.parse(value);
        } else if (name === "domain") {
          this.domain = value;
        } else if (name === "path") {
          this.path = value;
        } else if (name === "httponly") {
          this.httpOnly = true;
        } else if (name === "secure") {
          this.secure = true;
        }
        if (!dart.test(done())) index++;
      }
    }).bind(this);
    dart.fn(parseAttributes, VoidTovoid());
    this.name = parseName();
    if (dart.test(done()) || this.name.length === 0) {
      dart.throw(new _http.HttpException.new("Failed to parse header value [" + dart.str(s) + "]"));
    }
    index++;
    this.value = parseValue();
    this[_validate]();
    if (dart.test(done())) return;
    index++;
    parseAttributes();
  }
  toString() {
    let sb = new core.StringBuffer.new();
    sb.write(this.name);
    sb.write("=");
    sb.write(this.value);
    if (this.expires != null) {
      sb.write("; Expires=");
      sb.write(_http.HttpDate.format(this.expires));
    }
    if (this.maxAge != null) {
      sb.write("; Max-Age=");
      sb.write(this.maxAge);
    }
    if (this.domain != null) {
      sb.write("; Domain=");
      sb.write(this.domain);
    }
    if (this.path != null) {
      sb.write("; Path=");
      sb.write(this.path);
    }
    if (dart.test(this.secure)) sb.write("; Secure");
    if (dart.test(this.httpOnly)) sb.write("; HttpOnly");
    return sb.toString();
  }
  [_validate]() {
    let separators = const$89 || (const$89 = dart.constList(["(", ")", "<", ">", "@", ",", ";", ":", "\\", "\"", "/", "[", "]", "?", "=", "{", "}"], core.String));
    for (let i = 0; i < this.name.length; i++) {
      let codeUnit = this.name[$codeUnits][$_get](i);
      if (dart.notNull(codeUnit) <= 32 || dart.notNull(codeUnit) >= 127 || dart.notNull(separators[$indexOf](this.name[$_get](i))) >= 0) {
        dart.throw(new core.FormatException.new("Invalid character in cookie name, code unit: '" + dart.str(codeUnit) + "'"));
      }
    }
    if (this.value[$_get](0) === "\"" && this.value[$_get](this.value.length - 1) === "\"") {
      this.value = this.value[$substring](1, this.value.length - 1);
    }
    for (let i = 0; i < this.value.length; i++) {
      let codeUnit = this.value[$codeUnits][$_get](i);
      if (!(codeUnit === 33 || dart.notNull(codeUnit) >= 35 && dart.notNull(codeUnit) <= 43 || dart.notNull(codeUnit) >= 45 && dart.notNull(codeUnit) <= 58 || dart.notNull(codeUnit) >= 60 && dart.notNull(codeUnit) <= 91 || dart.notNull(codeUnit) >= 93 && dart.notNull(codeUnit) <= 126)) {
        dart.throw(new core.FormatException.new("Invalid character in cookie value, code unit: '" + dart.str(codeUnit) + "'"));
      }
    }
  }
};
(_http._Cookie.new = function(name, value) {
  if (name === void 0) name = null;
  if (value === void 0) value = null;
  this.expires = null;
  this.maxAge = null;
  this.domain = null;
  this.path = null;
  this.httpOnly = false;
  this.secure = false;
  this.name = name;
  this.value = value;
  this.httpOnly = true;
  this[_validate]();
}).prototype = _http._Cookie.prototype;
(_http._Cookie.fromSetCookieValue = function(value) {
  this.name = null;
  this.value = null;
  this.expires = null;
  this.maxAge = null;
  this.domain = null;
  this.path = null;
  this.httpOnly = false;
  this.secure = false;
  this[_parseSetCookieValue](value);
}).prototype = _http._Cookie.prototype;
dart.addTypeTests(_http._Cookie);
_http._Cookie[dart.implements] = () => [_http.Cookie];
dart.setMethodSignature(_http._Cookie, () => ({
  __proto__: dart.getMethods(_http._Cookie.__proto__),
  [_parseSetCookieValue]: dart.fnType(dart.void, [core.String]),
  [_validate]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(_http._Cookie, () => ({
  __proto__: dart.getFields(_http._Cookie.__proto__),
  name: dart.fieldType(core.String),
  value: dart.fieldType(core.String),
  expires: dart.fieldType(core.DateTime),
  maxAge: dart.fieldType(core.int),
  domain: dart.fieldType(core.String),
  path: dart.fieldType(core.String),
  httpOnly: dart.fieldType(core.bool),
  secure: dart.fieldType(core.bool)
}));
dart.defineExtensionMethods(_http._Cookie, ['toString']);
dart.defineLazy(_http, {
  /*_http._nextServiceId*/get _nextServiceId() {
    return 1;
  },
  set _nextServiceId(_) {}
});
const __serviceId$ = Symbol('__serviceId');
const _serviceId$ = Symbol('_serviceId');
const _serviceTypePath$ = Symbol('_serviceTypePath');
const _servicePath$ = Symbol('_servicePath');
const _serviceTypeName$ = Symbol('_serviceTypeName');
const _serviceType$ = Symbol('_serviceType');
_http._ServiceObject = class _ServiceObject extends core.Object {
  get [_serviceId$]() {
    if (this[__serviceId$] === 0) {
      let x = _http._nextServiceId;
      _http._nextServiceId = dart.notNull(x) + 1;
      this[__serviceId$] = x;
    }
    return this[__serviceId$];
  }
  get [_servicePath$]() {
    return dart.str(this[_serviceTypePath$]) + "/" + dart.str(this[_serviceId$]);
  }
  [_serviceType$](ref) {
    if (dart.test(ref)) return "@" + dart.str(this[_serviceTypeName$]);
    return this[_serviceTypeName$];
  }
};
(_http._ServiceObject.new = function() {
  this[__serviceId$] = 0;
}).prototype = _http._ServiceObject.prototype;
dart.addTypeTests(_http._ServiceObject);
dart.setMethodSignature(_http._ServiceObject, () => ({
  __proto__: dart.getMethods(_http._ServiceObject.__proto__),
  [_serviceType$]: dart.fnType(core.String, [core.bool])
}));
dart.setGetterSignature(_http._ServiceObject, () => ({
  __proto__: dart.getGetters(_http._ServiceObject.__proto__),
  [_serviceId$]: core.int,
  [_servicePath$]: core.String
}));
dart.setFieldSignature(_http._ServiceObject, () => ({
  __proto__: dart.getFields(_http._ServiceObject.__proto__),
  [__serviceId$]: dart.fieldType(core.int)
}));
const _buffer$1 = Symbol('_buffer');
const _length$3 = Symbol('_length');
const _grow$0 = Symbol('_grow');
_http._CopyingBytesBuilder = class _CopyingBytesBuilder extends core.Object {
  add(bytes) {
    let bytesLength = bytes[$length];
    if (bytesLength === 0) return;
    let required = dart.notNull(this[_length$3]) + dart.notNull(bytesLength);
    if (dart.notNull(this[_buffer$1][$length]) < required) {
      this[_grow$0](required);
    }
    if (!(dart.notNull(this[_buffer$1][$length]) >= required)) dart.assertFailed();
    if (typed_data.Uint8List.is(bytes)) {
      this[_buffer$1][$setRange](this[_length$3], required, bytes);
    } else {
      for (let i = 0; i < dart.notNull(bytesLength); i++) {
        this[_buffer$1][$_set](dart.notNull(this[_length$3]) + i, bytes[$_get](i));
      }
    }
    this[_length$3] = required;
  }
  addByte(byte) {
    if (this[_buffer$1][$length] == this[_length$3]) {
      this[_grow$0](this[_length$3]);
    }
    if (!(dart.notNull(this[_buffer$1][$length]) > dart.notNull(this[_length$3]))) dart.assertFailed();
    this[_buffer$1][$_set](this[_length$3], byte);
    this[_length$3] = dart.notNull(this[_length$3]) + 1;
  }
  [_grow$0](required) {
    let newSize = dart.notNull(required) * 2;
    if (dart.notNull(newSize) < 1024) {
      newSize = 1024;
    } else {
      newSize = _http._CopyingBytesBuilder._pow2roundup(newSize);
    }
    let newBuffer = typed_data.Uint8List.new(newSize);
    newBuffer[$setRange](0, this[_buffer$1][$length], this[_buffer$1]);
    this[_buffer$1] = newBuffer;
  }
  takeBytes() {
    if (this[_length$3] === 0) return _http._CopyingBytesBuilder._emptyList;
    let buffer = typed_data.Uint8List.view(this[_buffer$1][$buffer], 0, this[_length$3]);
    this.clear();
    return buffer;
  }
  toBytes() {
    if (this[_length$3] === 0) return _http._CopyingBytesBuilder._emptyList;
    return typed_data.Uint8List.fromList(typed_data.Uint8List.view(this[_buffer$1][$buffer], 0, this[_length$3]));
  }
  get length() {
    return this[_length$3];
  }
  get isEmpty() {
    return this[_length$3] === 0;
  }
  get isNotEmpty() {
    return this[_length$3] !== 0;
  }
  clear() {
    this[_length$3] = 0;
    this[_buffer$1] = _http._CopyingBytesBuilder._emptyList;
  }
  static _pow2roundup(x) {
    if (!(dart.notNull(x) > 0)) dart.assertFailed();
    x = dart.notNull(x) - 1;
    x = (dart.notNull(x) | x[$rightShift](1)) >>> 0;
    x = (dart.notNull(x) | x[$rightShift](2)) >>> 0;
    x = (dart.notNull(x) | x[$rightShift](4)) >>> 0;
    x = (dart.notNull(x) | x[$rightShift](8)) >>> 0;
    x = (dart.notNull(x) | x[$rightShift](16)) >>> 0;
    return dart.notNull(x) + 1;
  }
};
(_http._CopyingBytesBuilder.new = function(initialCapacity) {
  if (initialCapacity === void 0) initialCapacity = 0;
  this[_length$3] = 0;
  this[_buffer$1] = dart.notNull(initialCapacity) <= 0 ? _http._CopyingBytesBuilder._emptyList : typed_data.Uint8List.new(_http._CopyingBytesBuilder._pow2roundup(initialCapacity));
}).prototype = _http._CopyingBytesBuilder.prototype;
dart.addTypeTests(_http._CopyingBytesBuilder);
_http._CopyingBytesBuilder[dart.implements] = () => [io.BytesBuilder];
dart.setMethodSignature(_http._CopyingBytesBuilder, () => ({
  __proto__: dart.getMethods(_http._CopyingBytesBuilder.__proto__),
  add: dart.fnType(dart.void, [core.List$(core.int)]),
  addByte: dart.fnType(dart.void, [core.int]),
  [_grow$0]: dart.fnType(dart.void, [core.int]),
  takeBytes: dart.fnType(core.List$(core.int), []),
  toBytes: dart.fnType(core.List$(core.int), []),
  clear: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(_http._CopyingBytesBuilder, () => ({
  __proto__: dart.getGetters(_http._CopyingBytesBuilder.__proto__),
  length: core.int,
  isEmpty: core.bool,
  isNotEmpty: core.bool
}));
dart.setFieldSignature(_http._CopyingBytesBuilder, () => ({
  __proto__: dart.getFields(_http._CopyingBytesBuilder.__proto__),
  [_length$3]: dart.fieldType(core.int),
  [_buffer$1]: dart.fieldType(typed_data.Uint8List)
}));
dart.defineLazy(_http._CopyingBytesBuilder, {
  /*_http._CopyingBytesBuilder._INIT_SIZE*/get _INIT_SIZE() {
    return 1024;
  },
  /*_http._CopyingBytesBuilder._emptyList*/get _emptyList() {
    return typed_data.Uint8List.new(0);
  }
});
dart.defineLazy(_http, {
  /*_http._OUTGOING_BUFFER_SIZE*/get _OUTGOING_BUFFER_SIZE() {
    return 8 * 1024;
  }
});
const _transferLength = Symbol('_transferLength');
const _stream$1 = Symbol('_stream');
const _dataCompleter = Symbol('_dataCompleter');
_http._HttpIncoming = class _HttpIncoming extends async.Stream$(core.List$(core.int)) {
  get transferLength() {
    return this[_transferLength];
  }
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    this.hasSubscriber = true;
    return this[_stream$1].handleError(dart.fn(error => {
      dart.throw(new _http.HttpException.new(core.String._check(dart.dload(error, 'message')), {uri: this.uri}));
    }, dynamicToNull())).listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  get dataDone() {
    return this[_dataCompleter].future;
  }
  close(closing) {
    this.fullBodyRead = true;
    this.hasSubscriber = true;
    this[_dataCompleter].complete(closing);
  }
};
(_http._HttpIncoming.new = function(headers, transferLength, stream) {
  this[_dataCompleter] = async.Completer.new();
  this.fullBodyRead = false;
  this.upgraded = false;
  this.statusCode = null;
  this.reasonPhrase = null;
  this.method = null;
  this.uri = null;
  this.hasSubscriber = false;
  this.headers = headers;
  this[_transferLength] = transferLength;
  this[_stream$1] = stream;
  _http._HttpIncoming.__proto__.new.call(this);
}).prototype = _http._HttpIncoming.prototype;
dart.addTypeTests(_http._HttpIncoming);
dart.setMethodSignature(_http._HttpIncoming, () => ({
  __proto__: dart.getMethods(_http._HttpIncoming.__proto__),
  listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
  close: dart.fnType(dart.void, [core.bool])
}));
dart.setGetterSignature(_http._HttpIncoming, () => ({
  __proto__: dart.getGetters(_http._HttpIncoming.__proto__),
  transferLength: core.int,
  dataDone: async.Future
}));
dart.setFieldSignature(_http._HttpIncoming, () => ({
  __proto__: dart.getFields(_http._HttpIncoming.__proto__),
  [_transferLength]: dart.finalFieldType(core.int),
  [_dataCompleter]: dart.finalFieldType(async.Completer),
  [_stream$1]: dart.fieldType(StreamOfListOfint()),
  fullBodyRead: dart.fieldType(core.bool),
  headers: dart.finalFieldType(_http._HttpHeaders),
  upgraded: dart.fieldType(core.bool),
  statusCode: dart.fieldType(core.int),
  reasonPhrase: dart.fieldType(core.String),
  method: dart.fieldType(core.String),
  uri: dart.fieldType(core.Uri),
  hasSubscriber: dart.fieldType(core.bool)
}));
const _incoming = Symbol('_incoming');
const _cookies = Symbol('_cookies');
_http._HttpInboundMessage = class _HttpInboundMessage extends async.Stream$(core.List$(core.int)) {
  get cookies() {
    if (this[_cookies] != null) return this[_cookies];
    return this[_cookies] = this.headers[_parseCookies]();
  }
  get headers() {
    return this[_incoming].headers;
  }
  get protocolVersion() {
    return this.headers.protocolVersion;
  }
  get contentLength() {
    return this.headers.contentLength;
  }
  get persistentConnection() {
    return this.headers.persistentConnection;
  }
};
(_http._HttpInboundMessage.new = function(incoming) {
  this[_cookies] = null;
  this[_incoming] = incoming;
  _http._HttpInboundMessage.__proto__.new.call(this);
}).prototype = _http._HttpInboundMessage.prototype;
dart.addTypeTests(_http._HttpInboundMessage);
dart.setGetterSignature(_http._HttpInboundMessage, () => ({
  __proto__: dart.getGetters(_http._HttpInboundMessage.__proto__),
  cookies: core.List$(_http.Cookie),
  headers: _http._HttpHeaders,
  protocolVersion: core.String,
  contentLength: core.int,
  persistentConnection: core.bool
}));
dart.setFieldSignature(_http._HttpInboundMessage, () => ({
  __proto__: dart.getFields(_http._HttpInboundMessage.__proto__),
  [_incoming]: dart.finalFieldType(_http._HttpIncoming),
  [_cookies]: dart.fieldType(ListOfCookie())
}));
const _httpServer = Symbol('_httpServer');
const _httpConnection = Symbol('_httpConnection');
const _session = Symbol('_session');
const _requestedUri = Symbol('_requestedUri');
const _sessionManagerInstance = Symbol('_sessionManagerInstance');
const _sessionManager = Symbol('_sessionManager');
const _markSeen = Symbol('_markSeen');
const _socket$ = Symbol('_socket');
const _destroyed = Symbol('_destroyed');
_http._HttpRequest = class _HttpRequest extends _http._HttpInboundMessage {
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    return this[_incoming].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  get uri() {
    return this[_incoming].uri;
  }
  get requestedUri() {
    if (this[_requestedUri] == null) {
      let proto = this.headers._get("x-forwarded-proto");
      let scheme = proto != null ? proto[$first] : io.SecureSocket.is(this[_httpConnection][_socket$]) ? "https" : "http";
      let hostList = this.headers._get("x-forwarded-host");
      let host = null;
      if (hostList != null) {
        host = hostList[$first];
      } else {
        hostList = this.headers._get("host");
        if (hostList != null) {
          host = hostList[$first];
        } else {
          host = dart.str(this[_httpServer].address.host) + ":" + dart.str(this[_httpServer].port);
        }
      }
      this[_requestedUri] = core.Uri.parse(dart.str(scheme) + "://" + dart.str(host) + dart.str(this.uri));
    }
    return this[_requestedUri];
  }
  get method() {
    return this[_incoming].method;
  }
  get session() {
    if (this[_session] != null) {
      if (dart.test(this[_session][_destroyed])) {
        this[_session] = null;
        return this.session;
      }
      return this[_session];
    }
    return this[_session] = this[_httpServer][_sessionManager].createSession();
  }
  get connectionInfo() {
    return this[_httpConnection].connectionInfo;
  }
  get certificate() {
    let socket = this[_httpConnection][_socket$];
    if (io.SecureSocket.is(socket)) return socket.peerCertificate;
    return null;
  }
};
(_http._HttpRequest.new = function(response, _incoming, httpServer, httpConnection) {
  this[_session] = null;
  this[_requestedUri] = null;
  this.response = response;
  this[_httpServer] = httpServer;
  this[_httpConnection] = httpConnection;
  _http._HttpRequest.__proto__.new.call(this, _incoming);
  if (this.headers.protocolVersion === "1.1") {
    let _ = this.response.headers;
    _.chunkedTransferEncoding = true;
    _.persistentConnection = this.headers.persistentConnection;
  }
  if (this[_httpServer][_sessionManagerInstance] != null) {
    let sessionIds = IterableOfString()._check(this.cookies[$where](dart.fn(cookie => cookie.name[$toUpperCase]() === "DARTSESSID", CookieTobool()))[$map](core.String, dart.fn(cookie => cookie.value, CookieToString())));
    for (let sessionId of sessionIds) {
      this[_session] = this[_httpServer][_sessionManager].getSession(sessionId);
      if (this[_session] != null) {
        this[_session][_markSeen]();
        break;
      }
    }
  }
}).prototype = _http._HttpRequest.prototype;
dart.addTypeTests(_http._HttpRequest);
_http._HttpRequest[dart.implements] = () => [_http.HttpRequest];
dart.setMethodSignature(_http._HttpRequest, () => ({
  __proto__: dart.getMethods(_http._HttpRequest.__proto__),
  listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
}));
dart.setGetterSignature(_http._HttpRequest, () => ({
  __proto__: dart.getGetters(_http._HttpRequest.__proto__),
  uri: core.Uri,
  requestedUri: core.Uri,
  method: core.String,
  session: _http.HttpSession,
  connectionInfo: _http.HttpConnectionInfo,
  certificate: io.X509Certificate
}));
dart.setFieldSignature(_http._HttpRequest, () => ({
  __proto__: dart.getFields(_http._HttpRequest.__proto__),
  response: dart.finalFieldType(_http.HttpResponse),
  [_httpServer]: dart.finalFieldType(_http._HttpServer),
  [_httpConnection]: dart.finalFieldType(_http._HttpConnection),
  [_session]: dart.fieldType(_http._HttpSession),
  [_requestedUri]: dart.fieldType(core.Uri)
}));
const _httpRequest = Symbol('_httpRequest');
const _httpClient = Symbol('_httpClient');
const _responseRedirects = Symbol('_responseRedirects');
const _httpClientConnection = Symbol('_httpClientConnection');
const _openUrlFromRequest = Symbol('_openUrlFromRequest');
const _connectionClosed = Symbol('_connectionClosed');
const _shouldAuthenticateProxy = Symbol('_shouldAuthenticateProxy');
const _shouldAuthenticate = Symbol('_shouldAuthenticate');
const _proxy = Symbol('_proxy');
const _findProxyCredentials = Symbol('_findProxyCredentials');
const _findCredentials = Symbol('_findCredentials');
const _removeProxyCredentials = Symbol('_removeProxyCredentials');
const _removeCredentials = Symbol('_removeCredentials');
const _authenticateProxy = Symbol('_authenticateProxy');
const _authenticate = Symbol('_authenticate');
_http._HttpClientResponse = class _HttpClientResponse extends _http._HttpInboundMessage {
  get redirects() {
    return this[_httpRequest][_responseRedirects];
  }
  get statusCode() {
    return this[_incoming].statusCode;
  }
  get reasonPhrase() {
    return this[_incoming].reasonPhrase;
  }
  get certificate() {
    let socket = this[_httpRequest][_httpClientConnection][_socket$];
    if (io.SecureSocket.is(socket)) return socket.peerCertificate;
    dart.throw(new core.UnsupportedError.new("Socket is not a SecureSocket"));
  }
  get cookies() {
    if (this[_cookies] != null) return this[_cookies];
    this[_cookies] = JSArrayOfCookie().of([]);
    let values = this.headers._get(_http.HttpHeaders.setCookieHeader);
    if (values != null) {
      values[$forEach](dart.fn(value => {
        this[_cookies][$add](_http.Cookie.fromSetCookieValue(value));
      }, StringToNull()));
    }
    return this[_cookies];
  }
  get isRedirect() {
    if (this[_httpRequest].method === "GET" || this[_httpRequest].method === "HEAD") {
      return this.statusCode === _internal.HttpStatus.movedPermanently || this.statusCode === _internal.HttpStatus.found || this.statusCode === _internal.HttpStatus.seeOther || this.statusCode === _internal.HttpStatus.temporaryRedirect;
    } else if (this[_httpRequest].method === "POST") {
      return this.statusCode === _internal.HttpStatus.seeOther;
    }
    return false;
  }
  redirect(method, url, followLoops) {
    if (method === void 0) method = null;
    if (url === void 0) url = null;
    if (followLoops === void 0) followLoops = null;
    if (method == null) {
      if (this.statusCode === _internal.HttpStatus.seeOther && this[_httpRequest].method === "POST") {
        method = "GET";
      } else {
        method = this[_httpRequest].method;
      }
    }
    if (url == null) {
      let location = this.headers.value(_http.HttpHeaders.locationHeader);
      if (location == null) {
        dart.throw(new core.StateError.new("Response has no Location header for redirect"));
      }
      url = core.Uri.parse(location);
    }
    if (followLoops !== true) {
      for (let redirect of this.redirects) {
        if (dart.equals(redirect.location, url)) {
          return FutureOfHttpClientResponse().error(new _http.RedirectException.new("Redirect loop detected", this.redirects));
        }
      }
    }
    return FutureOfHttpClientResponse()._check(this[_httpClient][_openUrlFromRequest](method, url, this[_httpRequest]).then(_http.HttpClientResponse, dart.fn(request => {
      let _ = request[_responseRedirects];
      _[$addAll](this.redirects);
      _[$add](new _http._RedirectInfo.new(this.statusCode, method, url));
      return request.close();
    }, _HttpClientRequestToFutureOfHttpClientResponse())));
  }
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    if (dart.test(this[_incoming].upgraded)) {
      this[_httpRequest][_httpClientConnection].destroy();
      return StreamOfListOfint().empty().listen(null, {onDone: onDone});
    }
    let stream = this[_incoming];
    if (dart.test(this[_httpClient].autoUncompress) && this.headers.value(_http.HttpHeaders.contentEncodingHeader) === "gzip") {
      stream = StreamOfListOfint()._check(stream.transform(ListOfint(), io.gzip.decoder));
    }
    return stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  detachSocket() {
    this[_httpClient][_connectionClosed](this[_httpRequest][_httpClientConnection]);
    return this[_httpRequest][_httpClientConnection].detachSocket();
  }
  get connectionInfo() {
    return this[_httpRequest].connectionInfo;
  }
  get [_shouldAuthenticateProxy]() {
    let challenge = this.headers._get(_http.HttpHeaders.proxyAuthenticateHeader);
    return this.statusCode === _internal.HttpStatus.proxyAuthenticationRequired && challenge != null && challenge[$length] === 1;
  }
  get [_shouldAuthenticate]() {
    let challenge = this.headers._get(_http.HttpHeaders.wwwAuthenticateHeader);
    return this.statusCode === _internal.HttpStatus.unauthorized && challenge != null && challenge[$length] === 1;
  }
  [_authenticate](proxyAuth) {
    const retry = (function() {
      return FutureOfHttpClientResponse()._check(this.drain(dart.dynamic).then(_http.HttpClientResponse, dart.fn(_ => FutureOfHttpClientResponse()._check(this[_httpClient][_openUrlFromRequest](this[_httpRequest].method, this[_httpRequest].uri, this[_httpRequest]).then(_http.HttpClientResponse, dart.fn(request => request.close(), _HttpClientRequestToFutureOfHttpClientResponse()))), dynamicToFutureOfHttpClientResponse())));
    }).bind(this);
    dart.fn(retry, VoidToFutureOfHttpClientResponse());
    const authChallenge = (function() {
      return dart.test(proxyAuth) ? this.headers._get(_http.HttpHeaders.proxyAuthenticateHeader) : this.headers._get(_http.HttpHeaders.wwwAuthenticateHeader);
    }).bind(this);
    dart.fn(authChallenge, VoidToListOfString());
    const findCredentials = (function(scheme) {
      return dart.test(proxyAuth) ? this[_httpClient][_findProxyCredentials](this[_httpRequest][_proxy], scheme) : this[_httpClient][_findCredentials](this[_httpRequest].uri, scheme);
    }).bind(this);
    dart.fn(findCredentials, _AuthenticationSchemeTo_Credentials());
    const removeCredentials = (function(cr) {
      if (dart.test(proxyAuth)) {
        this[_httpClient][_removeProxyCredentials](cr);
      } else {
        this[_httpClient][_removeCredentials](cr);
      }
    }).bind(this);
    dart.fn(removeCredentials, _CredentialsTovoid());
    const requestAuthentication = (function(scheme, realm) {
      if (dart.test(proxyAuth)) {
        if (this[_httpClient][_authenticateProxy] == null) {
          return async.Future.value(false);
        }
        let proxy = this[_httpRequest][_proxy];
        return async.Future._check(dart.dsend(this[_httpClient], _authenticateProxy, [proxy.host, proxy.port, dart.toString(scheme), realm]));
      } else {
        if (this[_httpClient][_authenticate] == null) {
          return async.Future.value(false);
        }
        return async.Future._check(dart.dsend(this[_httpClient], _authenticate, [this[_httpRequest].uri, dart.toString(scheme), realm]));
      }
    }).bind(this);
    dart.fn(requestAuthentication, _AuthenticationSchemeAndStringToFuture());
    let challenge = authChallenge();
    if (!(challenge != null || challenge[$length] === 1)) dart.assertFailed();
    let header = _http._HeaderValue.parse(challenge[$_get](0), {parameterSeparator: ","});
    let scheme = _http._AuthenticationScheme.fromString(header.value);
    let realm = header.parameters[$_get]("realm");
    let cr = findCredentials(scheme);
    if (cr != null) {
      if (dart.equals(cr.scheme, _http._AuthenticationScheme.BASIC) && !dart.test(cr.used)) {
        return retry();
      }
      if (dart.equals(cr.scheme, _http._AuthenticationScheme.DIGEST) && (header.parameters[$_get]("algorithm") == null || header.parameters[$_get]("algorithm")[$toLowerCase]() === "md5")) {
        if (cr.nonce == null || cr.nonce == header.parameters[$_get]("nonce")) {
          if (cr.nonce == null) {
            let _ = cr;
            _.nonce = header.parameters[$_get]("nonce");
            _.algorithm = "MD5";
            _.qop = header.parameters[$_get]("qop");
            _.nonceCount = 0;
          }
          return retry();
        } else if (header.parameters[$_get]("stale") != null && header.parameters[$_get]("stale")[$toLowerCase]() === "true") {
          cr.nonce = header.parameters[$_get]("nonce");
          return retry();
        }
      }
    }
    if (cr != null) {
      removeCredentials(cr);
      cr = null;
    }
    return FutureOfHttpClientResponse()._check(requestAuthentication(scheme, realm).then(_http.HttpClientResponse, dart.fn(credsAvailable => {
      if (dart.dtest(credsAvailable)) {
        cr = this[_httpClient][_findCredentials](this[_httpRequest].uri, scheme);
        return retry();
      } else {
        return this;
      }
    }, dynamicToFutureOrOfHttpClientResponse())));
  }
};
(_http._HttpClientResponse.new = function(_incoming, httpRequest, httpClient) {
  this[_httpRequest] = httpRequest;
  this[_httpClient] = httpClient;
  _http._HttpClientResponse.__proto__.new.call(this, _incoming);
  _incoming.uri = this[_httpRequest].uri;
}).prototype = _http._HttpClientResponse.prototype;
dart.addTypeTests(_http._HttpClientResponse);
_http._HttpClientResponse[dart.implements] = () => [_http.HttpClientResponse];
dart.setMethodSignature(_http._HttpClientResponse, () => ({
  __proto__: dart.getMethods(_http._HttpClientResponse.__proto__),
  redirect: dart.fnType(async.Future$(_http.HttpClientResponse), [], [core.String, core.Uri, core.bool]),
  listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
  detachSocket: dart.fnType(async.Future$(io.Socket), []),
  [_authenticate]: dart.fnType(async.Future$(_http.HttpClientResponse), [core.bool])
}));
dart.setGetterSignature(_http._HttpClientResponse, () => ({
  __proto__: dart.getGetters(_http._HttpClientResponse.__proto__),
  redirects: core.List$(_http.RedirectInfo),
  statusCode: core.int,
  reasonPhrase: core.String,
  certificate: io.X509Certificate,
  isRedirect: core.bool,
  connectionInfo: _http.HttpConnectionInfo,
  [_shouldAuthenticateProxy]: core.bool,
  [_shouldAuthenticate]: core.bool
}));
dart.setFieldSignature(_http._HttpClientResponse, () => ({
  __proto__: dart.getFields(_http._HttpClientResponse.__proto__),
  [_httpClient]: dart.finalFieldType(_http._HttpClient),
  [_httpRequest]: dart.finalFieldType(_http._HttpClientRequest)
}));
const _target$1 = Symbol('_target');
const _doneCompleter$ = Symbol('_doneCompleter');
const _controllerInstance$ = Symbol('_controllerInstance');
const _controllerCompleter$ = Symbol('_controllerCompleter');
const _isClosed$0 = Symbol('_isClosed');
const _isBound$ = Symbol('_isBound');
const _hasError$0 = Symbol('_hasError');
const _controller$1 = Symbol('_controller');
const _closeTarget$ = Symbol('_closeTarget');
const _completeDoneValue$ = Symbol('_completeDoneValue');
const _completeDoneError$ = Symbol('_completeDoneError');
const _is__StreamSinkImpl_default$ = Symbol('_is__StreamSinkImpl_default');
_http._StreamSinkImpl$ = dart.generic(T => {
  let StreamOfT = () => (StreamOfT = dart.constFn(async.Stream$(T)))();
  let StreamControllerOfT = () => (StreamControllerOfT = dart.constFn(async.StreamController$(T)))();
  let StreamSinkOfT = () => (StreamSinkOfT = dart.constFn(async.StreamSink$(T)))();
  let StreamConsumerOfT = () => (StreamConsumerOfT = dart.constFn(async.StreamConsumer$(T)))();
  class _StreamSinkImpl extends core.Object {
    add(data) {
      T._check(data);
      if (dart.test(this[_isClosed$0])) {
        dart.throw(new core.StateError.new("StreamSink is closed"));
      }
      this[_controller$1].add(data);
    }
    addError(error, stackTrace) {
      if (stackTrace === void 0) stackTrace = null;
      if (dart.test(this[_isClosed$0])) {
        dart.throw(new core.StateError.new("StreamSink is closed"));
      }
      this[_controller$1].addError(error, stackTrace);
    }
    addStream(stream) {
      StreamOfT()._check(stream);
      if (dart.test(this[_isBound$])) {
        dart.throw(new core.StateError.new("StreamSink is already bound to a stream"));
      }
      this[_isBound$] = true;
      if (dart.test(this[_hasError$0])) return this.done;
      const targetAddStream = (function() {
        return this[_target$1].addStream(stream).whenComplete(dart.fn(() => {
          this[_isBound$] = false;
        }, VoidToNull()));
      }).bind(this);
      dart.fn(targetAddStream, VoidToFuture());
      if (this[_controllerInstance$] == null) return targetAddStream();
      let future = this[_controllerCompleter$].future;
      this[_controllerInstance$].close();
      return future.then(dart.dynamic, dart.fn(_ => targetAddStream(), dynamicToFuture()));
    }
    flush() {
      if (dart.test(this[_isBound$])) {
        dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
      }
      if (this[_controllerInstance$] == null) return async.Future.value(this);
      this[_isBound$] = true;
      let future = this[_controllerCompleter$].future;
      this[_controllerInstance$].close();
      return future.whenComplete(dart.fn(() => {
        this[_isBound$] = false;
      }, VoidToNull()));
    }
    close() {
      if (dart.test(this[_isBound$])) {
        dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
      }
      if (!dart.test(this[_isClosed$0])) {
        this[_isClosed$0] = true;
        if (this[_controllerInstance$] != null) {
          this[_controllerInstance$].close();
        } else {
          this[_closeTarget$]();
        }
      }
      return this.done;
    }
    [_closeTarget$]() {
      this[_target$1].close().then(dart.void, dart.bind(this, _completeDoneValue$), {onError: dart.bind(this, _completeDoneError$)});
    }
    get done() {
      return this[_doneCompleter$].future;
    }
    [_completeDoneValue$](value) {
      if (!dart.test(this[_doneCompleter$].isCompleted)) {
        this[_doneCompleter$].complete(value);
      }
    }
    [_completeDoneError$](error, stackTrace) {
      if (!dart.test(this[_doneCompleter$].isCompleted)) {
        this[_hasError$0] = true;
        this[_doneCompleter$].completeError(error, stackTrace);
      }
    }
    get [_controller$1]() {
      if (dart.test(this[_isBound$])) {
        dart.throw(new core.StateError.new("StreamSink is bound to a stream"));
      }
      if (dart.test(this[_isClosed$0])) {
        dart.throw(new core.StateError.new("StreamSink is closed"));
      }
      if (this[_controllerInstance$] == null) {
        this[_controllerInstance$] = StreamControllerOfT().new({sync: true});
        this[_controllerCompleter$] = async.Completer.new();
        FutureOfNull()._check(this[_target$1].addStream(this[_controller$1].stream).then(core.Null, dart.fn(_ => {
          if (dart.test(this[_isBound$])) {
            this[_controllerCompleter$].complete(this);
            this[_controllerCompleter$] = null;
            this[_controllerInstance$] = null;
          } else {
            this[_closeTarget$]();
          }
        }, dynamicToNull()), {onError: dart.fn((error, stackTrace) => {
            if (dart.test(this[_isBound$])) {
              this[_controllerCompleter$].completeError(error, core.StackTrace._check(stackTrace));
              this[_controllerCompleter$] = null;
              this[_controllerInstance$] = null;
            } else {
              this[_completeDoneError$](error, core.StackTrace._check(stackTrace));
            }
          }, dynamicAnddynamicToNull())}));
      }
      return this[_controllerInstance$];
    }
  }
  (_StreamSinkImpl.new = function(target) {
    this[_doneCompleter$] = async.Completer.new();
    this[_controllerInstance$] = null;
    this[_controllerCompleter$] = null;
    this[_isClosed$0] = false;
    this[_isBound$] = false;
    this[_hasError$0] = false;
    this[_target$1] = target;
  }).prototype = _StreamSinkImpl.prototype;
  dart.addTypeTests(_StreamSinkImpl);
  _StreamSinkImpl.prototype[_is__StreamSinkImpl_default$] = true;
  _StreamSinkImpl[dart.implements] = () => [StreamSinkOfT()];
  dart.setMethodSignature(_StreamSinkImpl, () => ({
    __proto__: dart.getMethods(_StreamSinkImpl.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
    addStream: dart.fnType(async.Future, [core.Object]),
    flush: dart.fnType(async.Future, []),
    close: dart.fnType(async.Future, []),
    [_closeTarget$]: dart.fnType(dart.void, []),
    [_completeDoneValue$]: dart.fnType(dart.void, [dart.dynamic]),
    [_completeDoneError$]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace])
  }));
  dart.setGetterSignature(_StreamSinkImpl, () => ({
    __proto__: dart.getGetters(_StreamSinkImpl.__proto__),
    done: async.Future,
    [_controller$1]: async.StreamController$(T)
  }));
  dart.setFieldSignature(_StreamSinkImpl, () => ({
    __proto__: dart.getFields(_StreamSinkImpl.__proto__),
    [_target$1]: dart.finalFieldType(StreamConsumerOfT()),
    [_doneCompleter$]: dart.finalFieldType(async.Completer),
    [_controllerInstance$]: dart.fieldType(StreamControllerOfT()),
    [_controllerCompleter$]: dart.fieldType(async.Completer),
    [_isClosed$0]: dart.fieldType(core.bool),
    [_isBound$]: dart.fieldType(core.bool),
    [_hasError$0]: dart.fieldType(core.bool)
  }));
  return _StreamSinkImpl;
});
_http._StreamSinkImpl = _http._StreamSinkImpl$();
dart.addTypeTests(_http._StreamSinkImpl, _is__StreamSinkImpl_default$);
const _encoding$ = Symbol('_encoding');
const _encodingMutable$ = Symbol('_encodingMutable');
_http._IOSinkImpl = class _IOSinkImpl extends _http._StreamSinkImpl$(core.List$(core.int)) {
  get encoding() {
    return this[_encoding$];
  }
  set encoding(value) {
    if (!dart.test(this[_encodingMutable$])) {
      dart.throw(new core.StateError.new("IOSink encoding is not mutable"));
    }
    this[_encoding$] = value;
  }
  write(obj) {
    let string = dart.str(obj);
    if (string[$isEmpty]) return;
    this.add(this[_encoding$].encode(string));
  }
  writeAll(objects, separator) {
    if (separator === void 0) separator = "";
    let iterator = objects[$iterator];
    if (!dart.test(iterator.moveNext())) return;
    if (separator[$isEmpty]) {
      do {
        this.write(iterator.current);
      } while (dart.test(iterator.moveNext()));
    } else {
      this.write(iterator.current);
      while (dart.test(iterator.moveNext())) {
        this.write(separator);
        this.write(iterator.current);
      }
    }
  }
  writeln(object) {
    if (object === void 0) object = "";
    this.write(object);
    this.write("\n");
  }
  writeCharCode(charCode) {
    this.write(core.String.fromCharCode(charCode));
  }
};
(_http._IOSinkImpl.new = function(target, encoding) {
  this[_encodingMutable$] = true;
  this[_encoding$] = encoding;
  _http._IOSinkImpl.__proto__.new.call(this, target);
}).prototype = _http._IOSinkImpl.prototype;
dart.addTypeTests(_http._IOSinkImpl);
_http._IOSinkImpl[dart.implements] = () => [io.IOSink];
dart.setMethodSignature(_http._IOSinkImpl, () => ({
  __proto__: dart.getMethods(_http._IOSinkImpl.__proto__),
  write: dart.fnType(dart.void, [core.Object]),
  writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
  writeln: dart.fnType(dart.void, [], [core.Object]),
  writeCharCode: dart.fnType(dart.void, [core.int])
}));
dart.setGetterSignature(_http._IOSinkImpl, () => ({
  __proto__: dart.getGetters(_http._IOSinkImpl.__proto__),
  encoding: convert.Encoding
}));
dart.setSetterSignature(_http._IOSinkImpl, () => ({
  __proto__: dart.getSetters(_http._IOSinkImpl.__proto__),
  encoding: convert.Encoding
}));
dart.setFieldSignature(_http._IOSinkImpl, () => ({
  __proto__: dart.getFields(_http._IOSinkImpl.__proto__),
  [_encoding$]: dart.fieldType(convert.Encoding),
  [_encodingMutable$]: dart.fieldType(core.bool)
}));
const _uri$ = Symbol('_uri');
const _outgoing = Symbol('_outgoing');
const _encodingSet = Symbol('_encodingSet');
const _bufferOutput = Symbol('_bufferOutput');
const _isConnectionClosed = Symbol('_isConnectionClosed');
const _is__HttpOutboundMessage_default = Symbol('_is__HttpOutboundMessage_default');
_http._HttpOutboundMessage$ = dart.generic(T => {
  class _HttpOutboundMessage extends _http._IOSinkImpl {
    get contentLength() {
      return this.headers.contentLength;
    }
    set contentLength(contentLength) {
      this.headers.contentLength = contentLength;
    }
    get persistentConnection() {
      return this.headers.persistentConnection;
    }
    set persistentConnection(p) {
      this.headers.persistentConnection = p;
    }
    get bufferOutput() {
      return this[_bufferOutput];
    }
    set bufferOutput(bufferOutput) {
      if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Header already sent"));
      this[_bufferOutput] = bufferOutput;
    }
    get encoding() {
      if (dart.test(this[_encodingSet]) && dart.test(this[_outgoing].headersWritten)) {
        return this[_encoding$];
      }
      let charset = null;
      if (this.headers.contentType != null && this.headers.contentType.charset != null) {
        charset = this.headers.contentType.charset;
      } else {
        charset = "iso-8859-1";
      }
      return convert.Encoding.getByName(core.String._check(charset));
    }
    set encoding(value) {
      super.encoding = value;
    }
    add(data) {
      ListOfint()._check(data);
      if (data[$length] === 0) return;
      super.add(data);
    }
    write(obj) {
      if (!dart.test(this[_encodingSet])) {
        this[_encoding$] = this.encoding;
        this[_encodingSet] = true;
      }
      super.write(obj);
    }
    get [_isConnectionClosed]() {
      return false;
    }
  }
  (_HttpOutboundMessage.new = function(uri, protocolVersion, outgoing, opts) {
    let initialHeaders = opts && 'initialHeaders' in opts ? opts.initialHeaders : null;
    this[_encodingSet] = false;
    this[_bufferOutput] = true;
    this[_uri$] = uri;
    this.headers = new _http._HttpHeaders.new(protocolVersion, {defaultPortForScheme: uri.scheme === "https" ? _http.HttpClient.defaultHttpsPort : _http.HttpClient.defaultHttpPort, initialHeaders: initialHeaders});
    this[_outgoing] = outgoing;
    _HttpOutboundMessage.__proto__.new.call(this, outgoing, null);
    this[_outgoing].outbound = this;
    this[_encodingMutable$] = false;
  }).prototype = _HttpOutboundMessage.prototype;
  dart.addTypeTests(_HttpOutboundMessage);
  _HttpOutboundMessage.prototype[_is__HttpOutboundMessage_default] = true;
  dart.setMethodSignature(_HttpOutboundMessage, () => ({
    __proto__: dart.getMethods(_HttpOutboundMessage.__proto__),
    add: dart.fnType(dart.void, [core.Object]),
    write: dart.fnType(dart.void, [core.Object])
  }));
  dart.setGetterSignature(_HttpOutboundMessage, () => ({
    __proto__: dart.getGetters(_HttpOutboundMessage.__proto__),
    contentLength: core.int,
    persistentConnection: core.bool,
    bufferOutput: core.bool,
    encoding: convert.Encoding,
    [_isConnectionClosed]: core.bool
  }));
  dart.setSetterSignature(_HttpOutboundMessage, () => ({
    __proto__: dart.getSetters(_HttpOutboundMessage.__proto__),
    contentLength: core.int,
    persistentConnection: core.bool,
    bufferOutput: core.bool
  }));
  dart.setFieldSignature(_HttpOutboundMessage, () => ({
    __proto__: dart.getFields(_HttpOutboundMessage.__proto__),
    [_encodingSet]: dart.fieldType(core.bool),
    [_bufferOutput]: dart.fieldType(core.bool),
    [_uri$]: dart.finalFieldType(core.Uri),
    [_outgoing]: dart.finalFieldType(_http._HttpOutgoing),
    headers: dart.finalFieldType(_http._HttpHeaders)
  }));
  return _HttpOutboundMessage;
});
_http._HttpOutboundMessage = _http._HttpOutboundMessage$();
dart.addTypeTests(_http._HttpOutboundMessage, _is__HttpOutboundMessage_default);
const _statusCode = Symbol('_statusCode');
const _reasonPhrase = Symbol('_reasonPhrase');
const _deadline = Symbol('_deadline');
const _deadlineTimer = Symbol('_deadlineTimer');
const _isClosing = Symbol('_isClosing');
const _findReasonPhrase = Symbol('_findReasonPhrase');
const _isNew = Symbol('_isNew');
const _writeHeader = Symbol('_writeHeader');
_http._HttpResponse = class _HttpResponse extends _http._HttpOutboundMessage$(_http.HttpResponse) {
  get [_isConnectionClosed]() {
    return this[_httpRequest][_httpConnection][_isClosing];
  }
  get cookies() {
    if (this[_cookies] == null) this[_cookies] = JSArrayOfCookie().of([]);
    return this[_cookies];
  }
  get statusCode() {
    return this[_statusCode];
  }
  set statusCode(statusCode) {
    if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Header already sent"));
    this[_statusCode] = statusCode;
  }
  get reasonPhrase() {
    return this[_findReasonPhrase](this.statusCode);
  }
  set reasonPhrase(reasonPhrase) {
    if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Header already sent"));
    this[_reasonPhrase] = reasonPhrase;
  }
  redirect(location, opts) {
    let status = opts && 'status' in opts ? opts.status : _internal.HttpStatus.movedTemporarily;
    if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Header already sent"));
    this.statusCode = status;
    this.headers.set("location", dart.toString(location));
    return this.close();
  }
  detachSocket(opts) {
    let writeHeaders = opts && 'writeHeaders' in opts ? opts.writeHeaders : true;
    if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Headers already sent"));
    this.deadline = null;
    let future = this[_httpRequest][_httpConnection].detachSocket();
    if (dart.test(writeHeaders)) {
      let headersFuture = this[_outgoing].writeHeaders({drainRequest: false, setOutgoing: false});
      if (!(headersFuture == null)) dart.assertFailed();
    } else {
      this[_outgoing].headersWritten = true;
    }
    this.close();
    this.done.catchError(dart.fn(_ => {
    }, dynamicToNull()));
    return future;
  }
  get connectionInfo() {
    return this[_httpRequest].connectionInfo;
  }
  get deadline() {
    return this[_deadline];
  }
  set deadline(d) {
    if (this[_deadlineTimer] != null) this[_deadlineTimer].cancel();
    this[_deadline] = d;
    if (this[_deadline] == null) return;
    this[_deadlineTimer] = async.Timer.new(this[_deadline], dart.fn(() => {
      this[_httpRequest][_httpConnection].destroy();
    }, VoidToNull()));
  }
  [_writeHeader]() {
    let buffer = new _http._CopyingBytesBuilder.new(8192);
    if (this.headers.protocolVersion === "1.1") {
      buffer.add(_http._Const.HTTP11);
    } else {
      buffer.add(_http._Const.HTTP10);
    }
    buffer.addByte(_http._CharCode.SP);
    buffer.add(dart.toString(this.statusCode)[$codeUnits]);
    buffer.addByte(_http._CharCode.SP);
    buffer.add(this.reasonPhrase[$codeUnits]);
    buffer.addByte(_http._CharCode.CR);
    buffer.addByte(_http._CharCode.LF);
    let session = this[_httpRequest][_session];
    if (session != null && !dart.test(session[_destroyed])) {
      session[_isNew] = false;
      let found = false;
      for (let i = 0; i < dart.notNull(this.cookies[$length]); i++) {
        if (this.cookies[$_get](i).name[$toUpperCase]() === "DARTSESSID") {
          let _ = this.cookies[$_get](i);
          _.value = session.id;
          _.httpOnly = true;
          _.path = "/";
          found = true;
        }
      }
      if (!found) {
        let cookie = _http.Cookie.new("DARTSESSID", session.id);
        this.cookies[$add]((() => {
          cookie.httpOnly = true;
          cookie.path = "/";
          return cookie;
        })());
      }
    }
    if (this[_cookies] != null) {
      this[_cookies][$forEach](dart.fn(cookie => {
        this.headers.add(_http.HttpHeaders.setCookieHeader, cookie);
      }, CookieToNull()));
    }
    this.headers[_finalize]();
    this.headers[_build](buffer);
    buffer.addByte(_http._CharCode.CR);
    buffer.addByte(_http._CharCode.LF);
    let headerBytes = typed_data.Uint8List._check(buffer.takeBytes());
    this[_outgoing].setHeader(headerBytes, headerBytes[$length]);
  }
  [_findReasonPhrase](statusCode) {
    if (this[_reasonPhrase] != null) {
      return this[_reasonPhrase];
    }
    switch (statusCode) {
      case _internal.HttpStatus.continue__:
      {
        return "Continue";
      }
      case _internal.HttpStatus.switchingProtocols:
      {
        return "Switching Protocols";
      }
      case _internal.HttpStatus.ok:
      {
        return "OK";
      }
      case _internal.HttpStatus.created:
      {
        return "Created";
      }
      case _internal.HttpStatus.accepted:
      {
        return "Accepted";
      }
      case _internal.HttpStatus.nonAuthoritativeInformation:
      {
        return "Non-Authoritative Information";
      }
      case _internal.HttpStatus.noContent:
      {
        return "No Content";
      }
      case _internal.HttpStatus.resetContent:
      {
        return "Reset Content";
      }
      case _internal.HttpStatus.partialContent:
      {
        return "Partial Content";
      }
      case _internal.HttpStatus.multipleChoices:
      {
        return "Multiple Choices";
      }
      case _internal.HttpStatus.movedPermanently:
      {
        return "Moved Permanently";
      }
      case _internal.HttpStatus.found:
      {
        return "Found";
      }
      case _internal.HttpStatus.seeOther:
      {
        return "See Other";
      }
      case _internal.HttpStatus.notModified:
      {
        return "Not Modified";
      }
      case _internal.HttpStatus.useProxy:
      {
        return "Use Proxy";
      }
      case _internal.HttpStatus.temporaryRedirect:
      {
        return "Temporary Redirect";
      }
      case _internal.HttpStatus.badRequest:
      {
        return "Bad Request";
      }
      case _internal.HttpStatus.unauthorized:
      {
        return "Unauthorized";
      }
      case _internal.HttpStatus.paymentRequired:
      {
        return "Payment Required";
      }
      case _internal.HttpStatus.forbidden:
      {
        return "Forbidden";
      }
      case _internal.HttpStatus.notFound:
      {
        return "Not Found";
      }
      case _internal.HttpStatus.methodNotAllowed:
      {
        return "Method Not Allowed";
      }
      case _internal.HttpStatus.notAcceptable:
      {
        return "Not Acceptable";
      }
      case _internal.HttpStatus.proxyAuthenticationRequired:
      {
        return "Proxy Authentication Required";
      }
      case _internal.HttpStatus.requestTimeout:
      {
        return "Request Time-out";
      }
      case _internal.HttpStatus.conflict:
      {
        return "Conflict";
      }
      case _internal.HttpStatus.gone:
      {
        return "Gone";
      }
      case _internal.HttpStatus.lengthRequired:
      {
        return "Length Required";
      }
      case _internal.HttpStatus.preconditionFailed:
      {
        return "Precondition Failed";
      }
      case _internal.HttpStatus.requestEntityTooLarge:
      {
        return "Request Entity Too Large";
      }
      case _internal.HttpStatus.requestUriTooLong:
      {
        return "Request-URI Too Long";
      }
      case _internal.HttpStatus.unsupportedMediaType:
      {
        return "Unsupported Media Type";
      }
      case _internal.HttpStatus.requestedRangeNotSatisfiable:
      {
        return "Requested range not satisfiable";
      }
      case _internal.HttpStatus.expectationFailed:
      {
        return "Expectation Failed";
      }
      case _internal.HttpStatus.internalServerError:
      {
        return "Internal Server Error";
      }
      case _internal.HttpStatus.notImplemented:
      {
        return "Not Implemented";
      }
      case _internal.HttpStatus.badGateway:
      {
        return "Bad Gateway";
      }
      case _internal.HttpStatus.serviceUnavailable:
      {
        return "Service Unavailable";
      }
      case _internal.HttpStatus.gatewayTimeout:
      {
        return "Gateway Time-out";
      }
      case _internal.HttpStatus.httpVersionNotSupported:
      {
        return "Http Version not supported";
      }
      default:
      {
        return "Status " + dart.str(statusCode);
      }
    }
  }
};
(_http._HttpResponse.new = function(uri, protocolVersion, outgoing, defaultHeaders, serverHeader) {
  this[_statusCode] = 200;
  this[_reasonPhrase] = null;
  this[_cookies] = null;
  this[_httpRequest] = null;
  this[_deadline] = null;
  this[_deadlineTimer] = null;
  _http._HttpResponse.__proto__.new.call(this, uri, protocolVersion, outgoing, {initialHeaders: _http._HttpHeaders._check(defaultHeaders)});
  if (serverHeader != null) this.headers.set("server", serverHeader);
}).prototype = _http._HttpResponse.prototype;
dart.addTypeTests(_http._HttpResponse);
_http._HttpResponse[dart.implements] = () => [_http.HttpResponse];
dart.setMethodSignature(_http._HttpResponse, () => ({
  __proto__: dart.getMethods(_http._HttpResponse.__proto__),
  redirect: dart.fnType(async.Future, [core.Uri], {status: core.int}),
  detachSocket: dart.fnType(async.Future$(io.Socket), [], {writeHeaders: core.bool}),
  [_writeHeader]: dart.fnType(dart.void, []),
  [_findReasonPhrase]: dart.fnType(core.String, [core.int])
}));
dart.setGetterSignature(_http._HttpResponse, () => ({
  __proto__: dart.getGetters(_http._HttpResponse.__proto__),
  [_isConnectionClosed]: core.bool,
  cookies: core.List$(_http.Cookie),
  statusCode: core.int,
  reasonPhrase: core.String,
  connectionInfo: _http.HttpConnectionInfo,
  deadline: core.Duration
}));
dart.setSetterSignature(_http._HttpResponse, () => ({
  __proto__: dart.getSetters(_http._HttpResponse.__proto__),
  statusCode: core.int,
  reasonPhrase: core.String,
  deadline: core.Duration
}));
dart.setFieldSignature(_http._HttpResponse, () => ({
  __proto__: dart.getFields(_http._HttpResponse.__proto__),
  [_statusCode]: dart.fieldType(core.int),
  [_reasonPhrase]: dart.fieldType(core.String),
  [_cookies]: dart.fieldType(ListOfCookie()),
  [_httpRequest]: dart.fieldType(_http._HttpRequest),
  [_deadline]: dart.fieldType(core.Duration),
  [_deadlineTimer]: dart.fieldType(async.Timer)
}));
const _responseCompleter = Symbol('_responseCompleter');
const _response = Symbol('_response');
const _followRedirects = Symbol('_followRedirects');
const _maxRedirects = Symbol('_maxRedirects');
const _onIncoming = Symbol('_onIncoming');
const _onError$ = Symbol('_onError');
const _proxyTunnel = Symbol('_proxyTunnel');
const _requestUri = Symbol('_requestUri');
_http._HttpClientRequest = class _HttpClientRequest extends _http._HttpOutboundMessage$(_http.HttpClientResponse) {
  get done() {
    if (this[_response] == null) {
      this[_response] = FutureOfHttpClientResponse()._check(async.Future.wait(dart.dynamic, JSArrayOfFuture().of([this[_responseCompleter].future, super.done]), {eagerError: true}).then(_http.HttpClientResponse, dart.fn(list => FutureOrOfHttpClientResponse()._check(list[$_get](0)), ListToFutureOrOfHttpClientResponse())));
    }
    return this[_response];
  }
  close() {
    super.close();
    return this.done;
  }
  get maxRedirects() {
    return this[_maxRedirects];
  }
  set maxRedirects(maxRedirects) {
    if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Request already sent"));
    this[_maxRedirects] = maxRedirects;
  }
  get followRedirects() {
    return this[_followRedirects];
  }
  set followRedirects(followRedirects) {
    if (dart.test(this[_outgoing].headersWritten)) dart.throw(new core.StateError.new("Request already sent"));
    this[_followRedirects] = followRedirects;
  }
  get connectionInfo() {
    return this[_httpClientConnection].connectionInfo;
  }
  [_onIncoming](incoming) {
    let response = new _http._HttpClientResponse.new(incoming, this, this[_httpClient]);
    let future = null;
    if (dart.test(this.followRedirects) && dart.test(response.isRedirect)) {
      if (dart.notNull(response.redirects[$length]) < dart.notNull(this.maxRedirects)) {
        future = FutureOfHttpClientResponse()._check(response.drain(dart.dynamic).then(_http.HttpClientResponse, dart.fn(_ => response.redirect(), dynamicToFutureOfHttpClientResponse())));
      } else {
        future = FutureOfHttpClientResponse()._check(response.drain(dart.dynamic).then(_http.HttpClientResponse, dart.fn(_ => FutureOfHttpClientResponse().error(new _http.RedirectException.new("Redirect limit exceeded", response.redirects)), dynamicToFutureOfHttpClientResponse())));
      }
    } else if (dart.test(response[_shouldAuthenticateProxy])) {
      future = response[_authenticate](true);
    } else if (dart.test(response[_shouldAuthenticate])) {
      future = response[_authenticate](false);
    } else {
      future = FutureOfHttpClientResponse().value(response);
    }
    future.then(dart.void, dart.fn(v => this[_responseCompleter].complete(v), HttpClientResponseTovoid()), {onError: dart.bind(this[_responseCompleter], 'completeError')});
  }
  [_onError$](error, stackTrace) {
    this[_responseCompleter].completeError(error, stackTrace);
  }
  [_requestUri]() {
    const uriStartingFromPath = (function() {
      let result = this.uri.path;
      if (result[$isEmpty]) result = "/";
      if (dart.test(this.uri.hasQuery)) {
        result = dart.str(result) + "?" + dart.str(this.uri.query);
      }
      return result;
    }).bind(this);
    dart.fn(uriStartingFromPath, VoidToString());
    if (dart.test(this[_proxy].isDirect)) {
      return uriStartingFromPath();
    } else {
      if (this.method === "CONNECT") {
        return dart.str(this.uri.host) + ":" + dart.str(this.uri.port);
      } else {
        if (dart.test(this[_httpClientConnection][_proxyTunnel])) {
          return uriStartingFromPath();
        } else {
          return dart.toString(this.uri.removeFragment());
        }
      }
    }
  }
  [_writeHeader]() {
    let buffer = new _http._CopyingBytesBuilder.new(8192);
    buffer.add(this.method[$codeUnits]);
    buffer.addByte(_http._CharCode.SP);
    buffer.add(this[_requestUri]()[$codeUnits]);
    buffer.addByte(_http._CharCode.SP);
    buffer.add(_http._Const.HTTP11);
    buffer.addByte(_http._CharCode.CR);
    buffer.addByte(_http._CharCode.LF);
    if (!dart.test(this.cookies[$isEmpty])) {
      let sb = new core.StringBuffer.new();
      for (let i = 0; i < dart.notNull(this.cookies[$length]); i++) {
        if (i > 0) sb.write("; ");
        sb.write(this.cookies[$_get](i).name);
        sb.write("=");
        sb.write(this.cookies[$_get](i).value);
      }
      this.headers.add(_http.HttpHeaders.cookieHeader, sb.toString());
    }
    this.headers[_finalize]();
    this.headers[_build](buffer);
    buffer.addByte(_http._CharCode.CR);
    buffer.addByte(_http._CharCode.LF);
    let headerBytes = typed_data.Uint8List._check(buffer.takeBytes());
    this[_outgoing].setHeader(headerBytes, headerBytes[$length]);
  }
};
(_http._HttpClientRequest.new = function(outgoing, uri, method, proxy, httpClient, httpClientConnection) {
  this.cookies = JSArrayOfCookie().of([]);
  this[_responseCompleter] = CompleterOfHttpClientResponse().new();
  this[_response] = null;
  this[_followRedirects] = true;
  this[_maxRedirects] = 5;
  this[_responseRedirects] = JSArrayOfRedirectInfo().of([]);
  this.method = method;
  this[_proxy] = proxy;
  this[_httpClient] = httpClient;
  this[_httpClientConnection] = httpClientConnection;
  this.uri = uri;
  _http._HttpClientRequest.__proto__.new.call(this, uri, "1.1", outgoing);
  if (this.method === "GET" || this.method === "HEAD") {
    this.contentLength = 0;
  } else {
    this.headers.chunkedTransferEncoding = true;
  }
}).prototype = _http._HttpClientRequest.prototype;
dart.addTypeTests(_http._HttpClientRequest);
_http._HttpClientRequest[dart.implements] = () => [_http.HttpClientRequest];
dart.setMethodSignature(_http._HttpClientRequest, () => ({
  __proto__: dart.getMethods(_http._HttpClientRequest.__proto__),
  close: dart.fnType(async.Future$(_http.HttpClientResponse), []),
  [_onIncoming]: dart.fnType(dart.void, [_http._HttpIncoming]),
  [_onError$]: dart.fnType(dart.void, [dart.dynamic, core.StackTrace]),
  [_requestUri]: dart.fnType(core.String, []),
  [_writeHeader]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(_http._HttpClientRequest, () => ({
  __proto__: dart.getGetters(_http._HttpClientRequest.__proto__),
  done: async.Future$(_http.HttpClientResponse),
  maxRedirects: core.int,
  followRedirects: core.bool,
  connectionInfo: _http.HttpConnectionInfo
}));
dart.setSetterSignature(_http._HttpClientRequest, () => ({
  __proto__: dart.getSetters(_http._HttpClientRequest.__proto__),
  maxRedirects: core.int,
  followRedirects: core.bool
}));
dart.setFieldSignature(_http._HttpClientRequest, () => ({
  __proto__: dart.getFields(_http._HttpClientRequest.__proto__),
  method: dart.finalFieldType(core.String),
  uri: dart.finalFieldType(core.Uri),
  cookies: dart.finalFieldType(ListOfCookie()),
  [_httpClient]: dart.finalFieldType(_http._HttpClient),
  [_httpClientConnection]: dart.finalFieldType(_http._HttpClientConnection),
  [_responseCompleter]: dart.finalFieldType(CompleterOfHttpClientResponse()),
  [_proxy]: dart.finalFieldType(_http._Proxy),
  [_response]: dart.fieldType(FutureOfHttpClientResponse()),
  [_followRedirects]: dart.fieldType(core.bool),
  [_maxRedirects]: dart.fieldType(core.int),
  [_responseRedirects]: dart.fieldType(ListOfRedirectInfo())
}));
const _consume = Symbol('_consume');
_http._HttpGZipSink = class _HttpGZipSink extends convert.ByteConversionSink {
  add(chunk) {
    ListOfint()._check(chunk);
    this[_consume](chunk);
  }
  addSlice(chunk, start, end, isLast) {
    if (typed_data.Uint8List.is(chunk)) {
      this[_consume](typed_data.Uint8List.view(chunk[$buffer], start, dart.notNull(end) - dart.notNull(start)));
    } else {
      this[_consume](chunk[$sublist](start, dart.notNull(end) - dart.notNull(start)));
    }
  }
  close() {}
};
(_http._HttpGZipSink.new = function(consume) {
  this[_consume] = consume;
  _http._HttpGZipSink.__proto__.new.call(this);
}).prototype = _http._HttpGZipSink.prototype;
dart.addTypeTests(_http._HttpGZipSink);
dart.setMethodSignature(_http._HttpGZipSink, () => ({
  __proto__: dart.getMethods(_http._HttpGZipSink.__proto__),
  add: dart.fnType(dart.void, [core.Object]),
  addSlice: dart.fnType(dart.void, [core.List$(core.int), core.int, core.int, core.bool]),
  close: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(_http._HttpGZipSink, () => ({
  __proto__: dart.getFields(_http._HttpGZipSink.__proto__),
  [_consume]: dart.finalFieldType(ListOfintTovoid())
}));
const _closeFuture = Symbol('_closeFuture');
const _pendingChunkedFooter = Symbol('_pendingChunkedFooter');
const _bytesWritten = Symbol('_bytesWritten');
const _gzip = Symbol('_gzip');
const _gzipSink = Symbol('_gzipSink');
const _gzipAdd = Symbol('_gzipAdd');
const _gzipBuffer = Symbol('_gzipBuffer');
const _gzipBufferLength = Symbol('_gzipBufferLength');
const _socketError = Symbol('_socketError');
const _addGZipChunk = Symbol('_addGZipChunk');
const _chunkHeader = Symbol('_chunkHeader');
const _addChunk$ = Symbol('_addChunk');
const _ignoreError = Symbol('_ignoreError');
let const$90;
_http._HttpOutgoing = class _HttpOutgoing extends core.Object {
  writeHeaders(opts) {
    let drainRequest = opts && 'drainRequest' in opts ? opts.drainRequest : true;
    let setOutgoing = opts && 'setOutgoing' in opts ? opts.setOutgoing : true;
    if (dart.test(this.headersWritten)) return null;
    this.headersWritten = true;
    let drainFuture = null;
    let gzip = false;
    if (_http._HttpResponse.is(this.outbound)) {
      let response = _http._HttpResponse._check(this.outbound);
      if (dart.test(response[_httpRequest][_httpServer].autoCompress) && dart.test(this.outbound.bufferOutput) && dart.test(this.outbound.headers.chunkedTransferEncoding)) {
        let acceptEncodings = response[_httpRequest].headers._get(_http.HttpHeaders.acceptEncodingHeader);
        let contentEncoding = this.outbound.headers._get(_http.HttpHeaders.contentEncodingHeader);
        if (acceptEncodings != null && dart.test(acceptEncodings[$expand](dart.dynamic, dart.fn(list => core.Iterable._check(dart.dsend(list, 'split', [","])), dynamicToIterable()))[$any](dart.fn(encoding => dart.equals(dart.dsend(dart.dsend(encoding, 'trim', []), 'toLowerCase', []), "gzip"), dynamicTobool()))) && contentEncoding == null) {
          this.outbound.headers.set(_http.HttpHeaders.contentEncodingHeader, "gzip");
          gzip = true;
        }
      }
      if (dart.test(drainRequest) && !dart.test(response[_httpRequest][_incoming].hasSubscriber)) {
        drainFuture = response[_httpRequest].drain(dart.dynamic).catchError(dart.fn(_ => {
        }, dynamicToNull()));
      }
    } else {
      drainRequest = false;
    }
    if (!dart.test(this.ignoreBody)) {
      if (dart.test(setOutgoing)) {
        let contentLength = this.outbound.headers.contentLength;
        if (dart.test(this.outbound.headers.chunkedTransferEncoding)) {
          this.chunked = true;
          if (gzip) this.gzip = true;
        } else if (dart.notNull(contentLength) >= 0) {
          this.contentLength = contentLength;
        }
      }
      if (drainFuture != null) {
        return drainFuture.then(dart.dynamic, dart.fn(_ => this.outbound[_writeHeader](), dynamicTovoid()));
      }
    }
    this.outbound[_writeHeader]();
    return null;
  }
  addStream(stream) {
    StreamOfListOfint()._check(stream);
    if (dart.test(this[_socketError])) {
      stream.listen(null).cancel();
      return async.Future.value(this.outbound);
    }
    if (dart.test(this.ignoreBody)) {
      stream.drain(dart.dynamic).catchError(dart.fn(_ => {
      }, dynamicToNull()));
      let future = this.writeHeaders();
      if (future != null) {
        return future.then(dart.dynamic, dart.fn(_ => this.close(), dynamicToFuture()));
      }
      return this.close();
    }
    let sub = null;
    let controller = StreamControllerOfListOfint().new({onPause: dart.fn(() => sub.pause(), VoidTovoid()), onResume: dart.fn(() => sub.resume(), VoidTovoid()), sync: true});
    const onData = (function(data) {
      if (dart.test(this[_socketError])) return;
      if (data[$length] === 0) return;
      if (dart.test(this.chunked)) {
        if (dart.test(this[_gzip])) {
          this[_gzipAdd] = dart.bind(controller, 'add');
          this[_addGZipChunk](data, dart.bind(this[_gzipSink], 'add'));
          this[_gzipAdd] = null;
          return;
        }
        this[_addChunk$](this[_chunkHeader](data[$length]), dart.bind(controller, 'add'));
        this[_pendingChunkedFooter] = 2;
      } else {
        if (this.contentLength != null) {
          this[_bytesWritten] = dart.notNull(this[_bytesWritten]) + dart.notNull(data[$length]);
          if (dart.notNull(this[_bytesWritten]) > dart.notNull(this.contentLength)) {
            controller.addError(new _http.HttpException.new("Content size exceeds specified contentLength. " + (dart.str(this[_bytesWritten]) + " bytes written while expected ") + (dart.str(this.contentLength) + ". ") + ("[" + core.String.fromCharCodes(data) + "]")));
            return;
          }
        }
      }
      this[_addChunk$](data, dart.bind(controller, 'add'));
    }).bind(this);
    dart.fn(onData, ListOfintTovoid());
    sub = stream.listen(onData, {onError: dart.bind(controller, 'addError'), onDone: dart.bind(controller, 'close'), cancelOnError: true});
    if (!dart.test(this.headersWritten)) {
      let future = this.writeHeaders();
      if (future != null) {
        sub.pause(future);
      }
    }
    return this.socket.addStream(controller.stream).then(dart.dynamic, dart.fn(_ => this.outbound, dynamicTo_HttpOutboundMessage()), {onError: dart.fn((error, stackTrace) => {
        if (dart.test(this[_gzip])) this[_gzipSink].close();
        this[_socketError] = true;
        this[_doneCompleter$].completeError(error, core.StackTrace._check(stackTrace));
        if (dart.test(this[_ignoreError](error))) {
          return this.outbound;
        } else {
          dart.throw(error);
        }
      }, dynamicAnddynamicTo_HttpOutboundMessage())});
  }
  close() {
    if (this[_closeFuture] != null) return this[_closeFuture];
    if (dart.test(this[_socketError])) return async.Future.value(this.outbound);
    if (dart.test(this.outbound[_isConnectionClosed])) return async.Future.value(this.outbound);
    if (!dart.test(this.headersWritten) && !dart.test(this.ignoreBody)) {
      if (this.outbound.headers.contentLength === -1) {
        this.outbound.headers.chunkedTransferEncoding = false;
        this.outbound.headers.contentLength = 0;
      } else if (dart.notNull(this.outbound.headers.contentLength) > 0) {
        let error = new _http.HttpException.new("No content even though contentLength was specified to be " + ("greater than 0: " + dart.str(this.outbound.headers.contentLength) + "."), {uri: this.outbound[_uri$]});
        this[_doneCompleter$].completeError(error);
        return this[_closeFuture] = async.Future.error(error);
      }
    }
    if (this.contentLength != null) {
      if (dart.notNull(this[_bytesWritten]) < dart.notNull(this.contentLength)) {
        let error = new _http.HttpException.new("Content size below specified contentLength. " + (" " + dart.str(this[_bytesWritten]) + " bytes written but expected ") + (dart.str(this.contentLength) + "."), {uri: this.outbound[_uri$]});
        this[_doneCompleter$].completeError(error);
        return this[_closeFuture] = async.Future.error(error);
      }
    }
    const finalize = (function() {
      if (dart.test(this.chunked)) {
        if (dart.test(this[_gzip])) {
          this[_gzipAdd] = dart.bind(this.socket, 'add');
          if (dart.notNull(this[_gzipBufferLength]) > 0) {
            this[_gzipSink].add(typed_data.Uint8List.view(this[_gzipBuffer][$buffer], 0, this[_gzipBufferLength]));
          }
          this[_gzipBuffer] = null;
          this[_gzipSink].close();
          this[_gzipAdd] = null;
        }
        this[_addChunk$](this[_chunkHeader](0), dart.bind(this.socket, 'add'));
      }
      if (dart.notNull(this[_length$3]) > 0) {
        this.socket.add(typed_data.Uint8List.view(this[_buffer$1][$buffer], 0, this[_length$3]));
      }
      this[_buffer$1] = null;
      return this.socket.flush().then(dart.dynamic, dart.fn(_ => {
        this[_doneCompleter$].complete(this.socket);
        return this.outbound;
      }, dynamicTo_HttpOutboundMessage()), {onError: dart.fn((error, stackTrace) => {
          this[_doneCompleter$].completeError(error, core.StackTrace._check(stackTrace));
          if (dart.test(this[_ignoreError](error))) {
            return this.outbound;
          } else {
            dart.throw(error);
          }
        }, dynamicAnddynamicTo_HttpOutboundMessage())});
    }).bind(this);
    dart.fn(finalize, VoidToFuture());
    let future = this.writeHeaders();
    if (future != null) {
      return this[_closeFuture] = future.whenComplete(finalize);
    }
    return this[_closeFuture] = finalize();
  }
  get done() {
    return this[_doneCompleter$].future;
  }
  setHeader(data, length) {
    if (!(this[_length$3] === 0)) dart.assertFailed();
    this[_buffer$1] = typed_data.Uint8List._check(data);
    this[_length$3] = length;
  }
  set gzip(value) {
    this[_gzip] = value;
    if (dart.test(this[_gzip])) {
      this[_gzipBuffer] = typed_data.Uint8List.new(8192);
      if (!(this[_gzipSink] == null)) dart.assertFailed();
      this[_gzipSink] = new io.ZLibEncoder.new({gzip: true}).startChunkedConversion(new _http._HttpGZipSink.new(dart.fn(data => {
        if (this[_gzipAdd] == null) return;
        this[_addChunk$](this[_chunkHeader](data[$length]), this[_gzipAdd]);
        this[_pendingChunkedFooter] = 2;
        this[_addChunk$](data, this[_gzipAdd]);
      }, ListOfintToNull())));
    }
  }
  [_ignoreError](error) {
    return (io.SocketException.is(error) || io.TlsException.is(error)) && _http.HttpResponse.is(this.outbound);
  }
  [_addGZipChunk](chunk, add) {
    if (!dart.test(this.outbound.bufferOutput)) {
      add(chunk);
      return;
    }
    if (dart.notNull(chunk[$length]) > dart.notNull(this[_gzipBuffer][$length]) - dart.notNull(this[_gzipBufferLength])) {
      add(typed_data.Uint8List.view(this[_gzipBuffer][$buffer], 0, this[_gzipBufferLength]));
      this[_gzipBuffer] = typed_data.Uint8List.new(8192);
      this[_gzipBufferLength] = 0;
    }
    if (dart.notNull(chunk[$length]) > 8192) {
      add(chunk);
    } else {
      this[_gzipBuffer][$setRange](this[_gzipBufferLength], dart.notNull(this[_gzipBufferLength]) + dart.notNull(chunk[$length]), chunk);
      this[_gzipBufferLength] = dart.notNull(this[_gzipBufferLength]) + dart.notNull(chunk[$length]);
    }
  }
  [_addChunk$](chunk, add) {
    if (!dart.test(this.outbound.bufferOutput)) {
      if (this[_buffer$1] != null) {
        add(typed_data.Uint8List.view(this[_buffer$1][$buffer], 0, this[_length$3]));
        this[_buffer$1] = null;
        this[_length$3] = 0;
      }
      add(chunk);
      return;
    }
    if (dart.notNull(chunk[$length]) > dart.notNull(this[_buffer$1][$length]) - dart.notNull(this[_length$3])) {
      add(typed_data.Uint8List.view(this[_buffer$1][$buffer], 0, this[_length$3]));
      this[_buffer$1] = typed_data.Uint8List.new(8192);
      this[_length$3] = 0;
    }
    if (dart.notNull(chunk[$length]) > 8192) {
      add(chunk);
    } else {
      this[_buffer$1][$setRange](this[_length$3], dart.notNull(this[_length$3]) + dart.notNull(chunk[$length]), chunk);
      this[_length$3] = dart.notNull(this[_length$3]) + dart.notNull(chunk[$length]);
    }
  }
  [_chunkHeader](length) {
    let hexDigits = const$90 || (const$90 = dart.constList([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70], core.int));
    if (length === 0) {
      if (this[_pendingChunkedFooter] === 2) return _http._HttpOutgoing._footerAndChunk0Length;
      return _http._HttpOutgoing._chunk0Length;
    }
    let size = this[_pendingChunkedFooter];
    let len = length;
    while (dart.notNull(len) > 0) {
      size = dart.notNull(size) + 1;
      len = len[$rightShift](4);
    }
    let footerAndHeader = typed_data.Uint8List.new(dart.notNull(size) + 2);
    if (this[_pendingChunkedFooter] === 2) {
      footerAndHeader[$_set](0, _http._CharCode.CR);
      footerAndHeader[$_set](1, _http._CharCode.LF);
    }
    let index = size;
    while (dart.notNull(index) > dart.notNull(this[_pendingChunkedFooter])) {
      footerAndHeader[$_set](index = dart.notNull(index) - 1, hexDigits[$_get](dart.notNull(length) & 15));
      length = length[$rightShift](4);
    }
    footerAndHeader[$_set](dart.notNull(size) + 0, _http._CharCode.CR);
    footerAndHeader[$_set](dart.notNull(size) + 1, _http._CharCode.LF);
    return footerAndHeader;
  }
};
(_http._HttpOutgoing.new = function(socket) {
  this[_doneCompleter$] = CompleterOfSocket().new();
  this.ignoreBody = false;
  this.headersWritten = false;
  this[_buffer$1] = null;
  this[_length$3] = 0;
  this[_closeFuture] = null;
  this.chunked = false;
  this[_pendingChunkedFooter] = 0;
  this.contentLength = null;
  this[_bytesWritten] = 0;
  this[_gzip] = false;
  this[_gzipSink] = null;
  this[_gzipAdd] = null;
  this[_gzipBuffer] = null;
  this[_gzipBufferLength] = 0;
  this[_socketError] = false;
  this.outbound = null;
  this.socket = socket;
}).prototype = _http._HttpOutgoing.prototype;
dart.addTypeTests(_http._HttpOutgoing);
_http._HttpOutgoing[dart.implements] = () => [StreamConsumerOfListOfint()];
dart.setMethodSignature(_http._HttpOutgoing, () => ({
  __proto__: dart.getMethods(_http._HttpOutgoing.__proto__),
  writeHeaders: dart.fnType(async.Future, [], {drainRequest: core.bool, setOutgoing: core.bool}),
  addStream: dart.fnType(async.Future, [core.Object]),
  close: dart.fnType(async.Future, []),
  setHeader: dart.fnType(dart.void, [core.List$(core.int), core.int]),
  [_ignoreError]: dart.fnType(core.bool, [dart.dynamic]),
  [_addGZipChunk]: dart.fnType(dart.void, [core.List$(core.int), dart.fnType(dart.void, [core.List$(core.int)])]),
  [_addChunk$]: dart.fnType(dart.void, [core.List$(core.int), dart.fnType(dart.void, [core.List$(core.int)])]),
  [_chunkHeader]: dart.fnType(core.List$(core.int), [core.int])
}));
dart.setGetterSignature(_http._HttpOutgoing, () => ({
  __proto__: dart.getGetters(_http._HttpOutgoing.__proto__),
  done: async.Future$(io.Socket)
}));
dart.setSetterSignature(_http._HttpOutgoing, () => ({
  __proto__: dart.getSetters(_http._HttpOutgoing.__proto__),
  gzip: core.bool
}));
dart.setFieldSignature(_http._HttpOutgoing, () => ({
  __proto__: dart.getFields(_http._HttpOutgoing.__proto__),
  [_doneCompleter$]: dart.finalFieldType(CompleterOfSocket()),
  socket: dart.finalFieldType(io.Socket),
  ignoreBody: dart.fieldType(core.bool),
  headersWritten: dart.fieldType(core.bool),
  [_buffer$1]: dart.fieldType(typed_data.Uint8List),
  [_length$3]: dart.fieldType(core.int),
  [_closeFuture]: dart.fieldType(async.Future),
  chunked: dart.fieldType(core.bool),
  [_pendingChunkedFooter]: dart.fieldType(core.int),
  contentLength: dart.fieldType(core.int),
  [_bytesWritten]: dart.fieldType(core.int),
  [_gzip]: dart.fieldType(core.bool),
  [_gzipSink]: dart.fieldType(convert.ByteConversionSink),
  [_gzipAdd]: dart.fieldType(ListOfintTovoid()),
  [_gzipBuffer]: dart.fieldType(typed_data.Uint8List),
  [_gzipBufferLength]: dart.fieldType(core.int),
  [_socketError]: dart.fieldType(core.bool),
  outbound: dart.fieldType(_http._HttpOutboundMessage)
}));
dart.defineLazy(_http._HttpOutgoing, {
  /*_http._HttpOutgoing._footerAndChunk0Length*/get _footerAndChunk0Length() {
    return dart.constList([_http._CharCode.CR, _http._CharCode.LF, 48, _http._CharCode.CR, _http._CharCode.LF, _http._CharCode.CR, _http._CharCode.LF], core.int);
  },
  /*_http._HttpOutgoing._chunk0Length*/get _chunk0Length() {
    return dart.constList([48, _http._CharCode.CR, _http._CharCode.LF, _http._CharCode.CR, _http._CharCode.LF], core.int);
  }
});
const _context$ = Symbol('_context');
const _httpParser = Symbol('_httpParser');
const _subscription$0 = Symbol('_subscription');
const _dispose = Symbol('_dispose');
const _idleTimer = Symbol('_idleTimer');
const _currentUri = Symbol('_currentUri');
const _nextResponseCompleter = Symbol('_nextResponseCompleter');
const _streamFuture = Symbol('_streamFuture');
const _proxyCredentials = Symbol('_proxyCredentials');
const _returnConnection = Symbol('_returnConnection');
_http._HttpClientConnection = class _HttpClientConnection extends core.Object {
  send(uri, port, method, proxy) {
    if (dart.test(this.closed)) {
      dart.throw(new _http.HttpException.new("Socket closed before request was sent", {uri: uri}));
    }
    this[_currentUri] = uri;
    this[_subscription$0].pause();
    let proxyCreds = null;
    let creds = null;
    let outgoing = new _http._HttpOutgoing.new(this[_socket$]);
    let request = new _http._HttpClientRequest.new(outgoing, uri, method, proxy, this[_httpClient], this);
    let host = uri.host;
    if (host[$contains](":")) host = "[" + dart.str(host) + "]";
    request.headers.host = host;
    request.headers.port = port;
    request.headers[_add$2](_http.HttpHeaders.acceptEncodingHeader, "gzip");
    if (this[_httpClient].userAgent != null) {
      request.headers[_add$2]("user-agent", this[_httpClient].userAgent);
    }
    if (dart.test(proxy.isAuthenticated)) {
      let auth = _http._CryptoUtils.bytesToBase64(convert.utf8.encode(dart.str(proxy.username) + ":" + dart.str(proxy.password)));
      request.headers.set(_http.HttpHeaders.proxyAuthorizationHeader, "Basic " + dart.str(auth));
    } else if (!dart.test(proxy.isDirect) && dart.notNull(this[_httpClient][_proxyCredentials][$length]) > 0) {
      proxyCreds = this[_httpClient][_findProxyCredentials](proxy);
      if (proxyCreds != null) {
        proxyCreds.authorize(request);
      }
    }
    if (uri.userInfo != null && !uri.userInfo[$isEmpty]) {
      let auth = _http._CryptoUtils.bytesToBase64(convert.utf8.encode(uri.userInfo));
      request.headers.set(_http.HttpHeaders.authorizationHeader, "Basic " + dart.str(auth));
    } else {
      creds = this[_httpClient][_findCredentials](uri);
      if (creds != null) {
        creds.authorize(request);
      }
    }
    this[_httpParser].isHead = method === "HEAD";
    this[_streamFuture] = FutureOfSocket()._check(outgoing.done.then(io.Socket, dart.fn(s => {
      this[_nextResponseCompleter] = CompleterOf_HttpIncoming().new();
      FutureOfNull()._check(this[_nextResponseCompleter].future.then(core.Null, dart.fn(incoming => {
        this[_currentUri] = null;
        FutureOfNull()._check(incoming.dataDone.then(core.Null, dart.fn(closing => {
          if (dart.test(incoming.upgraded)) {
            this[_httpClient][_connectionClosed](this);
            this.startTimer();
            return;
          }
          if (dart.test(this.closed)) return;
          if (!dart.dtest(closing) && !dart.test(this[_dispose]) && dart.test(incoming.headers.persistentConnection) && dart.test(request.persistentConnection)) {
            this[_httpClient][_returnConnection](this);
            this[_subscription$0].resume();
          } else {
            this.destroy();
          }
        }, dynamicToNull())));
        if (proxyCreds != null && dart.equals(proxyCreds.scheme, _http._AuthenticationScheme.DIGEST)) {
          let authInfo = incoming.headers._get("proxy-authentication-info");
          if (authInfo != null && authInfo[$length] === 1) {
            let header = _http._HeaderValue.parse(authInfo[$_get](0), {parameterSeparator: ","});
            let nextnonce = header.parameters[$_get]("nextnonce");
            if (nextnonce != null) proxyCreds.nonce = nextnonce;
          }
        }
        if (creds != null && dart.equals(creds.scheme, _http._AuthenticationScheme.DIGEST)) {
          let authInfo = incoming.headers._get("authentication-info");
          if (authInfo != null && authInfo[$length] === 1) {
            let header = _http._HeaderValue.parse(authInfo[$_get](0), {parameterSeparator: ","});
            let nextnonce = header.parameters[$_get]("nextnonce");
            if (nextnonce != null) creds.nonce = nextnonce;
          }
        }
        request[_onIncoming](incoming);
      }, _HttpIncomingToNull()))).catchError(dart.fn(error => {
        dart.throw(new _http.HttpException.new("Connection closed before data was received", {uri: uri}));
      }, dynamicToNull()), {test: dart.fn(error => core.StateError.is(error), ObjectTobool())}).catchError(dart.fn((error, stackTrace) => {
        this.destroy();
        request[_onError$](error, core.StackTrace._check(stackTrace));
      }, dynamicAnddynamicToNull()));
      this[_subscription$0].resume();
      return s;
    }, SocketToSocket()), {onError: dart.fn(e => {
        this.destroy();
      }, dynamicToNull())}));
    return request;
  }
  detachSocket() {
    return FutureOfSocket()._check(this[_streamFuture].then(io.Socket, dart.fn(_ => new _http._DetachedSocket.new(this[_socket$], this[_httpParser].detachIncoming()), SocketTo_DetachedSocket())));
  }
  destroy() {
    this.closed = true;
    this[_httpClient][_connectionClosed](this);
    this[_socket$].destroy();
  }
  close() {
    this.closed = true;
    this[_httpClient][_connectionClosed](this);
    this[_streamFuture].timeout(this[_httpClient].idleTimeout).then(dart.void, dart.fn(_ => this[_socket$].destroy(), SocketTovoid()));
  }
  createProxyTunnel(host, port, proxy, callback) {
    let request = this.send(core.Uri.new({host: host, port: port}), port, "CONNECT", proxy);
    if (dart.test(proxy.isAuthenticated)) {
      let auth = _http._CryptoUtils.bytesToBase64(convert.utf8.encode(dart.str(proxy.username) + ":" + dart.str(proxy.password)));
      request.headers.set(_http.HttpHeaders.proxyAuthorizationHeader, "Basic " + dart.str(auth));
    }
    return FutureOf_HttpClientConnection()._check(FutureOfSecureSocket()._check(request.close().then(io.SecureSocket, dart.fn(response => {
      if (response.statusCode !== _internal.HttpStatus.ok) {
        dart.throw("Proxy failed to establish tunnel " + ("(" + dart.str(response.statusCode) + " " + dart.str(response.reasonPhrase) + ")"));
      }
      let socket = _http._HttpClientResponse.as(response)[_httpRequest][_httpClientConnection][_socket$];
      return io.SecureSocket.secure(socket, {host: host, context: this[_context$], onBadCertificate: callback});
    }, HttpClientResponseToFutureOfSecureSocket()))).then(_http._HttpClientConnection, dart.fn(secureSocket => {
      let key = core.String._check(_http._HttpClientConnection.makeKey(true, host, port));
      return new _http._HttpClientConnection.new(key, secureSocket, request[_httpClient], true);
    }, SecureSocketTo_HttpClientConnection())));
  }
  get connectionInfo() {
    return _http._HttpConnectionInfo.create(this[_socket$]);
  }
  static makeKey(isSecure, host, port) {
    return dart.test(isSecure) ? "ssh:" + dart.str(host) + ":" + dart.str(port) : dart.str(host) + ":" + dart.str(port);
  }
  stopTimer() {
    if (this[_idleTimer] != null) {
      this[_idleTimer].cancel();
      this[_idleTimer] = null;
    }
  }
  startTimer() {
    if (!(this[_idleTimer] == null)) dart.assertFailed();
    this[_idleTimer] = async.Timer.new(this[_httpClient].idleTimeout, dart.fn(() => {
      this[_idleTimer] = null;
      this.close();
    }, VoidToNull()));
  }
};
(_http._HttpClientConnection.new = function(key, socket, httpClient, proxyTunnel, context) {
  if (proxyTunnel === void 0) proxyTunnel = false;
  if (context === void 0) context = null;
  this[_subscription$0] = null;
  this[_dispose] = false;
  this[_idleTimer] = null;
  this.closed = false;
  this[_currentUri] = null;
  this[_nextResponseCompleter] = null;
  this[_streamFuture] = null;
  this.key = key;
  this[_socket$] = socket;
  this[_httpClient] = httpClient;
  this[_proxyTunnel] = proxyTunnel;
  this[_context$] = context;
  this[_httpParser] = _http._HttpParser.responseParser();
  this[_httpParser].listenToStream(this[_socket$]);
  this[_subscription$0] = this[_httpParser].listen(dart.fn(incoming => {
    this[_subscription$0].pause();
    if (this[_nextResponseCompleter] == null) {
      dart.throw(new _http.HttpException.new("Unexpected response (unsolicited response without request).", {uri: this[_currentUri]}));
    }
    if (incoming.statusCode === 100) {
      FutureOfNull()._check(incoming.drain(dart.dynamic).then(core.Null, dart.fn(_ => {
        this[_subscription$0].resume();
      }, dynamicToNull()))).catchError(dart.fn((error, stackTrace) => {
        if (stackTrace === void 0) stackTrace = null;
        this[_nextResponseCompleter].completeError(new _http.HttpException.new(core.String._check(dart.dload(error, 'message')), {uri: this[_currentUri]}), stackTrace);
        this[_nextResponseCompleter] = null;
      }, dynamic__ToNull()));
    } else {
      this[_nextResponseCompleter].complete(incoming);
      this[_nextResponseCompleter] = null;
    }
  }, _HttpIncomingToNull()), {onError: dart.fn((error, stackTrace) => {
      if (stackTrace === void 0) stackTrace = null;
      if (this[_nextResponseCompleter] != null) {
        this[_nextResponseCompleter].completeError(new _http.HttpException.new(core.String._check(dart.dload(error, 'message')), {uri: this[_currentUri]}), stackTrace);
        this[_nextResponseCompleter] = null;
      }
    }, dynamic__ToNull()), onDone: dart.fn(() => {
      if (this[_nextResponseCompleter] != null) {
        this[_nextResponseCompleter].completeError(new _http.HttpException.new("Connection closed before response was received", {uri: this[_currentUri]}));
        this[_nextResponseCompleter] = null;
      }
      this.close();
    }, VoidToNull())});
}).prototype = _http._HttpClientConnection.prototype;
dart.addTypeTests(_http._HttpClientConnection);
dart.setMethodSignature(_http._HttpClientConnection, () => ({
  __proto__: dart.getMethods(_http._HttpClientConnection.__proto__),
  send: dart.fnType(_http._HttpClientRequest, [core.Uri, core.int, core.String, _http._Proxy]),
  detachSocket: dart.fnType(async.Future$(io.Socket), []),
  destroy: dart.fnType(dart.void, []),
  close: dart.fnType(dart.void, []),
  createProxyTunnel: dart.fnType(async.Future$(_http._HttpClientConnection), [core.String, core.int, _http._Proxy, dart.fnType(core.bool, [io.X509Certificate])]),
  stopTimer: dart.fnType(dart.void, []),
  startTimer: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(_http._HttpClientConnection, () => ({
  __proto__: dart.getGetters(_http._HttpClientConnection.__proto__),
  connectionInfo: _http.HttpConnectionInfo
}));
dart.setFieldSignature(_http._HttpClientConnection, () => ({
  __proto__: dart.getFields(_http._HttpClientConnection.__proto__),
  key: dart.finalFieldType(core.String),
  [_socket$]: dart.finalFieldType(io.Socket),
  [_proxyTunnel]: dart.finalFieldType(core.bool),
  [_context$]: dart.finalFieldType(io.SecurityContext),
  [_httpParser]: dart.finalFieldType(_http._HttpParser),
  [_subscription$0]: dart.fieldType(async.StreamSubscription),
  [_httpClient]: dart.finalFieldType(_http._HttpClient),
  [_dispose]: dart.fieldType(core.bool),
  [_idleTimer]: dart.fieldType(async.Timer),
  closed: dart.fieldType(core.bool),
  [_currentUri]: dart.fieldType(core.Uri),
  [_nextResponseCompleter]: dart.fieldType(CompleterOf_HttpIncoming()),
  [_streamFuture]: dart.fieldType(FutureOfSocket())
}));
_http._ConnectionInfo = class _ConnectionInfo extends core.Object {};
(_http._ConnectionInfo.new = function(connection, proxy) {
  this.connection = connection;
  this.proxy = proxy;
}).prototype = _http._ConnectionInfo.prototype;
dart.addTypeTests(_http._ConnectionInfo);
dart.setFieldSignature(_http._ConnectionInfo, () => ({
  __proto__: dart.getFields(_http._ConnectionInfo.__proto__),
  connection: dart.finalFieldType(_http._HttpClientConnection),
  proxy: dart.finalFieldType(_http._Proxy)
}));
const _idle = Symbol('_idle');
const _active = Symbol('_active');
const _socketTasks = Symbol('_socketTasks');
const _pending$ = Symbol('_pending');
const _connecting = Symbol('_connecting');
const _checkPending = Symbol('_checkPending');
const _connectionsChanged = Symbol('_connectionsChanged');
const _badCertificateCallback = Symbol('_badCertificateCallback');
const _getConnectionTarget = Symbol('_getConnectionTarget');
_http._ConnectionTarget = class _ConnectionTarget extends core.Object {
  get isEmpty() {
    return dart.test(this[_idle].isEmpty) && dart.test(this[_active].isEmpty) && this[_connecting] === 0;
  }
  get hasIdle() {
    return this[_idle].isNotEmpty;
  }
  get hasActive() {
    return dart.test(this[_active].isNotEmpty) || dart.notNull(this[_connecting]) > 0;
  }
  takeIdle() {
    if (!dart.test(this.hasIdle)) dart.assertFailed();
    let connection = this[_idle].first;
    this[_idle].remove(connection);
    connection.stopTimer();
    this[_active].add(connection);
    return connection;
  }
  [_checkPending]() {
    if (dart.test(this[_pending$].isNotEmpty)) {
      dart.dcall(this[_pending$].removeFirst(), []);
    }
  }
  addNewActive(connection) {
    this[_active].add(connection);
  }
  returnConnection(connection) {
    if (!dart.test(this[_active].contains(connection))) dart.assertFailed();
    this[_active].remove(connection);
    this[_idle].add(connection);
    connection.startTimer();
    this[_checkPending]();
  }
  connectionClosed(connection) {
    if (!(!dart.test(this[_active].contains(connection)) || !dart.test(this[_idle].contains(connection)))) dart.assertFailed();
    this[_active].remove(connection);
    this[_idle].remove(connection);
    this[_checkPending]();
  }
  close(force) {
    for (let t of this[_socketTasks].toList()) {
      FutureOfNull()._check(t.socket.then(core.Null, dart.fn(s => {
        dart.dsend(s, 'destroy', []);
      }, dynamicToNull()), {onError: dart.fn(e => {
        }, dynamicToNull())}));
      t.cancel();
    }
    if (dart.test(force)) {
      for (let c of this[_idle].toList()) {
        c.destroy();
      }
      for (let c of this[_active].toList()) {
        c.destroy();
      }
    } else {
      for (let c of this[_idle].toList()) {
        c.close();
      }
    }
  }
  connect(uriHost, uriPort, proxy, client) {
    if (dart.test(this.hasIdle)) {
      let connection = this.takeIdle();
      client[_connectionsChanged]();
      return FutureOf_ConnectionInfo().value(new _http._ConnectionInfo.new(connection, proxy));
    }
    if (client.maxConnectionsPerHost != null && dart.notNull(this[_active].length) + dart.notNull(this[_connecting]) >= dart.notNull(client.maxConnectionsPerHost)) {
      let completer = CompleterOf_ConnectionInfo().new();
      this[_pending$].add(dart.fn(() => {
        completer.complete(this.connect(uriHost, uriPort, proxy, client));
      }, VoidToNull()));
      return completer.future;
    }
    let currentBadCertificateCallback = client[_badCertificateCallback];
    function callback(certificate) {
      if (currentBadCertificateCallback == null) return false;
      return currentBadCertificateCallback(certificate, uriHost, uriPort);
    }
    dart.fn(callback, X509CertificateTobool());
    let connectionTask = dart.test(this.isSecure) && dart.test(proxy.isDirect) ? io.SecureSocket.startConnect(this.host, this.port, {context: this.context, onBadCertificate: callback}) : io.Socket.startConnect(this.host, this.port);
    this[_connecting] = dart.notNull(this[_connecting]) + 1;
    return FutureOf_ConnectionInfo()._check(connectionTask.then(_http._ConnectionInfo, dart.fn(task => {
      this[_socketTasks].add(task);
      let socketFuture = task.socket;
      if (client.connectionTimeout != null) {
        socketFuture = socketFuture.timeout(client.connectionTimeout, {onTimeout: dart.fn(() => {
            this[_socketTasks].remove(task);
            task.cancel();
          }, VoidToNull())});
      }
      return FutureOf_ConnectionInfo()._check(socketFuture.then(_http._ConnectionInfo, dart.fn(socket => {
        this[_connecting] = dart.notNull(this[_connecting]) - 1;
        dart.dsend(socket, 'setOption', [io.SocketOption.tcpNoDelay, true]);
        let connection = new _http._HttpClientConnection.new(this.key, io.Socket._check(socket), client, false, this.context);
        if (dart.test(this.isSecure) && !dart.test(proxy.isDirect)) {
          connection[_dispose] = true;
          return FutureOf_ConnectionInfo()._check(connection.createProxyTunnel(uriHost, uriPort, proxy, callback).then(_http._ConnectionInfo, dart.fn(tunnel => {
            client[_getConnectionTarget](uriHost, uriPort, true).addNewActive(tunnel);
            this[_socketTasks].remove(task);
            return new _http._ConnectionInfo.new(tunnel, proxy);
          }, _HttpClientConnectionTo_ConnectionInfo())));
        } else {
          this.addNewActive(connection);
          this[_socketTasks].remove(task);
          return new _http._ConnectionInfo.new(connection, proxy);
        }
      }, dynamicToFutureOrOf_ConnectionInfo()), {onError: dart.fn(error => {
          this[_connecting] = dart.notNull(this[_connecting]) - 1;
          this[_socketTasks].remove(task);
          this[_checkPending]();
          dart.throw(error);
        }, dynamicToNull())}));
    }, ConnectionTaskToFutureOf_ConnectionInfo())));
  }
};
(_http._ConnectionTarget.new = function(key, host, port, isSecure, context) {
  this[_idle] = new (_HashSetOf_HttpClientConnection()).new();
  this[_active] = new (_HashSetOf_HttpClientConnection()).new();
  this[_socketTasks] = new (_HashSetOfConnectionTask()).new();
  this[_pending$] = new collection.ListQueue.new();
  this[_connecting] = 0;
  this.key = key;
  this.host = host;
  this.port = port;
  this.isSecure = isSecure;
  this.context = context;
}).prototype = _http._ConnectionTarget.prototype;
dart.addTypeTests(_http._ConnectionTarget);
dart.setMethodSignature(_http._ConnectionTarget, () => ({
  __proto__: dart.getMethods(_http._ConnectionTarget.__proto__),
  takeIdle: dart.fnType(_http._HttpClientConnection, []),
  [_checkPending]: dart.fnType(dart.dynamic, []),
  addNewActive: dart.fnType(dart.void, [_http._HttpClientConnection]),
  returnConnection: dart.fnType(dart.void, [_http._HttpClientConnection]),
  connectionClosed: dart.fnType(dart.void, [_http._HttpClientConnection]),
  close: dart.fnType(dart.void, [core.bool]),
  connect: dart.fnType(async.Future$(_http._ConnectionInfo), [core.String, core.int, _http._Proxy, _http._HttpClient])
}));
dart.setGetterSignature(_http._ConnectionTarget, () => ({
  __proto__: dart.getGetters(_http._ConnectionTarget.__proto__),
  isEmpty: core.bool,
  hasIdle: core.bool,
  hasActive: core.bool
}));
dart.setFieldSignature(_http._ConnectionTarget, () => ({
  __proto__: dart.getFields(_http._ConnectionTarget.__proto__),
  key: dart.finalFieldType(core.String),
  host: dart.finalFieldType(core.String),
  port: dart.finalFieldType(core.int),
  isSecure: dart.finalFieldType(core.bool),
  context: dart.finalFieldType(io.SecurityContext),
  [_idle]: dart.finalFieldType(SetOf_HttpClientConnection()),
  [_active]: dart.finalFieldType(SetOf_HttpClientConnection()),
  [_socketTasks]: dart.finalFieldType(SetOfConnectionTask()),
  [_pending$]: dart.finalFieldType(collection.Queue),
  [_connecting]: dart.fieldType(core.int)
}));
const _closing = Symbol('_closing');
const _closingForcefully = Symbol('_closingForcefully');
const _connectionTargets = Symbol('_connectionTargets');
const _credentials = Symbol('_credentials');
const _findProxy = Symbol('_findProxy');
const _idleTimeout = Symbol('_idleTimeout');
let const$91;
const _openUrl = Symbol('_openUrl');
const _closeConnections = Symbol('_closeConnections');
let const$92;
const _getConnection = Symbol('_getConnection');
_http._HttpClient = class _HttpClient extends core.Object {
  get idleTimeout() {
    return this[_idleTimeout];
  }
  set idleTimeout(timeout) {
    this[_idleTimeout] = timeout;
    for (let c of this[_connectionTargets][$values]) {
      for (let idle of c[_idle]) {
        idle.stopTimer();
        idle.startTimer();
      }
    }
  }
  set badCertificateCallback(callback) {
    this[_badCertificateCallback] = callback;
  }
  open(method, host, port, path) {
    let hashMark = 35;
    let questionMark = 63;
    let fragmentStart = path.length;
    let queryStart = path.length;
    for (let i = path.length - 1; i >= 0; i--) {
      let char = path[$codeUnitAt](i);
      if (char === hashMark) {
        fragmentStart = i;
        queryStart = i;
      } else if (char === questionMark) {
        queryStart = i;
      }
    }
    let query = null;
    if (queryStart < fragmentStart) {
      query = path[$substring](queryStart + 1, fragmentStart);
      path = path[$substring](0, queryStart);
    }
    let uri = core.Uri.new({scheme: "http", host: host, port: port, path: path, query: query});
    return this[_openUrl](method, uri);
  }
  openUrl(method, url) {
    return this[_openUrl](method, url);
  }
  get(host, port, path) {
    return this.open("get", host, port, path);
  }
  getUrl(url) {
    return this[_openUrl]("get", url);
  }
  post(host, port, path) {
    return this.open("post", host, port, path);
  }
  postUrl(url) {
    return this[_openUrl]("post", url);
  }
  put(host, port, path) {
    return this.open("put", host, port, path);
  }
  putUrl(url) {
    return this[_openUrl]("put", url);
  }
  delete(host, port, path) {
    return this.open("delete", host, port, path);
  }
  deleteUrl(url) {
    return this[_openUrl]("delete", url);
  }
  head(host, port, path) {
    return this.open("head", host, port, path);
  }
  headUrl(url) {
    return this[_openUrl]("head", url);
  }
  patch(host, port, path) {
    return this.open("patch", host, port, path);
  }
  patchUrl(url) {
    return this[_openUrl]("patch", url);
  }
  close(opts) {
    let force = opts && 'force' in opts ? opts.force : false;
    this[_closing] = true;
    this[_closingForcefully] = force;
    this[_closeConnections](this[_closingForcefully]);
    if (!!dart.test(this[_connectionTargets][$values][$any](dart.fn(s => s.hasIdle, _ConnectionTargetTobool())))) dart.assertFailed();
    if (!(!dart.test(force) || !dart.test(this[_connectionTargets][$values][$any](dart.fn(s => s[_active].isNotEmpty, _ConnectionTargetTobool()))))) dart.assertFailed();
  }
  set authenticate(f) {
    this[_authenticate] = f;
  }
  addCredentials(url, realm, cr) {
    this[_credentials][$add](new _http._SiteCredentials.new(url, realm, _http._HttpClientCredentials._check(cr)));
  }
  set authenticateProxy(f) {
    this[_authenticateProxy] = f;
  }
  addProxyCredentials(host, port, realm, cr) {
    this[_proxyCredentials][$add](new _http._ProxyCredentials.new(host, port, realm, _http._HttpClientCredentials._check(cr)));
  }
  set findProxy(f) {
    return this[_findProxy] = f;
  }
  [_openUrl](method, uri) {
    if (dart.test(this[_closing])) {
      dart.throw(new core.StateError.new("Client is closed"));
    }
    uri = uri.removeFragment();
    if (method == null) {
      dart.throw(new core.ArgumentError.new(method));
    }
    if (method !== "CONNECT") {
      if (uri.host[$isEmpty]) {
        dart.throw(new core.ArgumentError.new("No host specified in URI " + dart.str(uri)));
      } else if (uri.scheme !== "http" && uri.scheme !== "https") {
        dart.throw(new core.ArgumentError.new("Unsupported scheme '" + dart.str(uri.scheme) + "' in URI " + dart.str(uri)));
      }
    }
    let isSecure = uri.scheme === "https";
    let port = uri.port;
    if (port === 0) {
      port = isSecure ? _http.HttpClient.defaultHttpsPort : _http.HttpClient.defaultHttpPort;
    }
    let proxyConf = const$92 || (const$92 = dart.const(new _http._ProxyConfiguration.direct()));
    if (this[_findProxy] != null) {
      try {
        proxyConf = new _http._ProxyConfiguration.new(core.String._check(dart.dcall(this[_findProxy], [uri])));
      } catch (e) {
        let error = dart.getThrown(e);
        let stackTrace = dart.stackTrace(e);
        return FutureOf_HttpClientRequest().error(error, stackTrace);
      }
    }
    return FutureOf_HttpClientRequest()._check(this[_getConnection](uri.host, port, proxyConf, isSecure).then(_http._HttpClientRequest, dart.fn(info => {
      function send(info) {
        return info.connection.send(uri, port, method[$toUpperCase](), info.proxy);
      }
      dart.fn(send, _ConnectionInfoTo_HttpClientRequest());
      if (dart.test(info.connection.closed)) {
        return FutureOf_HttpClientRequest()._check(this[_getConnection](uri.host, port, proxyConf, isSecure).then(_http._HttpClientRequest, send));
      }
      return send(info);
    }, _ConnectionInfoToFutureOrOf_HttpClientRequest())));
  }
  [_openUrlFromRequest](method, uri, previous) {
    let resolved = previous.uri.resolveUri(uri);
    return FutureOf_HttpClientRequest()._check(this[_openUrl](method, resolved).then(_http._HttpClientRequest, dart.fn(request => {
      request.followRedirects = previous.followRedirects;
      request.maxRedirects = previous.maxRedirects;
      for (let header of previous.headers[_headers][$keys]) {
        if (request.headers._get(header) == null) {
          request.headers.set(header, previous.headers._get(header));
        }
      }
      request.headers.chunkedTransferEncoding = false;
      request.contentLength = 0;
      return request;
    }, _HttpClientRequestTo_HttpClientRequest())));
  }
  [_returnConnection](connection) {
    this[_connectionTargets][$_get](connection.key).returnConnection(connection);
    this[_connectionsChanged]();
  }
  [_connectionClosed](connection) {
    connection.stopTimer();
    let connectionTarget = this[_connectionTargets][$_get](connection.key);
    if (connectionTarget != null) {
      connectionTarget.connectionClosed(connection);
      if (dart.test(connectionTarget.isEmpty)) {
        this[_connectionTargets][$remove](connection.key);
      }
      this[_connectionsChanged]();
    }
  }
  [_connectionsChanged]() {
    if (dart.test(this[_closing])) {
      this[_closeConnections](this[_closingForcefully]);
    }
  }
  [_closeConnections](force) {
    for (let connectionTarget of this[_connectionTargets][$values][$toList]()) {
      connectionTarget.close(force);
    }
  }
  [_getConnectionTarget](host, port, isSecure) {
    let key = core.String._check(_http._HttpClientConnection.makeKey(isSecure, host, port));
    return this[_connectionTargets][$putIfAbsent](key, dart.fn(() => new _http._ConnectionTarget.new(key, host, port, isSecure, this[_context$]), VoidTo_ConnectionTarget()));
  }
  [_getConnection](uriHost, uriPort, proxyConf, isSecure) {
    let proxies = proxyConf.proxies[$iterator];
    const connect = (function(error) {
      if (!dart.test(proxies.moveNext())) return FutureOf_ConnectionInfo().error(error);
      let proxy = proxies.current;
      let host = dart.test(proxy.isDirect) ? uriHost : proxy.host;
      let port = dart.test(proxy.isDirect) ? uriPort : proxy.port;
      return this[_getConnectionTarget](host, port, isSecure).connect(uriHost, uriPort, proxy, this).catchError(connect);
    }).bind(this);
    dart.fn(connect, dynamicToFutureOf_ConnectionInfo());
    return connect(new _http.HttpException.new("No proxies given"));
  }
  [_findCredentials](url, scheme) {
    if (scheme === void 0) scheme = null;
    let cr = _http._SiteCredentials._check(this[_credentials][$fold](_http._SiteCredentials, null, dart.fn((prev, value) => {
      let siteCredentials = _http._SiteCredentials.as(value);
      if (dart.test(siteCredentials.applies(url, scheme))) {
        if (prev == null) return _http._SiteCredentials._check(value);
        return siteCredentials.uri.path.length > prev.uri.path.length ? siteCredentials : prev;
      } else {
        return prev;
      }
    }, _SiteCredentialsAnd_CredentialsTo_SiteCredentials())));
    return cr;
  }
  [_findProxyCredentials](proxy, scheme) {
    if (scheme === void 0) scheme = null;
    let it = this[_proxyCredentials][$iterator];
    while (dart.test(it.moveNext())) {
      if (dart.test(it.current.applies(proxy, scheme))) {
        return it.current;
      }
    }
    return null;
  }
  [_removeCredentials](cr) {
    let index = this[_credentials][$indexOf](cr);
    if (index !== -1) {
      this[_credentials][$removeAt](index);
    }
  }
  [_removeProxyCredentials](cr) {
    let index = this[_proxyCredentials][$indexOf](_http._ProxyCredentials._check(cr));
    if (index !== -1) {
      this[_proxyCredentials][$removeAt](index);
    }
  }
  static _findProxyFromEnvironment(url, environment) {
    function checkNoProxy(option) {
      if (option == null) return null;
      let names = IterableOfString()._check(option[$split](",")[$map](core.String, dart.fn(s => s[$trim](), StringToString())))[$iterator];
      while (dart.test(names.moveNext())) {
        let name = names.current;
        if (name[$startsWith]("[") && name[$endsWith]("]") && "[" + dart.str(url.host) + "]" === name || name[$isNotEmpty] && url.host[$endsWith](name)) {
          return "DIRECT";
        }
      }
      return null;
    }
    dart.fn(checkNoProxy, StringToString());
    function checkProxy(option) {
      if (option == null) return null;
      option = option[$trim]();
      if (option[$isEmpty]) return null;
      let pos = option[$indexOf]("://");
      if (pos >= 0) {
        option = option[$substring](pos + 3);
      }
      pos = option[$indexOf]("/");
      if (pos >= 0) {
        option = option[$substring](0, pos);
      }
      if (option[$indexOf]("[") === 0) {
        let pos = option[$lastIndexOf](":");
        if (option[$indexOf]("]") > pos) option = dart.str(option) + ":1080";
      } else {
        if (option[$indexOf](":") === -1) option = dart.str(option) + ":1080";
      }
      return "PROXY " + dart.str(option);
    }
    dart.fn(checkProxy, StringToString());
    if (environment == null) environment = _http._HttpClient._platformEnvironmentCache;
    let proxyCfg = null;
    let noProxy = environment[$_get]("no_proxy");
    if (noProxy == null) noProxy = environment[$_get]("NO_PROXY");
    if ((proxyCfg = checkNoProxy(noProxy)) != null) {
      return proxyCfg;
    }
    if (url.scheme === "http") {
      let proxy = environment[$_get]("http_proxy");
      if (proxy == null) proxy = environment[$_get]("HTTP_PROXY");
      if ((proxyCfg = checkProxy(proxy)) != null) {
        return proxyCfg;
      }
    } else if (url.scheme === "https") {
      let proxy = environment[$_get]("https_proxy");
      if (proxy == null) proxy = environment[$_get]("HTTPS_PROXY");
      if ((proxyCfg = checkProxy(proxy)) != null) {
        return proxyCfg;
      }
    }
    return "DIRECT";
  }
};
(_http._HttpClient.new = function(context) {
  this[_closing] = false;
  this[_closingForcefully] = false;
  this[_connectionTargets] = new (IdentityMapOfString$_ConnectionTarget()).new();
  this[_credentials] = JSArrayOf_Credentials().of([]);
  this[_proxyCredentials] = JSArrayOf_ProxyCredentials().of([]);
  this[_authenticate] = null;
  this[_authenticateProxy] = null;
  this[_findProxy] = dart.fn(_http.HttpClient.findProxyFromEnvironment, Uri__ToString());
  this[_idleTimeout] = const$91 || (const$91 = dart.const(new core.Duration.new({seconds: 15})));
  this[_badCertificateCallback] = null;
  this.connectionTimeout = null;
  this.maxConnectionsPerHost = null;
  this.autoUncompress = true;
  this.userAgent = _http._getHttpVersion();
  this[_context$] = context;
}).prototype = _http._HttpClient.prototype;
dart.addTypeTests(_http._HttpClient);
_http._HttpClient[dart.implements] = () => [_http.HttpClient];
dart.setMethodSignature(_http._HttpClient, () => ({
  __proto__: dart.getMethods(_http._HttpClient.__proto__),
  open: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.String, core.int, core.String]),
  openUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.Uri]),
  get: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
  getUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
  post: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
  postUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
  put: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
  putUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
  delete: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
  deleteUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
  head: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
  headUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
  patch: dart.fnType(async.Future$(_http.HttpClientRequest), [core.String, core.int, core.String]),
  patchUrl: dart.fnType(async.Future$(_http.HttpClientRequest), [core.Uri]),
  close: dart.fnType(dart.void, [], {force: core.bool}),
  addCredentials: dart.fnType(dart.void, [core.Uri, core.String, _http.HttpClientCredentials]),
  addProxyCredentials: dart.fnType(dart.void, [core.String, core.int, core.String, _http.HttpClientCredentials]),
  [_openUrl]: dart.fnType(async.Future$(_http._HttpClientRequest), [core.String, core.Uri]),
  [_openUrlFromRequest]: dart.fnType(async.Future$(_http._HttpClientRequest), [core.String, core.Uri, _http._HttpClientRequest]),
  [_returnConnection]: dart.fnType(dart.void, [_http._HttpClientConnection]),
  [_connectionClosed]: dart.fnType(dart.void, [_http._HttpClientConnection]),
  [_connectionsChanged]: dart.fnType(dart.void, []),
  [_closeConnections]: dart.fnType(dart.void, [core.bool]),
  [_getConnectionTarget]: dart.fnType(_http._ConnectionTarget, [core.String, core.int, core.bool]),
  [_getConnection]: dart.fnType(async.Future$(_http._ConnectionInfo), [core.String, core.int, _http._ProxyConfiguration, core.bool]),
  [_findCredentials]: dart.fnType(_http._SiteCredentials, [core.Uri], [_http._AuthenticationScheme]),
  [_findProxyCredentials]: dart.fnType(_http._ProxyCredentials, [_http._Proxy], [_http._AuthenticationScheme]),
  [_removeCredentials]: dart.fnType(dart.void, [_http._Credentials]),
  [_removeProxyCredentials]: dart.fnType(dart.void, [_http._Credentials])
}));
dart.setGetterSignature(_http._HttpClient, () => ({
  __proto__: dart.getGetters(_http._HttpClient.__proto__),
  idleTimeout: core.Duration
}));
dart.setSetterSignature(_http._HttpClient, () => ({
  __proto__: dart.getSetters(_http._HttpClient.__proto__),
  idleTimeout: core.Duration,
  badCertificateCallback: dart.fnType(core.bool, [io.X509Certificate, core.String, core.int]),
  authenticate: dart.fnType(async.Future$(core.bool), [core.Uri, core.String, core.String]),
  authenticateProxy: dart.fnType(async.Future$(core.bool), [core.String, core.int, core.String, core.String]),
  findProxy: dart.fnType(core.String, [core.Uri])
}));
dart.setFieldSignature(_http._HttpClient, () => ({
  __proto__: dart.getFields(_http._HttpClient.__proto__),
  [_closing]: dart.fieldType(core.bool),
  [_closingForcefully]: dart.fieldType(core.bool),
  [_connectionTargets]: dart.finalFieldType(MapOfString$_ConnectionTarget()),
  [_credentials]: dart.finalFieldType(ListOf_Credentials()),
  [_proxyCredentials]: dart.finalFieldType(ListOf_ProxyCredentials()),
  [_context$]: dart.finalFieldType(io.SecurityContext),
  [_authenticate]: dart.fieldType(core.Function),
  [_authenticateProxy]: dart.fieldType(core.Function),
  [_findProxy]: dart.fieldType(core.Function),
  [_idleTimeout]: dart.fieldType(core.Duration),
  [_badCertificateCallback]: dart.fieldType(X509CertificateAndStringAndintTobool()),
  connectionTimeout: dart.fieldType(core.Duration),
  maxConnectionsPerHost: dart.fieldType(core.int),
  autoUncompress: dart.fieldType(core.bool),
  userAgent: dart.fieldType(core.String)
}));
dart.defineLazy(_http._HttpClient, {
  /*_http._HttpClient._platformEnvironmentCache*/get _platformEnvironmentCache() {
    return io.Platform.environment;
  },
  set _platformEnvironmentCache(_) {}
});
const _state$1 = Symbol('_state');
const _idleMark = Symbol('_idleMark');
const _markActive = Symbol('_markActive');
const _markIdle = Symbol('_markIdle');
const _handleRequest = Symbol('_handleRequest');
const _isActive = Symbol('_isActive');
const _isIdle = Symbol('_isIdle');
const _isDetached = Symbol('_isDetached');
const _toJSON$ = Symbol('_toJSON');
const LinkedListEntry__ServiceObject$ = class LinkedListEntry__ServiceObject extends collection.LinkedListEntry {};
(LinkedListEntry__ServiceObject$.new = function() {
  _http._ServiceObject.new.call(this);
  LinkedListEntry__ServiceObject$.__proto__.new.call(this);
}).prototype = LinkedListEntry__ServiceObject$.prototype;
dart.applyMixin(LinkedListEntry__ServiceObject$, _http._ServiceObject);
_http._HttpConnection = class _HttpConnection extends LinkedListEntry__ServiceObject$ {
  markIdle() {
    this[_idleMark] = true;
  }
  get isMarkedIdle() {
    return this[_idleMark];
  }
  destroy() {
    if (this[_state$1] === 2 || this[_state$1] === 3) return;
    this[_state$1] = 2;
    dart.dsend(this[_socket$], 'destroy', []);
    this[_httpServer][_connectionClosed](this);
    _http._HttpConnection._connections[$remove](this[_serviceId$]);
  }
  detachSocket() {
    this[_state$1] = 3;
    this[_httpServer][_connectionClosed](this);
    let detachedIncoming = this[_httpParser].detachIncoming();
    return FutureOfSocket()._check(this[_streamFuture].then(io.Socket, dart.fn(_ => {
      _http._HttpConnection._connections[$remove](this[_serviceId$]);
      return new _http._DetachedSocket.new(io.Socket._check(this[_socket$]), detachedIncoming);
    }, dynamicTo_DetachedSocket())));
  }
  get connectionInfo() {
    return _http._HttpConnectionInfo.create(io.Socket._check(this[_socket$]));
  }
  get [_isActive]() {
    return this[_state$1] === 0;
  }
  get [_isIdle]() {
    return this[_state$1] === 1;
  }
  get [_isClosing]() {
    return this[_state$1] === 2;
  }
  get [_isDetached]() {
    return this[_state$1] === 3;
  }
  get [_serviceTypePath$]() {
    return "io/http/serverconnections";
  }
  get [_serviceTypeName$]() {
    return "HttpServerConnection";
  }
  [_toJSON$](ref) {
    let name = dart.str(dart.dload(dart.dload(this[_socket$], 'address'), 'host')) + ":" + dart.str(dart.dload(this[_socket$], 'port')) + " <-> " + (dart.str(dart.dload(dart.dload(this[_socket$], 'remoteAddress'), 'host')) + ":" + dart.str(dart.dload(this[_socket$], 'remotePort')));
    let r = new (IdentityMapOfString$dynamic()).from(["id", this[_servicePath$], "type", this[_serviceType$](ref), "name", name, "user_name", name]);
    if (dart.test(ref)) {
      return r;
    }
    r[$_set]("server", this[_httpServer][_toJSON$](true));
    try {
      r[$_set]("socket", dart.dsend(this[_socket$], _toJSON$, [true]));
    } catch (e) {
      let _ = dart.getThrown(e);
      r[$_set]("socket", new (IdentityMapOfString$String()).from(["id", this[_servicePath$], "type", "@Socket", "name", "UserSocket", "user_name", "UserSocket"]));
    }
    switch (this[_state$1]) {
      case 0:
      {
        r[$_set]("state", "Active");
        break;
      }
      case 1:
      {
        r[$_set]("state", "Idle");
        break;
      }
      case 2:
      {
        r[$_set]("state", "Closing");
        break;
      }
      case 3:
      {
        r[$_set]("state", "Detached");
        break;
      }
      default:
      {
        r[$_set]("state", "Unknown");
        break;
      }
    }
    return r;
  }
};
(_http._HttpConnection.new = function(socket, httpServer) {
  this[_state$1] = 1;
  this[_subscription$0] = null;
  this[_idleMark] = false;
  this[_streamFuture] = null;
  this[_socket$] = socket;
  this[_httpServer] = httpServer;
  this[_httpParser] = _http._HttpParser.requestParser();
  _http._HttpConnection.__proto__.new.call(this);
  _http._HttpConnection._connections[$_set](this[_serviceId$], this);
  this[_httpParser].listenToStream(StreamOfListOfint()._check(this[_socket$]));
  this[_subscription$0] = this[_httpParser].listen(dart.fn(incoming => {
    this[_httpServer][_markActive](this);
    FutureOfNull()._check(incoming.dataDone.then(core.Null, dart.fn(closing => {
      if (dart.dtest(closing)) this.destroy();
    }, dynamicToNull())));
    this[_subscription$0].pause();
    this[_state$1] = 0;
    let outgoing = new _http._HttpOutgoing.new(io.Socket._check(this[_socket$]));
    let response = new _http._HttpResponse.new(incoming.uri, incoming.headers.protocolVersion, outgoing, this[_httpServer].defaultResponseHeaders, this[_httpServer].serverHeader);
    let request = new _http._HttpRequest.new(response, incoming, this[_httpServer], this);
    this[_streamFuture] = outgoing.done.then(dart.dynamic, dart.fn(_ => {
      response.deadline = null;
      if (this[_state$1] === 3) return;
      if (dart.test(response.persistentConnection) && dart.test(request.persistentConnection) && dart.test(incoming.fullBodyRead) && !dart.test(this[_httpParser].upgrade) && !dart.test(this[_httpServer].closed)) {
        this[_state$1] = 1;
        this[_idleMark] = false;
        this[_httpServer][_markIdle](this);
        this[_subscription$0].resume();
      } else {
        this.destroy();
      }
    }, SocketToNull()), {onError: dart.fn(_ => {
        this.destroy();
      }, dynamicToNull())});
    outgoing.ignoreBody = request.method === "HEAD";
    response[_httpRequest] = request;
    this[_httpServer][_handleRequest](request);
  }, _HttpIncomingToNull()), {onDone: dart.fn(() => {
      this.destroy();
    }, VoidToNull()), onError: dart.fn(error => {
      this.destroy();
    }, dynamicToNull())});
}).prototype = _http._HttpConnection.prototype;
dart.addTypeTests(_http._HttpConnection);
dart.setMethodSignature(_http._HttpConnection, () => ({
  __proto__: dart.getMethods(_http._HttpConnection.__proto__),
  markIdle: dart.fnType(dart.void, []),
  destroy: dart.fnType(dart.void, []),
  detachSocket: dart.fnType(async.Future$(io.Socket), []),
  [_toJSON$]: dart.fnType(core.Map, [core.bool])
}));
dart.setGetterSignature(_http._HttpConnection, () => ({
  __proto__: dart.getGetters(_http._HttpConnection.__proto__),
  isMarkedIdle: core.bool,
  connectionInfo: _http.HttpConnectionInfo,
  [_isActive]: core.bool,
  [_isIdle]: core.bool,
  [_isClosing]: core.bool,
  [_isDetached]: core.bool,
  [_serviceTypePath$]: core.String,
  [_serviceTypeName$]: core.String
}));
dart.setFieldSignature(_http._HttpConnection, () => ({
  __proto__: dart.getFields(_http._HttpConnection.__proto__),
  [_socket$]: dart.finalFieldType(dart.dynamic),
  [_httpServer]: dart.finalFieldType(_http._HttpServer),
  [_httpParser]: dart.finalFieldType(_http._HttpParser),
  [_state$1]: dart.fieldType(core.int),
  [_subscription$0]: dart.fieldType(async.StreamSubscription),
  [_idleMark]: dart.fieldType(core.bool),
  [_streamFuture]: dart.fieldType(async.Future)
}));
dart.setBaseClass(_http._HttpConnection.__proto__, collection.LinkedListEntry$(_http._HttpConnection));
dart.defineLazy(_http._HttpConnection, {
  /*_http._HttpConnection._ACTIVE*/get _ACTIVE() {
    return 0;
  },
  /*_http._HttpConnection._IDLE*/get _IDLE() {
    return 1;
  },
  /*_http._HttpConnection._CLOSING*/get _CLOSING() {
    return 2;
  },
  /*_http._HttpConnection._DETACHED*/get _DETACHED() {
    return 3;
  },
  /*_http._HttpConnection._connections*/get _connections() {
    return new (IdentityMapOfint$_HttpConnection()).new();
  },
  set _connections(_) {}
});
const _serverSocket = Symbol('_serverSocket');
const _closeServer = Symbol('_closeServer');
const _activeConnections = Symbol('_activeConnections');
const _idleConnections = Symbol('_idleConnections');
let const$93;
let const$94;
const _maybePerformCleanup$ = Symbol('_maybePerformCleanup');
const Stream__ServiceObject$ = class Stream__ServiceObject extends async.Stream$(_http.HttpRequest) {};
(Stream__ServiceObject$.new = function() {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$.__proto__.new.call(this);
}).prototype = Stream__ServiceObject$.prototype;
(Stream__ServiceObject$._internal = function() {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$.__proto__._internal.call(this);
}).prototype = Stream__ServiceObject$.prototype;
(Stream__ServiceObject$.empty = function() {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$.__proto__.empty.call(this);
}).prototype = Stream__ServiceObject$.prototype;
(Stream__ServiceObject$.fromFuture = function(future) {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$.__proto__.fromFuture.call(this, future);
}).prototype = Stream__ServiceObject$.prototype;
(Stream__ServiceObject$.fromFutures = function(futures) {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$.__proto__.fromFutures.call(this, futures);
}).prototype = Stream__ServiceObject$.prototype;
(Stream__ServiceObject$.fromIterable = function(elements) {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$.__proto__.fromIterable.call(this, elements);
}).prototype = Stream__ServiceObject$.prototype;
(Stream__ServiceObject$.periodic = function(period, computation) {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$.__proto__.periodic.call(this, period, computation);
}).prototype = Stream__ServiceObject$.prototype;
(Stream__ServiceObject$.eventTransformed = function(source, mapSink) {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$.__proto__.eventTransformed.call(this, source, mapSink);
}).prototype = Stream__ServiceObject$.prototype;
dart.applyMixin(Stream__ServiceObject$, _http._ServiceObject);
_http._HttpServer = class _HttpServer extends Stream__ServiceObject$ {
  static bind(address, port, backlog, v6Only, shared) {
    return FutureOfHttpServer()._check(io.ServerSocket.bind(address, port, {backlog: backlog, v6Only: v6Only, shared: shared}).then(_http.HttpServer, dart.fn(socket => new _http._HttpServer.__(socket, true), ServerSocketTo_HttpServer())));
  }
  static bindSecure(address, port, context, backlog, v6Only, requestClientCertificate, shared) {
    return FutureOfHttpServer()._check(io.SecureServerSocket.bind(address, port, context, {backlog: backlog, v6Only: v6Only, requestClientCertificate: requestClientCertificate, shared: shared}).then(_http.HttpServer, dart.fn(socket => new _http._HttpServer.__(socket, true), SecureServerSocketTo_HttpServer())));
  }
  static _initDefaultResponseHeaders() {
    let defaultResponseHeaders = new _http._HttpHeaders.new("1.1");
    defaultResponseHeaders.contentType = _http.ContentType.text;
    defaultResponseHeaders.set("X-Frame-Options", "SAMEORIGIN");
    defaultResponseHeaders.set("X-Content-Type-Options", "nosniff");
    defaultResponseHeaders.set("X-XSS-Protection", "1; mode=block");
    return defaultResponseHeaders;
  }
  get idleTimeout() {
    return this[_idleTimeout];
  }
  set idleTimeout(duration) {
    if (this[_idleTimer] != null) {
      this[_idleTimer].cancel();
      this[_idleTimer] = null;
    }
    this[_idleTimeout] = duration;
    if (this[_idleTimeout] != null) {
      this[_idleTimer] = async.Timer.periodic(this[_idleTimeout], dart.fn(_ => {
        for (let idle of this[_idleConnections].toList()) {
          if (dart.test(idle.isMarkedIdle)) {
            idle.destroy();
          } else {
            idle.markIdle();
          }
        }
      }, TimerToNull()));
    }
  }
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    dart.dsend(this[_serverSocket], 'listen', [dart.fn(socket => {
        socket.setOption(io.SocketOption.tcpNoDelay, true);
        let connection = new _http._HttpConnection.new(socket, this);
        this[_idleConnections].add(connection);
      }, SocketToNull())], {onError: dart.fn((error, stackTrace) => {
        if (!io.HandshakeException.is(error)) {
          this[_controller$1].addError(error, core.StackTrace._check(stackTrace));
        }
      }, dynamicAnddynamicToNull()), onDone: dart.bind(this[_controller$1], 'close')});
    return this[_controller$1].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  close(opts) {
    let force = opts && 'force' in opts ? opts.force : false;
    this.closed = true;
    let result = null;
    if (this[_serverSocket] != null && dart.test(this[_closeServer])) {
      result = async.Future._check(dart.dsend(this[_serverSocket], 'close', []));
    } else {
      result = async.Future.value();
    }
    this.idleTimeout = null;
    if (dart.test(force)) {
      for (let c of this[_activeConnections].toList()) {
        c.destroy();
      }
      if (!dart.test(this[_activeConnections].isEmpty)) dart.assertFailed();
    }
    for (let c of this[_idleConnections].toList()) {
      c.destroy();
    }
    this[_maybePerformCleanup$]();
    return result;
  }
  [_maybePerformCleanup$]() {
    if (dart.test(this.closed) && dart.test(this[_idleConnections].isEmpty) && dart.test(this[_activeConnections].isEmpty) && this[_sessionManagerInstance] != null) {
      this[_sessionManagerInstance].close();
      this[_sessionManagerInstance] = null;
      _http._HttpServer._servers[$remove](this[_serviceId$]);
    }
  }
  get port() {
    if (dart.test(this.closed)) dart.throw(new _http.HttpException.new("HttpServer is not bound to a socket"));
    return core.int._check(dart.dload(this[_serverSocket], 'port'));
  }
  get address() {
    if (dart.test(this.closed)) dart.throw(new _http.HttpException.new("HttpServer is not bound to a socket"));
    return io.InternetAddress._check(dart.dload(this[_serverSocket], 'address'));
  }
  set sessionTimeout(timeout) {
    this[_sessionManager].sessionTimeout = timeout;
  }
  [_handleRequest](request) {
    if (!dart.test(this.closed)) {
      this[_controller$1].add(request);
    } else {
      request[_httpConnection].destroy();
    }
  }
  [_connectionClosed](connection) {
    connection.unlink();
    this[_maybePerformCleanup$]();
  }
  [_markIdle](connection) {
    this[_activeConnections].remove(connection);
    this[_idleConnections].add(connection);
  }
  [_markActive](connection) {
    this[_idleConnections].remove(connection);
    this[_activeConnections].add(connection);
  }
  get [_sessionManager]() {
    if (this[_sessionManagerInstance] == null) {
      this[_sessionManagerInstance] = new _http._HttpSessionManager.new();
    }
    return this[_sessionManagerInstance];
  }
  connectionsInfo() {
    let result = new _http.HttpConnectionsInfo.new();
    result.total = dart.notNull(this[_activeConnections].length) + dart.notNull(this[_idleConnections].length);
    this[_activeConnections].forEach(dart.fn(conn => {
      if (dart.test(conn[_isActive])) {
        result.active = dart.notNull(result.active) + 1;
      } else {
        if (!dart.test(conn[_isClosing])) dart.assertFailed();
        result.closing = dart.notNull(result.closing) + 1;
      }
    }, _HttpConnectionToNull()));
    this[_idleConnections].forEach(dart.fn(conn => {
      result.idle = dart.notNull(result.idle) + 1;
      if (!dart.test(conn[_isIdle])) dart.assertFailed();
    }, _HttpConnectionToNull()));
    return result;
  }
  get [_serviceTypePath$]() {
    return "io/http/servers";
  }
  get [_serviceTypeName$]() {
    return "HttpServer";
  }
  [_toJSON$](ref) {
    let r = new (IdentityMapOfString$dynamic()).from(["id", this[_servicePath$], "type", this[_serviceType$](ref), "name", dart.str(this.address.host) + ":" + dart.str(this.port), "user_name", dart.str(this.address.host) + ":" + dart.str(this.port)]);
    if (dart.test(ref)) {
      return r;
    }
    try {
      r[$_set]("socket", dart.dsend(this[_serverSocket], _toJSON$, [true]));
    } catch (e) {
      let _ = dart.getThrown(e);
      r[$_set]("socket", new (IdentityMapOfString$String()).from(["id", this[_servicePath$], "type", "@Socket", "name", "UserSocket", "user_name", "UserSocket"]));
    }
    r[$_set]("port", this.port);
    r[$_set]("address", this.address.host);
    r[$_set]("active", IterableOfMap()._check(this[_activeConnections].map(core.Map, dart.fn(c => c[_toJSON$](true), _HttpConnectionToMap())))[$toList]());
    r[$_set]("idle", IterableOfMap()._check(this[_idleConnections].map(core.Map, dart.fn(c => c[_toJSON$](true), _HttpConnectionToMap())))[$toList]());
    r[$_set]("closed", this.closed);
    return r;
  }
};
(_http._HttpServer.__ = function(serverSocket, closeServer) {
  this.serverHeader = null;
  this.defaultResponseHeaders = _http._HttpServer._initDefaultResponseHeaders();
  this.autoCompress = false;
  this[_idleTimeout] = null;
  this[_idleTimer] = null;
  this[_sessionManagerInstance] = null;
  this.closed = false;
  this[_activeConnections] = new (LinkedListOf_HttpConnection()).new();
  this[_idleConnections] = new (LinkedListOf_HttpConnection()).new();
  this[_controller$1] = null;
  this[_serverSocket] = serverSocket;
  this[_closeServer] = closeServer;
  _http._HttpServer.__proto__.new.call(this);
  this[_controller$1] = StreamControllerOfHttpRequest().new({sync: true, onCancel: dart.bind(this, 'close')});
  this.idleTimeout = const$93 || (const$93 = dart.const(new core.Duration.new({seconds: 120})));
  _http._HttpServer._servers[$_set](this[_serviceId$], this);
}).prototype = _http._HttpServer.prototype;
(_http._HttpServer.listenOn = function(serverSocket) {
  this.serverHeader = null;
  this.defaultResponseHeaders = _http._HttpServer._initDefaultResponseHeaders();
  this.autoCompress = false;
  this[_idleTimeout] = null;
  this[_idleTimer] = null;
  this[_sessionManagerInstance] = null;
  this.closed = false;
  this[_activeConnections] = new (LinkedListOf_HttpConnection()).new();
  this[_idleConnections] = new (LinkedListOf_HttpConnection()).new();
  this[_controller$1] = null;
  this[_serverSocket] = serverSocket;
  this[_closeServer] = false;
  _http._HttpServer.__proto__.new.call(this);
  this[_controller$1] = StreamControllerOfHttpRequest().new({sync: true, onCancel: dart.bind(this, 'close')});
  this.idleTimeout = const$94 || (const$94 = dart.const(new core.Duration.new({seconds: 120})));
  _http._HttpServer._servers[$_set](this[_serviceId$], this);
}).prototype = _http._HttpServer.prototype;
dart.addTypeTests(_http._HttpServer);
_http._HttpServer[dart.implements] = () => [_http.HttpServer];
dart.setMethodSignature(_http._HttpServer, () => ({
  __proto__: dart.getMethods(_http._HttpServer.__proto__),
  listen: dart.fnType(async.StreamSubscription$(_http.HttpRequest), [dart.fnType(dart.void, [_http.HttpRequest])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
  close: dart.fnType(async.Future, [], {force: core.bool}),
  [_maybePerformCleanup$]: dart.fnType(dart.void, []),
  [_handleRequest]: dart.fnType(dart.void, [_http._HttpRequest]),
  [_connectionClosed]: dart.fnType(dart.void, [_http._HttpConnection]),
  [_markIdle]: dart.fnType(dart.void, [_http._HttpConnection]),
  [_markActive]: dart.fnType(dart.void, [_http._HttpConnection]),
  connectionsInfo: dart.fnType(_http.HttpConnectionsInfo, []),
  [_toJSON$]: dart.fnType(core.Map$(core.String, dart.dynamic), [core.bool])
}));
dart.setGetterSignature(_http._HttpServer, () => ({
  __proto__: dart.getGetters(_http._HttpServer.__proto__),
  idleTimeout: core.Duration,
  port: core.int,
  address: io.InternetAddress,
  [_sessionManager]: _http._HttpSessionManager,
  [_serviceTypePath$]: core.String,
  [_serviceTypeName$]: core.String
}));
dart.setSetterSignature(_http._HttpServer, () => ({
  __proto__: dart.getSetters(_http._HttpServer.__proto__),
  idleTimeout: core.Duration,
  sessionTimeout: core.int
}));
dart.setFieldSignature(_http._HttpServer, () => ({
  __proto__: dart.getFields(_http._HttpServer.__proto__),
  serverHeader: dart.fieldType(core.String),
  defaultResponseHeaders: dart.finalFieldType(_http.HttpHeaders),
  autoCompress: dart.fieldType(core.bool),
  [_idleTimeout]: dart.fieldType(core.Duration),
  [_idleTimer]: dart.fieldType(async.Timer),
  [_sessionManagerInstance]: dart.fieldType(_http._HttpSessionManager),
  closed: dart.fieldType(core.bool),
  [_serverSocket]: dart.finalFieldType(dart.dynamic),
  [_closeServer]: dart.finalFieldType(core.bool),
  [_activeConnections]: dart.finalFieldType(LinkedListOf_HttpConnection()),
  [_idleConnections]: dart.finalFieldType(LinkedListOf_HttpConnection()),
  [_controller$1]: dart.fieldType(StreamControllerOfHttpRequest())
}));
dart.defineLazy(_http._HttpServer, {
  /*_http._HttpServer._servers*/get _servers() {
    return new (IdentityMapOfint$_HttpServer()).new();
  },
  set _servers(_) {}
});
let const$95;
let const$96;
_http._ProxyConfiguration = class _ProxyConfiguration extends core.Object {};
(_http._ProxyConfiguration.new = function(configuration) {
  this.proxies = JSArrayOf_Proxy().of([]);
  if (configuration == null) {
    dart.throw(new _http.HttpException.new("Invalid proxy configuration " + dart.str(configuration)));
  }
  let list = configuration[$split](";");
  list[$forEach](dart.fn(proxy => {
    proxy = proxy[$trim]();
    if (!proxy[$isEmpty]) {
      if (proxy[$startsWith]("PROXY ")) {
        let username = null;
        let password = null;
        proxy = proxy[$substring]("PROXY ".length)[$trim]();
        let at = proxy[$indexOf]("@");
        if (at !== -1) {
          let userinfo = proxy[$substring](0, at)[$trim]();
          proxy = proxy[$substring](at + 1)[$trim]();
          let colon = userinfo[$indexOf](":");
          if (colon === -1 || colon === 0 || colon === proxy.length - 1) {
            dart.throw(new _http.HttpException.new("Invalid proxy configuration " + dart.str(configuration)));
          }
          username = userinfo[$substring](0, colon)[$trim]();
          password = userinfo[$substring](colon + 1)[$trim]();
        }
        let colon = proxy[$lastIndexOf](":");
        if (colon === -1 || colon === 0 || colon === proxy.length - 1) {
          dart.throw(new _http.HttpException.new("Invalid proxy configuration " + dart.str(configuration)));
        }
        let host = proxy[$substring](0, colon)[$trim]();
        if (host[$startsWith]("[") && host[$endsWith]("]")) {
          host = host[$substring](1, host.length - 1);
        }
        let portString = proxy[$substring](colon + 1)[$trim]();
        let port = null;
        try {
          port = core.int.parse(portString);
        } catch (e$) {
          let e = dart.getThrown(e$);
          if (core.FormatException.is(e)) {
            dart.throw(new _http.HttpException.new("Invalid proxy configuration " + dart.str(configuration) + ", " + ("invalid port '" + portString + "'")));
          } else
            throw e$;
        }
        this.proxies[$add](new _http._Proxy.new(host, port, username, password));
      } else if (proxy[$trim]() === "DIRECT") {
        this.proxies[$add](new _http._Proxy.direct());
      } else {
        dart.throw(new _http.HttpException.new("Invalid proxy configuration " + dart.str(configuration)));
      }
    }
  }, StringToNull()));
}).prototype = _http._ProxyConfiguration.prototype;
(_http._ProxyConfiguration.direct = function() {
  this.proxies = const$96 || (const$96 = dart.constList([const$95 || (const$95 = dart.const(new _http._Proxy.direct()))], _http._Proxy));
}).prototype = _http._ProxyConfiguration.prototype;
dart.addTypeTests(_http._ProxyConfiguration);
dart.setFieldSignature(_http._ProxyConfiguration, () => ({
  __proto__: dart.getFields(_http._ProxyConfiguration.__proto__),
  proxies: dart.finalFieldType(ListOf_Proxy())
}));
dart.defineLazy(_http._ProxyConfiguration, {
  /*_http._ProxyConfiguration.PROXY_PREFIX*/get PROXY_PREFIX() {
    return "PROXY ";
  },
  /*_http._ProxyConfiguration.DIRECT_PREFIX*/get DIRECT_PREFIX() {
    return "DIRECT";
  }
});
_http._Proxy = class _Proxy extends core.Object {
  get isAuthenticated() {
    return this.username != null;
  }
};
(_http._Proxy.new = function(host, port, username, password) {
  this.host = host;
  this.port = port;
  this.username = username;
  this.password = password;
  this.isDirect = false;
}).prototype = _http._Proxy.prototype;
(_http._Proxy.direct = function() {
  this.host = null;
  this.port = null;
  this.username = null;
  this.password = null;
  this.isDirect = true;
}).prototype = _http._Proxy.prototype;
dart.addTypeTests(_http._Proxy);
dart.setGetterSignature(_http._Proxy, () => ({
  __proto__: dart.getGetters(_http._Proxy.__proto__),
  isAuthenticated: core.bool
}));
dart.setFieldSignature(_http._Proxy, () => ({
  __proto__: dart.getFields(_http._Proxy.__proto__),
  host: dart.finalFieldType(core.String),
  port: dart.finalFieldType(core.int),
  username: dart.finalFieldType(core.String),
  password: dart.finalFieldType(core.String),
  isDirect: dart.finalFieldType(core.bool)
}));
_http._HttpConnectionInfo = class _HttpConnectionInfo extends core.Object {
  static create(socket) {
    if (socket == null) return null;
    try {
      let info = new _http._HttpConnectionInfo.new();
      info.remoteAddress = socket.remoteAddress;
      info.remotePort = socket.remotePort;
      info.localPort = socket.port;
      return info;
    } catch (e$) {
      let e = dart.getThrown(e$);
    }
    return null;
  }
};
(_http._HttpConnectionInfo.new = function() {
  this.remoteAddress = null;
  this.remotePort = null;
  this.localPort = null;
}).prototype = _http._HttpConnectionInfo.prototype;
dart.addTypeTests(_http._HttpConnectionInfo);
_http._HttpConnectionInfo[dart.implements] = () => [_http.HttpConnectionInfo];
dart.setFieldSignature(_http._HttpConnectionInfo, () => ({
  __proto__: dart.getFields(_http._HttpConnectionInfo.__proto__),
  remoteAddress: dart.fieldType(io.InternetAddress),
  remotePort: dart.fieldType(core.int),
  localPort: dart.fieldType(core.int)
}));
_http._DetachedSocket = class _DetachedSocket extends async.Stream$(core.List$(core.int)) {
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    return this[_incoming].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  get encoding() {
    return this[_socket$].encoding;
  }
  set encoding(value) {
    this[_socket$].encoding = value;
  }
  write(obj) {
    this[_socket$].write(obj);
  }
  writeln(obj) {
    if (obj === void 0) obj = "";
    this[_socket$].writeln(obj);
  }
  writeCharCode(charCode) {
    this[_socket$].writeCharCode(charCode);
  }
  writeAll(objects, separator) {
    if (separator === void 0) separator = "";
    this[_socket$].writeAll(objects, separator);
  }
  add(bytes) {
    ListOfint()._check(bytes);
    this[_socket$].add(bytes);
  }
  addError(error, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    return this[_socket$].addError(error, stackTrace);
  }
  addStream(stream) {
    StreamOfListOfint()._check(stream);
    return this[_socket$].addStream(stream);
  }
  destroy() {
    this[_socket$].destroy();
  }
  flush() {
    return this[_socket$].flush();
  }
  close() {
    return this[_socket$].close();
  }
  get done() {
    return this[_socket$].done;
  }
  get port() {
    return this[_socket$].port;
  }
  get address() {
    return this[_socket$].address;
  }
  get remoteAddress() {
    return this[_socket$].remoteAddress;
  }
  get remotePort() {
    return this[_socket$].remotePort;
  }
  setOption(option, enabled) {
    return this[_socket$].setOption(option, enabled);
  }
  getRawOption(option) {
    return this[_socket$].getRawOption(option);
  }
  setRawOption(option) {
    this[_socket$].setRawOption(option);
  }
  [_toJSON$](ref) {
    return core.Map._check(dart.dsend(this[_socket$], _toJSON$, [ref]));
  }
};
(_http._DetachedSocket.new = function(socket, incoming) {
  this[_socket$] = socket;
  this[_incoming] = incoming;
  _http._DetachedSocket.__proto__.new.call(this);
}).prototype = _http._DetachedSocket.prototype;
dart.addTypeTests(_http._DetachedSocket);
_http._DetachedSocket[dart.implements] = () => [io.Socket];
dart.setMethodSignature(_http._DetachedSocket, () => ({
  __proto__: dart.getMethods(_http._DetachedSocket.__proto__),
  listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
  write: dart.fnType(dart.void, [core.Object]),
  writeln: dart.fnType(dart.void, [], [core.Object]),
  writeCharCode: dart.fnType(dart.void, [core.int]),
  writeAll: dart.fnType(dart.void, [core.Iterable], [core.String]),
  add: dart.fnType(dart.void, [core.Object]),
  addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
  addStream: dart.fnType(async.Future, [core.Object]),
  destroy: dart.fnType(dart.void, []),
  flush: dart.fnType(async.Future, []),
  close: dart.fnType(async.Future, []),
  setOption: dart.fnType(core.bool, [io.SocketOption, core.bool]),
  getRawOption: dart.fnType(typed_data.Uint8List, [io.RawSocketOption]),
  setRawOption: dart.fnType(dart.void, [io.RawSocketOption]),
  [_toJSON$]: dart.fnType(core.Map, [core.bool])
}));
dart.setGetterSignature(_http._DetachedSocket, () => ({
  __proto__: dart.getGetters(_http._DetachedSocket.__proto__),
  encoding: convert.Encoding,
  done: async.Future,
  port: core.int,
  address: io.InternetAddress,
  remoteAddress: io.InternetAddress,
  remotePort: core.int
}));
dart.setSetterSignature(_http._DetachedSocket, () => ({
  __proto__: dart.getSetters(_http._DetachedSocket.__proto__),
  encoding: convert.Encoding
}));
dart.setFieldSignature(_http._DetachedSocket, () => ({
  __proto__: dart.getFields(_http._DetachedSocket.__proto__),
  [_incoming]: dart.finalFieldType(StreamOfListOfint()),
  [_socket$]: dart.finalFieldType(io.Socket)
}));
const _scheme = Symbol('_scheme');
_http._AuthenticationScheme = class _AuthenticationScheme extends core.Object {
  static fromString(scheme) {
    if (scheme[$toLowerCase]() === "basic") return _http._AuthenticationScheme.BASIC;
    if (scheme[$toLowerCase]() === "digest") return _http._AuthenticationScheme.DIGEST;
    return _http._AuthenticationScheme.UNKNOWN;
  }
  toString() {
    if (this._equals(_http._AuthenticationScheme.BASIC)) return "Basic";
    if (this._equals(_http._AuthenticationScheme.DIGEST)) return "Digest";
    return "Unknown";
  }
};
(_http._AuthenticationScheme.new = function(scheme) {
  this[_scheme] = scheme;
}).prototype = _http._AuthenticationScheme.prototype;
dart.addTypeTests(_http._AuthenticationScheme);
dart.setFieldSignature(_http._AuthenticationScheme, () => ({
  __proto__: dart.getFields(_http._AuthenticationScheme.__proto__),
  [_scheme]: dart.finalFieldType(core.int)
}));
dart.defineExtensionMethods(_http._AuthenticationScheme, ['toString']);
dart.defineLazy(_http._AuthenticationScheme, {
  /*_http._AuthenticationScheme.UNKNOWN*/get UNKNOWN() {
    return dart.const(new _http._AuthenticationScheme.new(-1));
  },
  /*_http._AuthenticationScheme.BASIC*/get BASIC() {
    return dart.const(new _http._AuthenticationScheme.new(0));
  },
  /*_http._AuthenticationScheme.DIGEST*/get DIGEST() {
    return dart.const(new _http._AuthenticationScheme.new(1));
  }
});
_http._Credentials = class _Credentials extends core.Object {
  get scheme() {
    return this.credentials.scheme;
  }
};
(_http._Credentials.new = function(credentials, realm) {
  this.used = false;
  this.ha1 = null;
  this.nonce = null;
  this.algorithm = null;
  this.qop = null;
  this.nonceCount = null;
  this.credentials = credentials;
  this.realm = realm;
  if (dart.equals(this.credentials.scheme, _http._AuthenticationScheme.DIGEST)) {
    let creds = _http._HttpClientDigestCredentials._check(this.credentials);
    let hasher = new _http._MD5.new();
    hasher.add(convert.utf8.encode(creds.username));
    hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
    hasher.add(this.realm[$codeUnits]);
    hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
    hasher.add(convert.utf8.encode(creds.password));
    this.ha1 = _http._CryptoUtils.bytesToHex(hasher.close());
  }
}).prototype = _http._Credentials.prototype;
dart.addTypeTests(_http._Credentials);
dart.setGetterSignature(_http._Credentials, () => ({
  __proto__: dart.getGetters(_http._Credentials.__proto__),
  scheme: _http._AuthenticationScheme
}));
dart.setFieldSignature(_http._Credentials, () => ({
  __proto__: dart.getFields(_http._Credentials.__proto__),
  credentials: dart.fieldType(_http._HttpClientCredentials),
  realm: dart.fieldType(core.String),
  used: dart.fieldType(core.bool),
  ha1: dart.fieldType(core.String),
  nonce: dart.fieldType(core.String),
  algorithm: dart.fieldType(core.String),
  qop: dart.fieldType(core.String),
  nonceCount: dart.fieldType(core.int)
}));
_http._SiteCredentials = class _SiteCredentials extends _http._Credentials {
  applies(uri, scheme) {
    if (scheme != null && !dart.equals(this.credentials.scheme, scheme)) return false;
    if (uri.host != this.uri.host) return false;
    let thisPort = this.uri.port === 0 ? _http.HttpClient.defaultHttpPort : this.uri.port;
    let otherPort = uri.port === 0 ? _http.HttpClient.defaultHttpPort : uri.port;
    if (otherPort != thisPort) return false;
    return uri.path[$startsWith](this.uri.path);
  }
  authorize(request) {
    if (dart.equals(this.credentials.scheme, _http._AuthenticationScheme.DIGEST) && this.nonce == null) {
      return;
    }
    this.credentials.authorize(this, request);
    this.used = true;
  }
};
(_http._SiteCredentials.new = function(uri, realm, creds) {
  this.uri = uri;
  _http._SiteCredentials.__proto__.new.call(this, creds, core.String._check(realm));
}).prototype = _http._SiteCredentials.prototype;
dart.addTypeTests(_http._SiteCredentials);
dart.setMethodSignature(_http._SiteCredentials, () => ({
  __proto__: dart.getMethods(_http._SiteCredentials.__proto__),
  applies: dart.fnType(core.bool, [core.Uri, _http._AuthenticationScheme]),
  authorize: dart.fnType(dart.void, [_http.HttpClientRequest])
}));
dart.setFieldSignature(_http._SiteCredentials, () => ({
  __proto__: dart.getFields(_http._SiteCredentials.__proto__),
  uri: dart.fieldType(core.Uri)
}));
_http._ProxyCredentials = class _ProxyCredentials extends _http._Credentials {
  applies(proxy, scheme) {
    if (scheme != null && !dart.equals(this.credentials.scheme, scheme)) return false;
    return proxy.host == this.host && proxy.port == this.port;
  }
  authorize(request) {
    if (dart.equals(this.credentials.scheme, _http._AuthenticationScheme.DIGEST) && this.nonce == null) {
      return;
    }
    this.credentials.authorizeProxy(this, request);
  }
};
(_http._ProxyCredentials.new = function(host, port, realm, creds) {
  this.host = host;
  this.port = port;
  _http._ProxyCredentials.__proto__.new.call(this, creds, core.String._check(realm));
}).prototype = _http._ProxyCredentials.prototype;
dart.addTypeTests(_http._ProxyCredentials);
dart.setMethodSignature(_http._ProxyCredentials, () => ({
  __proto__: dart.getMethods(_http._ProxyCredentials.__proto__),
  applies: dart.fnType(core.bool, [_http._Proxy, _http._AuthenticationScheme]),
  authorize: dart.fnType(dart.void, [_http.HttpClientRequest])
}));
dart.setFieldSignature(_http._ProxyCredentials, () => ({
  __proto__: dart.getFields(_http._ProxyCredentials.__proto__),
  host: dart.fieldType(core.String),
  port: dart.fieldType(core.int)
}));
_http._HttpClientCredentials = class _HttpClientCredentials extends core.Object {};
(_http._HttpClientCredentials.new = function() {
}).prototype = _http._HttpClientCredentials.prototype;
dart.addTypeTests(_http._HttpClientCredentials);
_http._HttpClientCredentials[dart.implements] = () => [_http.HttpClientCredentials];
_http._HttpClientBasicCredentials = class _HttpClientBasicCredentials extends _http._HttpClientCredentials {
  get scheme() {
    return _http._AuthenticationScheme.BASIC;
  }
  authorization() {
    let auth = _http._CryptoUtils.bytesToBase64(convert.utf8.encode(dart.str(this.username) + ":" + dart.str(this.password)));
    return "Basic " + dart.str(auth);
  }
  authorize(_, request) {
    request.headers.set(_http.HttpHeaders.authorizationHeader, this.authorization());
  }
  authorizeProxy(_, request) {
    request.headers.set(_http.HttpHeaders.proxyAuthorizationHeader, this.authorization());
  }
};
(_http._HttpClientBasicCredentials.new = function(username, password) {
  this.username = username;
  this.password = password;
}).prototype = _http._HttpClientBasicCredentials.prototype;
dart.addTypeTests(_http._HttpClientBasicCredentials);
_http._HttpClientBasicCredentials[dart.implements] = () => [_http.HttpClientBasicCredentials];
dart.setMethodSignature(_http._HttpClientBasicCredentials, () => ({
  __proto__: dart.getMethods(_http._HttpClientBasicCredentials.__proto__),
  authorization: dart.fnType(core.String, []),
  authorize: dart.fnType(dart.void, [_http._Credentials, _http.HttpClientRequest]),
  authorizeProxy: dart.fnType(dart.void, [_http._ProxyCredentials, _http.HttpClientRequest])
}));
dart.setGetterSignature(_http._HttpClientBasicCredentials, () => ({
  __proto__: dart.getGetters(_http._HttpClientBasicCredentials.__proto__),
  scheme: _http._AuthenticationScheme
}));
dart.setFieldSignature(_http._HttpClientBasicCredentials, () => ({
  __proto__: dart.getFields(_http._HttpClientBasicCredentials.__proto__),
  username: dart.fieldType(core.String),
  password: dart.fieldType(core.String)
}));
_http._HttpClientDigestCredentials = class _HttpClientDigestCredentials extends _http._HttpClientCredentials {
  get scheme() {
    return _http._AuthenticationScheme.DIGEST;
  }
  authorization(credentials, request) {
    let requestUri = request[_requestUri]();
    let hasher = new _http._MD5.new();
    hasher.add(request.method[$codeUnits]);
    hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
    hasher.add(requestUri[$codeUnits]);
    let ha2 = _http._CryptoUtils.bytesToHex(hasher.close());
    let qop = null;
    let cnonce = null;
    let nc = null;
    let x = null;
    hasher = new _http._MD5.new();
    hasher.add(credentials.ha1[$codeUnits]);
    hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
    if (credentials.qop === "auth") {
      qop = credentials.qop;
      cnonce = _http._CryptoUtils.bytesToHex(_http._CryptoUtils.getRandomBytes(4));
      credentials.nonceCount = dart.notNull(credentials.nonceCount) + 1;
      nc = credentials.nonceCount[$toRadixString](16);
      nc = "00000000"[$substring](0, 8 - nc.length + 1) + dart.notNull(nc);
      hasher.add(credentials.nonce[$codeUnits]);
      hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
      hasher.add(nc[$codeUnits]);
      hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
      hasher.add(cnonce[$codeUnits]);
      hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
      hasher.add(credentials.qop[$codeUnits]);
      hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
      hasher.add(ha2[$codeUnits]);
    } else {
      hasher.add(credentials.nonce[$codeUnits]);
      hasher.add(JSArrayOfint().of([_http._CharCode.COLON]));
      hasher.add(ha2[$codeUnits]);
    }
    let response = _http._CryptoUtils.bytesToHex(hasher.close());
    let buffer = new core.StringBuffer.new();
    buffer.write("Digest ");
    buffer.write("username=\"" + dart.str(this.username) + "\"");
    buffer.write(", realm=\"" + dart.str(credentials.realm) + "\"");
    buffer.write(", nonce=\"" + dart.str(credentials.nonce) + "\"");
    buffer.write(", uri=\"" + dart.str(requestUri) + "\"");
    buffer.write(", algorithm=\"" + dart.str(credentials.algorithm) + "\"");
    if (qop === "auth") {
      buffer.write(", qop=\"" + dart.str(qop) + "\"");
      buffer.write(", cnonce=\"" + dart.str(cnonce) + "\"");
      buffer.write(", nc=\"" + dart.str(nc) + "\"");
    }
    buffer.write(", response=\"" + dart.str(response) + "\"");
    return buffer.toString();
  }
  authorize(credentials, request) {
    request.headers.set(_http.HttpHeaders.authorizationHeader, this.authorization(credentials, _http._HttpClientRequest._check(request)));
  }
  authorizeProxy(credentials, request) {
    request.headers.set(_http.HttpHeaders.proxyAuthorizationHeader, this.authorization(credentials, _http._HttpClientRequest._check(request)));
  }
};
(_http._HttpClientDigestCredentials.new = function(username, password) {
  this.username = username;
  this.password = password;
}).prototype = _http._HttpClientDigestCredentials.prototype;
dart.addTypeTests(_http._HttpClientDigestCredentials);
_http._HttpClientDigestCredentials[dart.implements] = () => [_http.HttpClientDigestCredentials];
dart.setMethodSignature(_http._HttpClientDigestCredentials, () => ({
  __proto__: dart.getMethods(_http._HttpClientDigestCredentials.__proto__),
  authorization: dart.fnType(core.String, [_http._Credentials, _http._HttpClientRequest]),
  authorize: dart.fnType(dart.void, [_http._Credentials, _http.HttpClientRequest]),
  authorizeProxy: dart.fnType(dart.void, [_http._ProxyCredentials, _http.HttpClientRequest])
}));
dart.setGetterSignature(_http._HttpClientDigestCredentials, () => ({
  __proto__: dart.getGetters(_http._HttpClientDigestCredentials.__proto__),
  scheme: _http._AuthenticationScheme
}));
dart.setFieldSignature(_http._HttpClientDigestCredentials, () => ({
  __proto__: dart.getFields(_http._HttpClientDigestCredentials.__proto__),
  username: dart.fieldType(core.String),
  password: dart.fieldType(core.String)
}));
_http._RedirectInfo = class _RedirectInfo extends core.Object {};
(_http._RedirectInfo.new = function(statusCode, method, location) {
  this.statusCode = statusCode;
  this.method = method;
  this.location = location;
}).prototype = _http._RedirectInfo.prototype;
dart.addTypeTests(_http._RedirectInfo);
_http._RedirectInfo[dart.implements] = () => [_http.RedirectInfo];
dart.setFieldSignature(_http._RedirectInfo, () => ({
  __proto__: dart.getFields(_http._RedirectInfo.__proto__),
  statusCode: dart.finalFieldType(core.int),
  method: dart.finalFieldType(core.String),
  location: dart.finalFieldType(core.Uri)
}));
_http._getHttpVersion = function() {
  let version = io.Platform.version;
  let index = version[$indexOf](".", version[$indexOf](".") + 1);
  version = version[$substring](0, index);
  return "Dart/" + dart.str(version) + " (dart:io)";
};
_http._Const = class _Const extends core.Object {};
(_http._Const.new = function() {
}).prototype = _http._Const.prototype;
dart.addTypeTests(_http._Const);
dart.defineLazy(_http._Const, {
  /*_http._Const.HTTP*/get HTTP() {
    return dart.constList([72, 84, 84, 80], core.int);
  },
  /*_http._Const.HTTP1DOT*/get HTTP1DOT() {
    return dart.constList([72, 84, 84, 80, 47, 49, 46], core.int);
  },
  /*_http._Const.HTTP10*/get HTTP10() {
    return dart.constList([72, 84, 84, 80, 47, 49, 46, 48], core.int);
  },
  /*_http._Const.HTTP11*/get HTTP11() {
    return dart.constList([72, 84, 84, 80, 47, 49, 46, 49], core.int);
  },
  /*_http._Const.T*/get T() {
    return true;
  },
  /*_http._Const.F*/get F() {
    return false;
  },
  /*_http._Const.SEPARATOR_MAP*/get SEPARATOR_MAP() {
    return dart.constList([false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, false, false, false, false, true, true, false, false, true, false, false, true, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false], core.bool);
  }
});
_http._CharCode = class _CharCode extends core.Object {};
(_http._CharCode.new = function() {
}).prototype = _http._CharCode.prototype;
dart.addTypeTests(_http._CharCode);
dart.defineLazy(_http._CharCode, {
  /*_http._CharCode.HT*/get HT() {
    return 9;
  },
  /*_http._CharCode.LF*/get LF() {
    return 10;
  },
  /*_http._CharCode.CR*/get CR() {
    return 13;
  },
  /*_http._CharCode.SP*/get SP() {
    return 32;
  },
  /*_http._CharCode.AMPERSAND*/get AMPERSAND() {
    return 38;
  },
  /*_http._CharCode.COMMA*/get COMMA() {
    return 44;
  },
  /*_http._CharCode.DASH*/get DASH() {
    return 45;
  },
  /*_http._CharCode.SLASH*/get SLASH() {
    return 47;
  },
  /*_http._CharCode.ZERO*/get ZERO() {
    return 48;
  },
  /*_http._CharCode.ONE*/get ONE() {
    return 49;
  },
  /*_http._CharCode.COLON*/get COLON() {
    return 58;
  },
  /*_http._CharCode.SEMI_COLON*/get SEMI_COLON() {
    return 59;
  },
  /*_http._CharCode.EQUAL*/get EQUAL() {
    return 61;
  }
});
_http._State = class _State extends core.Object {};
(_http._State.new = function() {
}).prototype = _http._State.prototype;
dart.addTypeTests(_http._State);
dart.defineLazy(_http._State, {
  /*_http._State.START*/get START() {
    return 0;
  },
  /*_http._State.METHOD_OR_RESPONSE_HTTP_VERSION*/get METHOD_OR_RESPONSE_HTTP_VERSION() {
    return 1;
  },
  /*_http._State.RESPONSE_HTTP_VERSION*/get RESPONSE_HTTP_VERSION() {
    return 2;
  },
  /*_http._State.REQUEST_LINE_METHOD*/get REQUEST_LINE_METHOD() {
    return 3;
  },
  /*_http._State.REQUEST_LINE_URI*/get REQUEST_LINE_URI() {
    return 4;
  },
  /*_http._State.REQUEST_LINE_HTTP_VERSION*/get REQUEST_LINE_HTTP_VERSION() {
    return 5;
  },
  /*_http._State.REQUEST_LINE_ENDING*/get REQUEST_LINE_ENDING() {
    return 6;
  },
  /*_http._State.RESPONSE_LINE_STATUS_CODE*/get RESPONSE_LINE_STATUS_CODE() {
    return 7;
  },
  /*_http._State.RESPONSE_LINE_REASON_PHRASE*/get RESPONSE_LINE_REASON_PHRASE() {
    return 8;
  },
  /*_http._State.RESPONSE_LINE_ENDING*/get RESPONSE_LINE_ENDING() {
    return 9;
  },
  /*_http._State.HEADER_START*/get HEADER_START() {
    return 10;
  },
  /*_http._State.HEADER_FIELD*/get HEADER_FIELD() {
    return 11;
  },
  /*_http._State.HEADER_VALUE_START*/get HEADER_VALUE_START() {
    return 12;
  },
  /*_http._State.HEADER_VALUE*/get HEADER_VALUE() {
    return 13;
  },
  /*_http._State.HEADER_VALUE_FOLDING_OR_ENDING*/get HEADER_VALUE_FOLDING_OR_ENDING() {
    return 14;
  },
  /*_http._State.HEADER_VALUE_FOLD_OR_END*/get HEADER_VALUE_FOLD_OR_END() {
    return 15;
  },
  /*_http._State.HEADER_ENDING*/get HEADER_ENDING() {
    return 16;
  },
  /*_http._State.CHUNK_SIZE_STARTING_CR*/get CHUNK_SIZE_STARTING_CR() {
    return 17;
  },
  /*_http._State.CHUNK_SIZE_STARTING_LF*/get CHUNK_SIZE_STARTING_LF() {
    return 18;
  },
  /*_http._State.CHUNK_SIZE*/get CHUNK_SIZE() {
    return 19;
  },
  /*_http._State.CHUNK_SIZE_EXTENSION*/get CHUNK_SIZE_EXTENSION() {
    return 20;
  },
  /*_http._State.CHUNK_SIZE_ENDING*/get CHUNK_SIZE_ENDING() {
    return 21;
  },
  /*_http._State.CHUNKED_BODY_DONE_CR*/get CHUNKED_BODY_DONE_CR() {
    return 22;
  },
  /*_http._State.CHUNKED_BODY_DONE_LF*/get CHUNKED_BODY_DONE_LF() {
    return 23;
  },
  /*_http._State.BODY*/get BODY() {
    return 24;
  },
  /*_http._State.CLOSED*/get CLOSED() {
    return 25;
  },
  /*_http._State.UPGRADED*/get UPGRADED() {
    return 26;
  },
  /*_http._State.FAILURE*/get FAILURE() {
    return 27;
  },
  /*_http._State.FIRST_BODY_STATE*/get FIRST_BODY_STATE() {
    return 17;
  }
});
_http._HttpVersion = class _HttpVersion extends core.Object {};
(_http._HttpVersion.new = function() {
}).prototype = _http._HttpVersion.prototype;
dart.addTypeTests(_http._HttpVersion);
dart.defineLazy(_http._HttpVersion, {
  /*_http._HttpVersion.UNDETERMINED*/get UNDETERMINED() {
    return 0;
  },
  /*_http._HttpVersion.HTTP10*/get HTTP10() {
    return 1;
  },
  /*_http._HttpVersion.HTTP11*/get HTTP11() {
    return 2;
  }
});
_http._MessageType = class _MessageType extends core.Object {};
(_http._MessageType.new = function() {
}).prototype = _http._MessageType.prototype;
dart.addTypeTests(_http._MessageType);
dart.defineLazy(_http._MessageType, {
  /*_http._MessageType.UNDETERMINED*/get UNDETERMINED() {
    return 0;
  },
  /*_http._MessageType.REQUEST*/get REQUEST() {
    return 1;
  },
  /*_http._MessageType.RESPONSE*/get RESPONSE() {
    return 0;
  }
});
const _injectData = Symbol('_injectData');
const _userOnData = Symbol('_userOnData');
const _isCanceled$ = Symbol('_isCanceled');
const _pauseCount$0 = Symbol('_pauseCount');
const _scheduled = Symbol('_scheduled');
const _maybeScheduleData = Symbol('_maybeScheduleData');
_http._HttpDetachedStreamSubscription = class _HttpDetachedStreamSubscription extends core.Object {
  get isPaused() {
    return this[_subscription$0].isPaused;
  }
  asFuture(T, futureValue) {
    if (futureValue === void 0) futureValue = null;
    return async.Future$(T)._check(this[_subscription$0].asFuture(T, futureValue));
  }
  cancel() {
    this[_isCanceled$] = true;
    this[_injectData] = null;
    return this[_subscription$0].cancel();
  }
  onData(handleData) {
    this[_userOnData] = handleData;
    this[_subscription$0].onData(handleData);
  }
  onDone(handleDone) {
    this[_subscription$0].onDone(handleDone);
  }
  onError(handleError) {
    this[_subscription$0].onError(handleError);
  }
  pause(resumeSignal) {
    if (resumeSignal === void 0) resumeSignal = null;
    if (this[_injectData] == null) {
      this[_subscription$0].pause(resumeSignal);
    } else {
      this[_pauseCount$0] = dart.notNull(this[_pauseCount$0]) + 1;
      if (resumeSignal != null) {
        resumeSignal.whenComplete(dart.bind(this, 'resume'));
      }
    }
  }
  resume() {
    if (this[_injectData] == null) {
      this[_subscription$0].resume();
    } else {
      this[_pauseCount$0] = dart.notNull(this[_pauseCount$0]) - 1;
      this[_maybeScheduleData]();
    }
  }
  [_maybeScheduleData]() {
    if (dart.test(this[_scheduled])) return;
    if (this[_pauseCount$0] !== 0) return;
    this[_scheduled] = true;
    async.scheduleMicrotask(dart.fn(() => {
      this[_scheduled] = false;
      if (dart.notNull(this[_pauseCount$0]) > 0 || dart.test(this[_isCanceled$])) return;
      let data = this[_injectData];
      this[_injectData] = null;
      this[_subscription$0].resume();
      if (this[_userOnData] != null) {
        dart.dcall(this[_userOnData], [data]);
      }
    }, VoidToNull()));
  }
};
(_http._HttpDetachedStreamSubscription.new = function(subscription, injectData, userOnData) {
  this[_isCanceled$] = false;
  this[_pauseCount$0] = 1;
  this[_scheduled] = false;
  this[_subscription$0] = subscription;
  this[_injectData] = injectData;
  this[_userOnData] = userOnData;
}).prototype = _http._HttpDetachedStreamSubscription.prototype;
_http._HttpDetachedStreamSubscription.prototype[dart.isStreamSubscription] = true;
dart.addTypeTests(_http._HttpDetachedStreamSubscription);
_http._HttpDetachedStreamSubscription[dart.implements] = () => [StreamSubscriptionOfListOfint()];
dart.setMethodSignature(_http._HttpDetachedStreamSubscription, () => ({
  __proto__: dart.getMethods(_http._HttpDetachedStreamSubscription.__proto__),
  asFuture: dart.gFnType(T => [async.Future$(T), [], [T]]),
  cancel: dart.fnType(async.Future, []),
  onData: dart.fnType(dart.void, [dart.fnType(dart.void, [core.List$(core.int)])]),
  onDone: dart.fnType(dart.void, [dart.fnType(dart.void, [])]),
  onError: dart.fnType(dart.void, [core.Function]),
  pause: dart.fnType(dart.void, [], [async.Future]),
  resume: dart.fnType(dart.void, []),
  [_maybeScheduleData]: dart.fnType(dart.void, [])
}));
dart.setGetterSignature(_http._HttpDetachedStreamSubscription, () => ({
  __proto__: dart.getGetters(_http._HttpDetachedStreamSubscription.__proto__),
  isPaused: core.bool
}));
dart.setFieldSignature(_http._HttpDetachedStreamSubscription, () => ({
  __proto__: dart.getFields(_http._HttpDetachedStreamSubscription.__proto__),
  [_subscription$0]: dart.fieldType(StreamSubscriptionOfListOfint()),
  [_injectData]: dart.fieldType(ListOfint()),
  [_isCanceled$]: dart.fieldType(core.bool),
  [_pauseCount$0]: dart.fieldType(core.int),
  [_userOnData]: dart.fieldType(core.Function),
  [_scheduled]: dart.fieldType(core.bool)
}));
_http._HttpDetachedIncoming = class _HttpDetachedIncoming extends async.Stream$(core.List$(core.int)) {
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    if (this.subscription != null) {
      this.subscription.onData(onData);
      this.subscription.onError(onError);
      this.subscription.onDone(onDone);
      if (this.bufferedData == null) {
        this.subscription.resume();
        return this.subscription;
      }
      let _ = new _http._HttpDetachedStreamSubscription.new(this.subscription, this.bufferedData, onData);
      _.resume();
      return _;
    } else {
      return StreamOfListOfint().fromIterable(JSArrayOfListOfint().of([this.bufferedData])).listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
    }
  }
};
(_http._HttpDetachedIncoming.new = function(subscription, bufferedData) {
  this.subscription = subscription;
  this.bufferedData = bufferedData;
  _http._HttpDetachedIncoming.__proto__.new.call(this);
}).prototype = _http._HttpDetachedIncoming.prototype;
dart.addTypeTests(_http._HttpDetachedIncoming);
dart.setMethodSignature(_http._HttpDetachedIncoming, () => ({
  __proto__: dart.getMethods(_http._HttpDetachedIncoming.__proto__),
  listen: dart.fnType(async.StreamSubscription$(core.List$(core.int)), [dart.fnType(dart.void, [core.List$(core.int)])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool})
}));
dart.setFieldSignature(_http._HttpDetachedIncoming, () => ({
  __proto__: dart.getFields(_http._HttpDetachedIncoming.__proto__),
  subscription: dart.finalFieldType(StreamSubscriptionOfListOfint()),
  bufferedData: dart.finalFieldType(ListOfint())
}));
const _requestParser = Symbol('_requestParser');
const _parserCalled = Symbol('_parserCalled');
const _index$1 = Symbol('_index');
const _httpVersionIndex = Symbol('_httpVersionIndex');
const _messageType = Symbol('_messageType');
const _statusCodeLength = Symbol('_statusCodeLength');
const _method$ = Symbol('_method');
const _uri_or_reason_phrase = Symbol('_uri_or_reason_phrase');
const _headerField = Symbol('_headerField');
const _headerValue = Symbol('_headerValue');
const _httpVersion = Symbol('_httpVersion');
const _connectionUpgrade = Symbol('_connectionUpgrade');
const _chunked = Symbol('_chunked');
const _noMessageBody = Symbol('_noMessageBody');
const _remainingContent = Symbol('_remainingContent');
const _socketSubscription$ = Symbol('_socketSubscription');
const _paused = Symbol('_paused');
const _bodyPaused = Symbol('_bodyPaused');
const _bodyController = Symbol('_bodyController');
const _pauseStateChanged = Symbol('_pauseStateChanged');
const _reset = Symbol('_reset');
const _onData$2 = Symbol('_onData');
const _onDone$ = Symbol('_onDone');
const _doParse = Symbol('_doParse');
const _reportError$ = Symbol('_reportError');
const _createIncoming = Symbol('_createIncoming');
const _closeIncoming = Symbol('_closeIncoming');
const _headersEnd = Symbol('_headersEnd');
const _expect = Symbol('_expect');
const _caseInsensitiveCompare = Symbol('_caseInsensitiveCompare');
const _expectHexDigit = Symbol('_expectHexDigit');
const _releaseBuffer = Symbol('_releaseBuffer');
_http._HttpParser = class _HttpParser extends async.Stream$(_http._HttpIncoming) {
  static requestParser() {
    return new _http._HttpParser.__(true);
  }
  static responseParser() {
    return new _http._HttpParser.__(false);
  }
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    return this[_controller$1].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  listenToStream(stream) {
    this[_socketSubscription$] = stream.listen(dart.bind(this, _onData$2), {onError: dart.bind(this[_controller$1], 'addError'), onDone: dart.bind(this, _onDone$)});
  }
  [_parse]() {
    try {
      this[_doParse]();
    } catch (e$) {
      let e = dart.getThrown(e$);
      let s = dart.stackTrace(e$);
      this[_state$1] = _http._State.FAILURE;
      this[_reportError$](e, s);
    }
  }
  [_headersEnd]() {
    this[_headers][_mutable] = false;
    this[_transferLength] = this[_headers].contentLength;
    if (dart.test(this[_chunked])) this[_transferLength] = -1;
    if (this[_messageType] === _http._MessageType.REQUEST && dart.notNull(this[_transferLength]) < 0 && this[_chunked] === false) {
      this[_transferLength] = 0;
    }
    if (dart.test(this[_connectionUpgrade])) {
      this[_state$1] = _http._State.UPGRADED;
      this[_transferLength] = 0;
    }
    this[_createIncoming](this[_transferLength]);
    if (dart.test(this[_requestParser])) {
      this[_incoming].method = core.String.fromCharCodes(this[_method$]);
      this[_incoming].uri = core.Uri.parse(core.String.fromCharCodes(this[_uri_or_reason_phrase]));
    } else {
      this[_incoming].statusCode = this[_statusCode];
      this[_incoming].reasonPhrase = core.String.fromCharCodes(this[_uri_or_reason_phrase]);
    }
    this[_method$][$clear]();
    this[_uri_or_reason_phrase][$clear]();
    if (dart.test(this[_connectionUpgrade])) {
      this[_incoming].upgraded = true;
      this[_parserCalled] = false;
      let tmp = this[_incoming];
      this[_closeIncoming]();
      this[_controller$1].add(tmp);
      return true;
    }
    if (this[_transferLength] === 0 || this[_messageType] === _http._MessageType.RESPONSE && dart.test(this[_noMessageBody])) {
      this[_reset]();
      let tmp = this[_incoming];
      this[_closeIncoming]();
      this[_controller$1].add(tmp);
      return false;
    } else if (dart.test(this[_chunked])) {
      this[_state$1] = _http._State.CHUNK_SIZE;
      this[_remainingContent] = 0;
    } else if (dart.notNull(this[_transferLength]) > 0) {
      this[_remainingContent] = this[_transferLength];
      this[_state$1] = _http._State.BODY;
    } else {
      this[_state$1] = _http._State.BODY;
    }
    this[_parserCalled] = false;
    this[_controller$1].add(this[_incoming]);
    return true;
  }
  [_doParse]() {
    if (!!dart.test(this[_parserCalled])) dart.assertFailed();
    this[_parserCalled] = true;
    if (this[_state$1] === _http._State.CLOSED) {
      dart.throw(new _http.HttpException.new("Data on closed connection"));
    }
    if (this[_state$1] === _http._State.FAILURE) {
      dart.throw(new _http.HttpException.new("Data on failed connection"));
    }
    while (this[_buffer$1] != null && dart.notNull(this[_index$1]) < dart.notNull(this[_buffer$1][$length]) && this[_state$1] !== _http._State.FAILURE && this[_state$1] !== _http._State.UPGRADED) {
      if (this[_incoming] != null && dart.test(this[_bodyPaused]) || this[_incoming] == null && dart.test(this[_paused])) {
        this[_parserCalled] = false;
        return;
      }
      let byte = this[_buffer$1][$_get]((() => {
        let x = this[_index$1];
        this[_index$1] = dart.notNull(x) + 1;
        return x;
      })());
      switch (this[_state$1]) {
        case _http._State.START:
        {
          if (byte == _http._Const.HTTP[$_get](0)) {
            this[_httpVersionIndex] = 1;
            this[_state$1] = _http._State.METHOD_OR_RESPONSE_HTTP_VERSION;
          } else {
            if (!dart.test(_http._HttpParser._isTokenChar(byte))) {
              dart.throw(new _http.HttpException.new("Invalid request method"));
            }
            this[_method$][$add](byte);
            if (!dart.test(this[_requestParser])) {
              dart.throw(new _http.HttpException.new("Invalid response line"));
            }
            this[_state$1] = _http._State.REQUEST_LINE_METHOD;
          }
          break;
        }
        case _http._State.METHOD_OR_RESPONSE_HTTP_VERSION:
        {
          if (dart.notNull(this[_httpVersionIndex]) < dart.notNull(_http._Const.HTTP[$length]) && byte == _http._Const.HTTP[$_get](this[_httpVersionIndex])) {
            this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
          } else if (this[_httpVersionIndex] == _http._Const.HTTP[$length] && byte === _http._CharCode.SLASH) {
            this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
            if (dart.test(this[_requestParser])) {
              dart.throw(new _http.HttpException.new("Invalid request line"));
            }
            this[_state$1] = _http._State.RESPONSE_HTTP_VERSION;
          } else {
            for (let i = 0; i < dart.notNull(this[_httpVersionIndex]); i++) {
              this[_method$][$add](_http._Const.HTTP[$_get](i));
            }
            if (byte === _http._CharCode.SP) {
              this[_state$1] = _http._State.REQUEST_LINE_URI;
            } else {
              this[_method$][$add](byte);
              this[_httpVersion] = _http._HttpVersion.UNDETERMINED;
              if (!dart.test(this[_requestParser])) {
                dart.throw(new _http.HttpException.new("Invalid response line"));
              }
              this[_state$1] = _http._State.REQUEST_LINE_METHOD;
            }
          }
          break;
        }
        case _http._State.RESPONSE_HTTP_VERSION:
        {
          if (dart.notNull(this[_httpVersionIndex]) < dart.notNull(_http._Const.HTTP1DOT[$length])) {
            this[_expect](byte, _http._Const.HTTP1DOT[$_get](this[_httpVersionIndex]));
            this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
          } else if (this[_httpVersionIndex] == _http._Const.HTTP1DOT[$length] && byte === _http._CharCode.ONE) {
            this[_httpVersion] = _http._HttpVersion.HTTP11;
            this[_persistentConnection] = true;
            this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
          } else if (this[_httpVersionIndex] == _http._Const.HTTP1DOT[$length] && byte === _http._CharCode.ZERO) {
            this[_httpVersion] = _http._HttpVersion.HTTP10;
            this[_persistentConnection] = false;
            this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
          } else if (this[_httpVersionIndex] === dart.notNull(_http._Const.HTTP1DOT[$length]) + 1) {
            this[_expect](byte, _http._CharCode.SP);
            this[_state$1] = _http._State.RESPONSE_LINE_STATUS_CODE;
          } else {
            dart.throw(new _http.HttpException.new("Invalid response line"));
          }
          break;
        }
        case _http._State.REQUEST_LINE_METHOD:
        {
          if (byte === _http._CharCode.SP) {
            this[_state$1] = _http._State.REQUEST_LINE_URI;
          } else {
            if (dart.test(_http._Const.SEPARATOR_MAP[$_get](byte)) || byte === _http._CharCode.CR || byte === _http._CharCode.LF) {
              dart.throw(new _http.HttpException.new("Invalid request method"));
            }
            this[_method$][$add](byte);
          }
          break;
        }
        case _http._State.REQUEST_LINE_URI:
        {
          if (byte === _http._CharCode.SP) {
            if (this[_uri_or_reason_phrase][$length] === 0) {
              dart.throw(new _http.HttpException.new("Invalid request URI"));
            }
            this[_state$1] = _http._State.REQUEST_LINE_HTTP_VERSION;
            this[_httpVersionIndex] = 0;
          } else {
            if (byte === _http._CharCode.CR || byte === _http._CharCode.LF) {
              dart.throw(new _http.HttpException.new("Invalid request URI"));
            }
            this[_uri_or_reason_phrase][$add](byte);
          }
          break;
        }
        case _http._State.REQUEST_LINE_HTTP_VERSION:
        {
          if (dart.notNull(this[_httpVersionIndex]) < dart.notNull(_http._Const.HTTP1DOT[$length])) {
            this[_expect](byte, _http._Const.HTTP11[$_get](this[_httpVersionIndex]));
            this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
          } else if (this[_httpVersionIndex] == _http._Const.HTTP1DOT[$length]) {
            if (byte === _http._CharCode.ONE) {
              this[_httpVersion] = _http._HttpVersion.HTTP11;
              this[_persistentConnection] = true;
              this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
            } else if (byte === _http._CharCode.ZERO) {
              this[_httpVersion] = _http._HttpVersion.HTTP10;
              this[_persistentConnection] = false;
              this[_httpVersionIndex] = dart.notNull(this[_httpVersionIndex]) + 1;
            } else {
              dart.throw(new _http.HttpException.new("Invalid response line"));
            }
          } else {
            if (byte === _http._CharCode.CR) {
              this[_state$1] = _http._State.REQUEST_LINE_ENDING;
            } else {
              this[_expect](byte, _http._CharCode.LF);
              this[_messageType] = _http._MessageType.REQUEST;
              this[_state$1] = _http._State.HEADER_START;
            }
          }
          break;
        }
        case _http._State.REQUEST_LINE_ENDING:
        {
          this[_expect](byte, _http._CharCode.LF);
          this[_messageType] = _http._MessageType.REQUEST;
          this[_state$1] = _http._State.HEADER_START;
          break;
        }
        case _http._State.RESPONSE_LINE_STATUS_CODE:
        {
          if (byte === _http._CharCode.SP) {
            this[_state$1] = _http._State.RESPONSE_LINE_REASON_PHRASE;
          } else if (byte === _http._CharCode.CR) {
            this[_state$1] = _http._State.RESPONSE_LINE_ENDING;
          } else {
            this[_statusCodeLength] = dart.notNull(this[_statusCodeLength]) + 1;
            if (dart.notNull(byte) < 48 && 57 < dart.notNull(byte) || dart.notNull(this[_statusCodeLength]) > 3) {
              dart.throw(new _http.HttpException.new("Invalid response status code"));
            } else {
              this[_statusCode] = dart.notNull(this[_statusCode]) * 10 + dart.notNull(byte) - 48;
            }
          }
          break;
        }
        case _http._State.RESPONSE_LINE_REASON_PHRASE:
        {
          if (byte === _http._CharCode.CR) {
            this[_state$1] = _http._State.RESPONSE_LINE_ENDING;
          } else {
            if (byte === _http._CharCode.CR || byte === _http._CharCode.LF) {
              dart.throw(new _http.HttpException.new("Invalid response reason phrase"));
            }
            this[_uri_or_reason_phrase][$add](byte);
          }
          break;
        }
        case _http._State.RESPONSE_LINE_ENDING:
        {
          this[_expect](byte, _http._CharCode.LF);
          this[_messageType] === _http._MessageType.RESPONSE;
          if (dart.notNull(this[_statusCode]) < 100 || dart.notNull(this[_statusCode]) > 599) {
            dart.throw(new _http.HttpException.new("Invalid response status code"));
          } else {
            if (dart.notNull(this[_statusCode]) <= 199 || this[_statusCode] === 204 || this[_statusCode] === 304) {
              this[_noMessageBody] = true;
            }
          }
          this[_state$1] = _http._State.HEADER_START;
          break;
        }
        case _http._State.HEADER_START:
        {
          this[_headers] = new _http._HttpHeaders.new(this.version);
          if (byte === _http._CharCode.CR) {
            this[_state$1] = _http._State.HEADER_ENDING;
          } else if (byte === _http._CharCode.LF) {
            this[_state$1] = _http._State.HEADER_ENDING;
            this[_index$1] = dart.notNull(this[_index$1]) - 1;
          } else {
            this[_headerField][$add](_http._HttpParser._toLowerCaseByte(byte));
            this[_state$1] = _http._State.HEADER_FIELD;
          }
          break;
        }
        case _http._State.HEADER_FIELD:
        {
          if (byte === _http._CharCode.COLON) {
            this[_state$1] = _http._State.HEADER_VALUE_START;
          } else {
            if (!dart.test(_http._HttpParser._isTokenChar(byte))) {
              dart.throw(new _http.HttpException.new("Invalid header field name"));
            }
            this[_headerField][$add](_http._HttpParser._toLowerCaseByte(byte));
          }
          break;
        }
        case _http._State.HEADER_VALUE_START:
        {
          if (byte === _http._CharCode.CR) {
            this[_state$1] = _http._State.HEADER_VALUE_FOLDING_OR_ENDING;
          } else if (byte === _http._CharCode.LF) {
            this[_state$1] = _http._State.HEADER_VALUE_FOLD_OR_END;
          } else if (byte !== _http._CharCode.SP && byte !== _http._CharCode.HT) {
            this[_headerValue][$add](byte);
            this[_state$1] = _http._State.HEADER_VALUE;
          }
          break;
        }
        case _http._State.HEADER_VALUE:
        {
          if (byte === _http._CharCode.CR) {
            this[_state$1] = _http._State.HEADER_VALUE_FOLDING_OR_ENDING;
          } else if (byte === _http._CharCode.LF) {
            this[_state$1] = _http._State.HEADER_VALUE_FOLD_OR_END;
          } else {
            this[_headerValue][$add](byte);
          }
          break;
        }
        case _http._State.HEADER_VALUE_FOLDING_OR_ENDING:
        {
          this[_expect](byte, _http._CharCode.LF);
          this[_state$1] = _http._State.HEADER_VALUE_FOLD_OR_END;
          break;
        }
        case _http._State.HEADER_VALUE_FOLD_OR_END:
        {
          if (byte === _http._CharCode.SP || byte === _http._CharCode.HT) {
            this[_state$1] = _http._State.HEADER_VALUE_START;
          } else {
            let headerField = core.String.fromCharCodes(this[_headerField]);
            let headerValue = core.String.fromCharCodes(this[_headerValue]);
            if (headerField === "transfer-encoding" && dart.test(this[_caseInsensitiveCompare]("chunked"[$codeUnits], this[_headerValue]))) {
              this[_chunked] = true;
            }
            if (headerField === "connection") {
              let tokens = _http._HttpParser._tokenizeFieldValue(headerValue);
              let isResponse = this[_messageType] === _http._MessageType.RESPONSE;
              let isUpgradeCode = this[_statusCode] === _internal.HttpStatus.upgradeRequired || this[_statusCode] === _internal.HttpStatus.switchingProtocols;
              for (let i = 0; i < dart.notNull(tokens[$length]); i++) {
                let isUpgrade = this[_caseInsensitiveCompare]("upgrade"[$codeUnits], tokens[$_get](i)[$codeUnits]);
                if (dart.test(isUpgrade) && !isResponse || dart.test(isUpgrade) && isResponse && isUpgradeCode) {
                  this[_connectionUpgrade] = true;
                }
                this[_headers][_add$2](headerField, tokens[$_get](i));
              }
            } else {
              this[_headers][_add$2](headerField, headerValue);
            }
            this[_headerField][$clear]();
            this[_headerValue][$clear]();
            if (byte === _http._CharCode.CR) {
              this[_state$1] = _http._State.HEADER_ENDING;
            } else if (byte === _http._CharCode.LF) {
              this[_state$1] = _http._State.HEADER_ENDING;
              this[_index$1] = dart.notNull(this[_index$1]) - 1;
            } else {
              this[_headerField][$add](_http._HttpParser._toLowerCaseByte(byte));
              this[_state$1] = _http._State.HEADER_FIELD;
            }
          }
          break;
        }
        case _http._State.HEADER_ENDING:
        {
          this[_expect](byte, _http._CharCode.LF);
          if (dart.test(this[_headersEnd]())) {
            return;
          } else {
            break;
          }
          return;
        }
        case _http._State.CHUNK_SIZE_STARTING_CR:
        {
          this[_expect](byte, _http._CharCode.CR);
          this[_state$1] = _http._State.CHUNK_SIZE_STARTING_LF;
          break;
        }
        case _http._State.CHUNK_SIZE_STARTING_LF:
        {
          this[_expect](byte, _http._CharCode.LF);
          this[_state$1] = _http._State.CHUNK_SIZE;
          break;
        }
        case _http._State.CHUNK_SIZE:
        {
          if (byte === _http._CharCode.CR) {
            this[_state$1] = _http._State.CHUNK_SIZE_ENDING;
          } else if (byte === _http._CharCode.SEMI_COLON) {
            this[_state$1] = _http._State.CHUNK_SIZE_EXTENSION;
          } else {
            let value = this[_expectHexDigit](byte);
            this[_remainingContent] = dart.notNull(this[_remainingContent]) * 16 + dart.notNull(value);
          }
          break;
        }
        case _http._State.CHUNK_SIZE_EXTENSION:
        {
          if (byte === _http._CharCode.CR) {
            this[_state$1] = _http._State.CHUNK_SIZE_ENDING;
          }
          break;
        }
        case _http._State.CHUNK_SIZE_ENDING:
        {
          this[_expect](byte, _http._CharCode.LF);
          if (dart.notNull(this[_remainingContent]) > 0) {
            this[_state$1] = _http._State.BODY;
          } else {
            this[_state$1] = _http._State.CHUNKED_BODY_DONE_CR;
          }
          break;
        }
        case _http._State.CHUNKED_BODY_DONE_CR:
        {
          this[_expect](byte, _http._CharCode.CR);
          this[_state$1] = _http._State.CHUNKED_BODY_DONE_LF;
          break;
        }
        case _http._State.CHUNKED_BODY_DONE_LF:
        {
          this[_expect](byte, _http._CharCode.LF);
          this[_reset]();
          this[_closeIncoming]();
          break;
        }
        case _http._State.BODY:
        {
          this[_index$1] = dart.notNull(this[_index$1]) - 1;
          let dataAvailable = dart.notNull(this[_buffer$1][$length]) - dart.notNull(this[_index$1]);
          if (dart.notNull(this[_remainingContent]) >= 0 && dart.notNull(dataAvailable) > dart.notNull(this[_remainingContent])) {
            dataAvailable = this[_remainingContent];
          }
          let data = typed_data.Uint8List.view(this[_buffer$1][$buffer], dart.notNull(this[_buffer$1][$offsetInBytes]) + dart.notNull(this[_index$1]), dataAvailable);
          this[_bodyController].add(data);
          if (this[_remainingContent] !== -1) {
            this[_remainingContent] = dart.notNull(this[_remainingContent]) - dart.notNull(data[$length]);
          }
          this[_index$1] = dart.notNull(this[_index$1]) + dart.notNull(data[$length]);
          if (this[_remainingContent] === 0) {
            if (!dart.test(this[_chunked])) {
              this[_reset]();
              this[_closeIncoming]();
            } else {
              this[_state$1] = _http._State.CHUNK_SIZE_STARTING_CR;
            }
          }
          break;
        }
        case _http._State.FAILURE:
        {
          if (!false) dart.assertFailed();
          break;
        }
        default:
        {
          if (!false) dart.assertFailed();
          break;
        }
      }
    }
    this[_parserCalled] = false;
    if (this[_buffer$1] != null && this[_index$1] == this[_buffer$1][$length]) {
      this[_releaseBuffer]();
      if (this[_state$1] !== _http._State.UPGRADED && this[_state$1] !== _http._State.FAILURE) {
        this[_socketSubscription$].resume();
      }
    }
  }
  [_onData$2](buffer) {
    this[_socketSubscription$].pause();
    if (!(this[_buffer$1] == null)) dart.assertFailed();
    this[_buffer$1] = typed_data.Uint8List._check(buffer);
    this[_index$1] = 0;
    this[_parse]();
  }
  [_onDone$]() {
    this[_socketSubscription$] = null;
    if (this[_state$1] === _http._State.CLOSED || this[_state$1] === _http._State.FAILURE) return;
    if (this[_incoming] != null) {
      if (this[_state$1] !== _http._State.UPGRADED && !(this[_state$1] === _http._State.START && !dart.test(this[_requestParser])) && !(this[_state$1] === _http._State.BODY && !dart.test(this[_chunked]) && this[_transferLength] === -1)) {
        this[_bodyController].addError(new _http.HttpException.new("Connection closed while receiving data"));
      }
      this[_closeIncoming](true);
      this[_controller$1].close();
      return;
    }
    if (this[_state$1] === _http._State.START) {
      if (!dart.test(this[_requestParser])) {
        this[_reportError$](new _http.HttpException.new("Connection closed before full header was received"));
      }
      this[_controller$1].close();
      return;
    }
    if (this[_state$1] === _http._State.UPGRADED) {
      this[_controller$1].close();
      return;
    }
    if (dart.notNull(this[_state$1]) < _http._State.FIRST_BODY_STATE) {
      this[_state$1] = _http._State.FAILURE;
      this[_reportError$](new _http.HttpException.new("Connection closed before full header was received"));
      this[_controller$1].close();
      return;
    }
    if (!dart.test(this[_chunked]) && this[_transferLength] === -1) {
      this[_state$1] = _http._State.CLOSED;
    } else {
      this[_state$1] = _http._State.FAILURE;
      this[_reportError$](new _http.HttpException.new("Connection closed before full body was received"));
    }
    this[_controller$1].close();
  }
  get version() {
    switch (this[_httpVersion]) {
      case _http._HttpVersion.HTTP10:
      {
        return "1.0";
      }
      case _http._HttpVersion.HTTP11:
      {
        return "1.1";
      }
    }
    return null;
  }
  get messageType() {
    return this[_messageType];
  }
  get transferLength() {
    return this[_transferLength];
  }
  get upgrade() {
    return dart.test(this[_connectionUpgrade]) && this[_state$1] === _http._State.UPGRADED;
  }
  get persistentConnection() {
    return this[_persistentConnection];
  }
  set isHead(value) {
    if (dart.test(value)) this[_noMessageBody] = true;
  }
  detachIncoming() {
    this[_state$1] = _http._State.UPGRADED;
    return new _http._HttpDetachedIncoming.new(this[_socketSubscription$], this.readUnparsedData());
  }
  readUnparsedData() {
    if (this[_buffer$1] == null) return null;
    if (this[_index$1] == this[_buffer$1][$length]) return null;
    let result = this[_buffer$1][$sublist](this[_index$1]);
    this[_releaseBuffer]();
    return result;
  }
  [_reset]() {
    if (this[_state$1] === _http._State.UPGRADED) return;
    this[_state$1] = _http._State.START;
    this[_messageType] = _http._MessageType.UNDETERMINED;
    this[_headerField][$clear]();
    this[_headerValue][$clear]();
    this[_method$][$clear]();
    this[_uri_or_reason_phrase][$clear]();
    this[_statusCode] = 0;
    this[_statusCodeLength] = 0;
    this[_httpVersion] = _http._HttpVersion.UNDETERMINED;
    this[_transferLength] = -1;
    this[_persistentConnection] = false;
    this[_connectionUpgrade] = false;
    this[_chunked] = false;
    this[_noMessageBody] = false;
    this[_remainingContent] = -1;
    this[_headers] = null;
  }
  [_releaseBuffer]() {
    this[_buffer$1] = null;
    this[_index$1] = null;
  }
  static _isTokenChar(byte) {
    return dart.notNull(byte) > 31 && dart.notNull(byte) < 128 && !dart.test(_http._Const.SEPARATOR_MAP[$_get](byte));
  }
  static _isValueChar(byte) {
    return dart.notNull(byte) > 31 && dart.notNull(byte) < 128 || byte === _http._CharCode.SP || byte === _http._CharCode.HT;
  }
  static _tokenizeFieldValue(headerValue) {
    let tokens = JSArrayOfString().of([]);
    let start = 0;
    let index = 0;
    while (index < headerValue.length) {
      if (headerValue[$_get](index) === ",") {
        tokens[$add](headerValue[$substring](start, index));
        start = index + 1;
      } else if (headerValue[$_get](index) === " " || headerValue[$_get](index) === "\t") {
        start++;
      }
      index++;
    }
    tokens[$add](headerValue[$substring](start, index));
    return tokens;
  }
  static _toLowerCaseByte(x) {
    return (dart.notNull(x) - 65 & 127) < 26 ? (dart.notNull(x) | 32) >>> 0 : x;
  }
  [_caseInsensitiveCompare](expected, value) {
    if (expected[$length] != value[$length]) return false;
    for (let i = 0; i < dart.notNull(expected[$length]); i++) {
      if (expected[$_get](i) != _http._HttpParser._toLowerCaseByte(value[$_get](i))) return false;
    }
    return true;
  }
  [_expect](val1, val2) {
    if (val1 != val2) {
      dart.throw(new _http.HttpException.new("Failed to parse HTTP"));
    }
  }
  [_expectHexDigit](byte) {
    if (48 <= dart.notNull(byte) && dart.notNull(byte) <= 57) {
      return dart.notNull(byte) - 48;
    } else if (65 <= dart.notNull(byte) && dart.notNull(byte) <= 70) {
      return dart.notNull(byte) - 65 + 10;
    } else if (97 <= dart.notNull(byte) && dart.notNull(byte) <= 102) {
      return dart.notNull(byte) - 97 + 10;
    } else {
      dart.throw(new _http.HttpException.new("Failed to parse HTTP"));
    }
  }
  [_createIncoming](transferLength) {
    if (!(this[_incoming] == null)) dart.assertFailed();
    if (!(this[_bodyController] == null)) dart.assertFailed();
    if (!!dart.test(this[_bodyPaused])) dart.assertFailed();
    let incoming = null;
    this[_bodyController] = StreamControllerOfListOfint().new({sync: true, onListen: dart.fn(() => {
        if (!dart.equals(incoming, this[_incoming])) return;
        if (!dart.test(this[_bodyPaused])) dart.assertFailed();
        this[_bodyPaused] = false;
        this[_pauseStateChanged]();
      }, VoidToNull()), onPause: dart.fn(() => {
        if (!dart.equals(incoming, this[_incoming])) return;
        if (!!dart.test(this[_bodyPaused])) dart.assertFailed();
        this[_bodyPaused] = true;
        this[_pauseStateChanged]();
      }, VoidToNull()), onResume: dart.fn(() => {
        if (!dart.equals(incoming, this[_incoming])) return;
        if (!dart.test(this[_bodyPaused])) dart.assertFailed();
        this[_bodyPaused] = false;
        this[_pauseStateChanged]();
      }, VoidToNull()), onCancel: dart.fn(() => {
        if (!dart.equals(incoming, this[_incoming])) return;
        if (this[_socketSubscription$] != null) {
          this[_socketSubscription$].cancel();
        }
        this[_closeIncoming](true);
        this[_controller$1].close();
      }, VoidToNull())});
    incoming = this[_incoming] = new _http._HttpIncoming.new(this[_headers], transferLength, this[_bodyController].stream);
    this[_bodyPaused] = true;
    this[_pauseStateChanged]();
  }
  [_closeIncoming](closing) {
    if (closing === void 0) closing = false;
    if (this[_incoming] == null) return;
    let tmp = this[_incoming];
    tmp.close(closing);
    this[_incoming] = null;
    if (this[_bodyController] != null) {
      this[_bodyController].close();
      this[_bodyController] = null;
    }
    this[_bodyPaused] = false;
    this[_pauseStateChanged]();
  }
  [_pauseStateChanged]() {
    if (this[_incoming] != null) {
      if (!dart.test(this[_bodyPaused]) && !dart.test(this[_parserCalled])) {
        this[_parse]();
      }
    } else {
      if (!dart.test(this[_paused]) && !dart.test(this[_parserCalled])) {
        this[_parse]();
      }
    }
  }
  [_reportError$](error, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    if (this[_socketSubscription$] != null) this[_socketSubscription$].cancel();
    this[_state$1] = _http._State.FAILURE;
    this[_controller$1].addError(error, core.StackTrace._check(stackTrace));
    this[_controller$1].close();
  }
};
(_http._HttpParser.__ = function(requestParser) {
  this[_parserCalled] = false;
  this[_buffer$1] = null;
  this[_index$1] = null;
  this[_state$1] = null;
  this[_httpVersionIndex] = null;
  this[_messageType] = null;
  this[_statusCode] = 0;
  this[_statusCodeLength] = 0;
  this[_method$] = JSArrayOfint().of([]);
  this[_uri_or_reason_phrase] = JSArrayOfint().of([]);
  this[_headerField] = JSArrayOfint().of([]);
  this[_headerValue] = JSArrayOfint().of([]);
  this[_httpVersion] = null;
  this[_transferLength] = -1;
  this[_persistentConnection] = null;
  this[_connectionUpgrade] = null;
  this[_chunked] = null;
  this[_noMessageBody] = false;
  this[_remainingContent] = -1;
  this[_headers] = null;
  this[_incoming] = null;
  this[_socketSubscription$] = null;
  this[_paused] = true;
  this[_bodyPaused] = false;
  this[_controller$1] = null;
  this[_bodyController] = null;
  this[_requestParser] = requestParser;
  _http._HttpParser.__proto__.new.call(this);
  this[_controller$1] = StreamControllerOf_HttpIncoming().new({sync: true, onListen: dart.fn(() => {
      this[_paused] = false;
    }, VoidToNull()), onPause: dart.fn(() => {
      this[_paused] = true;
      this[_pauseStateChanged]();
    }, VoidToNull()), onResume: dart.fn(() => {
      this[_paused] = false;
      this[_pauseStateChanged]();
    }, VoidToNull()), onCancel: dart.fn(() => {
      if (this[_socketSubscription$] != null) {
        this[_socketSubscription$].cancel();
      }
    }, VoidToNull())});
  this[_reset]();
}).prototype = _http._HttpParser.prototype;
dart.addTypeTests(_http._HttpParser);
dart.setMethodSignature(_http._HttpParser, () => ({
  __proto__: dart.getMethods(_http._HttpParser.__proto__),
  listen: dart.fnType(async.StreamSubscription$(_http._HttpIncoming), [dart.fnType(dart.void, [_http._HttpIncoming])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
  listenToStream: dart.fnType(dart.void, [async.Stream$(core.List$(core.int))]),
  [_parse]: dart.fnType(dart.void, []),
  [_headersEnd]: dart.fnType(core.bool, []),
  [_doParse]: dart.fnType(dart.void, []),
  [_onData$2]: dart.fnType(dart.void, [core.List$(core.int)]),
  [_onDone$]: dart.fnType(dart.void, []),
  detachIncoming: dart.fnType(_http._HttpDetachedIncoming, []),
  readUnparsedData: dart.fnType(core.List$(core.int), []),
  [_reset]: dart.fnType(dart.void, []),
  [_releaseBuffer]: dart.fnType(dart.void, []),
  [_caseInsensitiveCompare]: dart.fnType(core.bool, [core.List$(core.int), core.List$(core.int)]),
  [_expect]: dart.fnType(core.int, [core.int, core.int]),
  [_expectHexDigit]: dart.fnType(core.int, [core.int]),
  [_createIncoming]: dart.fnType(dart.void, [core.int]),
  [_closeIncoming]: dart.fnType(dart.void, [], [core.bool]),
  [_pauseStateChanged]: dart.fnType(dart.void, []),
  [_reportError$]: dart.fnType(dart.void, [dart.dynamic], [dart.dynamic])
}));
dart.setGetterSignature(_http._HttpParser, () => ({
  __proto__: dart.getGetters(_http._HttpParser.__proto__),
  version: core.String,
  messageType: core.int,
  transferLength: core.int,
  upgrade: core.bool,
  persistentConnection: core.bool
}));
dart.setSetterSignature(_http._HttpParser, () => ({
  __proto__: dart.getSetters(_http._HttpParser.__proto__),
  isHead: core.bool
}));
dart.setFieldSignature(_http._HttpParser, () => ({
  __proto__: dart.getFields(_http._HttpParser.__proto__),
  [_parserCalled]: dart.fieldType(core.bool),
  [_buffer$1]: dart.fieldType(typed_data.Uint8List),
  [_index$1]: dart.fieldType(core.int),
  [_requestParser]: dart.finalFieldType(core.bool),
  [_state$1]: dart.fieldType(core.int),
  [_httpVersionIndex]: dart.fieldType(core.int),
  [_messageType]: dart.fieldType(core.int),
  [_statusCode]: dart.fieldType(core.int),
  [_statusCodeLength]: dart.fieldType(core.int),
  [_method$]: dart.finalFieldType(ListOfint()),
  [_uri_or_reason_phrase]: dart.finalFieldType(ListOfint()),
  [_headerField]: dart.finalFieldType(ListOfint()),
  [_headerValue]: dart.finalFieldType(ListOfint()),
  [_httpVersion]: dart.fieldType(core.int),
  [_transferLength]: dart.fieldType(core.int),
  [_persistentConnection]: dart.fieldType(core.bool),
  [_connectionUpgrade]: dart.fieldType(core.bool),
  [_chunked]: dart.fieldType(core.bool),
  [_noMessageBody]: dart.fieldType(core.bool),
  [_remainingContent]: dart.fieldType(core.int),
  [_headers]: dart.fieldType(_http._HttpHeaders),
  [_incoming]: dart.fieldType(_http._HttpIncoming),
  [_socketSubscription$]: dart.fieldType(StreamSubscriptionOfListOfint()),
  [_paused]: dart.fieldType(core.bool),
  [_bodyPaused]: dart.fieldType(core.bool),
  [_controller$1]: dart.fieldType(StreamControllerOf_HttpIncoming()),
  [_bodyController]: dart.fieldType(StreamControllerOfListOfint())
}));
dart.defineLazy(_http, {
  /*_http._DART_SESSION_ID*/get _DART_SESSION_ID() {
    return "DARTSESSID";
  }
});
const _lastSeen = Symbol('_lastSeen');
const _timeoutCallback = Symbol('_timeoutCallback');
const _prev = Symbol('_prev');
const _next$1 = Symbol('_next');
const _data$1 = Symbol('_data');
const _removeFromTimeoutQueue = Symbol('_removeFromTimeoutQueue');
const _sessions = Symbol('_sessions');
const _bumpToEnd = Symbol('_bumpToEnd');
_http._HttpSession = class _HttpSession extends core.Object {
  destroy() {
    this[_destroyed] = true;
    this[_sessionManager][_removeFromTimeoutQueue](this);
    this[_sessionManager][_sessions][$remove](this.id);
  }
  [_markSeen]() {
    this[_lastSeen] = new core.DateTime.now();
    this[_sessionManager][_bumpToEnd](this);
  }
  get lastSeen() {
    return this[_lastSeen];
  }
  get isNew() {
    return this[_isNew];
  }
  set onTimeout(callback) {
    this[_timeoutCallback] = callback;
  }
  containsValue(value) {
    return this[_data$1][$containsValue](value);
  }
  containsKey(key) {
    return this[_data$1][$containsKey](key);
  }
  _get(key) {
    return this[_data$1][$_get](key);
  }
  _set(key, value) {
    this[_data$1][$_set](key, value);
    return value;
  }
  putIfAbsent(key, ifAbsent) {
    return this[_data$1][$putIfAbsent](key, ifAbsent);
  }
  addAll(other) {
    return this[_data$1][$addAll](other);
  }
  remove(key) {
    return this[_data$1][$remove](key);
  }
  clear() {
    this[_data$1][$clear]();
  }
  forEach(f) {
    this[_data$1][$forEach](f);
  }
  get entries() {
    return this[_data$1][$entries];
  }
  addEntries(entries) {
    this[_data$1][$addEntries](entries);
  }
  map(K, V, transform) {
    return core.Map$(K, V)._check(this[_data$1][$map](K, V, transform));
  }
  removeWhere(test) {
    this[_data$1][$removeWhere](test);
  }
  cast(K, V) {
    return core.Map$(K, V)._check(this[_data$1][$cast](K, V));
  }
  update(key, update, opts) {
    let ifAbsent = opts && 'ifAbsent' in opts ? opts.ifAbsent : null;
    return this[_data$1][$update](key, update, {ifAbsent: ifAbsent});
  }
  updateAll(update) {
    this[_data$1][$updateAll](update);
  }
  get keys() {
    return this[_data$1][$keys];
  }
  get values() {
    return this[_data$1][$values];
  }
  get length() {
    return this[_data$1][$length];
  }
  get isEmpty() {
    return this[_data$1][$isEmpty];
  }
  get isNotEmpty() {
    return this[_data$1][$isNotEmpty];
  }
  toString() {
    return "HttpSession id:" + dart.str(this.id) + " " + dart.str(this[_data$1]);
  }
};
(_http._HttpSession.new = function(sessionManager, id) {
  this[_destroyed] = false;
  this[_isNew] = true;
  this[_timeoutCallback] = null;
  this[_prev] = null;
  this[_next$1] = null;
  this[_data$1] = new _js_helper.LinkedMap.new();
  this[_sessionManager] = sessionManager;
  this.id = id;
  this[_lastSeen] = new core.DateTime.now();
}).prototype = _http._HttpSession.prototype;
dart.addTypeTests(_http._HttpSession);
_http._HttpSession[dart.implements] = () => [_http.HttpSession];
dart.setMethodSignature(_http._HttpSession, () => ({
  __proto__: dart.getMethods(_http._HttpSession.__proto__),
  destroy: dart.fnType(dart.void, []),
  [_markSeen]: dart.fnType(dart.void, []),
  containsValue: dart.fnType(core.bool, [core.Object]),
  [$containsValue]: dart.fnType(core.bool, [core.Object]),
  containsKey: dart.fnType(core.bool, [core.Object]),
  [$containsKey]: dart.fnType(core.bool, [core.Object]),
  _get: dart.fnType(dart.dynamic, [core.Object]),
  [$_get]: dart.fnType(dart.dynamic, [core.Object]),
  _set: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
  [$_set]: dart.fnType(dart.void, [dart.dynamic, dart.dynamic]),
  putIfAbsent: dart.fnType(dart.dynamic, [dart.dynamic, dart.fnType(dart.dynamic, [])]),
  [$putIfAbsent]: dart.fnType(dart.dynamic, [dart.dynamic, dart.fnType(dart.dynamic, [])]),
  addAll: dart.fnType(dart.void, [core.Map]),
  [$addAll]: dart.fnType(dart.void, [core.Map]),
  remove: dart.fnType(dart.dynamic, [core.Object]),
  [$remove]: dart.fnType(dart.dynamic, [core.Object]),
  clear: dart.fnType(dart.void, []),
  [$clear]: dart.fnType(dart.void, []),
  forEach: dart.fnType(dart.void, [dart.fnType(dart.void, [dart.dynamic, dart.dynamic])]),
  [$forEach]: dart.fnType(dart.void, [dart.fnType(dart.void, [dart.dynamic, dart.dynamic])]),
  addEntries: dart.fnType(dart.void, [core.Iterable$(core.MapEntry)]),
  [$addEntries]: dart.fnType(dart.void, [core.Iterable$(core.MapEntry)]),
  map: dart.gFnType((K, V) => [core.Map$(K, V), [dart.fnType(core.MapEntry$(K, V), [dart.dynamic, dart.dynamic])]]),
  [$map]: dart.gFnType((K, V) => [core.Map$(K, V), [dart.fnType(core.MapEntry$(K, V), [dart.dynamic, dart.dynamic])]]),
  removeWhere: dart.fnType(dart.void, [dart.fnType(core.bool, [dart.dynamic, dart.dynamic])]),
  [$removeWhere]: dart.fnType(dart.void, [dart.fnType(core.bool, [dart.dynamic, dart.dynamic])]),
  cast: dart.gFnType((K, V) => [core.Map$(K, V), []]),
  [$cast]: dart.gFnType((K, V) => [core.Map$(K, V), []]),
  update: dart.fnType(dart.dynamic, [dart.dynamic, dart.fnType(dart.dynamic, [dart.dynamic])], {ifAbsent: dart.fnType(dart.dynamic, [])}),
  [$update]: dart.fnType(dart.dynamic, [dart.dynamic, dart.fnType(dart.dynamic, [dart.dynamic])], {ifAbsent: dart.fnType(dart.dynamic, [])}),
  updateAll: dart.fnType(dart.void, [dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic])]),
  [$updateAll]: dart.fnType(dart.void, [dart.fnType(dart.dynamic, [dart.dynamic, dart.dynamic])])
}));
dart.setGetterSignature(_http._HttpSession, () => ({
  __proto__: dart.getGetters(_http._HttpSession.__proto__),
  lastSeen: core.DateTime,
  isNew: core.bool,
  entries: core.Iterable$(core.MapEntry),
  [$entries]: core.Iterable$(core.MapEntry),
  keys: core.Iterable,
  [$keys]: core.Iterable,
  values: core.Iterable,
  [$values]: core.Iterable,
  length: core.int,
  [$length]: core.int,
  isEmpty: core.bool,
  [$isEmpty]: core.bool,
  isNotEmpty: core.bool,
  [$isNotEmpty]: core.bool
}));
dart.setSetterSignature(_http._HttpSession, () => ({
  __proto__: dart.getSetters(_http._HttpSession.__proto__),
  onTimeout: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(_http._HttpSession, () => ({
  __proto__: dart.getFields(_http._HttpSession.__proto__),
  [_destroyed]: dart.fieldType(core.bool),
  [_isNew]: dart.fieldType(core.bool),
  [_lastSeen]: dart.fieldType(core.DateTime),
  [_timeoutCallback]: dart.fieldType(core.Function),
  [_sessionManager]: dart.fieldType(_http._HttpSessionManager),
  [_prev]: dart.fieldType(_http._HttpSession),
  [_next$1]: dart.fieldType(_http._HttpSession),
  id: dart.finalFieldType(core.String),
  [_data$1]: dart.finalFieldType(core.Map)
}));
dart.defineExtensionMethods(_http._HttpSession, [
  'containsValue',
  'containsKey',
  '_get',
  '_set',
  'putIfAbsent',
  'addAll',
  'remove',
  'clear',
  'forEach',
  'addEntries',
  'map',
  'removeWhere',
  'cast',
  'update',
  'updateAll',
  'toString'
]);
dart.defineExtensionAccessors(_http._HttpSession, [
  'entries',
  'keys',
  'values',
  'length',
  'isEmpty',
  'isNotEmpty'
]);
const _sessionTimeout = Symbol('_sessionTimeout');
const _head$0 = Symbol('_head');
const _tail$ = Symbol('_tail');
const _timer = Symbol('_timer');
const _addToTimeoutQueue = Symbol('_addToTimeoutQueue');
const _stopTimer = Symbol('_stopTimer');
const _startTimer = Symbol('_startTimer');
const _timerTimeout = Symbol('_timerTimeout');
_http._HttpSessionManager = class _HttpSessionManager extends core.Object {
  createSessionId() {
    let _KEY_LENGTH = 16;
    let data = _http._CryptoUtils.getRandomBytes(_KEY_LENGTH);
    return _http._CryptoUtils.bytesToHex(data);
  }
  getSession(id) {
    return this[_sessions][$_get](id);
  }
  createSession() {
    let id = this.createSessionId();
    while (dart.test(this[_sessions][$containsKey](id))) {
      id = this.createSessionId();
    }
    let session = this[_sessions][$_set](id, new _http._HttpSession.new(this, id));
    this[_addToTimeoutQueue](session);
    return session;
  }
  set sessionTimeout(timeout) {
    this[_sessionTimeout] = timeout;
    this[_stopTimer]();
    this[_startTimer]();
  }
  close() {
    this[_stopTimer]();
  }
  [_bumpToEnd](session) {
    this[_removeFromTimeoutQueue](session);
    this[_addToTimeoutQueue](session);
  }
  [_addToTimeoutQueue](session) {
    if (this[_head$0] == null) {
      if (!(this[_tail$] == null)) dart.assertFailed();
      this[_tail$] = this[_head$0] = session;
      this[_startTimer]();
    } else {
      if (!(this[_timer] != null)) dart.assertFailed();
      if (!(this[_tail$] != null)) dart.assertFailed();
      this[_tail$][_next$1] = session;
      session[_prev] = this[_tail$];
      this[_tail$] = session;
    }
  }
  [_removeFromTimeoutQueue](session) {
    if (session[_next$1] != null) {
      session[_next$1][_prev] = session[_prev];
    }
    if (session[_prev] != null) {
      session[_prev][_next$1] = session[_next$1];
    }
    if (dart.equals(this[_head$0], session)) {
      this[_head$0] = session[_next$1];
      this[_stopTimer]();
      this[_startTimer]();
    }
    if (dart.equals(this[_tail$], session)) {
      this[_tail$] = session[_prev];
    }
    session[_next$1] = session[_prev] = null;
  }
  [_timerTimeout]() {
    this[_stopTimer]();
    if (!(this[_head$0] != null)) dart.assertFailed();
    let session = this[_head$0];
    session.destroy();
    if (session[_timeoutCallback] != null) {
      dart.dsend(session, _timeoutCallback, []);
    }
  }
  [_startTimer]() {
    if (!(this[_timer] == null)) dart.assertFailed();
    if (this[_head$0] != null) {
      let seconds = new core.DateTime.now().difference(this[_head$0].lastSeen).inSeconds;
      this[_timer] = async.Timer.new(new core.Duration.new({seconds: dart.notNull(this[_sessionTimeout]) - dart.notNull(seconds)}), dart.bind(this, _timerTimeout));
    }
  }
  [_stopTimer]() {
    if (this[_timer] != null) {
      this[_timer].cancel();
      this[_timer] = null;
    }
  }
};
(_http._HttpSessionManager.new = function() {
  this[_sessionTimeout] = 20 * 60;
  this[_head$0] = null;
  this[_tail$] = null;
  this[_timer] = null;
  this[_sessions] = new (IdentityMapOfString$_HttpSession()).new();
}).prototype = _http._HttpSessionManager.prototype;
dart.addTypeTests(_http._HttpSessionManager);
dart.setMethodSignature(_http._HttpSessionManager, () => ({
  __proto__: dart.getMethods(_http._HttpSessionManager.__proto__),
  createSessionId: dart.fnType(core.String, []),
  getSession: dart.fnType(_http._HttpSession, [core.String]),
  createSession: dart.fnType(_http._HttpSession, []),
  close: dart.fnType(dart.void, []),
  [_bumpToEnd]: dart.fnType(dart.void, [_http._HttpSession]),
  [_addToTimeoutQueue]: dart.fnType(dart.void, [_http._HttpSession]),
  [_removeFromTimeoutQueue]: dart.fnType(dart.void, [_http._HttpSession]),
  [_timerTimeout]: dart.fnType(dart.void, []),
  [_startTimer]: dart.fnType(dart.void, []),
  [_stopTimer]: dart.fnType(dart.void, [])
}));
dart.setSetterSignature(_http._HttpSessionManager, () => ({
  __proto__: dart.getSetters(_http._HttpSessionManager.__proto__),
  sessionTimeout: core.int
}));
dart.setFieldSignature(_http._HttpSessionManager, () => ({
  __proto__: dart.getFields(_http._HttpSessionManager.__proto__),
  [_sessions]: dart.fieldType(MapOfString$_HttpSession()),
  [_sessionTimeout]: dart.fieldType(core.int),
  [_head$0]: dart.fieldType(_http._HttpSession),
  [_tail$]: dart.fieldType(_http._HttpSession),
  [_timer]: dart.fieldType(async.Timer)
}));
dart.defineLazy(_http, {
  /*_http._httpOverridesToken*/get _httpOverridesToken() {
    return new core.Object.new();
  },
  /*_http._asyncRunZoned*/get _asyncRunZoned() {
    return dart.fn(async.runZoned, Fn__ToR());
  }
});
_http.HttpOverrides = class HttpOverrides extends core.Object {
  static get current() {
    return _http.HttpOverrides._check((() => {
      let l = async.Zone.current._get(_http._httpOverridesToken);
      return l != null ? l : _http.HttpOverrides._global;
    })());
  }
  static set global(overrides) {
    _http.HttpOverrides._global = overrides;
  }
  static runZoned(R, body, opts) {
    let createHttpClient = opts && 'createHttpClient' in opts ? opts.createHttpClient : null;
    let findProxyFromEnvironment = opts && 'findProxyFromEnvironment' in opts ? opts.findProxyFromEnvironment : null;
    let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let overrides = new _http._HttpOverridesScope.new(createHttpClient, findProxyFromEnvironment);
    return _http._asyncRunZoned(R, body, {zoneValues: new _js_helper.LinkedMap.from([_http._httpOverridesToken, overrides]), zoneSpecification: zoneSpecification, onError: onError});
  }
  static runWithHttpOverrides(R, body, overrides, opts) {
    let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null;
    let onError = opts && 'onError' in opts ? opts.onError : null;
    return _http._asyncRunZoned(R, body, {zoneValues: new _js_helper.LinkedMap.from([_http._httpOverridesToken, overrides]), zoneSpecification: zoneSpecification, onError: onError});
  }
  createHttpClient(context) {
    return new _http._HttpClient.new(context);
  }
  findProxyFromEnvironment(url, environment) {
    return _http._HttpClient._findProxyFromEnvironment(url, environment);
  }
};
(_http.HttpOverrides.new = function() {
}).prototype = _http.HttpOverrides.prototype;
dart.addTypeTests(_http.HttpOverrides);
dart.setMethodSignature(_http.HttpOverrides, () => ({
  __proto__: dart.getMethods(_http.HttpOverrides.__proto__),
  createHttpClient: dart.fnType(_http.HttpClient, [io.SecurityContext]),
  findProxyFromEnvironment: dart.fnType(core.String, [core.Uri, core.Map$(core.String, core.String)])
}));
dart.defineLazy(_http.HttpOverrides, {
  /*_http.HttpOverrides._global*/get _global() {
    return null;
  },
  set _global(_) {}
});
const _createHttpClient = Symbol('_createHttpClient');
const _findProxyFromEnvironment = Symbol('_findProxyFromEnvironment');
const _previous$2 = Symbol('_previous');
_http._HttpOverridesScope = class _HttpOverridesScope extends _http.HttpOverrides {
  createHttpClient(context) {
    if (this[_createHttpClient] != null) return this[_createHttpClient](context);
    if (this[_previous$2] != null) return this[_previous$2].createHttpClient(context);
    return super.createHttpClient(context);
  }
  findProxyFromEnvironment(url, environment) {
    if (this[_findProxyFromEnvironment] != null) {
      return this[_findProxyFromEnvironment](url, environment);
    }
    if (this[_previous$2] != null) {
      return this[_previous$2].findProxyFromEnvironment(url, environment);
    }
    return super.findProxyFromEnvironment(url, environment);
  }
};
(_http._HttpOverridesScope.new = function(createHttpClient, findProxyFromEnvironment) {
  this[_previous$2] = _http.HttpOverrides.current;
  this[_createHttpClient] = createHttpClient;
  this[_findProxyFromEnvironment] = findProxyFromEnvironment;
}).prototype = _http._HttpOverridesScope.prototype;
dart.addTypeTests(_http._HttpOverridesScope);
dart.setFieldSignature(_http._HttpOverridesScope, () => ({
  __proto__: dart.getFields(_http._HttpOverridesScope.__proto__),
  [_previous$2]: dart.finalFieldType(_http.HttpOverrides),
  [_createHttpClient]: dart.finalFieldType(SecurityContextToHttpClient()),
  [_findProxyFromEnvironment]: dart.finalFieldType(UriAndMapOfString$StringToString())
}));
_http.WebSocketStatus = class WebSocketStatus extends core.Object {};
(_http.WebSocketStatus.new = function() {
}).prototype = _http.WebSocketStatus.prototype;
dart.addTypeTests(_http.WebSocketStatus);
dart.defineLazy(_http.WebSocketStatus, {
  /*_http.WebSocketStatus.normalClosure*/get normalClosure() {
    return 1000;
  },
  /*_http.WebSocketStatus.goingAway*/get goingAway() {
    return 1001;
  },
  /*_http.WebSocketStatus.protocolError*/get protocolError() {
    return 1002;
  },
  /*_http.WebSocketStatus.unsupportedData*/get unsupportedData() {
    return 1003;
  },
  /*_http.WebSocketStatus.reserved1004*/get reserved1004() {
    return 1004;
  },
  /*_http.WebSocketStatus.noStatusReceived*/get noStatusReceived() {
    return 1005;
  },
  /*_http.WebSocketStatus.abnormalClosure*/get abnormalClosure() {
    return 1006;
  },
  /*_http.WebSocketStatus.invalidFramePayloadData*/get invalidFramePayloadData() {
    return 1007;
  },
  /*_http.WebSocketStatus.policyViolation*/get policyViolation() {
    return 1008;
  },
  /*_http.WebSocketStatus.messageTooBig*/get messageTooBig() {
    return 1009;
  },
  /*_http.WebSocketStatus.missingMandatoryExtension*/get missingMandatoryExtension() {
    return 1010;
  },
  /*_http.WebSocketStatus.internalServerError*/get internalServerError() {
    return 1011;
  },
  /*_http.WebSocketStatus.reserved1015*/get reserved1015() {
    return 1015;
  },
  /*_http.WebSocketStatus.NORMAL_CLOSURE*/get NORMAL_CLOSURE() {
    return 1000;
  },
  /*_http.WebSocketStatus.GOING_AWAY*/get GOING_AWAY() {
    return 1001;
  },
  /*_http.WebSocketStatus.PROTOCOL_ERROR*/get PROTOCOL_ERROR() {
    return 1002;
  },
  /*_http.WebSocketStatus.UNSUPPORTED_DATA*/get UNSUPPORTED_DATA() {
    return 1003;
  },
  /*_http.WebSocketStatus.RESERVED_1004*/get RESERVED_1004() {
    return 1004;
  },
  /*_http.WebSocketStatus.NO_STATUS_RECEIVED*/get NO_STATUS_RECEIVED() {
    return 1005;
  },
  /*_http.WebSocketStatus.ABNORMAL_CLOSURE*/get ABNORMAL_CLOSURE() {
    return 1006;
  },
  /*_http.WebSocketStatus.INVALID_FRAME_PAYLOAD_DATA*/get INVALID_FRAME_PAYLOAD_DATA() {
    return 1007;
  },
  /*_http.WebSocketStatus.POLICY_VIOLATION*/get POLICY_VIOLATION() {
    return 1008;
  },
  /*_http.WebSocketStatus.MESSAGE_TOO_BIG*/get MESSAGE_TOO_BIG() {
    return 1009;
  },
  /*_http.WebSocketStatus.MISSING_MANDATORY_EXTENSION*/get MISSING_MANDATORY_EXTENSION() {
    return 1010;
  },
  /*_http.WebSocketStatus.INTERNAL_SERVER_ERROR*/get INTERNAL_SERVER_ERROR() {
    return 1011;
  },
  /*_http.WebSocketStatus.RESERVED_1015*/get RESERVED_1015() {
    return 1015;
  }
});
const _createServerResponseHeader = Symbol('_createServerResponseHeader');
const _createClientRequestHeader = Symbol('_createClientRequestHeader');
const _createHeader = Symbol('_createHeader');
_http.CompressionOptions = class CompressionOptions extends core.Object {
  [_createServerResponseHeader](requested) {
    let info = new _http._CompressionMaxWindowBits.new();
    let mwb = null;
    let part = null;
    if ((requested == null ? null : requested.parameters) != null) {
      part = requested.parameters[$_get]("server_max_window_bits");
    }
    if (part != null) {
      if (part.length >= 2 && part[$startsWith]("0")) {
        dart.throw(new core.ArgumentError.new("Illegal 0 padding on value."));
      } else {
        mwb = this.serverMaxWindowBits == null ? core.int.parse(part, {onError: dart.fn(source => _http._WebSocketImpl.DEFAULT_WINDOW_BITS, StringToint())}) : this.serverMaxWindowBits;
        info.headerValue = "; server_max_window_bits=" + dart.str(mwb);
        info.maxWindowBits = mwb;
      }
    } else {
      info.headerValue = "";
      info.maxWindowBits = _http._WebSocketImpl.DEFAULT_WINDOW_BITS;
    }
    return info;
  }
  [_createClientRequestHeader](requested, size) {
    let info = "";
    if (requested != null) {
      info = "; client_max_window_bits=" + dart.str(size);
    } else {
      if (this.clientMaxWindowBits == null) {
        info = "; client_max_window_bits";
      } else {
        info = "; client_max_window_bits=" + dart.str(this.clientMaxWindowBits);
      }
      if (this.serverMaxWindowBits != null) {
        info = info + ("; server_max_window_bits=" + dart.str(this.serverMaxWindowBits));
      }
    }
    return info;
  }
  [_createHeader](requested) {
    if (requested === void 0) requested = null;
    let info = new _http._CompressionMaxWindowBits.new("", 0);
    if (!dart.test(this.enabled)) {
      return info;
    }
    info.headerValue = _http._WebSocketImpl.PER_MESSAGE_DEFLATE;
    if (dart.test(this.clientNoContextTakeover) && (requested == null || requested != null && dart.test(requested.parameters[$containsKey]("client_no_context_takeover")))) {
      info.headerValue = dart.notNull(info.headerValue) + "; client_no_context_takeover";
    }
    if (dart.test(this.serverNoContextTakeover) && (requested == null || requested != null && dart.test(requested.parameters[$containsKey]("server_no_context_takeover")))) {
      info.headerValue = dart.notNull(info.headerValue) + "; server_no_context_takeover";
    }
    let headerList = this[_createServerResponseHeader](requested);
    info.headerValue = dart.notNull(info.headerValue) + dart.notNull(headerList.headerValue);
    info.maxWindowBits = headerList.maxWindowBits;
    info.headerValue = dart.notNull(info.headerValue) + dart.notNull(this[_createClientRequestHeader](requested, info.maxWindowBits));
    return info;
  }
};
(_http.CompressionOptions.new = function(opts) {
  let clientNoContextTakeover = opts && 'clientNoContextTakeover' in opts ? opts.clientNoContextTakeover : false;
  let serverNoContextTakeover = opts && 'serverNoContextTakeover' in opts ? opts.serverNoContextTakeover : false;
  let clientMaxWindowBits = opts && 'clientMaxWindowBits' in opts ? opts.clientMaxWindowBits : null;
  let serverMaxWindowBits = opts && 'serverMaxWindowBits' in opts ? opts.serverMaxWindowBits : null;
  let enabled = opts && 'enabled' in opts ? opts.enabled : true;
  this.clientNoContextTakeover = clientNoContextTakeover;
  this.serverNoContextTakeover = serverNoContextTakeover;
  this.clientMaxWindowBits = clientMaxWindowBits;
  this.serverMaxWindowBits = serverMaxWindowBits;
  this.enabled = enabled;
}).prototype = _http.CompressionOptions.prototype;
dart.addTypeTests(_http.CompressionOptions);
dart.setMethodSignature(_http.CompressionOptions, () => ({
  __proto__: dart.getMethods(_http.CompressionOptions.__proto__),
  [_createServerResponseHeader]: dart.fnType(_http._CompressionMaxWindowBits, [_http.HeaderValue]),
  [_createClientRequestHeader]: dart.fnType(core.String, [_http.HeaderValue, core.int]),
  [_createHeader]: dart.fnType(_http._CompressionMaxWindowBits, [], [_http.HeaderValue])
}));
dart.setFieldSignature(_http.CompressionOptions, () => ({
  __proto__: dart.getFields(_http.CompressionOptions.__proto__),
  clientNoContextTakeover: dart.finalFieldType(core.bool),
  serverNoContextTakeover: dart.finalFieldType(core.bool),
  clientMaxWindowBits: dart.finalFieldType(core.int),
  serverMaxWindowBits: dart.finalFieldType(core.int),
  enabled: dart.finalFieldType(core.bool)
}));
dart.defineLazy(_http.CompressionOptions, {
  /*_http.CompressionOptions.compressionDefault*/get compressionDefault() {
    return dart.const(new _http.CompressionOptions.new());
  },
  /*_http.CompressionOptions.DEFAULT*/get DEFAULT() {
    return _http.CompressionOptions.compressionDefault;
  },
  /*_http.CompressionOptions.compressionOff*/get compressionOff() {
    return dart.const(new _http.CompressionOptions.new({enabled: false}));
  },
  /*_http.CompressionOptions.OFF*/get OFF() {
    return _http.CompressionOptions.compressionOff;
  }
});
_http.WebSocketTransformer = class WebSocketTransformer extends core.Object {
  static new(opts) {
    let protocolSelector = opts && 'protocolSelector' in opts ? opts.protocolSelector : null;
    let compression = opts && 'compression' in opts ? opts.compression : _http.CompressionOptions.compressionDefault;
    return new _http._WebSocketTransformerImpl.new(protocolSelector, compression);
  }
  static upgrade(request, opts) {
    let protocolSelector = opts && 'protocolSelector' in opts ? opts.protocolSelector : null;
    let compression = opts && 'compression' in opts ? opts.compression : _http.CompressionOptions.compressionDefault;
    return _http._WebSocketTransformerImpl._upgrade(request, protocolSelector, compression);
  }
  static isUpgradeRequest(request) {
    return _http._WebSocketTransformerImpl._isUpgradeRequest(request);
  }
};
(_http.WebSocketTransformer[dart.mixinNew] = function() {
}).prototype = _http.WebSocketTransformer.prototype;
dart.addTypeTests(_http.WebSocketTransformer);
_http.WebSocketTransformer[dart.implements] = () => [StreamTransformerOfHttpRequest$WebSocket()];
_http.WebSocket = class WebSocket extends core.Object {
  static connect(url, opts) {
    let protocols = opts && 'protocols' in opts ? opts.protocols : null;
    let headers = opts && 'headers' in opts ? opts.headers : null;
    let compression = opts && 'compression' in opts ? opts.compression : _http.CompressionOptions.compressionDefault;
    return _http._WebSocketImpl.connect(url, protocols, headers, {compression: compression});
  }
  static fromUpgradedSocket(socket, opts) {
    let protocol = opts && 'protocol' in opts ? opts.protocol : null;
    let serverSide = opts && 'serverSide' in opts ? opts.serverSide : null;
    let compression = opts && 'compression' in opts ? opts.compression : _http.CompressionOptions.compressionDefault;
    if (serverSide == null) {
      dart.throw(new core.ArgumentError.new("The serverSide argument must be passed " + "explicitly to WebSocket.fromUpgradedSocket."));
    }
    return new _http._WebSocketImpl._fromSocket(socket, protocol, compression, serverSide);
  }
  static get userAgent() {
    return _http._WebSocketImpl.userAgent;
  }
  static set userAgent(userAgent) {
    _http._WebSocketImpl.userAgent = userAgent;
  }
};
(_http.WebSocket.new = function() {
  this.pingInterval = null;
}).prototype = _http.WebSocket.prototype;
_http.WebSocket.prototype[dart.isStream] = true;
dart.addTypeTests(_http.WebSocket);
_http.WebSocket[dart.implements] = () => [async.Stream, async.StreamSink];
dart.setFieldSignature(_http.WebSocket, () => ({
  __proto__: dart.getFields(_http.WebSocket.__proto__),
  pingInterval: dart.fieldType(core.Duration)
}));
dart.defineLazy(_http.WebSocket, {
  /*_http.WebSocket.connecting*/get connecting() {
    return 0;
  },
  /*_http.WebSocket.open*/get open() {
    return 1;
  },
  /*_http.WebSocket.closing*/get closing() {
    return 2;
  },
  /*_http.WebSocket.closed*/get closed() {
    return 3;
  },
  /*_http.WebSocket.CONNECTING*/get CONNECTING() {
    return 0;
  },
  /*_http.WebSocket.OPEN*/get OPEN() {
    return 1;
  },
  /*_http.WebSocket.CLOSING*/get CLOSING() {
    return 2;
  },
  /*_http.WebSocket.CLOSED*/get CLOSED() {
    return 3;
  }
});
_http.WebSocketException = class WebSocketException extends core.Object {
  toString() {
    return "WebSocketException: " + dart.str(this.message);
  }
};
(_http.WebSocketException.new = function(message) {
  if (message === void 0) message = "";
  this.message = message;
}).prototype = _http.WebSocketException.prototype;
dart.addTypeTests(_http.WebSocketException);
_http.WebSocketException[dart.implements] = () => [io.IOException];
dart.setFieldSignature(_http.WebSocketException, () => ({
  __proto__: dart.getFields(_http.WebSocketException.__proto__),
  message: dart.finalFieldType(core.String)
}));
dart.defineExtensionMethods(_http.WebSocketException, ['toString']);
dart.defineLazy(_http, {
  /*_http._webSocketGUID*/get _webSocketGUID() {
    return "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
  },
  /*_http._clientNoContextTakeover*/get _clientNoContextTakeover() {
    return "client_no_context_takeover";
  },
  /*_http._serverNoContextTakeover*/get _serverNoContextTakeover() {
    return "server_no_context_takeover";
  },
  /*_http._clientMaxWindowBits*/get _clientMaxWindowBits() {
    return "client_max_window_bits";
  },
  /*_http._serverMaxWindowBits*/get _serverMaxWindowBits() {
    return "server_max_window_bits";
  }
});
_http._WebSocketMessageType = class _WebSocketMessageType extends core.Object {};
(_http._WebSocketMessageType.new = function() {
}).prototype = _http._WebSocketMessageType.prototype;
dart.addTypeTests(_http._WebSocketMessageType);
dart.defineLazy(_http._WebSocketMessageType, {
  /*_http._WebSocketMessageType.NONE*/get NONE() {
    return 0;
  },
  /*_http._WebSocketMessageType.TEXT*/get TEXT() {
    return 1;
  },
  /*_http._WebSocketMessageType.BINARY*/get BINARY() {
    return 2;
  }
});
_http._WebSocketOpcode = class _WebSocketOpcode extends core.Object {};
(_http._WebSocketOpcode.new = function() {
}).prototype = _http._WebSocketOpcode.prototype;
dart.addTypeTests(_http._WebSocketOpcode);
dart.defineLazy(_http._WebSocketOpcode, {
  /*_http._WebSocketOpcode.CONTINUATION*/get CONTINUATION() {
    return 0;
  },
  /*_http._WebSocketOpcode.TEXT*/get TEXT() {
    return 1;
  },
  /*_http._WebSocketOpcode.BINARY*/get BINARY() {
    return 2;
  },
  /*_http._WebSocketOpcode.RESERVED_3*/get RESERVED_3() {
    return 3;
  },
  /*_http._WebSocketOpcode.RESERVED_4*/get RESERVED_4() {
    return 4;
  },
  /*_http._WebSocketOpcode.RESERVED_5*/get RESERVED_5() {
    return 5;
  },
  /*_http._WebSocketOpcode.RESERVED_6*/get RESERVED_6() {
    return 6;
  },
  /*_http._WebSocketOpcode.RESERVED_7*/get RESERVED_7() {
    return 7;
  },
  /*_http._WebSocketOpcode.CLOSE*/get CLOSE() {
    return 8;
  },
  /*_http._WebSocketOpcode.PING*/get PING() {
    return 9;
  },
  /*_http._WebSocketOpcode.PONG*/get PONG() {
    return 10;
  },
  /*_http._WebSocketOpcode.RESERVED_B*/get RESERVED_B() {
    return 11;
  },
  /*_http._WebSocketOpcode.RESERVED_C*/get RESERVED_C() {
    return 12;
  },
  /*_http._WebSocketOpcode.RESERVED_D*/get RESERVED_D() {
    return 13;
  },
  /*_http._WebSocketOpcode.RESERVED_E*/get RESERVED_E() {
    return 14;
  },
  /*_http._WebSocketOpcode.RESERVED_F*/get RESERVED_F() {
    return 15;
  }
});
_http._EncodedString = class _EncodedString extends core.Object {};
(_http._EncodedString.new = function(bytes) {
  this.bytes = bytes;
}).prototype = _http._EncodedString.prototype;
dart.addTypeTests(_http._EncodedString);
dart.setFieldSignature(_http._EncodedString, () => ({
  __proto__: dart.getFields(_http._EncodedString.__proto__),
  bytes: dart.finalFieldType(ListOfint())
}));
_http._CompressionMaxWindowBits = class _CompressionMaxWindowBits extends core.Object {
  toString() {
    return this.headerValue;
  }
};
(_http._CompressionMaxWindowBits.new = function(headerValue, maxWindowBits) {
  if (headerValue === void 0) headerValue = null;
  if (maxWindowBits === void 0) maxWindowBits = null;
  this.headerValue = headerValue;
  this.maxWindowBits = maxWindowBits;
}).prototype = _http._CompressionMaxWindowBits.prototype;
dart.addTypeTests(_http._CompressionMaxWindowBits);
dart.setFieldSignature(_http._CompressionMaxWindowBits, () => ({
  __proto__: dart.getFields(_http._CompressionMaxWindowBits.__proto__),
  headerValue: dart.fieldType(core.String),
  maxWindowBits: dart.fieldType(core.int)
}));
dart.defineExtensionMethods(_http._CompressionMaxWindowBits, ['toString']);
const _serverSide = Symbol('_serverSide');
const _deflate = Symbol('_deflate');
const _fin = Symbol('_fin');
const _compressed = Symbol('_compressed');
const _opcode = Symbol('_opcode');
const _len = Symbol('_len');
const _masked = Symbol('_masked');
const _remainingLenBytes = Symbol('_remainingLenBytes');
const _remainingMaskingKeyBytes = Symbol('_remainingMaskingKeyBytes');
const _remainingPayloadBytes = Symbol('_remainingPayloadBytes');
const _unmaskingIndex = Symbol('_unmaskingIndex');
const _currentMessageType = Symbol('_currentMessageType');
const _eventSink$ = Symbol('_eventSink');
const _maskingBytes = Symbol('_maskingBytes');
const _payload = Symbol('_payload');
const _isControlFrame = Symbol('_isControlFrame');
const _lengthDone = Symbol('_lengthDone');
const _maskDone = Symbol('_maskDone');
const _unmask = Symbol('_unmask');
const _controlFrameEnd = Symbol('_controlFrameEnd');
const _messageFrameEnd = Symbol('_messageFrameEnd');
const _startPayload = Symbol('_startPayload');
const _prepareForNextFrame = Symbol('_prepareForNextFrame');
_http._WebSocketProtocolTransformer = class _WebSocketProtocolTransformer extends async.StreamTransformerBase$(core.List$(core.int), dart.dynamic) {
  bind(stream) {
    StreamOfListOfint()._check(stream);
    return async.Stream.eventTransformed(stream, dart.fn(eventSink => {
      if (this[_eventSink$] != null) {
        dart.throw(new core.StateError.new("WebSocket transformer already used."));
      }
      this[_eventSink$] = eventSink;
      return this;
    }, EventSinkTo_WebSocketProtocolTransformer()));
  }
  addError(error, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    this[_eventSink$].addError(error, stackTrace);
  }
  close() {
    this[_eventSink$].close();
  }
  add(bytes) {
    ListOfint()._check(bytes);
    let buffer = typed_data.Uint8List.is(bytes) ? bytes : typed_data.Uint8List.fromList(bytes);
    let index = 0;
    let lastIndex = buffer[$length];
    if (this[_state$1] === 5) {
      dart.throw(new _http.WebSocketException.new("Data on closed connection"));
    }
    if (this[_state$1] === 6) {
      dart.throw(new _http.WebSocketException.new("Data on failed connection"));
    }
    while (index < dart.notNull(lastIndex) && this[_state$1] !== 5 && this[_state$1] !== 6) {
      let byte = buffer[$_get](index);
      if (dart.notNull(this[_state$1]) <= 2) {
        if (this[_state$1] === 0) {
          this[_fin] = (dart.notNull(byte) & 128) !== 0;
          if ((dart.notNull(byte) & (32 | 16)) !== 0) {
            dart.throw(new _http.WebSocketException.new("Protocol error"));
          }
          this[_opcode] = dart.notNull(byte) & 15;
          if (this[_opcode] !== _http._WebSocketOpcode.CONTINUATION) {
            if ((dart.notNull(byte) & 64) !== 0) {
              this[_compressed] = true;
            } else {
              this[_compressed] = false;
            }
          }
          if (dart.notNull(this[_opcode]) <= _http._WebSocketOpcode.BINARY) {
            if (this[_opcode] === _http._WebSocketOpcode.CONTINUATION) {
              if (this[_currentMessageType] === _http._WebSocketMessageType.NONE) {
                dart.throw(new _http.WebSocketException.new("Protocol error"));
              }
            } else {
              if (!(this[_opcode] === _http._WebSocketOpcode.TEXT || this[_opcode] === _http._WebSocketOpcode.BINARY)) dart.assertFailed();
              if (this[_currentMessageType] !== _http._WebSocketMessageType.NONE) {
                dart.throw(new _http.WebSocketException.new("Protocol error"));
              }
              this[_currentMessageType] = this[_opcode];
            }
          } else if (dart.notNull(this[_opcode]) >= _http._WebSocketOpcode.CLOSE && dart.notNull(this[_opcode]) <= _http._WebSocketOpcode.PONG) {
            if (!dart.test(this[_fin])) dart.throw(new _http.WebSocketException.new("Protocol error"));
          } else {
            dart.throw(new _http.WebSocketException.new("Protocol error"));
          }
          this[_state$1] = 1;
        } else if (this[_state$1] === 1) {
          this[_masked] = (dart.notNull(byte) & 128) !== 0;
          this[_len] = dart.notNull(byte) & 127;
          if (dart.test(this[_isControlFrame]()) && dart.notNull(this[_len]) > 125) {
            dart.throw(new _http.WebSocketException.new("Protocol error"));
          }
          if (this[_len] === 126) {
            this[_len] = 0;
            this[_remainingLenBytes] = 2;
            this[_state$1] = 2;
          } else if (this[_len] === 127) {
            this[_len] = 0;
            this[_remainingLenBytes] = 8;
            this[_state$1] = 2;
          } else {
            if (!(dart.notNull(this[_len]) < 126)) dart.assertFailed();
            this[_lengthDone]();
          }
        } else {
          if (!(this[_state$1] === 2)) dart.assertFailed();
          this[_len] = (dart.notNull(this[_len]) << 8 | dart.notNull(byte)) >>> 0;
          this[_remainingLenBytes] = dart.notNull(this[_remainingLenBytes]) - 1;
          if (this[_remainingLenBytes] === 0) {
            this[_lengthDone]();
          }
        }
      } else {
        if (this[_state$1] === 3) {
          this[_maskingBytes][$_set](4 - (() => {
            let x = this[_remainingMaskingKeyBytes];
            this[_remainingMaskingKeyBytes] = dart.notNull(x) - 1;
            return x;
          })(), byte);
          if (this[_remainingMaskingKeyBytes] === 0) {
            this[_maskDone]();
          }
        } else {
          if (!(this[_state$1] === 4)) dart.assertFailed();
          let payloadLength = math.min(core.int, dart.notNull(lastIndex) - index, this[_remainingPayloadBytes]);
          this[_remainingPayloadBytes] = dart.notNull(this[_remainingPayloadBytes]) - payloadLength;
          if (dart.test(this[_masked])) {
            this[_unmask](index, payloadLength, buffer);
          }
          this[_payload].add(typed_data.Uint8List.view(buffer[$buffer], index, payloadLength));
          index = index + payloadLength;
          if (dart.test(this[_isControlFrame]())) {
            if (this[_remainingPayloadBytes] === 0) this[_controlFrameEnd]();
          } else {
            if (this[_currentMessageType] !== _http._WebSocketMessageType.TEXT && this[_currentMessageType] !== _http._WebSocketMessageType.BINARY) {
              dart.throw(new _http.WebSocketException.new("Protocol error"));
            }
            if (this[_remainingPayloadBytes] === 0) this[_messageFrameEnd]();
          }
          index--;
        }
      }
      index++;
    }
  }
  [_unmask](index, length, buffer) {
    let BLOCK_SIZE = 16;
    if (dart.notNull(length) >= BLOCK_SIZE) {
      let startOffset = BLOCK_SIZE - (dart.notNull(index) & 15);
      let end = dart.notNull(index) + startOffset;
      for (let i = index; dart.notNull(i) < end; i = dart.notNull(i) + 1) {
        buffer[$_set](i, (dart.notNull(buffer[$_get](i)) ^ dart.notNull(core.int._check(this[_maskingBytes][$_get]((() => {
          let x = this[_unmaskingIndex];
          this[_unmaskingIndex] = dart.notNull(x) + 1;
          return x;
        })() & 3)))) >>> 0);
      }
      index = dart.notNull(index) + startOffset;
      length = dart.notNull(length) - startOffset;
      let blockCount = (dart.notNull(length) / BLOCK_SIZE)[$truncate]();
      if (blockCount > 0) {
        let mask = 0;
        for (let i = 3; i >= 0; i--) {
          mask = (mask << 8 | dart.notNull(core.int._check(this[_maskingBytes][$_get](dart.notNull(this[_unmaskingIndex]) + i & 3)))) >>> 0;
        }
        let blockMask = typed_data.Int32x4.new(mask, mask, mask, mask);
        let blockBuffer = typed_data.Int32x4List.view(buffer[$buffer], index, blockCount);
        for (let i = 0; i < dart.notNull(blockBuffer.length); i++) {
          blockBuffer._set(i, blockBuffer._get(i)['^'](blockMask));
        }
        let bytes = blockCount * BLOCK_SIZE;
        index = dart.notNull(index) + bytes;
        length = dart.notNull(length) - bytes;
      }
    }
    let end = dart.notNull(index) + dart.notNull(length);
    for (let i = index; dart.notNull(i) < end; i = dart.notNull(i) + 1) {
      buffer[$_set](i, (dart.notNull(buffer[$_get](i)) ^ dart.notNull(core.int._check(this[_maskingBytes][$_get]((() => {
        let x = this[_unmaskingIndex];
        this[_unmaskingIndex] = dart.notNull(x) + 1;
        return x;
      })() & 3)))) >>> 0);
    }
  }
  [_lengthDone]() {
    if (dart.test(this[_masked])) {
      if (!dart.test(this[_serverSide])) {
        dart.throw(new _http.WebSocketException.new("Received masked frame from server"));
      }
      this[_state$1] = 3;
    } else {
      if (dart.test(this[_serverSide])) {
        dart.throw(new _http.WebSocketException.new("Received unmasked frame from client"));
      }
      this[_remainingPayloadBytes] = this[_len];
      this[_startPayload]();
    }
  }
  [_maskDone]() {
    this[_remainingPayloadBytes] = this[_len];
    this[_startPayload]();
  }
  [_startPayload]() {
    if (this[_remainingPayloadBytes] === 0) {
      if (dart.test(this[_isControlFrame]())) {
        switch (this[_opcode]) {
          case _http._WebSocketOpcode.CLOSE:
          {
            this[_state$1] = 5;
            this[_eventSink$].close();
            break;
          }
          case _http._WebSocketOpcode.PING:
          {
            this[_eventSink$].add(new _http._WebSocketPing.new());
            break;
          }
          case _http._WebSocketOpcode.PONG:
          {
            this[_eventSink$].add(new _http._WebSocketPong.new());
            break;
          }
        }
        this[_prepareForNextFrame]();
      } else {
        this[_messageFrameEnd]();
      }
    } else {
      this[_state$1] = 4;
    }
  }
  [_messageFrameEnd]() {
    if (dart.test(this[_fin])) {
      let bytes = this[_payload].takeBytes();
      if (this[_deflate] != null && dart.test(this[_compressed])) {
        bytes = this[_deflate].processIncomingMessage(bytes);
      }
      switch (this[_currentMessageType]) {
        case _http._WebSocketMessageType.TEXT:
        {
          this[_eventSink$].add(convert.utf8.decode(bytes));
          break;
        }
        case _http._WebSocketMessageType.BINARY:
        {
          this[_eventSink$].add(bytes);
          break;
        }
      }
      this[_currentMessageType] = _http._WebSocketMessageType.NONE;
    }
    this[_prepareForNextFrame]();
  }
  [_controlFrameEnd]() {
    switch (this[_opcode]) {
      case _http._WebSocketOpcode.CLOSE:
      {
        this.closeCode = _http.WebSocketStatus.NO_STATUS_RECEIVED;
        let payload = this[_payload].takeBytes();
        if (dart.notNull(payload[$length]) > 0) {
          if (payload[$length] === 1) {
            dart.throw(new _http.WebSocketException.new("Protocol error"));
          }
          this.closeCode = (dart.notNull(payload[$_get](0)) << 8 | dart.notNull(payload[$_get](1))) >>> 0;
          if (this.closeCode === _http.WebSocketStatus.NO_STATUS_RECEIVED) {
            dart.throw(new _http.WebSocketException.new("Protocol error"));
          }
          if (dart.notNull(payload[$length]) > 2) {
            this.closeReason = convert.utf8.decode(payload[$sublist](2));
          }
        }
        this[_state$1] = 5;
        this[_eventSink$].close();
        break;
      }
      case _http._WebSocketOpcode.PING:
      {
        this[_eventSink$].add(new _http._WebSocketPing.new(this[_payload].takeBytes()));
        break;
      }
      case _http._WebSocketOpcode.PONG:
      {
        this[_eventSink$].add(new _http._WebSocketPong.new(this[_payload].takeBytes()));
        break;
      }
    }
    this[_prepareForNextFrame]();
  }
  [_isControlFrame]() {
    return this[_opcode] === _http._WebSocketOpcode.CLOSE || this[_opcode] === _http._WebSocketOpcode.PING || this[_opcode] === _http._WebSocketOpcode.PONG;
  }
  [_prepareForNextFrame]() {
    if (this[_state$1] !== 5 && this[_state$1] !== 6) this[_state$1] = 0;
    this[_fin] = false;
    this[_opcode] = -1;
    this[_len] = -1;
    this[_remainingLenBytes] = -1;
    this[_remainingMaskingKeyBytes] = 4;
    this[_remainingPayloadBytes] = -1;
    this[_unmaskingIndex] = 0;
  }
};
(_http._WebSocketProtocolTransformer.new = function(serverSide, deflate) {
  if (serverSide === void 0) serverSide = false;
  if (deflate === void 0) deflate = null;
  this[_state$1] = 0;
  this[_fin] = false;
  this[_compressed] = false;
  this[_opcode] = -1;
  this[_len] = -1;
  this[_masked] = false;
  this[_remainingLenBytes] = -1;
  this[_remainingMaskingKeyBytes] = 4;
  this[_remainingPayloadBytes] = -1;
  this[_unmaskingIndex] = 0;
  this[_currentMessageType] = _http._WebSocketMessageType.NONE;
  this.closeCode = _http.WebSocketStatus.NO_STATUS_RECEIVED;
  this.closeReason = "";
  this[_eventSink$] = null;
  this[_maskingBytes] = core.List.new(4);
  this[_payload] = io.BytesBuilder.new({copy: false});
  this[_serverSide] = serverSide;
  this[_deflate] = deflate;
  _http._WebSocketProtocolTransformer.__proto__.new.call(this);
}).prototype = _http._WebSocketProtocolTransformer.prototype;
dart.addTypeTests(_http._WebSocketProtocolTransformer);
_http._WebSocketProtocolTransformer[dart.implements] = () => [EventSinkOfListOfint()];
dart.setMethodSignature(_http._WebSocketProtocolTransformer, () => ({
  __proto__: dart.getMethods(_http._WebSocketProtocolTransformer.__proto__),
  bind: dart.fnType(async.Stream, [core.Object]),
  addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
  close: dart.fnType(dart.void, []),
  add: dart.fnType(dart.void, [core.Object]),
  [_unmask]: dart.fnType(dart.void, [core.int, core.int, typed_data.Uint8List]),
  [_lengthDone]: dart.fnType(dart.void, []),
  [_maskDone]: dart.fnType(dart.void, []),
  [_startPayload]: dart.fnType(dart.void, []),
  [_messageFrameEnd]: dart.fnType(dart.void, []),
  [_controlFrameEnd]: dart.fnType(dart.void, []),
  [_isControlFrame]: dart.fnType(core.bool, []),
  [_prepareForNextFrame]: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(_http._WebSocketProtocolTransformer, () => ({
  __proto__: dart.getFields(_http._WebSocketProtocolTransformer.__proto__),
  [_state$1]: dart.fieldType(core.int),
  [_fin]: dart.fieldType(core.bool),
  [_compressed]: dart.fieldType(core.bool),
  [_opcode]: dart.fieldType(core.int),
  [_len]: dart.fieldType(core.int),
  [_masked]: dart.fieldType(core.bool),
  [_remainingLenBytes]: dart.fieldType(core.int),
  [_remainingMaskingKeyBytes]: dart.fieldType(core.int),
  [_remainingPayloadBytes]: dart.fieldType(core.int),
  [_unmaskingIndex]: dart.fieldType(core.int),
  [_currentMessageType]: dart.fieldType(core.int),
  closeCode: dart.fieldType(core.int),
  closeReason: dart.fieldType(core.String),
  [_eventSink$]: dart.fieldType(async.EventSink),
  [_serverSide]: dart.finalFieldType(core.bool),
  [_maskingBytes]: dart.finalFieldType(core.List),
  [_payload]: dart.finalFieldType(io.BytesBuilder),
  [_deflate]: dart.fieldType(_http._WebSocketPerMessageDeflate)
}));
dart.defineLazy(_http._WebSocketProtocolTransformer, {
  /*_http._WebSocketProtocolTransformer.START*/get START() {
    return 0;
  },
  /*_http._WebSocketProtocolTransformer.LEN_FIRST*/get LEN_FIRST() {
    return 1;
  },
  /*_http._WebSocketProtocolTransformer.LEN_REST*/get LEN_REST() {
    return 2;
  },
  /*_http._WebSocketProtocolTransformer.MASK*/get MASK() {
    return 3;
  },
  /*_http._WebSocketProtocolTransformer.PAYLOAD*/get PAYLOAD() {
    return 4;
  },
  /*_http._WebSocketProtocolTransformer.CLOSED*/get CLOSED() {
    return 5;
  },
  /*_http._WebSocketProtocolTransformer.FAILURE*/get FAILURE() {
    return 6;
  },
  /*_http._WebSocketProtocolTransformer.FIN*/get FIN() {
    return 128;
  },
  /*_http._WebSocketProtocolTransformer.RSV1*/get RSV1() {
    return 64;
  },
  /*_http._WebSocketProtocolTransformer.RSV2*/get RSV2() {
    return 32;
  },
  /*_http._WebSocketProtocolTransformer.RSV3*/get RSV3() {
    return 16;
  },
  /*_http._WebSocketProtocolTransformer.OPCODE*/get OPCODE() {
    return 15;
  }
});
_http._WebSocketPing = class _WebSocketPing extends core.Object {};
(_http._WebSocketPing.new = function(payload) {
  if (payload === void 0) payload = null;
  this.payload = payload;
}).prototype = _http._WebSocketPing.prototype;
dart.addTypeTests(_http._WebSocketPing);
dart.setFieldSignature(_http._WebSocketPing, () => ({
  __proto__: dart.getFields(_http._WebSocketPing.__proto__),
  payload: dart.finalFieldType(ListOfint())
}));
_http._WebSocketPong = class _WebSocketPong extends core.Object {};
(_http._WebSocketPong.new = function(payload) {
  if (payload === void 0) payload = null;
  this.payload = payload;
}).prototype = _http._WebSocketPong.prototype;
dart.addTypeTests(_http._WebSocketPong);
dart.setFieldSignature(_http._WebSocketPong, () => ({
  __proto__: dart.getFields(_http._WebSocketPong.__proto__),
  payload: dart.finalFieldType(ListOfint())
}));
const _protocolSelector = Symbol('_protocolSelector');
const _compression = Symbol('_compression');
_http._WebSocketTransformerImpl = class _WebSocketTransformerImpl extends async.StreamTransformerBase$(_http.HttpRequest, _http.WebSocket) {
  bind(stream) {
    StreamOfHttpRequest()._check(stream);
    stream.listen(dart.fn(request => {
      _http._WebSocketTransformerImpl._upgrade(request, this[_protocolSelector], this[_compression]).then(dart.void, dart.fn(webSocket => this[_controller$1].add(webSocket), WebSocketTovoid())).catchError(dart.bind(this[_controller$1], 'addError'));
    }, HttpRequestToNull()), {onDone: dart.fn(() => {
        this[_controller$1].close();
      }, VoidToNull())});
    return this[_controller$1].stream;
  }
  static _tokenizeFieldValue(headerValue) {
    let tokens = JSArrayOfString().of([]);
    let start = 0;
    let index = 0;
    while (index < headerValue.length) {
      if (headerValue[$_get](index) === ",") {
        tokens[$add](headerValue[$substring](start, index));
        start = index + 1;
      } else if (headerValue[$_get](index) === " " || headerValue[$_get](index) === "\t") {
        start++;
      }
      index++;
    }
    tokens[$add](headerValue[$substring](start, index));
    return tokens;
  }
  static _upgrade(request, _protocolSelector, compression) {
    let response = request.response;
    if (!dart.test(_http._WebSocketTransformerImpl._isUpgradeRequest(request))) {
      response.statusCode = _internal.HttpStatus.badRequest;
      response.close();
      return FutureOfWebSocket().error(new _http.WebSocketException.new("Invalid WebSocket upgrade request"));
    }
    function upgrade(protocol) {
      response.statusCode = _internal.HttpStatus.switchingProtocols;
      response.headers.add(_http.HttpHeaders.connectionHeader, "Upgrade");
      response.headers.add(_http.HttpHeaders.upgradeHeader, "websocket");
      let key = request.headers.value("Sec-WebSocket-Key");
      let sha1 = new _http._SHA1.new();
      sha1.add((dart.str(key) + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11")[$codeUnits]);
      let accept = _http._CryptoUtils.bytesToBase64(sha1.close());
      response.headers.add("Sec-WebSocket-Accept", accept);
      if (protocol != null) {
        response.headers.add("Sec-WebSocket-Protocol", protocol);
      }
      let deflate = _http._WebSocketTransformerImpl._negotiateCompression(request, response, compression);
      response.headers.contentLength = 0;
      return FutureOfWebSocket()._check(response.detachSocket().then(_http.WebSocket, dart.fn(socket => new _http._WebSocketImpl._fromSocket(socket, protocol, compression, true, deflate), SocketTo_WebSocketImpl())));
    }
    dart.fn(upgrade, StringToFutureOfWebSocket());
    let protocols = request.headers._get("Sec-WebSocket-Protocol");
    if (protocols != null && _protocolSelector != null) {
      protocols = _http._WebSocketTransformerImpl._tokenizeFieldValue(protocols[$join](", "));
      return FutureOfWebSocket()._check(FutureOfString()._check(FutureOfString().new(dart.fn(() => FutureOrOfString()._check(_protocolSelector(protocols)), VoidToFutureOrOfString())).then(core.String, dart.fn(protocol => {
        if (dart.notNull(protocols[$indexOf](protocol)) < 0) {
          dart.throw(new _http.WebSocketException.new("Selected protocol is not in the list of available protocols"));
        }
        return protocol;
      }, StringToString()))).catchError(dart.fn(error => {
        response.statusCode = _internal.HttpStatus.internalServerError;
        response.close();
        dart.throw(error);
      }, dynamicToNull())).then(_http.WebSocket, upgrade));
    } else {
      return upgrade(null);
    }
  }
  static _negotiateCompression(request, response, compression) {
    let extensionHeader = request.headers.value("Sec-WebSocket-Extensions");
    let t = extensionHeader;
    t == null ? extensionHeader = "" : t;
    let hv = _http.HeaderValue.parse(extensionHeader, {valueSeparator: ","});
    if (dart.test(compression.enabled) && hv.value === _http._WebSocketImpl.PER_MESSAGE_DEFLATE) {
      let info = compression[_createHeader](hv);
      response.headers.add("Sec-WebSocket-Extensions", info.headerValue);
      let serverNoContextTakeover = dart.test(hv.parameters[$containsKey]("server_no_context_takeover")) && dart.test(compression.serverNoContextTakeover);
      let clientNoContextTakeover = dart.test(hv.parameters[$containsKey]("client_no_context_takeover")) && dart.test(compression.clientNoContextTakeover);
      let deflate = new _http._WebSocketPerMessageDeflate.new({serverNoContextTakeover: serverNoContextTakeover, clientNoContextTakeover: clientNoContextTakeover, serverMaxWindowBits: info.maxWindowBits, clientMaxWindowBits: info.maxWindowBits, serverSide: true});
      return deflate;
    }
    return null;
  }
  static _isUpgradeRequest(request) {
    if (request.method !== "GET") {
      return false;
    }
    if (request.headers._get(_http.HttpHeaders.connectionHeader) == null) {
      return false;
    }
    let isUpgrade = false;
    request.headers._get(_http.HttpHeaders.connectionHeader)[$forEach](dart.fn(value => {
      if (value[$toLowerCase]() === "upgrade") isUpgrade = true;
    }, StringToNull()));
    if (!isUpgrade) return false;
    let upgrade = request.headers.value(_http.HttpHeaders.upgradeHeader);
    if (upgrade == null || upgrade[$toLowerCase]() !== "websocket") {
      return false;
    }
    let version = request.headers.value("Sec-WebSocket-Version");
    if (version == null || version !== "13") {
      return false;
    }
    let key = request.headers.value("Sec-WebSocket-Key");
    if (key == null) {
      return false;
    }
    return true;
  }
};
(_http._WebSocketTransformerImpl.new = function(protocolSelector, compression) {
  this[_controller$1] = StreamControllerOfWebSocket().new({sync: true});
  this[_protocolSelector] = protocolSelector;
  this[_compression] = compression;
  _http._WebSocketTransformerImpl.__proto__.new.call(this);
}).prototype = _http._WebSocketTransformerImpl.prototype;
dart.addTypeTests(_http._WebSocketTransformerImpl);
_http._WebSocketTransformerImpl[dart.implements] = () => [_http.WebSocketTransformer];
dart.setMethodSignature(_http._WebSocketTransformerImpl, () => ({
  __proto__: dart.getMethods(_http._WebSocketTransformerImpl.__proto__),
  bind: dart.fnType(async.Stream$(_http.WebSocket), [core.Object])
}));
dart.setFieldSignature(_http._WebSocketTransformerImpl, () => ({
  __proto__: dart.getFields(_http._WebSocketTransformerImpl.__proto__),
  [_controller$1]: dart.finalFieldType(StreamControllerOfWebSocket()),
  [_protocolSelector]: dart.finalFieldType(ListOfStringTodynamic()),
  [_compression]: dart.finalFieldType(_http.CompressionOptions)
}));
const _ensureDecoder = Symbol('_ensureDecoder');
const _ensureEncoder = Symbol('_ensureEncoder');
let const$97;
_http._WebSocketPerMessageDeflate = class _WebSocketPerMessageDeflate extends core.Object {
  [_ensureDecoder]() {
    if (this.decoder == null) {
      this.decoder = io.RawZLibFilter.inflateFilter({windowBits: dart.test(this.serverSide) ? this.clientMaxWindowBits : this.serverMaxWindowBits, raw: true});
    }
  }
  [_ensureEncoder]() {
    if (this.encoder == null) {
      this.encoder = io.RawZLibFilter.deflateFilter({windowBits: dart.test(this.serverSide) ? this.serverMaxWindowBits : this.clientMaxWindowBits, raw: true});
    }
  }
  processIncomingMessage(msg) {
    this[_ensureDecoder]();
    let data = JSArrayOfint().of([]);
    data[$addAll](msg);
    data[$addAll](const$97 || (const$97 = dart.constList([0, 0, 255, 255], core.int)));
    this.decoder.process(data, 0, data[$length]);
    let result = JSArrayOfint().of([]);
    let out = null;
    while ((out = this.decoder.processed()) != null) {
      result[$addAll](out);
    }
    if (dart.test(this.serverSide) && dart.test(this.clientNoContextTakeover) || !dart.test(this.serverSide) && dart.test(this.serverNoContextTakeover)) {
      this.decoder = null;
    }
    return typed_data.Uint8List.fromList(result);
  }
  processOutgoingMessage(msg) {
    this[_ensureEncoder]();
    let result = JSArrayOfint().of([]);
    let buffer = null;
    if (!typed_data.Uint8List.is(msg)) {
      for (let i = 0; i < dart.notNull(msg[$length]); i++) {
        if (dart.notNull(msg[$_get](i)) < 0 || 255 < dart.notNull(msg[$_get](i))) {
          dart.throw(new core.ArgumentError.new("List element is not a byte value " + ("(value " + dart.str(msg[$_get](i)) + " at index " + dart.str(i) + ")")));
        }
      }
      buffer = typed_data.Uint8List.fromList(msg);
    } else {
      buffer = typed_data.Uint8List._check(msg);
    }
    this.encoder.process(buffer, 0, buffer[$length]);
    let out = null;
    while ((out = this.encoder.processed()) != null) {
      result[$addAll](out);
    }
    if (!dart.test(this.serverSide) && dart.test(this.clientNoContextTakeover) || dart.test(this.serverSide) && dart.test(this.serverNoContextTakeover)) {
      this.encoder = null;
    }
    if (dart.notNull(result[$length]) > 4) {
      result = result[$sublist](0, dart.notNull(result[$length]) - 4);
    }
    if (result[$length] === 0) {
      return JSArrayOfint().of([0]);
    }
    return result;
  }
};
(_http._WebSocketPerMessageDeflate.new = function(opts) {
  let clientMaxWindowBits = opts && 'clientMaxWindowBits' in opts ? opts.clientMaxWindowBits : _http._WebSocketImpl.DEFAULT_WINDOW_BITS;
  let serverMaxWindowBits = opts && 'serverMaxWindowBits' in opts ? opts.serverMaxWindowBits : _http._WebSocketImpl.DEFAULT_WINDOW_BITS;
  let serverNoContextTakeover = opts && 'serverNoContextTakeover' in opts ? opts.serverNoContextTakeover : false;
  let clientNoContextTakeover = opts && 'clientNoContextTakeover' in opts ? opts.clientNoContextTakeover : false;
  let serverSide = opts && 'serverSide' in opts ? opts.serverSide : false;
  this.decoder = null;
  this.encoder = null;
  this.clientMaxWindowBits = clientMaxWindowBits;
  this.serverMaxWindowBits = serverMaxWindowBits;
  this.serverNoContextTakeover = serverNoContextTakeover;
  this.clientNoContextTakeover = clientNoContextTakeover;
  this.serverSide = serverSide;
}).prototype = _http._WebSocketPerMessageDeflate.prototype;
dart.addTypeTests(_http._WebSocketPerMessageDeflate);
dart.setMethodSignature(_http._WebSocketPerMessageDeflate, () => ({
  __proto__: dart.getMethods(_http._WebSocketPerMessageDeflate.__proto__),
  [_ensureDecoder]: dart.fnType(dart.void, []),
  [_ensureEncoder]: dart.fnType(dart.void, []),
  processIncomingMessage: dart.fnType(typed_data.Uint8List, [core.List$(core.int)]),
  processOutgoingMessage: dart.fnType(core.List$(core.int), [core.List$(core.int)])
}));
dart.setFieldSignature(_http._WebSocketPerMessageDeflate, () => ({
  __proto__: dart.getFields(_http._WebSocketPerMessageDeflate.__proto__),
  serverNoContextTakeover: dart.fieldType(core.bool),
  clientNoContextTakeover: dart.fieldType(core.bool),
  clientMaxWindowBits: dart.fieldType(core.int),
  serverMaxWindowBits: dart.fieldType(core.int),
  serverSide: dart.fieldType(core.bool),
  decoder: dart.fieldType(io.RawZLibFilter),
  encoder: dart.fieldType(io.RawZLibFilter)
}));
const _deflateHelper = Symbol('_deflateHelper');
const _outCloseCode = Symbol('_outCloseCode');
const _outCloseReason = Symbol('_outCloseReason');
_http._WebSocketOutgoingTransformer = class _WebSocketOutgoingTransformer extends async.StreamTransformerBase$(dart.dynamic, core.List$(core.int)) {
  bind(stream) {
    return StreamOfListOfint().eventTransformed(stream, dart.fn(eventSink => {
      if (this[_eventSink$] != null) {
        dart.throw(new core.StateError.new("WebSocket transformer already used"));
      }
      this[_eventSink$] = eventSink;
      return this;
    }, EventSinkOfListOfintTo_WebSocketOutgoingTransformer()));
  }
  add(message) {
    if (_http._WebSocketPong.is(message)) {
      this.addFrame(_http._WebSocketOpcode.PONG, message.payload);
      return;
    }
    if (_http._WebSocketPing.is(message)) {
      this.addFrame(_http._WebSocketOpcode.PING, message.payload);
      return;
    }
    let data = null;
    let opcode = null;
    if (message != null) {
      if (typeof message == 'string') {
        opcode = _http._WebSocketOpcode.TEXT;
        data = convert.utf8.encode(message);
      } else if (ListOfint().is(message)) {
        opcode = _http._WebSocketOpcode.BINARY;
        data = message;
      } else if (_http._EncodedString.is(message)) {
        opcode = _http._WebSocketOpcode.TEXT;
        data = message.bytes;
      } else {
        dart.throw(new core.ArgumentError.new(message));
      }
      if (this[_deflateHelper] != null) {
        data = this[_deflateHelper].processOutgoingMessage(data);
      }
    } else {
      opcode = _http._WebSocketOpcode.TEXT;
    }
    this.addFrame(opcode, data);
  }
  addError(error, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    this[_eventSink$].addError(error, stackTrace);
  }
  close() {
    let code = this.webSocket[_outCloseCode];
    let reason = this.webSocket[_outCloseReason];
    let data = null;
    if (code != null) {
      data = JSArrayOfint().of([]);
      data[$add](dart.notNull(code) >> 8 & 255);
      data[$add](dart.notNull(code) & 255);
      if (reason != null) {
        data[$addAll](convert.utf8.encode(reason));
      }
    }
    this.addFrame(_http._WebSocketOpcode.CLOSE, data);
    this[_eventSink$].close();
  }
  addFrame(opcode, data) {
    _http._WebSocketOutgoingTransformer.createFrame(opcode, data, this.webSocket[_serverSide], this[_deflateHelper] != null && (opcode === _http._WebSocketOpcode.TEXT || opcode === _http._WebSocketOpcode.BINARY))[$forEach](dart.fn(e => {
      this[_eventSink$].add(e);
    }, ListOfintToNull()));
  }
  static createFrame(opcode, data, serverSide, compressed) {
    let mask = !dart.test(serverSide);
    let dataLength = data == null ? 0 : data[$length];
    let headerSize = mask ? 6 : 2;
    if (dart.notNull(dataLength) > 65535) {
      headerSize = headerSize + 8;
    } else if (dart.notNull(dataLength) > 125) {
      headerSize = headerSize + 2;
    }
    let header = typed_data.Uint8List.new(headerSize);
    let index = 0;
    let hoc = (_http._WebSocketProtocolTransformer.FIN | (dart.test(compressed) ? _http._WebSocketProtocolTransformer.RSV1 : 0) | dart.notNull(opcode) & _http._WebSocketProtocolTransformer.OPCODE) >>> 0;
    header[$_set](index++, hoc);
    let lengthBytes = 1;
    if (dart.notNull(dataLength) > 65535) {
      header[$_set](index++, 127);
      lengthBytes = 8;
    } else if (dart.notNull(dataLength) > 125) {
      header[$_set](index++, 126);
      lengthBytes = 2;
    }
    for (let i = 0; i < lengthBytes; i++) {
      header[$_set](index++, dataLength[$rightShift]((lengthBytes - 1 - i) * 8) & 255);
    }
    if (mask) {
      let i$ = 1;
      header[$_set](i$, (dart.notNull(header[$_get](i$)) | 1 << 7) >>> 0);
      let maskBytes = _http._CryptoUtils.getRandomBytes(4);
      header[$setRange](index, index + 4, maskBytes);
      index = index + 4;
      if (data != null) {
        let list = null;
        if (opcode === _http._WebSocketOpcode.TEXT && typed_data.Uint8List.is(data)) {
          list = data;
        } else {
          if (typed_data.Uint8List.is(data)) {
            list = typed_data.Uint8List.fromList(data);
          } else {
            list = typed_data.Uint8List.new(data[$length]);
            for (let i = 0; i < dart.notNull(data[$length]); i++) {
              if (dart.notNull(data[$_get](i)) < 0 || 255 < dart.notNull(data[$_get](i))) {
                dart.throw(new core.ArgumentError.new("List element is not a byte value " + ("(value " + dart.str(data[$_get](i)) + " at index " + dart.str(i) + ")")));
              }
              list[$_set](i, data[$_get](i));
            }
          }
        }
        let BLOCK_SIZE = 16;
        let blockCount = (dart.notNull(list[$length]) / BLOCK_SIZE)[$truncate]();
        if (blockCount > 0) {
          let mask = 0;
          for (let i = 3; i >= 0; i--) {
            mask = (mask << 8 | dart.notNull(maskBytes[$_get](i))) >>> 0;
          }
          let blockMask = typed_data.Int32x4.new(mask, mask, mask, mask);
          let blockBuffer = typed_data.Int32x4List.view(list[$buffer], 0, blockCount);
          for (let i = 0; i < dart.notNull(blockBuffer.length); i++) {
            blockBuffer._set(i, blockBuffer._get(i)['^'](blockMask));
          }
        }
        for (let i = blockCount * BLOCK_SIZE; i < dart.notNull(list[$length]); i++) {
          list[$_set](i, (dart.notNull(list[$_get](i)) ^ dart.notNull(maskBytes[$_get](i & 3))) >>> 0);
        }
        data = list;
      }
    }
    if (!(index === headerSize)) dart.assertFailed();
    if (data == null) {
      return JSArrayOfListOfint().of([header]);
    } else {
      return JSArrayOfListOfint().of([header, data]);
    }
  }
};
(_http._WebSocketOutgoingTransformer.new = function(webSocket) {
  this[_eventSink$] = null;
  this[_deflateHelper] = null;
  this.webSocket = webSocket;
  _http._WebSocketOutgoingTransformer.__proto__.new.call(this);
  this[_deflateHelper] = this.webSocket[_deflate];
}).prototype = _http._WebSocketOutgoingTransformer.prototype;
dart.addTypeTests(_http._WebSocketOutgoingTransformer);
_http._WebSocketOutgoingTransformer[dart.implements] = () => [async.EventSink];
dart.setMethodSignature(_http._WebSocketOutgoingTransformer, () => ({
  __proto__: dart.getMethods(_http._WebSocketOutgoingTransformer.__proto__),
  bind: dart.fnType(async.Stream$(core.List$(core.int)), [async.Stream]),
  add: dart.fnType(dart.void, [dart.dynamic]),
  addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
  close: dart.fnType(dart.void, []),
  addFrame: dart.fnType(dart.void, [core.int, core.List$(core.int)])
}));
dart.setFieldSignature(_http._WebSocketOutgoingTransformer, () => ({
  __proto__: dart.getFields(_http._WebSocketOutgoingTransformer.__proto__),
  webSocket: dart.finalFieldType(_http._WebSocketImpl),
  [_eventSink$]: dart.fieldType(EventSinkOfListOfint()),
  [_deflateHelper]: dart.fieldType(_http._WebSocketPerMessageDeflate)
}));
const _issuedPause = Symbol('_issuedPause');
const _closed$ = Symbol('_closed');
const _closeCompleter$ = Symbol('_closeCompleter');
const _completer = Symbol('_completer');
const _onListen$ = Symbol('_onListen');
const _onPause$ = Symbol('_onPause');
const _onResume$ = Symbol('_onResume');
const _cancel$ = Symbol('_cancel');
const _done = Symbol('_done');
const _ensureController = Symbol('_ensureController');
_http._WebSocketConsumer = class _WebSocketConsumer extends core.Object {
  [_onListen$]() {
    if (this[_subscription$0] != null) {
      this[_subscription$0].cancel();
    }
  }
  [_onPause$]() {
    if (this[_subscription$0] != null) {
      this[_subscription$0].pause();
    } else {
      this[_issuedPause] = true;
    }
  }
  [_onResume$]() {
    if (this[_subscription$0] != null) {
      this[_subscription$0].resume();
    } else {
      this[_issuedPause] = false;
    }
  }
  [_cancel$]() {
    if (this[_subscription$0] != null) {
      let subscription = this[_subscription$0];
      this[_subscription$0] = null;
      subscription.cancel();
    }
  }
  [_ensureController]() {
    if (this[_controller$1] != null) return;
    this[_controller$1] = async.StreamController.new({sync: true, onPause: dart.bind(this, _onPause$), onResume: dart.bind(this, _onResume$), onCancel: dart.bind(this, _onListen$)});
    let stream = StreamOfListOfint()._check(this[_controller$1].stream.transform(ListOfint(), new _http._WebSocketOutgoingTransformer.new(this.webSocket)));
    FutureOfNull()._check(this.socket.addStream(stream).then(core.Null, dart.fn(_ => {
      this[_done]();
      this[_closeCompleter$].complete(this.webSocket);
    }, dynamicToNull()), {onError: dart.fn((error, stackTrace) => {
        this[_closed$] = true;
        this[_cancel$]();
        if (core.ArgumentError.is(error)) {
          if (!dart.test(this[_done](error, stackTrace))) {
            this[_closeCompleter$].completeError(error, stackTrace);
          }
        } else {
          this[_done]();
          this[_closeCompleter$].complete(this.webSocket);
        }
      }, dynamicAndStackTraceToNull())}));
  }
  [_done](error, stackTrace) {
    if (error === void 0) error = null;
    if (stackTrace === void 0) stackTrace = null;
    if (this[_completer] == null) return false;
    if (error != null) {
      this[_completer].completeError(error, stackTrace);
    } else {
      this[_completer].complete(this.webSocket);
    }
    this[_completer] = null;
    return true;
  }
  addStream(stream) {
    if (dart.test(this[_closed$])) {
      stream.listen(null).cancel();
      return async.Future.value(this.webSocket);
    }
    this[_ensureController]();
    this[_completer] = async.Completer.new();
    this[_subscription$0] = stream.listen(dart.fn(data => {
      this[_controller$1].add(data);
    }, dynamicToNull()), {onDone: dart.bind(this, _done), onError: dart.bind(this, _done), cancelOnError: true});
    if (dart.test(this[_issuedPause])) {
      this[_subscription$0].pause();
      this[_issuedPause] = false;
    }
    return this[_completer].future;
  }
  close() {
    this[_ensureController]();
    const closeSocket = (function() {
      return this.socket.close().catchError(dart.fn(_ => {
      }, dynamicToNull())).then(dart.dynamic, dart.fn(_ => this.webSocket, dynamicTo_WebSocketImpl()));
    }).bind(this);
    dart.fn(closeSocket, VoidToFuture());
    this[_controller$1].close();
    return this[_closeCompleter$].future.then(dart.dynamic, dart.fn(_ => closeSocket(), dynamicToFuture()));
  }
  add(data) {
    if (dart.test(this[_closed$])) return;
    this[_ensureController]();
    this[_controller$1].add(data);
  }
  closeSocket() {
    this[_closed$] = true;
    this[_cancel$]();
    this.close();
  }
};
(_http._WebSocketConsumer.new = function(webSocket, socket) {
  this[_controller$1] = null;
  this[_subscription$0] = null;
  this[_issuedPause] = false;
  this[_closed$] = false;
  this[_closeCompleter$] = CompleterOfWebSocket().new();
  this[_completer] = null;
  this.webSocket = webSocket;
  this.socket = socket;
}).prototype = _http._WebSocketConsumer.prototype;
dart.addTypeTests(_http._WebSocketConsumer);
_http._WebSocketConsumer[dart.implements] = () => [async.StreamConsumer];
dart.setMethodSignature(_http._WebSocketConsumer, () => ({
  __proto__: dart.getMethods(_http._WebSocketConsumer.__proto__),
  [_onListen$]: dart.fnType(dart.void, []),
  [_onPause$]: dart.fnType(dart.void, []),
  [_onResume$]: dart.fnType(dart.void, []),
  [_cancel$]: dart.fnType(dart.void, []),
  [_ensureController]: dart.fnType(dart.dynamic, []),
  [_done]: dart.fnType(core.bool, [], [dart.dynamic, core.StackTrace]),
  addStream: dart.fnType(async.Future, [async.Stream]),
  close: dart.fnType(async.Future, []),
  add: dart.fnType(dart.void, [dart.dynamic]),
  closeSocket: dart.fnType(dart.void, [])
}));
dart.setFieldSignature(_http._WebSocketConsumer, () => ({
  __proto__: dart.getFields(_http._WebSocketConsumer.__proto__),
  webSocket: dart.finalFieldType(_http._WebSocketImpl),
  socket: dart.finalFieldType(io.Socket),
  [_controller$1]: dart.fieldType(async.StreamController),
  [_subscription$0]: dart.fieldType(async.StreamSubscription),
  [_issuedPause]: dart.fieldType(core.bool),
  [_closed$]: dart.fieldType(core.bool),
  [_closeCompleter$]: dart.fieldType(async.Completer),
  [_completer]: dart.fieldType(async.Completer)
}));
const _sink$1 = Symbol('_sink');
const _readyState = Symbol('_readyState');
const _writeClosed = Symbol('_writeClosed');
const _closeCode = Symbol('_closeCode');
const _closeReason = Symbol('_closeReason');
const _pingInterval = Symbol('_pingInterval');
const _pingTimer = Symbol('_pingTimer');
const _consumer = Symbol('_consumer');
const _closeTimer = Symbol('_closeTimer');
const _close$0 = Symbol('_close');
let const$98;
const Stream__ServiceObject$$ = class Stream__ServiceObject extends async.Stream {};
(Stream__ServiceObject$$.new = function() {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$$.__proto__.new.call(this);
}).prototype = Stream__ServiceObject$$.prototype;
(Stream__ServiceObject$$._internal = function() {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$$.__proto__._internal.call(this);
}).prototype = Stream__ServiceObject$$.prototype;
(Stream__ServiceObject$$.empty = function() {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$$.__proto__.empty.call(this);
}).prototype = Stream__ServiceObject$$.prototype;
(Stream__ServiceObject$$.fromFuture = function(future) {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$$.__proto__.fromFuture.call(this, future);
}).prototype = Stream__ServiceObject$$.prototype;
(Stream__ServiceObject$$.fromFutures = function(futures) {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$$.__proto__.fromFutures.call(this, futures);
}).prototype = Stream__ServiceObject$$.prototype;
(Stream__ServiceObject$$.fromIterable = function(elements) {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$$.__proto__.fromIterable.call(this, elements);
}).prototype = Stream__ServiceObject$$.prototype;
(Stream__ServiceObject$$.periodic = function(period, computation) {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$$.__proto__.periodic.call(this, period, computation);
}).prototype = Stream__ServiceObject$$.prototype;
(Stream__ServiceObject$$.eventTransformed = function(source, mapSink) {
  _http._ServiceObject.new.call(this);
  Stream__ServiceObject$$.__proto__.eventTransformed.call(this, source, mapSink);
}).prototype = Stream__ServiceObject$$.prototype;
dart.applyMixin(Stream__ServiceObject$$, _http._ServiceObject);
_http._WebSocketImpl = class _WebSocketImpl extends Stream__ServiceObject$$ {
  static connect(url, protocols, headers, opts) {
    let compression = opts && 'compression' in opts ? opts.compression : _http.CompressionOptions.compressionDefault;
    let uri = core.Uri.parse(url);
    if (uri.scheme !== "ws" && uri.scheme !== "wss") {
      dart.throw(new _http.WebSocketException.new("Unsupported URL scheme '" + dart.str(uri.scheme) + "'"));
    }
    let random = math.Random.new();
    let nonceData = typed_data.Uint8List.new(16);
    for (let i = 0; i < 16; i++) {
      nonceData[$_set](i, random.nextInt(256));
    }
    let nonce = _http._CryptoUtils.bytesToBase64(nonceData);
    uri = core.Uri.new({scheme: uri.scheme === "wss" ? "https" : "http", userInfo: uri.userInfo, host: uri.host, port: uri.port, path: uri.path, query: uri.query, fragment: uri.fragment});
    return FutureOfWebSocket()._check(FutureOfHttpClientResponse()._check(_http._WebSocketImpl._httpClient.openUrl("GET", uri).then(_http.HttpClientResponse, dart.fn(request => {
      if (uri.userInfo != null && !uri.userInfo[$isEmpty]) {
        let auth = _http._CryptoUtils.bytesToBase64(convert.utf8.encode(uri.userInfo));
        request.headers.set(_http.HttpHeaders.authorizationHeader, "Basic " + dart.str(auth));
      }
      if (headers != null) {
        headers[$forEach](dart.fn((field, value) => request.headers.add(field, value), StringAnddynamicTovoid()));
      }
      let _ = request.headers;
      _.set(_http.HttpHeaders.connectionHeader, "Upgrade");
      _.set(_http.HttpHeaders.upgradeHeader, "websocket");
      _.set("Sec-WebSocket-Key", nonce);
      _.set("Cache-Control", "no-cache");
      _.set("Sec-WebSocket-Version", "13");
      if (protocols != null) {
        request.headers.add("Sec-WebSocket-Protocol", protocols[$toList]());
      }
      if (dart.test(compression.enabled)) {
        request.headers.add("Sec-WebSocket-Extensions", compression[_createHeader]());
      }
      return request.close();
    }, HttpClientRequestToFutureOfHttpClientResponse()))).then(_http.WebSocket, dart.fn(response => {
      function error(message) {
        FutureOfNull()._check(response.detachSocket().then(core.Null, dart.fn(socket => {
          socket.destroy();
        }, SocketToNull())));
        dart.throw(new _http.WebSocketException.new(message));
      }
      dart.fn(error, StringTovoid());
      if (response.statusCode !== _internal.HttpStatus.switchingProtocols || response.headers._get(_http.HttpHeaders.connectionHeader) == null || !dart.test(response.headers._get(_http.HttpHeaders.connectionHeader)[$any](dart.fn(value => value[$toLowerCase]() === "upgrade", StringTobool()))) || response.headers.value(_http.HttpHeaders.upgradeHeader)[$toLowerCase]() !== "websocket") {
        error("Connection to '" + dart.str(uri) + "' was not upgraded to websocket");
      }
      let accept = response.headers.value("Sec-WebSocket-Accept");
      if (accept == null) {
        error("Response did not contain a 'Sec-WebSocket-Accept' header");
      }
      let sha1 = new _http._SHA1.new();
      sha1.add((dart.str(nonce) + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11")[$codeUnits]);
      let expectedAccept = sha1.close();
      let receivedAccept = _http._CryptoUtils.base64StringToBytes(accept);
      if (expectedAccept[$length] != receivedAccept[$length]) {
        error("Reasponse header 'Sec-WebSocket-Accept' is the wrong length");
      }
      for (let i = 0; i < dart.notNull(expectedAccept[$length]); i++) {
        if (expectedAccept[$_get](i) != receivedAccept[$_get](i)) {
          error("Bad response 'Sec-WebSocket-Accept' header");
        }
      }
      let protocol = response.headers.value("Sec-WebSocket-Protocol");
      let deflate = _http._WebSocketImpl.negotiateClientCompression(response, compression);
      return FutureOfWebSocket()._check(response.detachSocket().then(_http.WebSocket, dart.fn(socket => new _http._WebSocketImpl._fromSocket(socket, protocol, compression, false, deflate), SocketTo_WebSocketImpl())));
    }, HttpClientResponseToFutureOfWebSocket())));
  }
  static negotiateClientCompression(response, compression) {
    let extensionHeader = response.headers.value("Sec-WebSocket-Extensions");
    if (extensionHeader == null) {
      extensionHeader = "";
    }
    let hv = _http.HeaderValue.parse(extensionHeader, {valueSeparator: ","});
    if (dart.test(compression.enabled) && hv.value === "permessage-deflate") {
      let serverNoContextTakeover = hv.parameters[$containsKey]("server_no_context_takeover");
      let clientNoContextTakeover = hv.parameters[$containsKey]("client_no_context_takeover");
      function getWindowBits(type) {
        let o = hv.parameters[$_get](type);
        if (o == null) {
          return 15;
        }
        return core.int.parse(o, {onError: dart.fn(s => 15, StringToint())});
      }
      dart.fn(getWindowBits, StringToint());
      return new _http._WebSocketPerMessageDeflate.new({clientMaxWindowBits: getWindowBits("client_max_window_bits"), serverMaxWindowBits: getWindowBits("server_max_window_bits"), clientNoContextTakeover: clientNoContextTakeover, serverNoContextTakeover: serverNoContextTakeover});
    }
    return null;
  }
  listen(onData, opts) {
    let onError = opts && 'onError' in opts ? opts.onError : null;
    let onDone = opts && 'onDone' in opts ? opts.onDone : null;
    let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
    return this[_controller$1].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
  }
  get pingInterval() {
    return this[_pingInterval];
  }
  set pingInterval(interval) {
    if (dart.test(this[_writeClosed])) return;
    if (this[_pingTimer] != null) this[_pingTimer].cancel();
    this[_pingInterval] = interval;
    if (this[_pingInterval] == null) return;
    this[_pingTimer] = async.Timer.new(this[_pingInterval], dart.fn(() => {
      if (dart.test(this[_writeClosed])) return;
      this[_consumer].add(new _http._WebSocketPing.new());
      this[_pingTimer] = async.Timer.new(this[_pingInterval], dart.fn(() => {
        this[_close$0](_http.WebSocketStatus.GOING_AWAY);
      }, VoidToNull()));
    }, VoidToNull()));
  }
  get readyState() {
    return this[_readyState];
  }
  get extensions() {
    return null;
  }
  get closeCode() {
    return this[_closeCode];
  }
  get closeReason() {
    return this[_closeReason];
  }
  add(data) {
    this[_sink$1].add(data);
  }
  addUtf8Text(bytes) {
    core.ArgumentError.checkNotNull(bytes, "bytes");
    this[_sink$1].add(new _http._EncodedString.new(bytes));
  }
  addError(error, stackTrace) {
    if (stackTrace === void 0) stackTrace = null;
    this[_sink$1].addError(error, stackTrace);
  }
  addStream(stream) {
    return this[_sink$1].addStream(stream);
  }
  get done() {
    return this[_sink$1].done;
  }
  close(code, reason) {
    if (code === void 0) code = null;
    if (reason === void 0) reason = null;
    if (dart.test(_http._WebSocketImpl._isReservedStatusCode(code))) {
      dart.throw(new _http.WebSocketException.new("Reserved status code " + dart.str(code)));
    }
    if (this[_outCloseCode] == null) {
      this[_outCloseCode] = code;
      this[_outCloseReason] = reason;
    }
    if (!dart.test(this[_controller$1].isClosed)) {
      if (!dart.test(this[_controller$1].hasListener) && this[_subscription$0] != null) {
        this[_controller$1].stream.drain(dart.dynamic).catchError(dart.fn(_ => new _js_helper.LinkedMap.new(), dynamicToMap()));
      }
      if (this[_closeTimer] == null) {
        this[_closeTimer] = async.Timer.new(const$98 || (const$98 = dart.const(new core.Duration.new({seconds: 5}))), dart.fn(() => {
          this[_closeCode] = this[_outCloseCode];
          this[_closeReason] = this[_outCloseReason];
          if (this[_subscription$0] != null) this[_subscription$0].cancel();
          this[_controller$1].close();
          _http._WebSocketImpl._webSockets[$remove](this[_serviceId$]);
        }, VoidToNull()));
      }
    }
    return this[_sink$1].close();
  }
  static get userAgent() {
    return _http._WebSocketImpl._httpClient.userAgent;
  }
  static set userAgent(userAgent) {
    _http._WebSocketImpl._httpClient.userAgent = userAgent;
  }
  [_close$0](code, reason) {
    if (code === void 0) code = null;
    if (reason === void 0) reason = null;
    if (dart.test(this[_writeClosed])) return;
    if (this[_outCloseCode] == null) {
      this[_outCloseCode] = code;
      this[_outCloseReason] = reason;
    }
    this[_writeClosed] = true;
    this[_consumer].closeSocket();
    _http._WebSocketImpl._webSockets[$remove](this[_serviceId$]);
  }
  get [_serviceTypePath$]() {
    return "io/websockets";
  }
  get [_serviceTypeName$]() {
    return "WebSocket";
  }
  [_toJSON$](ref) {
    let name = dart.str(dart.dload(dart.dload(this[_socket$], 'address'), 'host')) + ":" + dart.str(dart.dload(this[_socket$], 'port'));
    let r = new (IdentityMapOfString$dynamic()).from(["id", this[_servicePath$], "type", this[_serviceType$](ref), "name", name, "user_name", name]);
    if (dart.test(ref)) {
      return r;
    }
    try {
      r[$_set]("socket", dart.dsend(this[_socket$], _toJSON$, [true]));
    } catch (e) {
      let _ = dart.getThrown(e);
      r[$_set]("socket", new (IdentityMapOfString$String()).from(["id", this[_servicePath$], "type", "@Socket", "name", "UserSocket", "user_name", "UserSocket"]));
    }
    return r;
  }
  static _isReservedStatusCode(code) {
    return code != null && (dart.notNull(code) < _http.WebSocketStatus.NORMAL_CLOSURE || code === _http.WebSocketStatus.RESERVED_1004 || code === _http.WebSocketStatus.NO_STATUS_RECEIVED || code === _http.WebSocketStatus.ABNORMAL_CLOSURE || dart.notNull(code) > _http.WebSocketStatus.INTERNAL_SERVER_ERROR && dart.notNull(code) < _http.WebSocketStatus.RESERVED_1015 || dart.notNull(code) >= _http.WebSocketStatus.RESERVED_1015 && dart.notNull(code) < 3000);
  }
};
(_http._WebSocketImpl._fromSocket = function(socket, protocol, compression, serverSide, deflate) {
  if (serverSide === void 0) serverSide = false;
  if (deflate === void 0) deflate = null;
  this[_controller$1] = null;
  this[_subscription$0] = null;
  this[_sink$1] = null;
  this[_readyState] = _http.WebSocket.connecting;
  this[_writeClosed] = false;
  this[_closeCode] = null;
  this[_closeReason] = null;
  this[_pingInterval] = null;
  this[_pingTimer] = null;
  this[_consumer] = null;
  this[_outCloseCode] = null;
  this[_outCloseReason] = null;
  this[_closeTimer] = null;
  this[_deflate] = null;
  this[_socket$] = socket;
  this.protocol = protocol;
  this[_serverSide] = serverSide;
  _http._WebSocketImpl.__proto__.new.call(this);
  this[_consumer] = new _http._WebSocketConsumer.new(this, io.Socket._check(this[_socket$]));
  this[_sink$1] = new _http._StreamSinkImpl.new(this[_consumer]);
  this[_readyState] = _http.WebSocket.open;
  this[_deflate] = deflate;
  let transformer = new _http._WebSocketProtocolTransformer.new(this[_serverSide], this[_deflate]);
  this[_subscription$0] = async.StreamSubscription._check(dart.dsend(dart.dsend(this[_socket$], 'transform', [transformer]), 'listen', [dart.fn(data => {
      if (_http._WebSocketPing.is(data)) {
        if (!dart.test(this[_writeClosed])) this[_consumer].add(new _http._WebSocketPong.new(data.payload));
      } else if (_http._WebSocketPong.is(data)) {
        this.pingInterval = this[_pingInterval];
      } else {
        this[_controller$1].add(data);
      }
    }, dynamicToNull())], {onError: dart.fn((error, stackTrace) => {
      if (this[_closeTimer] != null) this[_closeTimer].cancel();
      if (core.FormatException.is(error)) {
        this[_close$0](_http.WebSocketStatus.INVALID_FRAME_PAYLOAD_DATA);
      } else {
        this[_close$0](_http.WebSocketStatus.PROTOCOL_ERROR);
      }
      this[_closeCode] = this[_outCloseCode];
      this[_closeReason] = this[_outCloseReason];
      this[_controller$1].close();
    }, dynamicAnddynamicToNull()), onDone: dart.fn(() => {
      if (this[_closeTimer] != null) this[_closeTimer].cancel();
      if (this[_readyState] === _http.WebSocket.open) {
        this[_readyState] = _http.WebSocket.closing;
        if (!dart.test(_http._WebSocketImpl._isReservedStatusCode(transformer.closeCode))) {
          this[_close$0](transformer.closeCode, transformer.closeReason);
        } else {
          this[_close$0]();
        }
        this[_readyState] = _http.WebSocket.closed;
      }
      this[_closeCode] = transformer.closeCode;
      this[_closeReason] = transformer.closeReason;
      this[_controller$1].close();
    }, VoidToNull()), cancelOnError: true}));
  this[_subscription$0].pause();
  this[_controller$1] = async.StreamController.new({sync: true, onListen: dart.bind(this[_subscription$0], 'resume'), onCancel: dart.fn(() => {
      this[_subscription$0].cancel();
      this[_subscription$0] = null;
    }, VoidToNull()), onPause: dart.bind(this[_subscription$0], 'pause'), onResume: dart.bind(this[_subscription$0], 'resume')});
  _http._WebSocketImpl._webSockets[$_set](this[_serviceId$], this);
}).prototype = _http._WebSocketImpl.prototype;
dart.addTypeTests(_http._WebSocketImpl);
_http._WebSocketImpl[dart.implements] = () => [_http.WebSocket];
dart.setMethodSignature(_http._WebSocketImpl, () => ({
  __proto__: dart.getMethods(_http._WebSocketImpl.__proto__),
  listen: dart.fnType(async.StreamSubscription, [dart.fnType(dart.void, [dart.dynamic])], {onError: core.Function, onDone: dart.fnType(dart.void, []), cancelOnError: core.bool}),
  add: dart.fnType(dart.void, [dart.dynamic]),
  addUtf8Text: dart.fnType(dart.void, [core.List$(core.int)]),
  addError: dart.fnType(dart.void, [core.Object], [core.StackTrace]),
  addStream: dart.fnType(async.Future, [async.Stream]),
  close: dart.fnType(async.Future, [], [core.int, core.String]),
  [_close$0]: dart.fnType(dart.void, [], [core.int, core.String]),
  [_toJSON$]: dart.fnType(core.Map$(core.String, dart.dynamic), [core.bool])
}));
dart.setGetterSignature(_http._WebSocketImpl, () => ({
  __proto__: dart.getGetters(_http._WebSocketImpl.__proto__),
  pingInterval: core.Duration,
  readyState: core.int,
  extensions: core.String,
  closeCode: core.int,
  closeReason: core.String,
  done: async.Future,
  [_serviceTypePath$]: core.String,
  [_serviceTypeName$]: core.String
}));
dart.setSetterSignature(_http._WebSocketImpl, () => ({
  __proto__: dart.getSetters(_http._WebSocketImpl.__proto__),
  pingInterval: core.Duration
}));
dart.setFieldSignature(_http._WebSocketImpl, () => ({
  __proto__: dart.getFields(_http._WebSocketImpl.__proto__),
  protocol: dart.finalFieldType(core.String),
  [_controller$1]: dart.fieldType(async.StreamController),
  [_subscription$0]: dart.fieldType(async.StreamSubscription),
  [_sink$1]: dart.fieldType(async.StreamSink),
  [_socket$]: dart.finalFieldType(dart.dynamic),
  [_serverSide]: dart.finalFieldType(core.bool),
  [_readyState]: dart.fieldType(core.int),
  [_writeClosed]: dart.fieldType(core.bool),
  [_closeCode]: dart.fieldType(core.int),
  [_closeReason]: dart.fieldType(core.String),
  [_pingInterval]: dart.fieldType(core.Duration),
  [_pingTimer]: dart.fieldType(async.Timer),
  [_consumer]: dart.fieldType(_http._WebSocketConsumer),
  [_outCloseCode]: dart.fieldType(core.int),
  [_outCloseReason]: dart.fieldType(core.String),
  [_closeTimer]: dart.fieldType(async.Timer),
  [_deflate]: dart.fieldType(_http._WebSocketPerMessageDeflate)
}));
dart.defineLazy(_http._WebSocketImpl, {
  /*_http._WebSocketImpl._webSockets*/get _webSockets() {
    return new (IdentityMapOfint$_WebSocketImpl()).new();
  },
  set _webSockets(_) {},
  /*_http._WebSocketImpl.DEFAULT_WINDOW_BITS*/get DEFAULT_WINDOW_BITS() {
    return 15;
  },
  /*_http._WebSocketImpl.PER_MESSAGE_DEFLATE*/get PER_MESSAGE_DEFLATE() {
    return "permessage-deflate";
  },
  /*_http._WebSocketImpl._httpClient*/get _httpClient() {
    return _http.HttpClient.new();
  }
});
dart.trackLibraries("dart_sdk", {
  "dart:_runtime": dart,
  "dart:_debugger": _debugger,
  "dart:_foreign_helper": _foreign_helper,
  "dart:_interceptors": _interceptors,
  "dart:_internal": _internal,
  "dart:_isolate_helper": _isolate_helper,
  "dart:_js_helper": _js_helper,
  "dart:_js_mirrors": _js_mirrors,
  "dart:_js_primitives": _js_primitives,
  "dart:_metadata": _metadata,
  "dart:_native_typed_data": _native_typed_data,
  "dart:async": async,
  "dart:collection": collection,
  "dart:convert": convert,
  "dart:core": core,
  "dart:developer": developer,
  "dart:io": io,
  "dart:isolate": isolate,
  "dart:js": js,
  "dart:js_util": js_util,
  "dart:math": math,
  "dart:mirrors": mirrors,
  "dart:typed_data": typed_data,
  "dart:indexed_db": indexed_db,
  "dart:html": html$,
  "dart:html_common": html_common,
  "dart:svg": svg$,
  "dart:web_audio": web_audio,
  "dart:web_gl": web_gl,
  "dart:web_sql": web_sql,
  "dart:_http": _http
}, null);

//# sourceMappingURL=dart_sdk.js.map
