var _internal; (function(exports) { 'use strict'; class EfficientLength extends core.Object {} let ListIterable$ = dart.generic(function(E) { class ListIterable extends collection.IterableBase$(E) { ListIterable() { super.IterableBase(); } get [core.$iterator]() { return new (ListIterator$(E))(this); } [core.$forEach](action) { let length = this[core.$length]; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { action(this.elementAt(i)); if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } } get [core.$isEmpty]() { return this.length == 0; } get [core.$first]() { if (this.length == 0) throw IterableElementError.noElement(); return this.elementAt(0); } get [core.$last]() { if (this.length == 0) throw IterableElementError.noElement(); return this.elementAt(dart.notNull(this.length) - 1); } get [core.$single]() { if (this.length == 0) throw IterableElementError.noElement(); if (dart.notNull(this.length) > 1) throw IterableElementError.tooMany(); return this.elementAt(0); } [core.$contains](element) { let length = this[core.$length]; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { if (dart.equals(this.elementAt(i), element)) return true; if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } return false; } [core.$every](test) { let length = this[core.$length]; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { if (!dart.notNull(test(this.elementAt(i)))) return false; if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } return true; } [core.$any](test) { let length = this[core.$length]; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { if (test(this.elementAt(i))) return true; if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } return false; } [core.$firstWhere](test, opts) { let orElse = opts && 'orElse' in opts ? opts.orElse : null; let length = this[core.$length]; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { let element = this.elementAt(i); if (test(element)) return element; if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } if (orElse != null) return orElse(); throw IterableElementError.noElement(); } [core.$lastWhere](test, opts) { let orElse = opts && 'orElse' in opts ? opts.orElse : null; let length = this[core.$length]; for (let i = dart.notNull(length) - 1; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) { let element = this.elementAt(i); if (test(element)) return element; if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } if (orElse != null) return orElse(); throw IterableElementError.noElement(); } [core.$singleWhere](test) { let length = this[core.$length]; let match = null; let matchFound = false; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { let element = this.elementAt(i); if (test(element)) { if (matchFound) { throw IterableElementError.tooMany(); } matchFound = true; match = element; } if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } if (matchFound) return match; throw IterableElementError.noElement(); } [core.$join](separator) { if (separator === void 0) separator = ""; let length = this[core.$length]; if (!dart.notNull(separator.isEmpty)) { if (length == 0) return ""; let first = `${this.elementAt(0)}`; if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } let buffer = new core.StringBuffer(first); for (let i = 1; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { buffer.write(separator); buffer.write(this.elementAt(i)); if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } return buffer.toString(); } else { let buffer = new core.StringBuffer(); for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { buffer.write(this.elementAt(i)); if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } return buffer.toString(); } } [core.$where](test) { return super[core.$where](test); } [core.$map](f) { return new MappedListIterable(this, f); } [core.$reduce](combine) { let length = this[core.$length]; if (length == 0) throw IterableElementError.noElement(); let value = this.elementAt(0); for (let i = 1; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { value = dart.dinvokef(combine, value, this.elementAt(i)); if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } return value; } [core.$fold](initialValue, combine) { let value = initialValue; let length = this[core.$length]; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { value = dart.dinvokef(combine, value, this.elementAt(i)); if (length != this[core.$length]) { throw new core.ConcurrentModificationError(this); } } return value; } [core.$skip](count) { return new (SubListIterable$(E))(this, count, null); } [core.$skipWhile](test) { return super[core.$skipWhile](test); } [core.$take](count) { return new (SubListIterable$(E))(this, 0, count); } [core.$takeWhile](test) { return super[core.$takeWhile](test); } [core.$toList](opts) { let growable = opts && 'growable' in opts ? opts.growable : true; let result = null; if (growable) { result = ((_) => { _[core.$length] = this.length; return _; }).bind(this)(new (core.List$(E))()); } else { result = new (core.List$(E))(this.length); } for (let i = 0; dart.notNull(i) < dart.notNull(this.length); i = dart.notNull(i) + 1) { result[core.$set](i, this.elementAt(i)); } return result; } [core.$toSet]() { let result = new (core.Set$(E))(); for (let i = 0; dart.notNull(i) < dart.notNull(this.length); i = dart.notNull(i) + 1) { result.add(this.elementAt(i)); } return result; } } ListIterable[dart.implements] = () => [EfficientLength]; return ListIterable; }); let ListIterable = ListIterable$(); let _iterable = dart.JsSymbol('_iterable'); let _start = dart.JsSymbol('_start'); let _endOrLength = dart.JsSymbol('_endOrLength'); let _endIndex = dart.JsSymbol('_endIndex'); let _startIndex = dart.JsSymbol('_startIndex'); let SubListIterable$ = dart.generic(function(E) { class SubListIterable extends ListIterable$(E) { SubListIterable(iterable$, start$, endOrLength) { this[_iterable] = iterable$; this[_start] = start$; this[_endOrLength] = endOrLength; super.ListIterable(); 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])) { throw new core.RangeError.range(this[_start], 0, this[_endOrLength], "start"); } } } get [_endIndex]() { let length = this[_iterable][core.$length]; if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) > dart.notNull(length)) return length; return this[_endOrLength]; } get [_startIndex]() { let length = this[_iterable][core.$length]; if (dart.notNull(this[_start]) > dart.notNull(length)) return length; return this[_start]; } get [core.$length]() { let length = this[_iterable][core.$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]); } [core.$elementAt](index) { let realIndex = dart.notNull(this[_startIndex]) + dart.notNull(index); if (dart.notNull(index) < 0 || dart.notNull(realIndex) >= dart.notNull(this[_endIndex])) { throw new core.RangeError.index(index, this, "index"); } return this[_iterable][core.$elementAt](realIndex); } [core.$skip](count) { core.RangeError.checkNotNegative(count, "count"); let newStart = dart.notNull(this[_start]) + dart.notNull(count); if (this[_endOrLength] != null && dart.notNull(newStart) >= dart.notNull(this[_endOrLength])) { return new (EmptyIterable$(E))(); } return new (SubListIterable$(E))(this[_iterable], newStart, this[_endOrLength]); } [core.$take](count) { core.RangeError.checkNotNegative(count, "count"); if (this[_endOrLength] == null) { return new (SubListIterable$(E))(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]) < dart.notNull(newEnd)) return this; return new (SubListIterable$(E))(this[_iterable], this[_start], newEnd); } } [core.$toList](opts) { let growable = opts && 'growable' in opts ? opts.growable : true; let start = this[_start]; let end = this[_iterable][core.$length]; if (this[_endOrLength] != null && dart.notNull(this[_endOrLength]) < dart.notNull(end)) end = this[_endOrLength]; let length = dart.notNull(end) - dart.notNull(start); if (dart.notNull(length) < 0) length = 0; let result = growable ? ((_) => { _[core.$length] = length; return _; })(new (core.List$(E))()) : new (core.List$(E))(length); for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { result[core.$set](i, this[_iterable][core.$elementAt](dart.notNull(start) + dart.notNull(i))); if (dart.notNull(this[_iterable][core.$length]) < dart.notNull(end)) throw new core.ConcurrentModificationError(this); } return dart.as(result, core.List$(E)); } } return SubListIterable; }); let SubListIterable = SubListIterable$(); let _length = dart.JsSymbol('_length'); let _index = dart.JsSymbol('_index'); let _current = dart.JsSymbol('_current'); let ListIterator$ = dart.generic(function(E) { class ListIterator extends core.Object { ListIterator(iterable) { this[_iterable] = iterable; this[_length] = iterable[core.$length]; this[_index] = 0; this[_current] = null; } get current() { return this[_current]; } moveNext() { let length = this[_iterable][core.$length]; if (this[_length] != length) { throw new core.ConcurrentModificationError(this[_iterable]); } if (dart.notNull(this[_index]) >= dart.notNull(length)) { this[_current] = null; return false; } this[_current] = this[_iterable][core.$elementAt](this[_index]); this[_index] = dart.notNull(this[_index]) + 1; return true; } } ListIterator[dart.implements] = () => [core.Iterator$(E)]; return ListIterator; }); let ListIterator = ListIterator$(); let _Transformation$ = dart.generic(function(S, T) { class _Transformation extends core.Function {} return _Transformation; }); let _Transformation = _Transformation$(); let _ = dart.JsSymbol('_'); let _f = dart.JsSymbol('_f'); let MappedIterable$ = dart.generic(function(S, T) { class MappedIterable extends collection.IterableBase$(T) { MappedIterable(iterable, func) { if (dart.is(iterable, EfficientLength)) { return new (EfficientLengthMappedIterable$(S, T))(iterable, func); } return new MappedIterable$(S, T)[_](dart.as(iterable, core.Iterable$(S)), func); } [_](iterable$, f$) { this[_iterable] = iterable$; this[_f] = f$; super.IterableBase(); } get [core.$iterator]() { return new (MappedIterator$(S, T))(this[_iterable][core.$iterator], this[_f]); } get [core.$length]() { return this[_iterable][core.$length]; } get [core.$isEmpty]() { return this[_iterable][core.$isEmpty]; } get [core.$first]() { return this[_f](this[_iterable][core.$first]); } get [core.$last]() { return this[_f](this[_iterable][core.$last]); } get [core.$single]() { return this[_f](this[_iterable][core.$single]); } [core.$elementAt](index) { return this[_f](this[_iterable][core.$elementAt](index)); } } dart.defineNamedConstructor(MappedIterable, _); return MappedIterable; }); let MappedIterable = MappedIterable$(); let EfficientLengthMappedIterable$ = dart.generic(function(S, T) { class EfficientLengthMappedIterable extends MappedIterable$(S, T) { EfficientLengthMappedIterable(iterable, func) { super[_](dart.as(iterable, core.Iterable$(S)), func); } } EfficientLengthMappedIterable[dart.implements] = () => [EfficientLength]; return EfficientLengthMappedIterable; }); let EfficientLengthMappedIterable = EfficientLengthMappedIterable$(); let _iterator = dart.JsSymbol('_iterator'); let MappedIterator$ = dart.generic(function(S, T) { class MappedIterator extends core.Iterator$(T) { MappedIterator(iterator$, f$) { this[_iterator] = iterator$; this[_f] = f$; this[_current] = null; super.Iterator(); } moveNext() { if (this[_iterator].moveNext()) { this[_current] = this[_f](this[_iterator].current); return true; } this[_current] = null; return false; } get current() { return this[_current]; } } return MappedIterator; }); let MappedIterator = MappedIterator$(); let _source = dart.JsSymbol('_source'); let MappedListIterable$ = dart.generic(function(S, T) { class MappedListIterable extends ListIterable$(T) { MappedListIterable(source, f$) { this[_source] = source; this[_f] = f$; super.ListIterable(); } get [core.$length]() { return this[_source][core.$length]; } [core.$elementAt](index) { return this[_f](this[_source][core.$elementAt](index)); } } MappedListIterable[dart.implements] = () => [EfficientLength]; return MappedListIterable; }); let MappedListIterable = MappedListIterable$(); let _ElementPredicate$ = dart.generic(function(E) { class _ElementPredicate extends core.Function {} return _ElementPredicate; }); let _ElementPredicate = _ElementPredicate$(); let WhereIterable$ = dart.generic(function(E) { class WhereIterable extends collection.IterableBase$(E) { WhereIterable(iterable$, f$) { this[_iterable] = iterable$; this[_f] = f$; super.IterableBase(); } get [core.$iterator]() { return new (WhereIterator$(E))(this[_iterable][core.$iterator], this[_f]); } } return WhereIterable; }); let WhereIterable = WhereIterable$(); let WhereIterator$ = dart.generic(function(E) { class WhereIterator extends core.Iterator$(E) { WhereIterator(iterator$, f$) { this[_iterator] = iterator$; this[_f] = f$; super.Iterator(); } moveNext() { while (this[_iterator].moveNext()) { if (this[_f](this[_iterator].current)) { return true; } } return false; } get current() { return this[_iterator].current; } } return WhereIterator; }); let WhereIterator = WhereIterator$(); let _ExpandFunction$ = dart.generic(function(S, T) { class _ExpandFunction extends core.Function {} return _ExpandFunction; }); let _ExpandFunction = _ExpandFunction$(); let ExpandIterable$ = dart.generic(function(S, T) { class ExpandIterable extends collection.IterableBase$(T) { ExpandIterable(iterable$, f$) { this[_iterable] = iterable$; this[_f] = f$; super.IterableBase(); } get [core.$iterator]() { return new (ExpandIterator$(S, T))(this[_iterable][core.$iterator], dart.as(this[_f], dart.throw_("Unimplemented type (S) → Iterable"))); } } return ExpandIterable; }); let ExpandIterable = ExpandIterable$(); let _currentExpansion = dart.JsSymbol('_currentExpansion'); let _nextExpansion = dart.JsSymbol('_nextExpansion'); let ExpandIterator$ = dart.generic(function(S, T) { class ExpandIterator extends core.Object { ExpandIterator(iterator$, f$) { this[_iterator] = iterator$; this[_f] = f$; this[_currentExpansion] = dart.as(new EmptyIterator(), core.Iterator$(T)); this[_current] = null; } [_nextExpansion]() {} get current() { return this[_current]; } moveNext() { if (this[_currentExpansion] == null) return false; while (!dart.notNull(this[_currentExpansion].moveNext())) { this[_current] = null; if (this[_iterator].moveNext()) { this[_currentExpansion] = null; this[_currentExpansion] = dart.as(dart.dinvokef(this[_f], this[_iterator].current)[core.$iterator], core.Iterator$(T)); } else { return false; } } this[_current] = this[_currentExpansion].current; return true; } } ExpandIterator[dart.implements] = () => [core.Iterator$(T)]; return ExpandIterator; }); let ExpandIterator = ExpandIterator$(); let _takeCount = dart.JsSymbol('_takeCount'); let TakeIterable$ = dart.generic(function(E) { class TakeIterable extends collection.IterableBase$(E) { TakeIterable(iterable, takeCount) { if (dart.notNull(!(typeof takeCount == 'number')) || dart.notNull(takeCount) < 0) { throw new core.ArgumentError(takeCount); } if (dart.is(iterable, EfficientLength)) { return new (EfficientLengthTakeIterable$(E))(iterable, takeCount); } return new TakeIterable$(E)[_](iterable, takeCount); } [_](iterable$, takeCount$) { this[_iterable] = iterable$; this[_takeCount] = takeCount$; super.IterableBase(); } get [core.$iterator]() { return new (TakeIterator$(E))(this[_iterable][core.$iterator], this[_takeCount]); } } dart.defineNamedConstructor(TakeIterable, _); return TakeIterable; }); let TakeIterable = TakeIterable$(); let EfficientLengthTakeIterable$ = dart.generic(function(E) { class EfficientLengthTakeIterable extends TakeIterable$(E) { EfficientLengthTakeIterable(iterable, takeCount) { super[_](iterable, takeCount); } get [core.$length]() { let iterableLength = this[_iterable][core.$length]; if (dart.notNull(iterableLength) > dart.notNull(this[_takeCount])) return this[_takeCount]; return iterableLength; } } EfficientLengthTakeIterable[dart.implements] = () => [EfficientLength]; return EfficientLengthTakeIterable; }); let EfficientLengthTakeIterable = EfficientLengthTakeIterable$(); let _remaining = dart.JsSymbol('_remaining'); let TakeIterator$ = dart.generic(function(E) { class TakeIterator extends core.Iterator$(E) { TakeIterator(iterator$, remaining) { this[_iterator] = iterator$; this[_remaining] = remaining; super.Iterator(); dart.assert(dart.notNull(typeof this[_remaining] == 'number') && dart.notNull(this[_remaining]) >= 0); } 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; } } return TakeIterator; }); let TakeIterator = TakeIterator$(); let TakeWhileIterable$ = dart.generic(function(E) { class TakeWhileIterable extends collection.IterableBase$(E) { TakeWhileIterable(iterable$, f$) { this[_iterable] = iterable$; this[_f] = f$; super.IterableBase(); } get [core.$iterator]() { return new (TakeWhileIterator$(E))(this[_iterable][core.$iterator], dart.as(this[_f], dart.throw_("Unimplemented type (E) → bool"))); } } return TakeWhileIterable; }); let TakeWhileIterable = TakeWhileIterable$(); let _isFinished = dart.JsSymbol('_isFinished'); let TakeWhileIterator$ = dart.generic(function(E) { class TakeWhileIterator extends core.Iterator$(E) { TakeWhileIterator(iterator$, f$) { this[_iterator] = iterator$; this[_f] = f$; this[_isFinished] = false; super.Iterator(); } moveNext() { if (this[_isFinished]) return false; if (!dart.notNull(this[_iterator].moveNext()) || !dart.notNull(dart.dinvokef(this[_f], this[_iterator].current))) { this[_isFinished] = true; return false; } return true; } get current() { if (this[_isFinished]) return null; return this[_iterator].current; } } return TakeWhileIterator; }); let TakeWhileIterator = TakeWhileIterator$(); let _skipCount = dart.JsSymbol('_skipCount'); let SkipIterable$ = dart.generic(function(E) { class SkipIterable extends collection.IterableBase$(E) { SkipIterable(iterable, count) { if (dart.is(iterable, EfficientLength)) { return new (EfficientLengthSkipIterable$(E))(iterable, count); } return new SkipIterable$(E)[_](iterable, count); } [_](iterable$, skipCount$) { this[_iterable] = iterable$; this[_skipCount] = skipCount$; super.IterableBase(); if (!(typeof this[_skipCount] == 'number')) { throw new core.ArgumentError.value(this[_skipCount], "count is not an integer"); } core.RangeError.checkNotNegative(this[_skipCount], "count"); } [core.$skip](count) { if (!(typeof this[_skipCount] == 'number')) { throw new core.ArgumentError.value(this[_skipCount], "count is not an integer"); } core.RangeError.checkNotNegative(this[_skipCount], "count"); return new SkipIterable$(E)[_](this[_iterable], dart.notNull(this[_skipCount]) + dart.notNull(count)); } get [core.$iterator]() { return new (SkipIterator$(E))(this[_iterable][core.$iterator], this[_skipCount]); } } dart.defineNamedConstructor(SkipIterable, _); return SkipIterable; }); let SkipIterable = SkipIterable$(); let EfficientLengthSkipIterable$ = dart.generic(function(E) { class EfficientLengthSkipIterable extends SkipIterable$(E) { EfficientLengthSkipIterable(iterable, skipCount) { super[_](iterable, skipCount); } get [core.$length]() { let length = dart.notNull(this[_iterable][core.$length]) - dart.notNull(this[_skipCount]); if (dart.notNull(length) >= 0) return length; return 0; } } EfficientLengthSkipIterable[dart.implements] = () => [EfficientLength]; return EfficientLengthSkipIterable; }); let EfficientLengthSkipIterable = EfficientLengthSkipIterable$(); let SkipIterator$ = dart.generic(function(E) { class SkipIterator extends core.Iterator$(E) { SkipIterator(iterator$, skipCount$) { this[_iterator] = iterator$; this[_skipCount] = skipCount$; super.Iterator(); dart.assert(dart.notNull(typeof this[_skipCount] == 'number') && dart.notNull(this[_skipCount]) >= 0); } moveNext() { for (let i = 0; dart.notNull(i) < dart.notNull(this[_skipCount]); i = dart.notNull(i) + 1) this[_iterator].moveNext(); this[_skipCount] = 0; return this[_iterator].moveNext(); } get current() { return this[_iterator].current; } } return SkipIterator; }); let SkipIterator = SkipIterator$(); let SkipWhileIterable$ = dart.generic(function(E) { class SkipWhileIterable extends collection.IterableBase$(E) { SkipWhileIterable(iterable$, f$) { this[_iterable] = iterable$; this[_f] = f$; super.IterableBase(); } get [core.$iterator]() { return new (SkipWhileIterator$(E))(this[_iterable][core.$iterator], dart.as(this[_f], dart.throw_("Unimplemented type (E) → bool"))); } } return SkipWhileIterable; }); let SkipWhileIterable = SkipWhileIterable$(); let _hasSkipped = dart.JsSymbol('_hasSkipped'); let SkipWhileIterator$ = dart.generic(function(E) { class SkipWhileIterator extends core.Iterator$(E) { SkipWhileIterator(iterator$, f$) { this[_iterator] = iterator$; this[_f] = f$; this[_hasSkipped] = false; super.Iterator(); } moveNext() { if (!dart.notNull(this[_hasSkipped])) { this[_hasSkipped] = true; while (this[_iterator].moveNext()) { if (!dart.notNull(dart.dinvokef(this[_f], this[_iterator].current))) return true; } } return this[_iterator].moveNext(); } get current() { return this[_iterator].current; } } return SkipWhileIterator; }); let SkipWhileIterator = SkipWhileIterator$(); let EmptyIterable$ = dart.generic(function(E) { class EmptyIterable extends collection.IterableBase$(E) { EmptyIterable() { super.IterableBase(); } get [core.$iterator]() { return dart.as(new EmptyIterator(), core.Iterator$(E)); } [core.$forEach](action) {} get [core.$isEmpty]() { return true; } get [core.$length]() { return 0; } get [core.$first]() { throw IterableElementError.noElement(); } get [core.$last]() { throw IterableElementError.noElement(); } get [core.$single]() { throw IterableElementError.noElement(); } [core.$elementAt](index) { throw new core.RangeError.range(index, 0, 0, "index"); } [core.$contains](element) { return false; } [core.$every](test) { return true; } [core.$any](test) { return false; } [core.$firstWhere](test, opts) { let orElse = opts && 'orElse' in opts ? opts.orElse : null; if (orElse != null) return orElse(); throw IterableElementError.noElement(); } [core.$lastWhere](test, opts) { let orElse = opts && 'orElse' in opts ? opts.orElse : null; if (orElse != null) return orElse(); throw IterableElementError.noElement(); } [core.$singleWhere](test, opts) { let orElse = opts && 'orElse' in opts ? opts.orElse : null; if (orElse != null) return orElse(); throw IterableElementError.noElement(); } [core.$join](separator) { if (separator === void 0) separator = ""; return ""; } [core.$where](test) { return this; } [core.$map](f) { return new EmptyIterable(); } [core.$reduce](combine) { throw IterableElementError.noElement(); } [core.$fold](initialValue, combine) { return initialValue; } [core.$skip](count) { core.RangeError.checkNotNegative(count, "count"); return this; } [core.$skipWhile](test) { return this; } [core.$take](count) { core.RangeError.checkNotNegative(count, "count"); return this; } [core.$takeWhile](test) { return this; } [core.$toList](opts) { let growable = opts && 'growable' in opts ? opts.growable : true; return growable ? new core.List$(E).from([]) : new (core.List$(E))(0); } [core.$toSet]() { return new (core.Set$(E))(); } } EmptyIterable[dart.implements] = () => [EfficientLength]; return EmptyIterable; }); let EmptyIterable = EmptyIterable$(); let EmptyIterator$ = dart.generic(function(E) { class EmptyIterator extends core.Object { EmptyIterator() { } moveNext() { return false; } get current() { return null; } } EmptyIterator[dart.implements] = () => [core.Iterator$(E)]; return EmptyIterator; }); let EmptyIterator = EmptyIterator$(); let BidirectionalIterator$ = dart.generic(function(T) { class BidirectionalIterator extends core.Object {} BidirectionalIterator[dart.implements] = () => [core.Iterator$(T)]; return BidirectionalIterator; }); let BidirectionalIterator = BidirectionalIterator$(); let _rangeCheck = dart.JsSymbol('_rangeCheck'); let IterableMixinWorkaround$ = dart.generic(function(T) { class IterableMixinWorkaround extends core.Object { static contains(iterable, element) { for (let e of iterable) { if (dart.equals(e, element)) return true; } return false; } static forEach(iterable, f) { for (let e of iterable) { dart.dinvokef(f, e); } } static any(iterable, f) { for (let e of iterable) { if (dart.dinvokef(f, e)) return true; } return false; } static every(iterable, f) { for (let e of iterable) { if (!dart.notNull(dart.dinvokef(f, e))) return false; } return true; } static reduce(iterable, combine) { let iterator = iterable[core.$iterator]; if (!dart.notNull(iterator.moveNext())) throw IterableElementError.noElement(); let value = iterator.current; while (iterator.moveNext()) { value = dart.dinvokef(combine, value, iterator.current); } return value; } static fold(iterable, initialValue, combine) { for (let element of iterable) { initialValue = dart.dinvokef(combine, initialValue, element); } return initialValue; } static removeWhereList(list, test) { let retained = new core.List.from([]); let length = list[core.$length]; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { let element = list[core.$get](i); if (!dart.notNull(dart.dinvokef(test, element))) { retained[core.$add](element); } if (length != list[core.$length]) { throw new core.ConcurrentModificationError(list); } } if (retained[core.$length] == length) return; list[core.$length] = retained[core.$length]; for (let i = 0; dart.notNull(i) < dart.notNull(retained[core.$length]); i = dart.notNull(i) + 1) { list[core.$set](i, retained[core.$get](i)); } } static isEmpty(iterable) { return !dart.notNull(iterable[core.$iterator].moveNext()); } static first(iterable) { let it = iterable[core.$iterator]; if (!dart.notNull(it.moveNext())) { throw IterableElementError.noElement(); } return it.current; } static last(iterable) { let it = iterable[core.$iterator]; if (!dart.notNull(it.moveNext())) { throw IterableElementError.noElement(); } let result = null; do { result = it.current; } while (it.moveNext()); return result; } static single(iterable) { let it = iterable[core.$iterator]; if (!dart.notNull(it.moveNext())) throw IterableElementError.noElement(); let result = it.current; if (it.moveNext()) throw IterableElementError.tooMany(); return result; } static firstWhere(iterable, test, orElse) { for (let element of iterable) { if (dart.dinvokef(test, element)) return element; } if (orElse != null) return orElse(); throw IterableElementError.noElement(); } static lastWhere(iterable, test, orElse) { let result = null; let foundMatching = false; for (let element of iterable) { if (dart.dinvokef(test, element)) { result = element; foundMatching = true; } } if (foundMatching) return result; if (orElse != null) return orElse(); throw IterableElementError.noElement(); } static lastWhereList(list, test, orElse) { for (let i = dart.notNull(list[core.$length]) - 1; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) { let element = list[core.$get](i); if (dart.dinvokef(test, element)) return element; } if (orElse != null) return orElse(); throw IterableElementError.noElement(); } static singleWhere(iterable, test) { let result = null; let foundMatching = false; for (let element of iterable) { if (dart.dinvokef(test, element)) { if (foundMatching) { throw IterableElementError.tooMany(); } result = element; foundMatching = true; } } if (foundMatching) return result; throw IterableElementError.noElement(); } static elementAt(iterable, index) { if (!(typeof index == 'number')) throw new core.ArgumentError.notNull("index"); core.RangeError.checkNotNegative(index, "index"); let elementIndex = 0; for (let element of iterable) { if (index == elementIndex) return element; elementIndex = dart.notNull(elementIndex) + 1; } throw new core.RangeError.index(index, iterable, "index", null, elementIndex); } static join(iterable, separator) { if (separator === void 0) separator = null; let buffer = new core.StringBuffer(); buffer.writeAll(iterable, separator); return buffer.toString(); } static joinList(list, separator) { if (separator === void 0) separator = null; if (list[core.$isEmpty]) return ""; if (list[core.$length] == 1) return `${list[core.$get](0)}`; let buffer = new core.StringBuffer(); if (separator.isEmpty) { for (let i = 0; dart.notNull(i) < dart.notNull(list[core.$length]); i = dart.notNull(i) + 1) { buffer.write(list[core.$get](i)); } } else { buffer.write(list[core.$get](0)); for (let i = 1; dart.notNull(i) < dart.notNull(list[core.$length]); i = dart.notNull(i) + 1) { buffer.write(separator); buffer.write(list[core.$get](i)); } } return buffer.toString(); } where(iterable, f) { return new (WhereIterable$(T))(dart.as(iterable, core.Iterable$(T)), dart.as(f, dart.throw_("Unimplemented type (T) → bool"))); } static map(iterable, f) { return new MappedIterable(iterable, f); } static mapList(list, f) { return new MappedListIterable(list, f); } static expand(iterable, f) { return new ExpandIterable(iterable, f); } takeList(list, n) { return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), 0, n); } takeWhile(iterable, test) { return new (TakeWhileIterable$(T))(dart.as(iterable, core.Iterable$(T)), dart.as(test, dart.throw_("Unimplemented type (T) → bool"))); } skipList(list, n) { return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), n, null); } skipWhile(iterable, test) { return new (SkipWhileIterable$(T))(dart.as(iterable, core.Iterable$(T)), dart.as(test, dart.throw_("Unimplemented type (T) → bool"))); } reversedList(list) { return new (ReversedListIterable$(T))(dart.as(list, core.Iterable$(T))); } static sortList(list, compare) { if (compare == null) compare = core.Comparable.compare; Sort.sort(list, compare); } static shuffleList(list, random) { if (random == null) random = new math.Random(); let length = list[core.$length]; while (dart.notNull(length) > 1) { let pos = random.nextInt(length); length = 1; let tmp = list[core.$get](length); list[core.$set](length, list[core.$get](pos)); list[core.$set](pos, tmp); } } static indexOfList(list, element, start) { return Lists.indexOf(list, element, start, list[core.$length]); } static lastIndexOfList(list, element, start) { if (start == null) start = dart.notNull(list[core.$length]) - 1; return Lists.lastIndexOf(list, element, start); } static [_rangeCheck](list, start, end) { core.RangeError.checkValidRange(start, end, list[core.$length]); } getRangeList(list, start, end) { IterableMixinWorkaround[_rangeCheck](list, start, end); return new (SubListIterable$(T))(dart.as(list, core.Iterable$(T)), start, end); } static setRangeList(list, start, end, from, skipCount) { IterableMixinWorkaround[_rangeCheck](list, start, end); let length = dart.notNull(end) - dart.notNull(start); if (length == 0) return; if (dart.notNull(skipCount) < 0) throw new core.ArgumentError(skipCount); let otherList = null; let otherStart = null; if (dart.is(from, core.List)) { otherList = from; otherStart = skipCount; } else { otherList = from[core.$skip](skipCount)[core.$toList]({growable: false}); otherStart = 0; } if (dart.notNull(otherStart) + dart.notNull(length) > dart.notNull(otherList[core.$length])) { throw IterableElementError.tooFew(); } Lists.copy(otherList, otherStart, list, start, length); } static replaceRangeList(list, start, end, iterable) { IterableMixinWorkaround[_rangeCheck](list, start, end); if (!dart.is(iterable, EfficientLength)) { iterable = iterable[core.$toList](); } let removeLength = dart.notNull(end) - dart.notNull(start); let insertLength = iterable[core.$length]; if (dart.notNull(removeLength) >= dart.notNull(insertLength)) { let delta = dart.notNull(removeLength) - dart.notNull(insertLength); let insertEnd = dart.notNull(start) + dart.notNull(insertLength); let newEnd = dart.notNull(list[core.$length]) - dart.notNull(delta); list[core.$setRange](start, insertEnd, iterable); if (delta != 0) { list[core.$setRange](insertEnd, newEnd, list, end); list[core.$length] = newEnd; } } else { let delta = dart.notNull(insertLength) - dart.notNull(removeLength); let newLength = dart.notNull(list[core.$length]) + dart.notNull(delta); let insertEnd = dart.notNull(start) + dart.notNull(insertLength); list[core.$length] = newLength; list[core.$setRange](insertEnd, newLength, list, end); list[core.$setRange](start, insertEnd, iterable); } } static fillRangeList(list, start, end, fillValue) { IterableMixinWorkaround[_rangeCheck](list, start, end); for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { list[core.$set](i, fillValue); } } static insertAllList(list, index, iterable) { core.RangeError.checkValueInInterval(index, 0, list[core.$length], "index"); if (!dart.is(iterable, EfficientLength)) { iterable = iterable[core.$toList]({growable: false}); } let insertionLength = iterable[core.$length]; list[core.$length] = insertionLength; list[core.$setRange](dart.notNull(index) + dart.notNull(insertionLength), list[core.$length], list, index); for (let element of iterable) { list[core.$set](((x) => index = dart.notNull(x) + 1, x)(index), element); } } static setAllList(list, index, iterable) { core.RangeError.checkValueInInterval(index, 0, list[core.$length], "index"); for (let element of iterable) { list[core.$set](((x) => index = dart.notNull(x) + 1, x)(index), element); } } asMapList(l) { return new (ListMapView$(T))(dart.as(l, core.List$(T))); } static setContainsAll(set, other) { for (let element of other) { if (!dart.notNull(set[core.$contains](element))) return false; } return true; } static setIntersection(set, other, result) { let smaller = null; let larger = null; if (dart.notNull(set[core.$length]) < dart.notNull(other[core.$length])) { smaller = set; larger = other; } else { smaller = other; larger = set; } for (let element of smaller) { if (larger[core.$contains](element)) { result.add(element); } } return result; } static setUnion(set, other, result) { result.addAll(set); result.addAll(other); return result; } static setDifference(set, other, result) { for (let element of set) { if (!dart.notNull(other[core.$contains](element))) { result.add(element); } } return result; } } return IterableMixinWorkaround; }); let IterableMixinWorkaround = IterableMixinWorkaround$(); class IterableElementError extends core.Object { static noElement() { return new core.StateError("No element"); } static tooMany() { return new core.StateError("Too many elements"); } static tooFew() { return new core.StateError("Too few elements"); } } let FixedLengthListMixin$ = dart.generic(function(E) { class FixedLengthListMixin extends core.Object { set length(newLength) { throw new core.UnsupportedError("Cannot change the length of a fixed-length list"); } add(value) { throw new core.UnsupportedError("Cannot add to a fixed-length list"); } insert(index, value) { throw new core.UnsupportedError("Cannot add to a fixed-length list"); } insertAll(at, iterable) { throw new core.UnsupportedError("Cannot add to a fixed-length list"); } addAll(iterable) { throw new core.UnsupportedError("Cannot add to a fixed-length list"); } remove(element) { throw new core.UnsupportedError("Cannot remove from a fixed-length list"); } removeWhere(test) { throw new core.UnsupportedError("Cannot remove from a fixed-length list"); } retainWhere(test) { throw new core.UnsupportedError("Cannot remove from a fixed-length list"); } clear() { throw new core.UnsupportedError("Cannot clear a fixed-length list"); } removeAt(index) { throw new core.UnsupportedError("Cannot remove from a fixed-length list"); } removeLast() { throw new core.UnsupportedError("Cannot remove from a fixed-length list"); } removeRange(start, end) { throw new core.UnsupportedError("Cannot remove from a fixed-length list"); } replaceRange(start, end, iterable) { throw new core.UnsupportedError("Cannot remove from a fixed-length list"); } } return FixedLengthListMixin; }); let FixedLengthListMixin = FixedLengthListMixin$(); let UnmodifiableListMixin$ = dart.generic(function(E) { class UnmodifiableListMixin extends core.Object { [core.$set](index, value) { throw new core.UnsupportedError("Cannot modify an unmodifiable list"); } set [core.$length](newLength) { throw new core.UnsupportedError("Cannot change the length of an unmodifiable list"); } [core.$setAll](at, iterable) { throw new core.UnsupportedError("Cannot modify an unmodifiable list"); } [core.$add](value) { throw new core.UnsupportedError("Cannot add to an unmodifiable list"); } [core.$insert](index, value) { throw new core.UnsupportedError("Cannot add to an unmodifiable list"); } [core.$insertAll](at, iterable) { throw new core.UnsupportedError("Cannot add to an unmodifiable list"); } [core.$addAll](iterable) { throw new core.UnsupportedError("Cannot add to an unmodifiable list"); } [core.$remove](element) { throw new core.UnsupportedError("Cannot remove from an unmodifiable list"); } [core.$removeWhere](test) { throw new core.UnsupportedError("Cannot remove from an unmodifiable list"); } [core.$retainWhere](test) { throw new core.UnsupportedError("Cannot remove from an unmodifiable list"); } [core.$sort](compare) { if (compare === void 0) compare = null; throw new core.UnsupportedError("Cannot modify an unmodifiable list"); } [core.$shuffle](random) { if (random === void 0) random = null; throw new core.UnsupportedError("Cannot modify an unmodifiable list"); } [core.$clear]() { throw new core.UnsupportedError("Cannot clear an unmodifiable list"); } [core.$removeAt](index) { throw new core.UnsupportedError("Cannot remove from an unmodifiable list"); } [core.$removeLast]() { throw new core.UnsupportedError("Cannot remove from an unmodifiable list"); } [core.$setRange](start, end, iterable, skipCount) { if (skipCount === void 0) skipCount = 0; throw new core.UnsupportedError("Cannot modify an unmodifiable list"); } [core.$removeRange](start, end) { throw new core.UnsupportedError("Cannot remove from an unmodifiable list"); } [core.$replaceRange](start, end, iterable) { throw new core.UnsupportedError("Cannot remove from an unmodifiable list"); } [core.$fillRange](start, end, fillValue) { if (fillValue === void 0) fillValue = null; throw new core.UnsupportedError("Cannot modify an unmodifiable list"); } } UnmodifiableListMixin[dart.implements] = () => [core.List$(E)]; return UnmodifiableListMixin; }); let UnmodifiableListMixin = UnmodifiableListMixin$(); let FixedLengthListBase$ = dart.generic(function(E) { class FixedLengthListBase extends dart.mixin(FixedLengthListMixin$(E)) {} return FixedLengthListBase; }); let FixedLengthListBase = FixedLengthListBase$(); let UnmodifiableListBase$ = dart.generic(function(E) { class UnmodifiableListBase extends dart.mixin(UnmodifiableListMixin$(E)) {} return UnmodifiableListBase; }); let UnmodifiableListBase = UnmodifiableListBase$(); let _backedList = dart.JsSymbol('_backedList'); class _ListIndicesIterable extends ListIterable$(core.int) { _ListIndicesIterable(backedList) { this[_backedList] = backedList; super.ListIterable(); } get [core.$length]() { return this[_backedList][core.$length]; } [core.$elementAt](index) { core.RangeError.checkValidIndex(index, this); return index; } } let _values = dart.JsSymbol('_values'); let ListMapView$ = dart.generic(function(E) { class ListMapView extends core.Object { ListMapView(values) { this[_values] = values; } get(key) { return this.containsKey(key) ? this[_values][core.$get](key) : null; } get length() { return this[_values][core.$length]; } get values() { return new (SubListIterable$(E))(this[_values], 0, null); } get keys() { return new _ListIndicesIterable(this[_values]); } get isEmpty() { return this[_values][core.$isEmpty]; } get isNotEmpty() { return this[_values][core.$isNotEmpty]; } containsValue(value) { return this[_values][core.$contains](value); } containsKey(key) { return dart.notNull(typeof key == 'number') && dart.notNull(key) >= 0 && dart.notNull(key) < dart.notNull(this.length); } forEach(f) { let length = this[_values][core.$length]; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { f(i, this[_values][core.$get](i)); if (length != this[_values][core.$length]) { throw new core.ConcurrentModificationError(this[_values]); } } } set(key, value) { throw new core.UnsupportedError("Cannot modify an unmodifiable map"); } putIfAbsent(key, ifAbsent) { throw new core.UnsupportedError("Cannot modify an unmodifiable map"); } remove(key) { throw new core.UnsupportedError("Cannot modify an unmodifiable map"); } clear() { throw new core.UnsupportedError("Cannot modify an unmodifiable map"); } addAll(other) { throw new core.UnsupportedError("Cannot modify an unmodifiable map"); } toString() { return collection.Maps.mapToString(this); } } ListMapView[dart.implements] = () => [core.Map$(core.int, E)]; return ListMapView; }); let ListMapView = ListMapView$(); let ReversedListIterable$ = dart.generic(function(E) { class ReversedListIterable extends ListIterable$(E) { ReversedListIterable(source) { this[_source] = source; super.ListIterable(); } get [core.$length]() { return this[_source][core.$length]; } [core.$elementAt](index) { return this[_source][core.$elementAt](dart.notNull(this[_source][core.$length]) - 1 - dart.notNull(index)); } } return ReversedListIterable; }); let ReversedListIterable = ReversedListIterable$(); class UnmodifiableListError extends core.Object { static add() { return new core.UnsupportedError("Cannot add to unmodifiable List"); } static change() { return new core.UnsupportedError("Cannot change the content of an unmodifiable List"); } static length() { return new core.UnsupportedError("Cannot change length of unmodifiable List"); } static remove() { return new core.UnsupportedError("Cannot remove from unmodifiable List"); } } class NonGrowableListError extends core.Object { static add() { return new core.UnsupportedError("Cannot add to non-growable List"); } static length() { return new core.UnsupportedError("Cannot change length of non-growable List"); } static remove() { return new core.UnsupportedError("Cannot remove from non-growable List"); } } // Function makeListFixedLength: (List) → List function makeListFixedLength(growableList) { _interceptors.JSArray.markFixedList(growableList); return growableList; } class Lists extends core.Object { static copy(src, srcStart, dst, dstStart, count) { if (dart.notNull(srcStart) < dart.notNull(dstStart)) { for (let i = dart.notNull(srcStart) + dart.notNull(count) - 1, j = dart.notNull(dstStart) + dart.notNull(count) - 1; dart.notNull(i) >= dart.notNull(srcStart); i = dart.notNull(i) - 1, j = dart.notNull(j) - 1) { dst[core.$set](j, src[core.$get](i)); } } else { for (let i = srcStart, j = dstStart; dart.notNull(i) < dart.notNull(srcStart) + dart.notNull(count); i = dart.notNull(i) + 1, j = dart.notNull(j) + 1) { dst[core.$set](j, src[core.$get](i)); } } } static areEqual(a, b) { if (core.identical(a, b)) return true; if (!dart.notNull(dart.is(b, core.List))) return false; let length = a[core.$length]; if (!dart.equals(length, dart.dload(b, 'length'))) return false; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { if (!dart.notNull(core.identical(a[core.$get](i), dart.dindex(b, i)))) return false; } return true; } static indexOf(a, element, startIndex, endIndex) { if (dart.notNull(startIndex) >= dart.notNull(a[core.$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[core.$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[core.$length])) { startIndex = dart.notNull(a[core.$length]) - 1; } for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) { if (dart.equals(a[core.$get](i), element)) { return i; } } return -1; } static indicesCheck(a, start, end) { core.RangeError.checkValidRange(start, end, a[core.$length]); } static rangeCheck(a, start, length) { core.RangeError.checkNotNegative(length); core.RangeError.checkNotNegative(start); if (dart.notNull(start) + dart.notNull(length) > dart.notNull(a[core.$length])) { let message = `${start} + ${length} must be in the range [0..${a[core.$length]}]`; throw new core.RangeError.range(length, 0, dart.notNull(a[core.$length]) - dart.notNull(start), "length", message); } } } exports.printToZone = null; // Function printToConsole: (String) → void function printToConsole(line) { _js_primitives.printString(`${line}`); } let _doSort = dart.JsSymbol('_doSort'); let _INSERTION_SORT_THRESHOLD = dart.JsSymbol('_INSERTION_SORT_THRESHOLD'); let _insertionSort = dart.JsSymbol('_insertionSort'); let _dualPivotQuicksort = dart.JsSymbol('_dualPivotQuicksort'); class Sort extends core.Object { static sort(a, compare) { Sort[_doSort](a, 0, dart.notNull(a[core.$length]) - 1, compare); } static sortRange(a, from, to, compare) { if (dart.notNull(from) < 0 || dart.notNull(to) > dart.notNull(a[core.$length]) || dart.notNull(to) < dart.notNull(from)) { throw "OutOfRange"; } Sort[_doSort](a, from, dart.notNull(to) - 1, compare); } static [_doSort](a, left, right, compare) { if (dart.notNull(right) - dart.notNull(left) <= dart.notNull(Sort[_INSERTION_SORT_THRESHOLD])) { Sort[_insertionSort](a, left, right, compare); } else { Sort[_dualPivotQuicksort](a, left, right, compare); } } static [_insertionSort](a, left, right, compare) { for (let i = dart.notNull(left) + 1; dart.notNull(i) <= dart.notNull(right); i = dart.notNull(i) + 1) { let el = a[core.$get](i); let j = i; while (dart.notNull(j) > dart.notNull(left) && dart.notNull(dart.dinvokef(compare, a[core.$get](dart.notNull(j) - 1), el)) > 0) { a[core.$set](j, a[core.$get](dart.notNull(j) - 1)); j = dart.notNull(j) - 1; } a[core.$set](j, el); } } static [_dualPivotQuicksort](a, left, right, compare) { dart.assert(dart.notNull(right) - dart.notNull(left) > dart.notNull(Sort[_INSERTION_SORT_THRESHOLD])); let sixth = ((dart.notNull(right) - dart.notNull(left) + 1) / 6).truncate(); let index1 = dart.notNull(left) + dart.notNull(sixth); let index5 = dart.notNull(right) - dart.notNull(sixth); let index3 = ((dart.notNull(left) + dart.notNull(right)) / 2).truncate(); let index2 = dart.notNull(index3) - dart.notNull(sixth); let index4 = dart.notNull(index3) + dart.notNull(sixth); let el1 = a[core.$get](index1); let el2 = a[core.$get](index2); let el3 = a[core.$get](index3); let el4 = a[core.$get](index4); let el5 = a[core.$get](index5); if (dart.notNull(dart.dinvokef(compare, el1, el2)) > 0) { let t = el1; el1 = el2; el2 = t; } if (dart.notNull(dart.dinvokef(compare, el4, el5)) > 0) { let t = el4; el4 = el5; el5 = t; } if (dart.notNull(dart.dinvokef(compare, el1, el3)) > 0) { let t = el1; el1 = el3; el3 = t; } if (dart.notNull(dart.dinvokef(compare, el2, el3)) > 0) { let t = el2; el2 = el3; el3 = t; } if (dart.notNull(dart.dinvokef(compare, el1, el4)) > 0) { let t = el1; el1 = el4; el4 = t; } if (dart.notNull(dart.dinvokef(compare, el3, el4)) > 0) { let t = el3; el3 = el4; el4 = t; } if (dart.notNull(dart.dinvokef(compare, el2, el5)) > 0) { let t = el2; el2 = el5; el5 = t; } if (dart.notNull(dart.dinvokef(compare, el2, el3)) > 0) { let t = el2; el2 = el3; el3 = t; } if (dart.notNull(dart.dinvokef(compare, el4, el5)) > 0) { let t = el4; el4 = el5; el5 = t; } let pivot1 = el2; let pivot2 = el4; a[core.$set](index1, el1); a[core.$set](index3, el3); a[core.$set](index5, el5); a[core.$set](index2, a[core.$get](left)); a[core.$set](index4, a[core.$get](right)); let less = dart.notNull(left) + 1; let great = dart.notNull(right) - 1; let pivots_are_equal = dart.dinvokef(compare, pivot1, pivot2) == 0; if (pivots_are_equal) { let pivot = pivot1; for (let k = less; dart.notNull(k) <= dart.notNull(great); k = dart.notNull(k) + 1) { let ak = a[core.$get](k); let comp = dart.dinvokef(compare, ak, pivot); if (comp == 0) continue; if (dart.notNull(comp) < 0) { if (k != less) { a[core.$set](k, a[core.$get](less)); a[core.$set](less, ak); } less = dart.notNull(less) + 1; } else { while (true) { comp = dart.dinvokef(compare, a[core.$get](great), pivot); if (dart.notNull(comp) > 0) { great = dart.notNull(great) - 1; continue; } else if (dart.notNull(comp) < 0) { a[core.$set](k, a[core.$get](less)); a[core.$set](((x) => less = dart.notNull(x) + 1, x)(less), a[core.$get](great)); a[core.$set](((x) => great = dart.notNull(x) - 1, x)(great), ak); break; } else { a[core.$set](k, a[core.$get](great)); a[core.$set](((x) => great = dart.notNull(x) - 1, x)(great), ak); break; } } } } } else { for (let k = less; dart.notNull(k) <= dart.notNull(great); k = dart.notNull(k) + 1) { let ak = a[core.$get](k); let comp_pivot1 = dart.dinvokef(compare, ak, pivot1); if (dart.notNull(comp_pivot1) < 0) { if (k != less) { a[core.$set](k, a[core.$get](less)); a[core.$set](less, ak); } less = dart.notNull(less) + 1; } else { let comp_pivot2 = dart.dinvokef(compare, ak, pivot2); if (dart.notNull(comp_pivot2) > 0) { while (true) { let comp = dart.dinvokef(compare, a[core.$get](great), pivot2); if (dart.notNull(comp) > 0) { great = dart.notNull(great) - 1; if (dart.notNull(great) < dart.notNull(k)) break; continue; } else { comp = dart.dinvokef(compare, a[core.$get](great), pivot1); if (dart.notNull(comp) < 0) { a[core.$set](k, a[core.$get](less)); a[core.$set](((x) => less = dart.notNull(x) + 1, x)(less), a[core.$get](great)); a[core.$set](((x) => great = dart.notNull(x) - 1, x)(great), ak); } else { a[core.$set](k, a[core.$get](great)); a[core.$set](((x) => great = dart.notNull(x) - 1, x)(great), ak); } break; } } } } } } a[core.$set](left, a[core.$get](dart.notNull(less) - 1)); a[core.$set](dart.notNull(less) - 1, pivot1); a[core.$set](right, a[core.$get](dart.notNull(great) + 1)); a[core.$set](dart.notNull(great) + 1, pivot2); Sort[_doSort](a, left, dart.notNull(less) - 2, compare); Sort[_doSort](a, dart.notNull(great) + 2, right, compare); if (pivots_are_equal) { return; } if (dart.notNull(less) < dart.notNull(index1) && dart.notNull(great) > dart.notNull(index5)) { while (dart.dinvokef(compare, a[core.$get](less), pivot1) == 0) { less = dart.notNull(less) + 1; } while (dart.dinvokef(compare, a[core.$get](great), pivot2) == 0) { great = dart.notNull(great) - 1; } for (let k = less; dart.notNull(k) <= dart.notNull(great); k = dart.notNull(k) + 1) { let ak = a[core.$get](k); let comp_pivot1 = dart.dinvokef(compare, ak, pivot1); if (comp_pivot1 == 0) { if (k != less) { a[core.$set](k, a[core.$get](less)); a[core.$set](less, ak); } less = dart.notNull(less) + 1; } else { let comp_pivot2 = dart.dinvokef(compare, ak, pivot2); if (comp_pivot2 == 0) { while (true) { let comp = dart.dinvokef(compare, a[core.$get](great), pivot2); if (comp == 0) { great = dart.notNull(great) - 1; if (dart.notNull(great) < dart.notNull(k)) break; continue; } else { comp = dart.dinvokef(compare, a[core.$get](great), pivot1); if (dart.notNull(comp) < 0) { a[core.$set](k, a[core.$get](less)); a[core.$set](((x) => less = dart.notNull(x) + 1, x)(less), a[core.$get](great)); a[core.$set](((x) => great = dart.notNull(x) - 1, x)(great), ak); } else { a[core.$set](k, a[core.$get](great)); a[core.$set](((x) => great = dart.notNull(x) - 1, x)(great), ak); } break; } } } } } Sort[_doSort](a, less, great, compare); } else { Sort[_doSort](a, less, great, compare); } } } Sort._INSERTION_SORT_THRESHOLD = 32; let _name = dart.JsSymbol('_name'); class Symbol extends core.Object { Symbol(name) { this[_name] = name; } unvalidated(name$) { this[_name] = name$; } validated(name) { this[_name] = Symbol.validatePublicSymbol(name); } ['=='](other) { return dart.notNull(dart.is(other, Symbol)) && dart.notNull(dart.equals(this[_name], dart.dload(other, '_name'))); } get hashCode() { let arbitraryPrime = 664597; return 536870911 & dart.notNull(arbitraryPrime) * dart.notNull(this[_name].hashCode); } toString() { return `Symbol("${this[_name]}")`; } static getName(symbol) { return symbol[_name]; } static validatePublicSymbol(name) { if (dart.notNull(name.isEmpty) || dart.notNull(Symbol.publicSymbolPattern.hasMatch(name))) return name; if (name.startsWith('_')) { throw new core.ArgumentError(`"${name}" is a private identifier`); } throw new core.ArgumentError(`"${name}" is not a valid (qualified) symbol name`); } static isValidSymbol(name) { return dart.notNull(name.isEmpty) || dart.notNull(Symbol.symbolPattern.hasMatch(name)); } } Symbol[dart.implements] = () => [core.Symbol]; dart.defineNamedConstructor(Symbol, 'unvalidated'); dart.defineNamedConstructor(Symbol, 'validated'); Symbol.reservedWordRE = '(?: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))'; Symbol.publicIdentifierRE = '(?!' + `${Symbol.reservedWordRE}` + '\\b(?!\\$))[a-zA-Z$][\\w$]*'; Symbol.identifierRE = '(?!' + `${Symbol.reservedWordRE}` + '\\b(?!\\$))[a-zA-Z$_][\\w$]*'; Symbol.operatorRE = '(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)'; dart.defineLazyProperties(Symbol, { get publicSymbolPattern() { return new core.RegExp(`^(?:${Symbol.operatorRE}$|${Symbol.publicIdentifierRE}(?:=?$|[.](?!$)))+?$`); }, get symbolPattern() { return new core.RegExp(`^(?:${Symbol.operatorRE}$|${Symbol.identifierRE}(?:=?$|[.](?!$)))+?$`); } }); let POWERS_OF_TEN = /* Unimplemented const */new core.List.from([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]); // Exports: exports.EfficientLength = EfficientLength; exports.ListIterable$ = ListIterable$; exports.ListIterable = ListIterable; exports.SubListIterable$ = SubListIterable$; exports.SubListIterable = SubListIterable; exports.ListIterator$ = ListIterator$; exports.ListIterator = ListIterator; exports.MappedIterable$ = MappedIterable$; exports.MappedIterable = MappedIterable; exports.EfficientLengthMappedIterable$ = EfficientLengthMappedIterable$; exports.EfficientLengthMappedIterable = EfficientLengthMappedIterable; exports.MappedIterator$ = MappedIterator$; exports.MappedIterator = MappedIterator; exports.MappedListIterable$ = MappedListIterable$; exports.MappedListIterable = MappedListIterable; exports.WhereIterable$ = WhereIterable$; exports.WhereIterable = WhereIterable; exports.WhereIterator$ = WhereIterator$; exports.WhereIterator = WhereIterator; exports.ExpandIterable$ = ExpandIterable$; exports.ExpandIterable = ExpandIterable; exports.ExpandIterator$ = ExpandIterator$; exports.ExpandIterator = ExpandIterator; exports.TakeIterable$ = TakeIterable$; exports.TakeIterable = TakeIterable; exports.EfficientLengthTakeIterable$ = EfficientLengthTakeIterable$; exports.EfficientLengthTakeIterable = EfficientLengthTakeIterable; exports.TakeIterator$ = TakeIterator$; exports.TakeIterator = TakeIterator; exports.TakeWhileIterable$ = TakeWhileIterable$; exports.TakeWhileIterable = TakeWhileIterable; exports.TakeWhileIterator$ = TakeWhileIterator$; exports.TakeWhileIterator = TakeWhileIterator; exports.SkipIterable$ = SkipIterable$; exports.SkipIterable = SkipIterable; exports.EfficientLengthSkipIterable$ = EfficientLengthSkipIterable$; exports.EfficientLengthSkipIterable = EfficientLengthSkipIterable; exports.SkipIterator$ = SkipIterator$; exports.SkipIterator = SkipIterator; exports.SkipWhileIterable$ = SkipWhileIterable$; exports.SkipWhileIterable = SkipWhileIterable; exports.SkipWhileIterator$ = SkipWhileIterator$; exports.SkipWhileIterator = SkipWhileIterator; exports.EmptyIterable$ = EmptyIterable$; exports.EmptyIterable = EmptyIterable; exports.EmptyIterator$ = EmptyIterator$; exports.EmptyIterator = EmptyIterator; exports.BidirectionalIterator$ = BidirectionalIterator$; exports.BidirectionalIterator = BidirectionalIterator; exports.IterableMixinWorkaround$ = IterableMixinWorkaround$; exports.IterableMixinWorkaround = IterableMixinWorkaround; exports.IterableElementError = IterableElementError; exports.FixedLengthListMixin$ = FixedLengthListMixin$; exports.FixedLengthListMixin = FixedLengthListMixin; exports.UnmodifiableListMixin$ = UnmodifiableListMixin$; exports.UnmodifiableListMixin = UnmodifiableListMixin; exports.FixedLengthListBase$ = FixedLengthListBase$; exports.FixedLengthListBase = FixedLengthListBase; exports.UnmodifiableListBase$ = UnmodifiableListBase$; exports.UnmodifiableListBase = UnmodifiableListBase; exports.ListMapView$ = ListMapView$; exports.ListMapView = ListMapView; exports.ReversedListIterable$ = ReversedListIterable$; exports.ReversedListIterable = ReversedListIterable; exports.UnmodifiableListError = UnmodifiableListError; exports.NonGrowableListError = NonGrowableListError; exports.makeListFixedLength = makeListFixedLength; exports.Lists = Lists; exports.printToConsole = printToConsole; exports.Sort = Sort; exports.Symbol = Symbol; exports.POWERS_OF_TEN = POWERS_OF_TEN; })(_internal || (_internal = {}));